57 lines
1.7 KiB
Diff
57 lines
1.7 KiB
Diff
+uudeview (0.5.19+beta20030413-1) unstable; urgency=low
|
|
...
|
|
+ * Use rename() in preference to copy if possible.
|
|
+ (closes: Bug#166040)
|
|
...
|
|
+ -- Chris Hanson <cph@debian.org> Sun, 7 Sep 2003 01:05:07 -0400
|
|
|
|
Index: uudeview-0.5.20/uulib/uulib.c
|
|
===================================================================
|
|
--- uudeview-0.5.20.orig/uulib/uulib.c
|
|
+++ uudeview-0.5.20/uulib/uulib.c
|
|
@@ -872,7 +872,10 @@ UUDecodeToTemp (uulist *thefile)
|
|
}
|
|
|
|
/*
|
|
- * decode file first to temp file, then copy it to a final location
|
|
+ * Decode file first to temp file, then copy it to a final location.
|
|
+ * A move is preferable to a copy. If the file is on the same
|
|
+ * partition, no copy is performed. This is important for large
|
|
+ * files.
|
|
*/
|
|
|
|
int UUEXPORT
|
|
@@ -978,6 +981,12 @@ UUDecodeFile (uulist *thefile, char *des
|
|
return UURET_IOERR;
|
|
}
|
|
|
|
+ if (rename(thefile->binfile, uugen_fnbuffer) == 0) {
|
|
+ fclose(source);
|
|
+ close(fildes);
|
|
+ goto finish_ok;
|
|
+ }
|
|
+
|
|
if ((target = fdopen (fildes, "wb")) == NULL) {
|
|
progress.action = 0;
|
|
UUMessage (uulib_id, __LINE__, UUMSG_ERROR,
|
|
@@ -1042,6 +1051,8 @@ UUDecodeFile (uulist *thefile, char *des
|
|
thefile->binfile,
|
|
strerror (uu_errno = errno));
|
|
}
|
|
+
|
|
+ finish_ok:
|
|
_FP_free (thefile->binfile);
|
|
thefile->binfile = NULL;
|
|
thefile->state &= ~UUFILE_TMPFILE;
|
|
@@ -1103,9 +1114,9 @@ UUInfoFile (uulist *thefile, void *opaqu
|
|
|
|
while (!feof (inpfile) &&
|
|
(uu_fast_scanning || ftell(inpfile) < maxpos)) {
|
|
- if (_FP_fgets (uugen_inbuffer, 511, inpfile) == NULL)
|
|
+ if (_FP_fgets (uugen_inbuffer, 1023, inpfile) == NULL)
|
|
break;
|
|
- uugen_inbuffer[511] = '\0';
|
|
+ uugen_inbuffer[1023] = '\0';
|
|
|
|
if (ferror (inpfile))
|
|
break;
|