r345 - in /packages/flasm/trunk/debian: changelog patches/series patches/tempfiles-fix.patch

pabs at users.alioth.debian.org pabs at users.alioth.debian.org
Fri Jul 17 17:04:46 UTC 2009


Author: pabs
Date: Fri Jul 17 17:04:39 2009
New Revision: 345

URL: http://svn.debian.org/wsvn/?sc=1&rev=345
Log:
Add a patch to rework the temporary file handling (Closes: #530383)

Added:
    packages/flasm/trunk/debian/patches/tempfiles-fix.patch
Modified:
    packages/flasm/trunk/debian/changelog
    packages/flasm/trunk/debian/patches/series

Modified: packages/flasm/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/packages/flasm/trunk/debian/changelog?rev=345&op=diff
==============================================================================
--- packages/flasm/trunk/debian/changelog (original)
+++ packages/flasm/trunk/debian/changelog Fri Jul 17 17:04:39 2009
@@ -1,3 +1,9 @@
+flasm (1.62-4) UNRELEASED; urgency=low
+
+  * Add a patch to rework the temporary file handling (Closes: #530383)
+
+ -- Paul Wise <pabs at debian.org>  Fri, 17 Jul 2009 18:05:23 +0200
+
 flasm (1.62-3) unstable; urgency=low
 
   * Fix src pkg to work with dpkg-source 3.0 (quilt) (Closes: #485343)

Modified: packages/flasm/trunk/debian/patches/series
URL: http://svn.debian.org/wsvn/packages/flasm/trunk/debian/patches/series?rev=345&op=diff
==============================================================================
--- packages/flasm/trunk/debian/patches/series (original)
+++ packages/flasm/trunk/debian/patches/series Fri Jul 17 17:04:39 2009
@@ -1,2 +1,3 @@
 01-config-file.patch
 fix-FTBFS-with-new-bison.patch
+tempfiles-fix.patch

Added: packages/flasm/trunk/debian/patches/tempfiles-fix.patch
URL: http://svn.debian.org/wsvn/packages/flasm/trunk/debian/patches/tempfiles-fix.patch?rev=345&op=file
==============================================================================
--- packages/flasm/trunk/debian/patches/tempfiles-fix.patch (added)
+++ packages/flasm/trunk/debian/patches/tempfiles-fix.patch Fri Jul 17 17:04:39 2009
@@ -1,0 +1,117 @@
+Author: Igor Kogan <IgorKogan at nowrap.de>, Paul Wise <pabs at debian.org>
+Description: fix temporary file handling
+Forwarded: http://sf.net/support/tracker.php?aid=2796102
+Bug: http://sf.net/support/tracker.php?aid=2796102
+Bug-Debian: http://bugs.debian.org/530383
+Last-Update: 2009-07-17
+--- a/flasm.c
++++ b/flasm.c
+@@ -37,7 +37,6 @@
+ 
+ char *inputName;				/* actual command-line parameter */
+ static char *updateName = NULL;	/* swf file name found in disassembly's first line (movie foo.swf...) */
+-static char *tempName = NULL;	/* temporary file during assembling */
+ static char *flmName = NULL;	/* temporary disassembly during update */
+ static char *backupName = NULL;	/* foo.$wf if foo.swf is updated */
+ static FILE *updateFile = NULL;
+@@ -114,6 +113,15 @@
+ 	exit(msg);
+ }
+ 
++static void copyFileContents(FILE* srcFile, FILE* destFile)
++{
++    char buf[65535];
++    size_t readCount = 0;
++    while ((readCount = fread((void *) buf, sizeof(char), sizeof(buf), srcFile)) != 0) {
++        fwrite(buf, sizeof(char), readCount, destFile);
++    }
++}
++
+ void tellUser(int isError, char *s, ...)
+ {
+ 	va_list ap;
+@@ -156,10 +164,8 @@
+ 		if (mode >= MODE_IDE && usestderr)
+ 			waitUserInput();
+ 
+-		if (tempFile != NULL) {
++		if (tempFile != NULL)
+ 			fclose(tempFile);
+-			remove(tempName);
+-		}
+ 
+ 		if (updateFile != NULL)
+ 			fclose(updateFile);
+@@ -1096,7 +1102,8 @@
+ 
+ static void finalizeTemporaryFile(char *name)
+ {
+-	fclose(tempFile);
++	FILE* targetFile;
++
+ 	if (!backupCreated) {
+ 		backupName = mstrdup(name);
+ 		backupCreated = 1;
+@@ -1106,15 +1113,17 @@
+ 		/* foo.swf -> foo.$wf */
+ 		if (rename(name, backupName) != 0)
+ 			tellUser(1, "couldn't update: file %s is in use", name);
+-		/* foo.tmp (assemble) or flasm.tmp (compress/decompress) -> foo.swf */
+-		rename(tempName, name);
+ 	}
+ 	else {
+ 		/* backup already here, just make temp file our final file */
+ 		if (remove(name) != 0)
+ 			tellUser(1, "couldn't update: file %s is in use", name);
+-		rename(tempName, name);
+ 	}
++
++	targetFile = fopen(name, "wb");
++	rewind(tempFile);
++	copyFileContents(tempFile, targetFile);
++	fclose(targetFile);
+ }
+ 
+ static void getSWFHeader(FILE * f)
+@@ -1123,6 +1132,8 @@
+ 	swfHeader[3] = '\0';
+ }
+ 
++static void createTemporaryFile(void);
++
+ void startUpdate(char *outputName)
+ {
+ 	int b, i, bitstotal;
+@@ -1147,11 +1158,8 @@
+ 	flength = 0;
+ 
+ 	updateName = mstrdup(outputName);
+-	tempName = mstrdup(outputName);
+-	strcpy(tempName + strlen(tempName) - 4, ".tmp");
+ 
+-	if ((tempFile = fopen(tempName, "wb")) == NULL)
+-		tellUser(1, "Couldn't create temporary file");
++	createTemporaryFile();
+ 
+ 	/* SWF header */
+ 	flput('F');
+@@ -1229,9 +1237,8 @@
+ 
+ static void createTemporaryFile(void)
+ {
+-	tempName = mstrdup("flasm.tmp");
+-	if ((tempFile = fopen(tempName, "wb+")) == NULL)
+-		tellUser(1, "Couldn't create file: %s", tempName);
++	if ((tempFile = tmpfile()) == NULL)
++		tellUser(1, "Couldn't create temporary file");
+ }
+ 
+ static void decompressSWF(FILE *f, char *fname)
+@@ -1752,7 +1759,6 @@
+ 				/* skip SWF header, we know it's 'FWS' */
+ 				fseek(tempFile, 3, SEEK_SET);
+ 				disassembleSWF(tempFile, inputName);
+-				remove(tempName);
+ 			}
+ 			else
+ 				tellUser(1, "Input file doesn't appear to be an SWF file..");




More information about the pkg-flash-devel mailing list