Carl Worth [Fri, 9 Oct 2009 15:32:48 +0000 (17:32 +0200)]
zgrep: handle "-f -" the same way that it works with grep
Before this change, echo needle|zgrep -f - haystack.gz would not work.
* zgrep.in: When the pattern comes from stdin, redirect it to a
different file descriptor, since we're about to use stdin.
Jim Meyering [Fri, 9 Oct 2009 10:37:05 +0000 (12:37 +0200)]
zdiff would exit 2 (error) rather than 1 for differences
* zdiff.in: Save and restore cmp's exit status around a case
statement that would otherwise clobber its value.
* NEWS (Bug fixes): Mention it.
* tests/zdiff: New test; exercise both bugs.
* tests/test-lib.sh: New file. From coreutils.
* Makefile.am (EXTRA_DIST): Add tests/test-lib.sh.
(TESTS): Add tests/zdiff.
(TESTS_ENVIRONMENT): Define. From coreutils.
(EXTRA_DIST): Append all $(TESTS).
Jim Meyering [Fri, 9 Oct 2009 10:28:56 +0000 (12:28 +0200)]
zdiff: fix malfunction when operating on two gzip'd inputs
zdiff would fail to print differences in two compressed inputs
* zdiff.in: Don't let cmp output mix with echo'd gzip exit
status values. Report and fix from Jörg-Volker Peetz via
<http://bugs.debian.org/434275>
* NEWS (Bug fixes): Mention it.
Karl Berry [Mon, 28 Sep 2009 09:10:16 +0000 (11:10 +0200)]
doc: update gzip.texi
* doc/gzip.texi: FDL 1.3+
Consistently (de)capitalize section names.
"User's" is not correct; seems best to simplify the title.
Throw in some "GNU"'s.
Make direntries be what we actually want.
Detabify.
Jim Meyering [Sat, 26 Sep 2009 19:22:02 +0000 (21:22 +0200)]
gzip: don't use an uninitialized file descriptor
gzip interprets an argument of "-" as indicating stdin, but when
"-" is not the first name on the command line, it doesn't work.
* gzip.c (treat_stdin): Initialize "ifd".
Patch and fine description by Lasse Collin in
http://www.mail-archive.com/bug-gzip@gnu.org/msg00213.html
* Makefile.am (check-local): Exercise the fix. Based on the above.
* NEWS (Bug fixes): Mention this.
Thiemo Nagel [Sun, 16 Aug 2009 14:48:37 +0000 (16:48 +0200)]
avoid creating an undersized buffer for the hufts table
A malformed input file can cause gzip to crash with a segmentation
violation or hang in an endless loop.
Reported in <http://bugs.debian.org/507263>.
* NEWS (Bug fixes): Mention it.
Jim Meyering [Sun, 16 Aug 2009 09:39:07 +0000 (11:39 +0200)]
avoid silent data loss e.g., on NFS, due to unchecked close of stdout
* gzip.c: Include "closein.h".
(main): Use atexit (close_stdin);
* bootstrap.conf (gnulib_modules): Add closein.
Prompted by Mark Kidwell's report and patch in
http://bugs.debian.org/538187
* NEWS (Bug fixes): Mention it.
* */.gitignore: Update.
Jim Meyering [Sun, 16 Aug 2009 08:51:19 +0000 (10:51 +0200)]
build: avoid non-srcdir build failure
* Makefile.am (gzip.doc.gz): Use $(srcdir)/gzip.doc, not gzip.doc.
Don't redirect directly to $@. Use $(AM_V_GEN).
(gzip.doc, .in): Don't redirect directly to $@. Use $(AM_V_GEN).
* NEWS: Add template header for upcoming release.
* configure.ac (AC_INIT): Use git-version-gen.
Use AM_SILENT_RULES([yes]).
(AM_INIT_AUTOMAKE): Drop gnits; conflicts with git-version-gen versions.
* bootstrap.conf (gnulib_modules): Use getopt-gnu
Ensure ChangeLog exists, for automake.
rather than obsolete "getopt" module.
Add gitlog-to-changelog.
Add git-version-gen.
Add gnu-make, gnumakefile and maintainer-makefile.
* Makefile.am (dist-hook, gen-ChangeLog): New rules, to generate
ChangeLog and insert it into the distribution tarball.
(EXTRA_DIST): Add ChangeLog-2007.
Paul Eggert [Sun, 25 Nov 2007 17:19:45 +0000 (17:19 +0000)]
* gzip.c (handled_sig): Move out of install_signal_handlers, and
move previous to all uses of SIGPIPE, to fix a bug encountered when
porting to mingw32. Reported by Robert Millan in
<http://lists.gnu.org/archive/html/bug-gzip/2007-11/msg00007.html>.
Paul Eggert [Thu, 4 Oct 2007 22:25:07 +0000 (22:25 +0000)]
* Makefile.am (gzip.doc.gz, check-local): Depend on $(bin_PROGRAMS).
(gzip.doc.gz): Use our gzip, not the system-installed one.
Problem reported by Chris Staub in
<http://lists.gnu.org/archive/html/bug-gzip/2007-10/msg00000.html>.
Paul Eggert [Mon, 7 May 2007 23:24:54 +0000 (23:24 +0000)]
* NEWS: 'gzip -f foo.gz' now works instead of complaining.
* gzip.c (make_ofname): Implement this.
Problem reported by Sven Hartrump in
<http://lists.gnu.org/archive/html/bug-gzip/2007-05/msg00003.html>.
* NEWS, gzip.1: Document that case is ignored when looking at file name
extensions.
* doc/gzip.texi (Overview): Likewise.
Paul Eggert [Fri, 4 May 2007 19:53:25 +0000 (19:53 +0000)]
* Makefile.am (.in): Substitute @bindir@, not BINDIR, for
consistency with other substitutions.
(check-local): Use --__bindir . rather than setting GZIP_BINDIR=.,
to allay security concerns voiced by Joerg Lehners in
<http://lists.gnu.org/archive/html/bug-gzip/2007-04/msg00003.html>.
* gunzip.in, gzexe.in, zcat.in, zcmp.in, zdiff.in, zegrep.in, zfgrep.in:
* zforce.in, zgrep.in, zless.in, zmore.in, znew.in:
Support --__bindir rather than GZIP_BINDIR.
* gunzip.in, zcat.in, zcmp.in: Support --help and --version
directly, to avoid some confusion in help and version output.
Problem reported by Eric Blake in
<http://lists.gnu.org/archive/html/bug-gzip/2007-04/msg00006.html>.
Paul Eggert [Sun, 29 Apr 2007 05:24:26 +0000 (05:24 +0000)]
* m4/shell.m4 (AC_PROG_SHELL): Check for old-fashioned shells that
don't allow "(" in front of case labels. Problem reported by midair
in <http://lists.gnu.org/archive/html/bug-gzip/2007-04/msg00004.html>.
Also, check for buggy shells that require ";;" before "esac".
Paul Eggert [Tue, 20 Mar 2007 05:09:51 +0000 (05:09 +0000)]
* README-hacking: New file, renamed from README-cvs.
* README-cvs: Remove.
* bootstrap: Sync from today's gnulib.
* bootstrap.conf (gnulib_modules): Add 'time'.
* gzip.c: Don't include timespec.h; 'time' fixes time.h for that.
* zip.c: Likewise.
* gzip.c: Don't include time.h or sys/time.h; gzip.h now includes
time.h, which is now enough.
* gzip.h: Include <time.h>.
Paul Eggert [Fri, 16 Mar 2007 18:48:58 +0000 (18:48 +0000)]
* README (WARNING): Reword to avoid mention of no-longer-existing
section in INSTALL file. Problem reported by Paul Townsend in
<http://lists.gnu.org/archive/html/bug-gzip/2007-03/msg00000.html>.
Paul Eggert [Mon, 12 Feb 2007 05:24:34 +0000 (05:24 +0000)]
* gzip.c (foreground): Initialize to zero. This doesn't fix a bug
since C guarantees it's zero, but it's more consistent with the
rest of the code. Problem reported by Mark Adler.
Paul Eggert [Thu, 8 Feb 2007 22:54:59 +0000 (22:54 +0000)]
* zdiff.in: Don't use '((' in a shell script, as it's not portable
to some ksh implementations, e.g., Solaris 10 ksh M-11/16/88i.
Problem reported by Nelson H. F. Beebe in
<http://lists.gnu.org/archive/html/bug-gzip/2007-02/msg00005.html>.
Paul Eggert [Mon, 5 Feb 2007 20:54:25 +0000 (20:54 +0000)]
* gunzip.in, zcat.in, zcmp.in, zegrep.in, zfgrep.in: New files.
* Makefile.am (EXTRA_DIST): Add them.
(bin_SCRIPTS, MOSTLYCLEANFILES): Add gunzip, zcat, zcmp, zdgrep, zfgrep.
(.in): Use GZIP_BINDIR as the location of gzip binaries, if it is set.
(check-local): Use GZIP_BINDIR.
(install-exec-hook, remove-installed-links): Make 'uncompress' an
alias for gunzip.
* gzexe.1: At least one arg is required. Don't give cat as an
example, since gzexe refuses to compress cat due to a bootstrapping
issue. List more utilities in this category.
* gzexe.in, zdiff.in, zforce.in, zgrep.in, zless.in, zmore.in, znew.in:
Report our name in usage.
* gzexe.in: Don't compress bash. Don't use rmdir, so it's
OK to compress rmdir.
* gzip.c: Now requires that you compile with -DGNU_STANDARD=0 to
get non GNU-standard behavior. We now build with GNU-standard
behavior by default, so that programs do not depend on the names
of their executables.
* zdiff.in: Don't depend on the name of the executable, as per
GNU standard. Instead, rely on an internal --__cmp option.
Support ' in options. Check for failures in subsidiary gzip
invocations.
* zgrep.1: Clarify compression issues.
* zgrep.in: Don't assume POSIX-style case syntax. Remove unused var
have_optarg.
* zless.1: zless sets LESSMETACHARS now.
Paul Eggert [Thu, 11 Jan 2007 05:59:16 +0000 (05:59 +0000)]
* m4/shell.m4 (AC_PROG_SHELL): Test that $(...) works.
Problem reported for SGI IRIX 6 by Nelson H. F. Beebe in
<http://lists.gnu.org/archive/html/bug-gzip/2007-01/msg00007.html>.
Paul Eggert [Thu, 4 Jan 2007 08:03:20 +0000 (08:03 +0000)]
* zdiff.in (cmp0): New var.
Rewrite test for /dev/fd/3 to detect bugs in Solaris 8
/bin/bash 2.03. Problem reported by Nelson H. F. Beebe in
<http://lists.gnu.org/archive/html/bug-gzip/2007-01/msg00001.html>.
Avoid "for file; do", which doesn't work with Solaris 8 /bin/sh.
Paul Eggert [Thu, 4 Jan 2007 05:24:04 +0000 (05:24 +0000)]
* zdiff.in: Test /dev//fd/3, not /dev/fd/3, to work around a problem
with Tru64 4.0F ksh M-11/16/88f reported by Thomas Koutcher in
<http://lists.gnu.org/archive/html/bug-gzip/2007-01/msg00000.html>.
Paul Eggert [Sat, 30 Dec 2006 04:06:44 +0000 (04:06 +0000)]
* zless.in: Work around a bug in less 394 and earlier; it
mishandles $%=~ in file names. Problem reported by
Sami Liedes in <http://bugs.debian.org/383358>.
* zgrep.in: Rewrite to make the option processing more
compatible with GNU and POSIX grep. Assume POSIX shell
for more stuff, since we're already assuming that.
* Makefile.am (check-local): Check zgrep -iV.
Paul Eggert [Wed, 27 Dec 2006 08:00:43 +0000 (08:00 +0000)]
* NEWS: gzip -q now exits with status 2 (not 1) on SIGPIPE.
zgrep has many bugs fixed with argument handling, special characters,
and exit status.
* gzip.c (abort_gzip_signal): Implement gzip -q change.
* zgrep.in: Implement zgrep change.
Paul Eggert [Sun, 24 Dec 2006 05:45:23 +0000 (05:45 +0000)]
* NEWS: Fix bug reported by Martin Mares in
<http://bugs.debian.org/177942>.
* gzip.c (treat_stdin): Remove NO_STDIN_FSTAT and NO_PIPE_TIMESTAMP
stuff. It didn't work (led to syntax errors) and was confusing.
Report an error if stdin cannot be statted even if !list && no_time.
Get stdin's size if it is regular.
(treat_file): Do not report an error with setuid, setgid,
sticky, or non-regular, non-directory files if to_stdout.
Allow 'force' to override the caution about sticky files.
Use the same form for time stamps that treat_stdin uses.
Paul Eggert [Sun, 24 Dec 2006 04:14:57 +0000 (04:14 +0000)]
* zdiff.in: Fix typo that broke most usages. Problem reported by
Jari Aalto in <http://bugs.debian.org/404114>. While we're at it,
fix a bunch of other problems. Handle "-" better. Send
diagnostics to stderr, not stdout. Use expr rather than echo |
sed, to handle special characters better. Report a diagnostic in
the 1-arg case, if the argument doesn't end in .gz or the like,
rather than having incomprehensible behavior. Do not require that
the inputs be regular files. Avoid creating a temporary entirely,
if /dev/fd works. If not, then resist denial-of-service attacks
better, by using mktemp.
* Makefile.am (gzip.doc.gz): New rule.
(check-local): Depend on it, and test zdiff for Debian bug 404114.
Paul Eggert [Sat, 23 Dec 2006 01:02:17 +0000 (01:02 +0000)]
* zdiff.1: Mention that these programs currently understand only
formats that gzip does. Problem reported by Jari Aalto in
<http://bugs.debian.org/404099>.
Paul Eggert [Wed, 20 Dec 2006 23:30:17 +0000 (23:30 +0000)]
* inflate.c (huft_build): Fix regression that caused gzip to
refuse to uncompress null input (all zero length codes). Problem
reported by Yiorgos Adamopoulos. This regression was caused by
the security patch installed 2006-11-20, which in turn came from
Debian, which in turn apparently came from Thomas Biege of SuSe.
Paul Eggert [Fri, 15 Dec 2006 08:18:02 +0000 (08:18 +0000)]
* NEWS, configure.ac (AC_INIT):
Version 1.3.9 released.
* bootstrap (gnulib_tool_options_extras): New var.
(gnulib_tool_options): Use it.
* bootstrap.conf (gnulib_tool_options_extras): Avoid getline and
rpmatch. gzip doesn't need them, since it doesn't ENABLE_NLS.
Paul Eggert [Thu, 14 Dec 2006 02:12:30 +0000 (02:12 +0000)]
* configure.ac: Use $CPPFLAGS everywhere $CPP is used, and use
$CPPFLAGS $CFLAGS everywhere $CC is used.
* lib/Makefile.am (match.$(OBJEXT)): Likewise.
* configure.ac: Test the exit code of the $CPP and $ASCPPPOST commands
separately.
Paul Eggert [Mon, 11 Dec 2006 18:54:39 +0000 (18:54 +0000)]
The SSIZE_MAX fix didn't work on NSK, so fix it in a more-reliable
(albeit more-complicated) way. Problem reported by Matthew Woehlke.
* gzip.h (read_buffer): New decl.
* unlzw.c (unlzw): Use read_buffer rather than read.
* zip.c (file_read): Likewise.
* util.c (copy, fill_inbuf): Likewise.
(read_buffer, write_buffer): New functions.
(write_buf): Use write_buffer rather than write.
Undo the previous SSIZE_MAX-related change; it didn't work.
* gzip.c: Include <limits.h>.
* util.c: Likewise.
* gzip.h: Don't include <limits.h>.
(INBUFSIZ): Don't worry about SSIZE_MAX here.
Paul Eggert [Sat, 9 Dec 2006 06:58:27 +0000 (06:58 +0000)]
* gzexe.in (mktemp_status): New var, used to see whether
mktemp is a known command. Use this instead of confounding
mktemp's existence with its success.
Paul Eggert [Sat, 9 Dec 2006 04:25:56 +0000 (04:25 +0000)]
* zdiff.in: Remove first line containing ":". This follows
up on the SEDCMD fix of 2006-12-01.
* zforce.in: Likewise.
* zgrep.in: Likewise.
* zless.in: Likewise.
* zmore.in: Likewise.
* znew.in: Likewise.
Paul Eggert [Sat, 9 Dec 2006 01:19:52 +0000 (01:19 +0000)]
Fix problems in porting to NSK reported by Matthew Woehlke in
<http://lists.gnu.org/archive/html/bug-gzip/2006-12/msg00025.html> and
<http://lists.gnu.org/archive/html/bug-gzip/2006-12/msg00027.html>.
* gzip.h: Include <limits.h>, for SSIZE_MAX.
(INBUFSIZE): Don't make it any larger than SSIZE_MAX.
Problem reported by Matthew Woehlke in
<http://lists.gnu.org/archive/html/bug-gzip/2006-11/msg00013.html>.
* gzip.c: Don't include <limits.h>, as gzip.h now does this.
* util.c: Likewise.
* gzip.c (main): Set exiting_signal before installing signal handlers.
(install_signal_handlers): Don't set exiting_signal here. This
fixes a C99ism.
* zip.c: Include timespec.h, for time_stamp type.
Paul Eggert [Fri, 8 Dec 2006 09:30:30 +0000 (09:30 +0000)]
* configure.ac (for assembler): Set ASFLAGS_config to
-Wa,--noexecstack if this seems advisable on this platform.
Problem reported by Mike Frysinger in
<http://lists.gnu.org/archive/html/bug-gzip/2006-12/msg00018.html>.
* lib/Makefile.am (match.$(OBJEXT)): Use ASFLAGS_config.