From 1a4ad4f083a12797dfcce0de74b5461a539969a2 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Mon, 11 Jul 2005 22:10:51 +0300 Subject: [PATCH] Imported Debian patch 1.3.5-12 --- debian/changelog | 9 +++++++++ debian/control | 2 +- gzip.1 | 9 +++++++++ gzip.c | 39 +++++++++++++++++++++++++++++---------- gzip.h | 2 +- 5 files changed, 49 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index 088bed8..4ae5ebe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +gzip (1.3.5-12) unstable; urgency=low + + * merge patch from Matt Zimmerman for futex hang due to improper signal + handling, closes: #310053, #315612 + * merge patch to add --rsyncable to the man page, closes: #289616, #295721 + * don't return failing result code on harmless warning, closes: #169669 + + -- Bdale Garbee Mon, 11 Jul 2005 22:10:51 +0300 + gzip (1.3.5-11) unstable; urgency=low * patch from Peter Samuelson for bashism in zgrep, diff --git a/debian/control b/debian/control index 9b8ccd1..fc588f6 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: base Priority: required Maintainer: Bdale Garbee Build-Depends: debhelper (>= 3), texinfo -Standards-Version: 3.6.1.0 +Standards-Version: 3.6.2.1 Package: gzip Architecture: any diff --git a/gzip.1 b/gzip.1 index f5d03ff..4457856 100644 --- a/gzip.1 +++ b/gzip.1 @@ -290,6 +290,15 @@ will descend into the directory and compress all the files it finds there .I gunzip ). .TP +.B --rsyncable +While compressing, synchronize the output occasionally based on the input. +This increases size by less than 1 percent most cases, but means that the +.BR rsync (1) +program can much more efficiently syncronize files compressed with this flag. +.I gunzip +cannot tell the difference between a compressed file created with this option, +and one created without it. +.TP .B \-S .suf --suffix .suf Use suffix .suf instead of .gz. Any suffix can be given, but suffixes other than .z and .gz should be avoided to avoid confusion when files diff --git a/gzip.c b/gzip.c index 61f721e..a72cb20 100644 --- a/gzip.c +++ b/gzip.c @@ -467,16 +467,16 @@ int main (argc, argv) foreground = signal(SIGINT, SIG_IGN) != SIG_IGN; if (foreground) { - (void) signal (SIGINT, (sig_type)abort_gzip); + (void) signal (SIGINT, (sig_type)abort_gzip_signal); } #ifdef SIGTERM if (signal(SIGTERM, SIG_IGN) != SIG_IGN) { - (void) signal(SIGTERM, (sig_type)abort_gzip); + (void) signal(SIGTERM, (sig_type)abort_gzip_signal); } #endif #ifdef SIGHUP if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { - (void) signal(SIGHUP, (sig_type)abort_gzip); + (void) signal(SIGHUP, (sig_type)abort_gzip_signal); } #endif @@ -586,7 +586,7 @@ int main (argc, argv) #ifdef SIGPIPE /* Ignore "Broken Pipe" message with --quiet */ if (quiet && signal (SIGPIPE, SIG_IGN) != SIG_IGN) - signal (SIGPIPE, (sig_type) abort_gzip); + signal (SIGPIPE, (sig_type) abort_gzip_signal); #endif /* By default, save name and timestamp on compression but do not @@ -1169,8 +1169,9 @@ local int make_ofname() } else if (suff != NULL) { /* Avoid annoying messages with -r (see treat_dir()) */ if (verbose || (!recursive && !quiet)) { - WARN((stderr, "%s: %s already has %s suffix -- unchanged\n", - progname, ifname, suff)); + /* don't use WARN -- it will cause an exit_code of 2 */ + fprintf(stderr, "%s: %s already has %s suffix -- unchanged\n", + progname, ifname, suff); } return WARNING; } else { @@ -1850,13 +1851,31 @@ local void do_exit(exitcode) } /* ======================================================================== - * Signal and error handler. + * Close and unlink the output file if appropriate. This routine must be + * async-signal-safe. */ -RETSIGTYPE abort_gzip() -{ +local void do_remove() { if (remove_ofname) { close(ofd); xunlink (ofname); } - do_exit(ERROR); } + +/* ======================================================================== + * Error handler. + */ +RETSIGTYPE abort_gzip() +{ + do_remove(); + do_exit(ERROR); +} + +/* ======================================================================== + * Signal handler. + */ +RETSIGTYPE abort_gzip_signal() +{ + do_remove(); + _exit(ERROR); +} + diff --git a/gzip.h b/gzip.h index 3629a55..e3cc75c 100644 --- a/gzip.h +++ b/gzip.h @@ -273,7 +273,7 @@ extern int unpack OF((int in, int out)); extern int unlzh OF((int in, int out)); /* in gzip.c */ -RETSIGTYPE abort_gzip OF((void)); +RETSIGTYPE abort_gzip_signal OF((void)); /* in deflate.c */ void lm_init OF((int pack_level, ush *flags)); -- 2.43.0