Quick & dirty update to support xz in diff/grep/more scripts.

This commit is contained in:
Lasse Collin 2009-04-13 14:49:48 +03:00
parent 02ddf09bc3
commit 2f0bc9cd40
7 changed files with 119 additions and 75 deletions

View File

@ -5,27 +5,37 @@
## You can do whatever you want with this file.
##
dist_bin_SCRIPTS = lzdiff lzgrep lzmore
dist_man_MANS = lzdiff.1 lzgrep.1 lzmore.1
dist_bin_SCRIPTS = xzdiff xzgrep xzmore
dist_man_MANS = xzdiff.1 xzgrep.1 xzmore.1
install-exec-hook:
cd $(DESTDIR)$(bindir) && \
rm -f lzcmp lzegrep lzfgrep lzless && \
$(LN_S) lzdiff lzcmp && \
$(LN_S) lzgrep lzegrep && \
$(LN_S) lzgrep lzfgrep && \
$(LN_S) lzmore lzless
rm -f xzcmp xzegrep xzfgrep xzless lzcmp lzegrep lzfgrep lzless && \
$(LN_S) xzdiff xzcmp && \
$(LN_S) xzgrep xzegrep && \
$(LN_S) xzgrep xzfgrep && \
$(LN_S) xzmore xzless && \
$(LN_S) xzdiff lzcmp && \
$(LN_S) xzgrep lzegrep && \
$(LN_S) xzgrep lzfgrep && \
$(LN_S) xzmore lzless
install-data-hook:
cd $(DESTDIR)$(mandir)/man1 && \
rm -f lzcmp.1 lzegrep.1 lzfgrep.1 lzless.1 && \
$(LN_S) lzdiff.1 lzcmp.1 && \
$(LN_S) lzgrep.1 lzegrep.1 && \
$(LN_S) lzgrep.1 lzfgrep.1 && \
$(LN_S) lzmore.1 lzless.1
rm -f xzcmp.1 xzegrep.1 xzfgrep.1 xzless.1 \
lzcmp.1 lzegrep.1 lzfgrep.1 lzless.1 && \
$(LN_S) xzdiff.1 xzcmp.1 && \
$(LN_S) xzgrep.1 xzegrep.1 && \
$(LN_S) xzgrep.1 xzfgrep.1 && \
$(LN_S) xzmore.1 xzless.1 && \
$(LN_S) xzdiff.1 lzcmp.1 && \
$(LN_S) xzgrep.1 lzegrep.1 && \
$(LN_S) xzgrep.1 lzfgrep.1 && \
$(LN_S) xzmore.1 lzless.1
uninstall-hook:
cd $(DESTDIR)$(bindir) && \
rm -f lzcmp lzegrep lzfgrep lzless
rm -f xzcmp xzegrep xzfgrep xzless lzcmp lzegrep lzfgrep lzless
cd $(DESTDIR)$(mandir)/man1 && \
rm -f lzcmp.1 lzegrep.1 lzfgrep.1 lzless.1
rm -f xzcmp.1 xzegrep.1 xzfgrep.1 xzless.1 \
lzcmp.1 lzegrep.1 lzfgrep.1 lzless.1

View File

@ -1,10 +1,10 @@
#!/bin/sh
# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
# lzcmp and lzdiff are used to invoke the cmp or the diff pro-
# xzcmp and xzdiff are used to invoke the cmp or the diff pro-
# gram on compressed files. All options specified are passed
# directly to cmp or diff. If only 1 file is specified, then
# the files compared are file1 and an uncompressed file1.lzma.
# the files compared are file1 and an uncompressed file1.xz.
# If two files are specified, then they are uncompressed and
# fed to cmp or diff. The exit status from cmp or diff is
# preserved.
@ -35,29 +35,29 @@ if test -z "$FILES"; then
fi
set $FILES
if test $# -eq 1; then
FILE=`echo "$1" | sed 's/[-.][tlaz]*$//'`
lzma -dc "$1" | $comp $OPTIONS - "$FILE"
FILE=`echo "$1" | sed 's/[-.][almtxz]*$//'`
xz -dc "$1" | $comp $OPTIONS - "$FILE"
elif test $# -eq 2; then
case "$1" in
*[-.]lzma | *.t[la]z)
*[-.]xz | *.txz | *[-.]lzma | *.tlz)
case "$2" in
*[-.]lzma | *.t[la]z)
F=`echo "$2" | sed 's|.*/||;s|[-.][tlaz]*||'`
*[-.]xz | *.txz | *[-.]lzma | *.tlz)
F=`echo "$2" | sed 's|.*/||;s|[-.][almtxz]*||'`
TF=`/usr/bin/mktemp ${TMPDIR:-/tmp}/"$F".XXXXXXXXXX` || exit 1
trap 'rm -f "$TF"; exit 2' EXIT HUP INT PIPE TERM
lzma -dc "$2" > "$TF" || exit
lzma -dc "$1" | $comp $OPTIONS - "$TF"
xz -dc -- "$2" > "$TF" || exit
xz -dc -- "$1" | $comp $OPTIONS - "$TF"
STAT="$?"
rm -f "$TF" || STAT=2
trap EXIT HUP INT PIPE TERM
exit $STAT;;
*) lzma -dc "$1" | $comp $OPTIONS - "$2";;
*) xz -dc -- "$1" | $comp $OPTIONS - "$2";;
esac;;
*) case "$2" in
*[-.]lzma | *.t[la]z)
lzma -dc "$2" | $comp $OPTIONS "$1" -;;
*[-.]xz | *.txz | *[-.]lzma | *.tlz)
xz -dc -- "$2" | $comp $OPTIONS "$1" -;;
*) $comp $OPTIONS "$1" "$2";;
esac;;
esac

