Jim Meyering [Mon, 11 Jan 2010 10:51:13 +0000 (11:51 +0100)]
build: do not override gnulib-provided AM_CFLAGS options
Avoid a warning from automake:
lib/Makefile.am:24: AM_CFLAGS multiply defined in condition TRUE ...
lib/gnulib.mk:30: ... `AM_CFLAGS' previously defined here
lib/Makefile.am:20: `lib/gnulib.mk' included from here
* lib/Makefile.am (AM_CFLAGS): Append $(WARN_CFLAGS) and
$(WERROR_CFLAGS), i.e., use "+=", not "=".
This was introduced via 2009-12-17 commit 0341fc22,
"build: with --enable-gcc-warnings, use -Werror",
but fortunately is not a bug, because the definition
it would have overridden was always empty.
Jim Meyering [Sun, 10 Jan 2010 19:53:10 +0000 (20:53 +0100)]
gzip -d would fail with a CRC error...
...for some inputs, and some memcpy implementations. It is possible
that an offending input has to be compressed "from FAT filesystem
(MS-DOS, OS/2, NT)", since the sole reproducer no longer evokes a
CRC error when uncompressed and recompressed on a GNU/Linux system.
Also, using an unpatched reverse-memcpy-gzip on over 100,000 inputs
on a GNU/Linux system did not turn up another reproducer.
* inflate.c (inflate_codes): Don't call memcpy with overlapping regions.
Properly detect when source and destination overlap.
* tests/memcpy-abuse: New test, to trigger misbehavior.
* Makefile.am (TESTS): Add it.
* NEWS (Bug fixes): Mention it.
Reported by Alain Magloire in
http://thread.gmane.org/gmane.comp.gnu.gzip.bugs/307
Jim Meyering [Fri, 8 Jan 2010 18:18:37 +0000 (19:18 +0100)]
tests: switch to gnulib's init.sh test infrastructure
* tests/test-lib.sh: Remove file.
* tests/init.sh: New file, from gnulib.
* tests/trailing-nul: Use the new file.
* tests/zdiff: Likewise.
* tests/zgrep-f: Likewise.
* Makefile.am (EXTRA_DIST): List tests/init.sh, not test-lib.sh.
Jim Meyering [Fri, 20 Nov 2009 17:54:38 +0000 (18:54 +0100)]
build: util.c: avoid warnings about add_envopt
* util.c (add_envopt): The parameter "env" was used for two conflicting
purposes. One use required a const char* parameter, while the other
was used as an argument to free, which must not be "const".
Rename the parameter and use a new local variable for the second role.
Jim Meyering [Fri, 20 Nov 2009 17:32:28 +0000 (18:32 +0100)]
build: avoid many const-related warnings
* gzip.c: Add "const" to many variables, to avoid compiler warnings.
* util.c (add_envopt): Make 3rd parameter const
(gzip_error): Make sole parameter const.
* gzip.h: Update prototypes.
* cfg.mk (gnu_ftp_host-alpha, gnu_ftp_host-beta gnu_ftp_host-stable):
(gnu_rel_host, url_dir_list): Remove definitions. The defaults,
now provided by maint.mk, are the same.
* gnulib: Update for latest, including those maint.mk additions.
Jim Meyering [Fri, 30 Oct 2009 18:52:17 +0000 (19:52 +0100)]
build: accommodate new syntax-check test
* amiga/tailor.c (_expand_args): Change each of three uses of
"exit(20)" to "exit(EXIT_FAILURE)".
* sample/add.c: Include <stdlib.h>.
(main): Use EXIT_FAILURE and EXIT_SUCCESS, not 1 and 0.
* sample/sub.c (main): Likewise.
* sample/zread.c (main): Likewise.
Jim Meyering [Fri, 30 Oct 2009 18:38:00 +0000 (19:38 +0100)]
build: link with $(LIB_CLOCK_GETTIME)
* Makefile.am (gzip_LDADD): Add $(LIB_CLOCK_GETTIME), now that
utimens pulls in gettime.
(FILES_TO_CHECK): Remove $(gzip_LDADD), now that it may contain -lrt.
Jim Meyering [Tue, 20 Oct 2009 11:21:21 +0000 (13:21 +0200)]
build: do not use AC_PREFIX_PROGRAM
* configure.ac: Do not use "AC_PREFIX_PROGRAM(gzip)".
It would induce behavior that is so surprising that it is probably
universally considered to be buggy, these days. Reported by Zube
in http://thread.gmane.org/gmane.comp.gnu.gzip.bugs/273
Jim Meyering [Fri, 9 Oct 2009 18:03:09 +0000 (20:03 +0200)]
zgrep: portability improvements; exercise "-f -"
* zgrep.in: Adjust loop not to use seq; it's not portable enough.
Fail if we don't find a free file descriptor.
(exists): New function; Use it in place of less portable "test -e".
Testing for existence of /dev/fd/$fd doesn't work on Solaris 10,
since all 256 always exist (as char devices), but testing for
/proc/$$/fd/$fd does work, so do that instead.
* Makefile.am (TESTS): Add tests/zgrep-f.
* tests/zgrep-f: New test; exercise this bug.
* NEWS (Bug fixes): Mention it.
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>.