diff options
Diffstat (limited to 'zcat.in')
-rw-r--r-- | zcat.in | 116 |
1 files changed, 2 insertions, 114 deletions
@@ -1,115 +1,3 @@ #! /bin/sh -# Zcat - Cat wrapper for compressed files. -# Copyright (C) 2009 Antonio Diaz Diaz. -# -# This script is free software: you have unlimited permission -# to copy, distribute and modify it. - -LC_ALL=C -export LC_ALL -args= -gz_args= -xz_args= -recursive=0 -two_hyphens=0 - -# Loop over args until a filename is found -while [ -n "$1" ] ; do - - case "$1" in - --help | --he* | -h) - echo "Zcat - Cat wrapper for compressed files." - echo - echo "Zcat is a wrapper script around the cat command that allows transparent" - echo "concatenation of any combination of compressed and non-compressed files." - echo "If any given file is compressed, its uncompressed content is used. If a" - echo "given file does not exist, zcat tries the compressed file names" - echo "corresponding to the supported compressors. If no files are specified," - echo "data is read from standard input, decompressed if needed, and sent to" - echo "stdout. Data read from standard input must be of the same type; all" - echo "uncompressed or all compressed with the same compressor." - echo "The supported compressors are bzip2, gzip, lzip and xz." - echo - echo "Usage: $0 [OPTIONS] [CAT_OPTIONS] [FILES]" - echo - echo "CAT_OPTIONS are passed directly to cat." - echo "The exit status from cat is preserved." - echo - echo "Options:" - echo " -h, --help display this help and exit" - echo " -V, --version output version information and exit" - echo " -r, --recursive operate recursively on directories" - echo - echo "Report bugs to zutils-bug@nongnu.org" - echo "Zutils home page: http://www.nongnu.org/zutils/zutils.html" - exit 0 ;; - --version | --ve* | -V) - echo "Zcat (zutils) VERSION" - echo "Copyright (C) 2009 Antonio Diaz Diaz." - echo "This script is free software: you have unlimited permission" - echo "to copy, distribute and modify it." - exit 0 ;; - - | -c | --st* | -d | --de* | -f | --fo* | -q | --qu* | -L | --lic* ) - ;; - -l | --lis*) - gz_args="${gz_args} $1"; xz_args="${xz_args} $1" ;; - -r | --re*) - recursive=1 ;; - --) - shift ; two_hyphens=1 ; break ;; - -?*) - args="${args} $1" ;; - *) - break ;; - esac - shift -done - -if [ $# = 0 ] ; then - bindir=`echo "$0" | sed -e 's,[^/]*$,,'` - prog_name=`"${bindir}"zutils -t` - case "${prog_name}" in - bzip2) prog="bzip2 -cdfq" ;; - gzip) prog="gzip -cdfq ${gz_args}" ;; - lzip) prog="lzip -cdfq" ;; - xz) prog="xz -cdfq ${xz_args}" ;; - *) prog=cat ;; - esac - { "${bindir}"zutils -m ${prog_name} ; cat ; } | ${prog} | cat ${args} - exit $? -fi - -retval=0 -for i in "$@" ; do - if [ "$i" = "--" ] && [ ${two_hyphens} = 0 ] ; then two_hyphens=1 - else - if [ ! -f "$i" ] ; then - if [ -f "$i.gz" ] ; then i="$i.gz" - elif [ -f "$i.bz2" ] ; then i="$i.bz2" - elif [ -f "$i.lz" ] ; then i="$i.lz" - elif [ -f "$i.xz" ] ; then i="$i.xz" - elif [ ${recursive} = 1 ] && [ -d "$i" ] ; then - find "$i" -type f -exec "$0" '{}' ';' - continue - else - echo "$0: File \"$i\" not found or not a regular file" 1>&2 - if [ ${retval} = 0 ] ; then retval=1 ; fi - continue - fi - fi - bindir=`echo "$0" | sed -e 's,[^/]*$,,'` - prog_name=`"${bindir}"zutils -t -- "$i"` - case "${prog_name}" in - bzip2) prog="bzip2 -cdfq" ;; - gzip) prog="gzip -cdfq ${gz_args}" ;; - lzip) prog="lzip -cdfq" ;; - xz) prog="xz -cdfq ${xz_args}" ;; - *) prog=cat ;; - esac - ${prog} -- "$i" | cat ${args} - r=$? - if [ $r != 0 ] ; then retval=$r ; fi - fi -done - -exit ${retval} +bindir=`echo "$0" | sed -e 's,[^/]*$,,'` +exec "${bindir}"zutils --zcat "$@" |