View File

@ -1,16 +1,23 @@
.TH LZDIFF 1 "24 Jun 2005" "LZMA utils"
.\" Original file was take from gzip, thus this man page is under GNU GPLv2+.
.TH XZDIFF 1 "2009-04-13" "XZ Utils"
.SH NAME
lzcmp, lzdiff \- compare LZMA compressed files
xzcmp, xzdiff, lzcmp, lzdiff \- compare .xz and .lzma compressed files
.SH SYNOPSIS
.B xzcmp
.RI [ cmp_options "] " file1 " [" file2 ]
.br
.B xzdiff
.RI [ diff_options "] " file1 " [" file2 ]
.br
.B lzcmp
.RI [ cmp_options "] " file1 " [" file2 ]
.br
.B zdiff
.B lzdiff
.RI [ diff_options "] " file1 " [" file2 ]
.SH DESCRIPTION
.B lzcmp
.B xzcmp
and
.B zdiff
.B xdiff
are used to invoke the
.BR cmp (1)
or the
@ -21,8 +28,9 @@ or
.BR diff "."
If only 1 file is specified, then the files compared are
.I file1
and an uncompressed
.IB file1 ".gz\fR."
(which must have .xz or .lzma suffix) and
.I file1
from which the .xz or .lzma suffix has been stripped.
If two files are specified, then they are uncompressed if necessary and fed to
.B cmp
or
@ -39,10 +47,9 @@ shipped in gzip package.
.SH "SEE ALSO"
.BR cmp (1),
.BR diff (1),
.BR lzmore(1),
.BR lzgrep(1),
.BR lzma (1),
.BR lzmash (1)
.BR xzmore(1),
.BR xzgrep(1),
.BR xz (1)
.SH BUGS
Messages from the
.B cmp

View File

@ -1,7 +1,7 @@
#!/bin/sh
# lzgrep -- a wrapper around a grep program that decompresses files as needed
# Adapted to LZMA utils from gzip-1.3.3 + Red Hat's security patches
# xzgrep -- a wrapper around a grep program that decompresses files as needed
# Adapted to XZ Utils from gzip-1.3.3 + Red Hat's security patches
# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
# Copyright (C) 1998, 2001 Free Software Foundation
# Copyright (C) 1993 Jean-loup Gailly
@ -82,20 +82,20 @@ while test $# -ne 0; do
done
if test -z "$pat"; then
echo "grep through lzma files"
echo "grep through .xz and .lzma files"
echo "usage: $prog [grep_options] pattern [files]"
exit 1
fi
if test $# -eq 0; then
lzma -dc | $grep $opt "$pat"
xz -dc | $grep $opt "$pat"
exit $?
fi
res=0
trap break SIGPIPE
for i do
lzma -dc "$i" |
xz -dc -- "$i" |
if test $files_with_matches -eq 1; then
$grep $opt "$pat" > /dev/null && printf "%s\n" "$i"
elif test $files_without_matches -eq 1; then

View File

