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