summaryrefslogtreecommitdiff
path: root/zdiff.in
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-11-20 08:40:33 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-11-20 08:40:33 +0000
commit03167e0cea52f915ea63566a76d76e68659542e8 (patch)
tree48d392bfcc77dd59f7cd22807883fd4eb09a9f0f /zdiff.in
parent6321ef813e2295459649f6b19bc89eeddd423f4d (diff)
downloadgzip-03167e0cea52f915ea63566a76d76e68659542e8.tar.gz
* NEWS, configure.ac (AC_INIT):
Version 1.3.6 released. * NEWS: Describe 1.3.6's changes. * NEWS, README, README-alpha, TODO: Change from GPL to FDL. * .cvsignore, README-cvs, bootstrap, bootstrap.conf: New files. * doc/Makefile.am, lib/Makefile.am: New files. * THANKS: Change own email address to cs.ucla.edu. Add Sverre Jarp. * TODO: Add new tasks to remove porting cruft and all those buggy scripts. * configure.ac: Renamed from configure.in. (AC_PREREQ): Bump to 2.60. (AC_INIT): Bump version to 1.3.6. (AC_CONFIG_AUX_DIR): New. (AC_CONFIG_HEADERS): Move config.h to lib. Input is now lib/config.hin. (AM_INIT_AUTOMAKE): Add gnits, dist-shar. (AC_PROG_CC_STDC): New, replacing AC_PROG_CC. (AM_PROG_CC_C_O, AC_PROG_RANLIB): New. (AC_AIX, AC_GNU_SOURCE, AC_MINIX): Remove; gnulib does them now. (gl_EARLY, gl_INIT): New. match.c was moved to lib/match.c. (AC_CHECK_HEADERS_ONCE): Replace AC_CHECK_HEADERS. Don't check for sys/utime.h or utime.h. (AC_CHECK_FUNCS_ONCE): Replace AC_CHECK_FUNCS. Check for fchmod and fchown, not utime. (AC_REPLACE_FUNCS): Remove; rpmatch is now done by gnulib. (AC_CONFIG_FILES): Add doc/Makefile, lib/Makefile. * bits.c: Use the more-usual form for copyright notices in source code. * deflate.c: Likewise. * gzip.c: Likewise. * gzip.h: Likewise. * inflate.c: Likewise. * lzw.h: Likewise. * revision.h: Likewise. * tailor.h: Likewise. * trees.c: Likewise. * unpack.c: Likewise. * unzip.c: Likewise. * util.c: Likewise. * crypt.c (dummy): Add decl so that pedantic compilers won't complain about an empty file. * gzip.c (license_msg): Use more-modern wording. Include fcntl-safer.h, openat.h, stat-macros.h, stat-time.h. Simply include <dirent.h> if !NO_DIR, removing a rats-nest of #ifdefs. Simply include <utimens.h> if !defined NO_UTIME, removing a another rats-nest of #ifdefs. (DIR_OPT, TIME_OPT): Remove. (_D_EXACT_NAMLEN): Renamed from NAMLEN. All uses changed. (S_ISDIR, S_ISREG, O_BINARY, O_CREAT, O_EXCL, S_IRUSR, S_IWUSR): Remove; gnulib now does this. (RETSIGTYPE): Remove; Autoconf does this. (program_name): Renamed from progname, for compatibility with gnulib. All uses changed. (time_stamp): Now struct timespec, not time_t. All uses changd. (remove_oftime): Now volatile. (reset_times): Remove; now done by futimens. (usage): Remove. (try_help): New function. (help, license): Don't output date as part of version. A version number suffices. (help): Redo help message to match style of coreutils etc. (version): Don't bother printing compile-time configuration info like STDC_HEADERS. (main): Don't assume strlen (argv[0]) < INT_MAX (!). On usage errors, suggest --help without outputting all the help. (main, do_list): Remove unnecessary casts. (treat_stdin, treat_file, get_method, copy_stat): Support sub-second time stamp resolution. (treat_file, copy_istat): Close some race conditions if files are renamed as we read or write them. (treat_file): Do not attempt to reset the access times of directories that we read. (open_and_stat, open_input_file): New functions. (do_stat, get_istat): Remove; most of the contents went to these new functions. (make_ofname): Don't use WARN, as it affects exit status. (get_method): When the original file name was truncated, restore from its base name, not from its full name. (do_list): Avoid undefined behavior with out-of-range time stamps. ctime, for example, cannot be invoked on arbitrary time stamps safely, since it might overrun an internal buffer. Do not assume that localtime succeeds. (copy_stat): Do not remove input file; that's now the caller's responsibility. This avoids a problem if there is a write error when the caller closes the output file. (treat_dir): New arg FD, to avoid a race condition. All uses changed. (remove_output_file): New function. (abort_gzip): Use it. (abort_gzip_signal): New function, which is async-signal-safe. Exit with the signal that we got. * gzip.h (program_name, time_stamp, abort_gzip): Adjust decls to match gzip.c changes. * inflate.c (huft_build): Return 2 if null input. * tailor.h (HAVE_UTIME): Do not define; gnulib does this now. (OPEN): Use open_safer, not plain open. * unlzh.c (NPT): Set to 1<<TBIT, not to the maximum of NT and NP. (make_table): Report an error if 1<<tablebits < nextcode. (read_pt_len): Report an error if 16 < c. * unpack.c (read_tree): Report an error if the tree has too many leaves while reading it. Fix off-by-one error in final check. * util.c: Include <xalloc.h>, for xalloc_die decl. (gzip_base_name): Renamed from base_name, so we don't collide with gnulib. All uses changed. (add_envopt): Use xstrdup instead of xmalloc+strcpy. Use xcalloc rather than calloc + check. (gzip_error): Renamed from error, so we don't collide with gnulib. All uses changed. (xalloc_die): New function. (xmalloc): Remove; no longer needed. * zip.c (zip): Watch for time stamp overflow; the old code mishandled negative time stamps. * gzexe.in: Add support for --help, --version, --. Don't call basename or sed if we can avoid it. * zdiff.in: Likewise. * zforce.in: Likewise. * zgrep.in: Likewise. * zless.in: Likewise. * zmore.in: Likewise. * znew.in: Likewise. * zdiff.in: Protect against file names beginning with "-". * zmore.in: Likewise. * zgrep.in: Use printf rather than echo, to avoid problems with leading "-" and backslash. Return status of subsidiary grep. * zless.in: Add copyright notice. * zless.1: We now pass "--" to LESSOPEN. (BUGS): Mention that input file arguments are required. Add copyright notice. * COPYING: Update to current version. * Makefile.am (SUBDIRS): New macro. (AUTOMAKE_OPTIONS): Remove; now done in configure.ac. (M4DIR, ACINCLUDE_INPUTS): Remove. (EXTRA_DIST): Remove getopt.h. (gzip_SOURCES): Remove getopt.c, getopt1.c, yesno.c. (gzip_LDADD): Change from @LIBOBJS@ to lib/libgzip.a. (AM_MAKEINFOFLAGS, info_TEXINFOS, gzip_TEXINFOS, ASCPP, LN_S): (match.$(OBJEXT)): Move to subdirectory makefiles. (.in): Substitute @VERSION@, too. (check-local): New rule. (MOSTLYCLEANFILES): Add _match.S. * doc/gzip.texi: Renamed from gzip.texi. Change to GNU FDL without invariant sections or cover texts. Don't put version number or date into sample gzip -h output. * lib/match.c: Renamed from match.c. Add ia64 version written by Sverre Jarp (HP Labs). * INSTALL: Remove from CVS; now created automatically by the bootstrap script. * Makefile.in: Likewise. * aclocal.m4: Likewise. * config.h.in: Likewise. * configure: Likewise. * depcomp: Likewise. * fdl.texi: Likewise. * getopt.c: Likewise. * getopt.h: Likewise. * getopt1.c: Likewise. * gzip.doc: Likewise. * gzip.info: Likewise. * install-sh: Likewise. * mdate-sh: Likewise. * missing: Likewise. * mkinstalldirs: Likewise. * rpmatch.c: Likewise. * stamp-vti: Likewise. * texinfo.tex: Likewise. * version.texi: Likewise. * yesno.c: Likewise.
Diffstat (limited to 'zdiff.in')
-rw-r--r--zdiff.in65
1 files changed, 39 insertions, 26 deletions
diff --git a/zdiff.in b/zdiff.in
index 8190192..9300a44 100644
--- a/zdiff.in
+++ b/zdiff.in
@@ -11,34 +11,47 @@
# or diff is preserved.
PATH="BINDIR:$PATH"; export PATH
-prog=`echo $0 | sed 's|.*/||'`
-case "$prog" in
- *cmp) comp=${CMP-cmp} ;;
- *) comp=${DIFF-diff} ;;
+case "$0" in
+ *cmp) prog=cmp ; comp=${CMP-cmp} ;;
+ *) prog=diff; comp=${DIFF-diff} ;;
esac
+version="z$prog (gzip) @VERSION@
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Jean-loup Gailly."
+
+usage="Usage: z$prog [OPTION]... FILE1 [FILE2]
+Compare FILE1 to FILE2, using their uncompressed contents if they are
+compressed. If FILE2 is omitted, compare FILE1 to the uncompressed
+contents of FILE1.gz. Do comparisons like '$prog' does.
+
+OPTIONs are the same as for '$prog'.
+
+Report bugs to <bug-gzip@gnu.org>."
+
OPTIONS=
FILES=
-for ARG
-do
- case "$ARG" in
- -*) OPTIONS="$OPTIONS $ARG";;
- *) if test -f "$ARG"; then
- FILES="$FILES $ARG"
- else
- echo "${prog}: $ARG not found or not a regular file"
- exit 2
- fi ;;
- esac
+while :; do
+ case $1 in
+ --h*) echo "$usage" || exit 2; exit;;
+ --v*) echo "$version" || exit 2; exit;;
+ --) shift; break;;
+ -*) OPTIONS="$OPTIONS $ARG"; shift;;
+ esac
+done
+for file; do
+ test -f "$file" || {
+ echo "$prog: $file not found or not a regular file"
+ exit 2
+ }
done
-if test -z "$FILES"; then
- echo "Usage: $prog [${comp}_options] file [file]"
- exit 2
-fi
-set $FILES
if test $# -eq 1; then
FILE=`echo "$1" | sed 's/[-.][zZtga]*$//'`
- gzip -cd "$1" | $comp $OPTIONS - "$FILE"
+ gzip -cd -- "$1" | $comp $OPTIONS - "$FILE"
elif test $# -eq 2; then
case "$1" in
@@ -48,22 +61,22 @@ elif test $# -eq 2; then
F=`echo "$2" | sed 's|.*/||;s|[-.][zZtga]*||'`
set -C
trap 'rm -f /tmp/"$F".$$; exit 2' HUP INT PIPE TERM 0
- gzip -cdfq "$2" > /tmp/"$F".$$ || exit
- gzip -cdfq "$1" | $comp $OPTIONS - /tmp/"$F".$$
+ gzip -cdfq -- "$2" > /tmp/"$F".$$ || exit
+ gzip -cdfq -- "$1" | $comp $OPTIONS - /tmp/"$F".$$
STAT="$?"
/bin/rm -f /tmp/"$F".$$ || STAT=2
trap - HUP INT PIPE TERM 0
exit $STAT;;
- *) gzip -cdfq "$1" | $comp $OPTIONS - "$2";;
+ *) gzip -cdfq -- "$1" | $comp $OPTIONS - "$2";;
esac;;
*) case "$2" in
*[-.]gz* | *[-.][zZ] | *.t[ga]z)
- gzip -cdfq "$2" | $comp $OPTIONS "$1" -;;
+ gzip -cdfq -- "$2" | $comp $OPTIONS "$1" -;;
*) $comp $OPTIONS "$1" "$2";;
esac;;
esac
else
- echo "Usage: $prog [${comp}_options] file [file]"
+ echo "$usage"
exit 2
fi