Jim Meyering [Sun, 4 May 2014 02:04:12 +0000 (19:04 -0700)]
maint: update gnulib to latest and adapt streamsavedir usage
* gnulib: Update module to latest.
* gzip.c (treat_dir): Gnulib's streamsavedir API has changed:
call it with a new argument, SAVEDIR_SORT_NONE, to retain the
preceding behavior.
Paul Eggert [Fri, 7 Mar 2014 01:31:25 +0000 (17:31 -0800)]
zless: improve gzip failure checking, and port to new -V format
Problem reported by Jaroslaw Weglinski, and LESSOPEN change
suggested by Mark Nudelman, in: http://bugs.gnu.org/16951
This doesn't fix bug 16951 entirely, as 'less' needs to be changed
too, but it's a start.
* zless.in (check_exit_status): New var.
(LESSOPEN): Use it.
(use_input_pipe_on_stdin): Adjust to output format on Fedora 20,
where 'less -V' outputs "less 458 (POSIX regular expressions)"
on the first line.
Paul Eggert [Thu, 24 Oct 2013 07:19:56 +0000 (00:19 -0700)]
gzip: fix permissions issue on Solaris-like systems
I.e., on systems that let users give files away.
* gzip.c (do_chown): New function.
(copy_stat): Use it, to change the group, then the permissions,
then the owner. Idea suggested by Vladimir Marek in
<http://bugs.gnu.org/15672#11>
Paul Eggert [Fri, 4 Oct 2013 04:12:09 +0000 (21:12 -0700)]
znew: avoid denial-of-service issue
Reported by Rich Burridge in <http://bugs.gnu.org/15522>.
* znew.in: Rewrite to avoid the need for a temporary file in /tmp.
That way, we avoid the need for set -C
and worrying about denial of service.
Use touch -r and chmod --reference rather than cpmod.
Assume cp -p works, as it's now universal.
Quote 'echo' args better, while we're at it.
(warn, tmp, cpmod, cpmodarg): Remove.
(GZIP): Unset, so that we needn't test for gzip extension.
(ext): Now always '.gz'.
* znew.1: Document the change of implementation assumptions.
Paul Eggert [Wed, 19 Jun 2013 15:46:29 +0000 (08:46 -0700)]
tests: zgrep-signal race condition fix
* tests/zgrep-signal: Check that Perl supports dup2.
(exec_with_SIGPIPE_SIGDFL): Remove.
(write_to_dangling_pipe): Simplify by moving more of it into Perl.
Fix race condition, where subcommand writes to a pipe before the ":"
command exits. Problem reported by Thorsten Glaser in
<http://lists.gnu.org/archive/html/bug-gzip/2013-06/msg00028.html>.
Paul Eggert [Wed, 12 Jun 2013 18:42:34 +0000 (11:42 -0700)]
zgrep: usage should say which grep options are not supported
* zgrep.in (usage): Document which grep options are not supported.
Problem reported by Liron Paryente in
<http://lists.gnu.org/archive/html/bug-grep/2013-06/msg00005.html>.
Paul Eggert [Wed, 12 Jun 2013 03:34:06 +0000 (20:34 -0700)]
gzip: port util.c to Compaq C V6.5-303
* util.c (crc_32_tab): Move definition to front, since this
compiler doesn't allow declarations of static arrays with
incomplete types. Problem reported by Steven M. Schweda in
<http://lists.gnu.org/archive/html/bug-gzip/2013-06/msg00010.html>.
Paul Eggert [Wed, 12 Jun 2013 03:23:28 +0000 (20:23 -0700)]
tests: zgrep-context assumes grep knows context
* tests/Makefile.am (TESTS_ENVIRONMENT): Pass GREP too.
* tests/zgrep-context: Check that the underlying grep supports
context options. Problem reported by Steven M. Schweda in
<http://lists.gnu.org/archive/html/bug-gzip/2013-06/msg00010.html>.
Paul Eggert [Wed, 12 Jun 2013 00:53:53 +0000 (17:53 -0700)]
maint: port to platforms lacking SIGPIPE
* tailor.h (SIGPIPE): Define to 0 if not defined. This fixes a
porting bug introduced as part of 2012-11-16 syntax-check cleanup.
Problem reported by Bdale Garbee in
<http://lists.gnu.org/archive/html/bug-gzip/2013-06/msg00006.html>.
gzip: add "--keep" option to retain (don't delete) input files
gzip now accepts the --keep (-k) option, for consistency with tools
like xz, lzip and bzip2. With this option, gzip no longer removes
named input files when compressing and decompressing.
* doc/gzip.texi: Document it.
* gzip.1: Likewise.
* gunzip.in: Likewise.
* NEWS: Likewise.
* gzip.c: Add support for "--keep".
Paul Eggert [Mon, 15 Apr 2013 18:03:38 +0000 (11:03 -0700)]
tests: redo patch for non-GNU gzip installed in /usr/local/bin
Problem with previous patch reported by Antonio Diaz Diaz in
<http://lists.gnu.org/archive/html/bug-gzip/2013-04/msg00011.html>.
* tests/help-version (gunzip_setuphelp, gzexe_setuphelp)
(zcat_setuphelp, zcmp_setuphelp, zdiff_setuphelp)
(zegrep_setuphelp, zfgrep_setuphelp, zforce_setuphelp)
(zgrep_setuphelp, zless_setuphelp, zmore_setuphelp)
(znew_setuphelp): New functions, used when testing even --help.
(zdiff_setup, zcat_setup, znew_setup, zgrep_setup, gzexe_setup):
Use gzip_setuphelp to set --__bindir.
Paul Eggert [Wed, 10 Apr 2013 22:26:47 +0000 (15:26 -0700)]
tests: work even if non-GNU gzip is installed in /usr/local/bin
Problem reported by Antonio Diaz Diaz in
<http://lists.gnu.org/archive/html/bug-gzip/2013-04/msg00004.html>.
* tests/help-version (zdiff_setup, zcat_setup, znew_setup, zgrep_setup)
(gzexe_setup): Pass --__bindir so that subsidiary programs are our
own's, not /usr/local/bin's. This requires using 'eval' on the result.
(zcmp_setup, gunzip_setup, zmore_setup, zless_setup, zforce_setup)
(zegrep_setup, zfgrep_setup): Invoke one of the other setup functions,
to make the patterns more obvious and simplify future maintenance.
* zcmp.in, zegrep.in, zfgrep.in: Pass __bindir to subsidiary program.
Paul Eggert [Mon, 25 Feb 2013 19:24:14 +0000 (11:24 -0800)]
gzip: port to DMF file systems
* util.c (read_buffer): When reading a file with O_NONBLOCK, if
the read fails with errno==EAGAIN, clear O_NONBLOCK and try again.
Problem reported by Vitezslav Cizek in
<http://lists.gnu.org/archive/html/bug-gzip/2013-02/msg00030.html>.
Paul Eggert [Tue, 5 Feb 2013 21:37:40 +0000 (13:37 -0800)]
gzip: fix bug where you say "n" and gzip acts as if you said "y"
Problem reported for GCC 4.7 x86-64 -O2 by Allan McRae in
<http://lists.gnu.org/archive/html/bug-gzip/2013-02/msg00000.html>.
* NEWS: Document this. Use consistent format in earlier note.
* gzip.c: Include yesno.h.
* gzip.h (yesno): Remove decl; that's yesno.h's job.
Paul Eggert [Sat, 8 Dec 2012 18:45:18 +0000 (10:45 -0800)]
diagnose unexpected EOF and zero lengths in packed data
Problem reported by Aki Helin.
* NEWS: Mention Aki's reports.
* tests/unpack-invalid: New file,
with test data suggested by Aki.
* tests/Makefile.am (TESTS): Add it.
* unpack.c (read_byte): New function.
(look_bits, read_tree): Use it.
(read_tree): Check against zero bit length Huffman code.
Paul Eggert [Fri, 16 Nov 2012 22:05:34 +0000 (14:05 -0800)]
gzip: diagnose invalid code in packed data
* unpack.c (unpack): When encountering a code out of range, report
it and fail rather than charging ahead with randomish output.
Problem reported by Aki Helin.
Paul Eggert [Fri, 16 Nov 2012 19:44:06 +0000 (11:44 -0800)]
maint: merge build improvements from coreutils
* configure.ac: Invoke gl_ASSERT_NO_GNULIB_POSIXCHECK.
(--enable-gcc-warnings): Change help message.
(gl_GCC_VERSION_IFELSE): New macro.
Do not omit -Wunused-macros for main code.
Adjust other -W options as per coreutils.
* lib/Makefile.am (AM_CFLAGS): Use GNULIB_WARN_CFLAGS, not WARN_CFLAGS.
* unlzw.c (REGISTERS, REG1, REG2, ..., REG16): Remove.
All uses removed. These provoked -Wunused-macros warnings.
This sort of fiddling with registers hasn't been needed for years.
Paul Eggert [Fri, 16 Nov 2012 18:54:23 +0000 (10:54 -0800)]
doc: bring up to date and fix troff typos
* doc/gzip.texi (Overview): Update RFC URLs.
* gzip.1: Likewise. Don't say "SEE ALSO" to programs that almost
nobody has installed anymore.
* gzip.1, zmore.1: Fix some troff typos.
* zdiff.1: Clarify what happens with input files. Don't talk
about temporary file names, as they're rarely used these days.
Paul Eggert [Wed, 24 Oct 2012 22:37:01 +0000 (15:37 -0700)]
tests: exercise the grep -e portability fix
Remove workaround for Solaris, since the bug should be fixed now.
Suggested by Petr Sumbera in
<http://lists.gnu.org/archive/html/bug-gzip/2012-10/msg00005.html>.
* tests/zgrep-context, tests/zgrep-f: All uses removed.
* tests/init.cfg (require_POSIX_grep_): Remove.
Eric Blake [Tue, 23 Oct 2012 09:06:11 +0000 (11:06 +0200)]
build: default to --enable-gcc-warnings in a git tree
Anyone building from cloned sources can be assumed to have a new
enough environment, such that enabling gcc warnings by default will
be useful. Tarballs still default to no warnings, and the default
can still be overridden with --disable-gcc-warnings.
* configure.ac (gl_gcc_warnings): Set default based on environment.
Paul Eggert [Sun, 21 Oct 2012 06:15:26 +0000 (23:15 -0700)]
zgrep: do not assume standard 'grep' has -e
On Solaris 11, /usr/bin/grep -e does not work.
Problem reported by Petr Sumbera in
<http://lists.gnu.org/archive/html/bug-gzip/2012-10/msg00003.html>.
* Makefile.am (.in): Substitute @GREP@.
* configure.ac (AC_PROG_GREP): Invoke.
* zgrep.in (grep): Use @GREP@.
Paul Eggert [Wed, 15 Aug 2012 03:43:16 +0000 (20:43 -0700)]
zgrep: do not assume GNU expr
* zgrep.in: Do not assume '\+' has the GNU behavior in the BRE
given to 'expr', as POSIX does not guarantee that. Come to think
of it, use a shell pattern rather than 'expr', as this is more
efficient.
Paul Eggert [Wed, 20 Jun 2012 00:22:52 +0000 (17:22 -0700)]
zmore: rewrite to fix bugs and assume POSIX
Problem reported for Solaris 9 by Daniel in
<http://lists.gnu.org/archive/html/bug-gzip/2012-06/msg00007.html>.
Rather than figure out what exactly went wrong in Solaris 9
it was easier to rip out all the buggy compatibility and stty cruft.
* zmore.in: Don't use stty or trap; simply pipe the output to 'more'
and let it deal with signals and terminal control.
Use printf, not 'echo', to avoid problems with backslashes.
Don't assume ANS is not 's' in the environment.
Use a 'more'-style header instead of rolling our own style.
Paginate the header, too; the old behavior lost the header.
* NEWS, zmore.1: Document this.
Paul Eggert [Tue, 24 Apr 2012 16:16:17 +0000 (09:16 -0700)]
gzip: port gzip -rf to ZFS
Problem reported privately by Rich Burridge.
* bootstrap.conf: Add savedir.
* gzip.c: Include <savedir.h>.
(_D_EXACT_NAMELEN): Remove.
(treat_dir): Use savedir rather than reading directory entries one
at a time, to avoid revisiting an already-compressed file when using
ZFS and the -rf flags are specified.
* lib/.gitignore, m4/.gitignore: Ignore savedir-related files.
Jim Meyering [Wed, 11 Jan 2012 20:31:50 +0000 (21:31 +0100)]
build: accommodate newer bootstrap from gnulib
* bootstrap.conf (gnulib_tool_option_extras): Add both --symlink
and --makefile-name=gnulib.mk.
* bootstrap: Update from gnulib.
* tests/init.sh: Update from gnulib.
* lib/Makefile.am: Initialize all of the following so that
generated code in gnulib.mk may use += to append to those variables:
AM_CFLAGS, BUILT_SOURCES, CLEANFILES, EXTRA_DIST, MOSTLYCLEANDIRS,
MOSTLYCLEANFILES, SUFFIXES, noinst_LTLIBRARIES.
Paul Eggert [Thu, 22 Dec 2011 00:11:43 +0000 (16:11 -0800)]
zless: decompress stdin too, if less 429 or later
* zless.in: Use LESSOPEN |- feature of less 429 or later.
Problem reported by Jeroen Roovers via Mike Frysinger in
<http://lists.gnu.org/archive/html/bug-gzip/2011-12/msg00006.html>.
Jim Meyering [Tue, 29 Nov 2011 17:33:31 +0000 (18:33 +0100)]
build: accommodate gnulib's new warnings with --enable-gcc-warnings
* configure.ac (WERROR_CFLAGS): Disable two new warnings:
-Wno-format-nonliteral, -Wno-unsuffixed-float-constants.
* gzip.h (bi_reverse): Declare with _GL_ATTRIBUTE_CONST.
(gzip_base_name): Declare with _GL_ATTRIBUTE_PURE.
Jim Meyering [Tue, 29 Nov 2011 17:14:02 +0000 (18:14 +0100)]
tests: use "compare exp out", not "compare out exp"
Likewise, when an empty file is expected, use "compare /dev/null out",
not "compare out /dev/null". I.e., specify the expected/desired contents
via the first file name. Prompted by a suggestion from Bruno Haible
in http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020/focus=29154
Jim Meyering [Sat, 14 May 2011 10:56:08 +0000 (12:56 +0200)]
build: avoid link failure on at least i386-FreeBSD7.2
* deflate.c (match_start, prev_length, max_chain_length): Do not
declare these as static. On some types of system/arch, they are
used via match_.s.
* cfg.mk (_gl_TS_unmarked_extern_vars): Mark those three variables
as known-extern: match_start, prev_length, max_chain_length.
Jim Meyering [Fri, 13 May 2011 08:58:24 +0000 (10:58 +0200)]
maint: use gnulib's new readme-release module
* bootstrap.conf (gnulib_modules): Add readme-release.
(bootstrap_epilogue): Add the recommended perl one-liner.
* README-release: Remove file; it is now generated from gnulib.
* .gitignore: Add it.
Jim Meyering [Mon, 9 May 2011 07:00:19 +0000 (09:00 +0200)]
maint: limit scope of several functions
* deflate.c (longest_match): Move extern declaration into #if-ASMV block.
[!ASMV]: Define as static.
* inflate.c: Remove unnecessary prototypes.
ANSI-declify functions and declare them to be static.
Jim Meyering [Mon, 9 May 2011 06:02:49 +0000 (08:02 +0200)]
maint: prepare for tight-scope rule: use noinst_HEADERS
* Makefile.am (EXTRA_DIST): Move lzw.h and gzip.h from here to ...
(noinst_HEADERS): ...here.
For convenience, since the tight-scope rule uses $(noinst_HEADERS).
Jim Meyering [Sun, 20 Mar 2011 08:53:04 +0000 (09:53 +0100)]
maint: stop using .x-sc_* files to list syntax-check exemptions
Instead, use the new mechanism with which you merely use a
variable (derived from the rule name) defined in cfg.mk to an ERE
matching the exempted file names.
* gnulib: Update to latest, to get maint.mk that implements this.
* .x-sc_file_system: Remove file.
* .x-sc_prohibit_tab_based_indentation: Likewise.
* .x-sc_require_config_h: Likewise.
* .x-sc_require_config_h_first: Likewise.
* cfg.mk: Define variables to exempt the same files.