@ -1,23 +1,33 @@
.TH LZGREP 1 "24 Jun 2005" "LZMA utils"
.\" Original file was take from gzip, thus this man page is under GNU GPLv2+.
.TH XZGREP 1 "2009-04-13" "XZ Utils"
.SH NAME
lzgrep \- search LZMA compressed files for a regular expression
xzgrep \- search .xz and .lzma compressed files for a regular expression
.SH SYNOPSIS
.B lzgrep
.B xzgrep
.RI [ grep_options ]
.RB [ \-e ]
.I pattern
.IR filename ".\|.\|."
.br
.B xzegrep
.RB ...
.br
.B xzfgrep
.RB ...
.br
.B lzgrep
.RB ...
.br
.B lzegrep
.RB ...
.br
.B lzfgrep
.RB ...
.SH DESCRIPTION
.B lzgrep
.B xzgrep
is used to invoke the
.BR grep (1)
on LZMA compressed files. All options specified are passed directly to
on .xz or .lzma compressed files. All options specified are passed directly to
.BR grep .
If no file is specified, then the standard input is decompressed
if necessary and fed to grep.
@ -25,37 +35,43 @@ Otherwise the given files are uncompressed if necessary and fed to
.BR grep .
.PP
If
.B lzgrep
.B xzgrep
is invoked as
.B lzegrep
.B xzegrep
or
.B lzfgrep
.B xzfgrep
then
.B egrep
or
.B fgrep
is used instead of
.B grep.
The same applies to names
.BR lzgrep ,
.BR lzegrep ,
and
.BR lzfgrep ,
which are provided for backward compatibility with LZMA Utils.
If the GREP environment variable is set,
.B lzgrep
.B xzgrep
uses it as the
.B grep
program to be invoked. For example:
for sh: GREP=fgrep lzgrep string files
for csh: (setenv GREP fgrep; lzgrep string files)
for sh: GREP=fgrep xzgrep string files
for csh: (setenv GREP fgrep; xzgrep string files)
.SH AUTHORS
Original
.BR zgrep (1)
manual page by Charles Levert <charles@comm.polymtl.ca>.
.PP
Minor modifications for LZMA utils by Lasse Collin
Minor modifications for XZ Utils by Lasse Collin
<lasse.collin@tukaani.org>.
.SH "SEE ALSO"
.BR grep (1),
.BR egrep (1),
.BR fgrep (1),
.BR lzdiff (1),
.BR lzmore (1),
.BR lzma (1),
.BR lzmash (1)
.BR xzdiff (1),
.BR xzmore (1),
.BR xz (1)

View File

@ -2,7 +2,7 @@
# Copyright (C) 2001 Free Software Foundation
# Copyright (C) 1992, 1993 Jean-loup Gailly
# Adapted to LZMA utils from gzip-1.3.3 + Red Hat's security patches
# Adapted to XZ Utils from gzip-1.3.3 + Red Hat's security patches
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -19,9 +19,9 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
if test "`echo "$0" | sed 's|.*/||'`" = "lzless"; then
PAGER=less
fi
case "$0" in
*less) PAGER=less ;;
esac
if test "`echo -n a`" = "-n a"; then
# looks like a SysV system:
@ -46,7 +46,7 @@ if test $# = 0; then
if test -t 0; then
echo usage: zmore files...
else
lzma -dc | eval ${PAGER-more}
xz -dc | eval ${PAGER-more}
fi
else
FIRST=1
@ -65,7 +65,7 @@ else
fi
if test "$ANS" != 's'; then
echo "------> $FILE <------"
lzma -dc "$FILE" | eval ${PAGER-more}
xz -dc -- "$FILE" | eval ${PAGER-more}
fi
if test -t; then
FIRST=0

View File

@ -1,15 +1,22 @@
.TH LZMORE 1 "30 Jun 2005" "LZMA utils"
.\" Original file was take from gzip, thus this man page is under GNU GPLv2+.
.TH XZMORE 1 "2009-04-13" "XZ Utils"
.SH NAME
lzmore, lzless \- view LZMA compressed (text) files
xzmore, xzless, lzmore, lzless \- view .xz or .lzma compressed (text) files
.SH SYNOPSIS
.B xzmore
.RI [ "filename ..." ]
.br
.B xzless
.RI [ "filename ..." ]
.br
.B lzmore
.RI [ "filename ..." ]
.br
.B lzless
.RI [ "filename ..." ]
.SH DESCRIPTION
.B lzmore
is a filter which allows examination of LZMA compressed text files
.B xzmore
is a filter which allows examination of .xz or .lzma compressed text files
one screenful at a time on a soft-copy terminal.
.PP
To use a pager other than the default
@ -19,18 +26,23 @@ set environment variable
to the name of the desired program, such as
.BR less .
If
.B lzmore
.B xzmore
is called as
.B lzless
.B xzless
then
.B less
is used as the
.BR PAGER .
The names
.B lzmore
and
.B lzless
are provided for backward compatibility with LZMA Utils.
.TP
.BR e " or " q
When the prompt --More--(Next file:
.IR file )
is printed, this command causes lzmore to exit.
is printed, this command causes xzmore to exit.
.TP
.B s
When the prompt --More--(Next file:
@ -49,7 +61,6 @@ shipped in gzip package.
.SH "SEE ALSO"
.BR more (1),
.BR zmore (1),
.BR lzdiff (1),
.BR lzgrep (1),
.BR lzma (1),
.BR lzmash (1)
.BR xzdiff (1),
.BR xzgrep (1),
.BR xz (1)