patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
64 lines
1.9 KiB
Diff
64 lines
1.9 KiB
Diff
Index: gnu/usr.bin/gzip/gzip.c
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/gnu/usr.bin/gzip/gzip.c,v
|
|
retrieving revision 1.11
|
|
diff -u -d -r1.11 gzip.c
|
|
--- gnu/usr.bin/gzip/gzip.c 3 May 2004 10:29:23 -0000 1.11
|
|
+++ gnu/usr.bin/gzip/gzip.c 7 Jun 2005 19:00:05 -0000
|
|
@@ -830,8 +830,11 @@
|
|
}
|
|
|
|
close(ifd);
|
|
- if (!to_stdout && close(ofd)) {
|
|
- write_error();
|
|
+ if (!to_stdout) {
|
|
+ /* Copy modes, times, ownership, and remove the input file */
|
|
+ copy_stat(&istat);
|
|
+ if (close(ofd))
|
|
+ write_error();
|
|
}
|
|
if (method == -1) {
|
|
if (!to_stdout) unlink (ofname);
|
|
@@ -851,10 +854,6 @@
|
|
}
|
|
fprintf(stderr, "\n");
|
|
}
|
|
- /* Copy modes, times, ownership, and remove the input file */
|
|
- if (!to_stdout) {
|
|
- copy_stat(&istat);
|
|
- }
|
|
}
|
|
|
|
/* ========================================================================
|
|
@@ -1258,6 +1257,7 @@
|
|
/* Copy the base name. Keep a directory prefix intact. */
|
|
char *p = basename(ofname);
|
|
char *base = p;
|
|
+ char *base2;
|
|
for (;;) {
|
|
*p = (char)get_char();
|
|
if (*p++ == '\0') break;
|
|
@@ -1265,6 +1265,8 @@
|
|
error("corrupted input -- file name too large");
|
|
}
|
|
}
|
|
+ base2 = basename (base);
|
|
+ strcpy(base, base2);
|
|
/* If necessary, adapt the name to local OS conventions: */
|
|
if (!list) {
|
|
MAKE_LEGAL_NAME(base);
|
|
@@ -1637,12 +1639,12 @@
|
|
reset_times(ofname, ifstat);
|
|
#endif
|
|
/* Copy the protection modes */
|
|
- if (chmod(ofname, ifstat->st_mode & 07777)) {
|
|
+ if (fchmod(ofd, ifstat->st_mode & 07777)) {
|
|
WARN((stderr, "%s: ", progname));
|
|
if (!quiet) perror(ofname);
|
|
}
|
|
#ifndef NO_CHOWN
|
|
- chown(ofname, ifstat->st_uid, ifstat->st_gid); /* Copy ownership */
|
|
+ (void) fchown(ofd, ifstat->st_uid, ifstat->st_gid); /* Copy ownership */
|
|
#endif
|
|
remove_ofname = 0;
|
|
/* It's now safe to remove the input file: */
|