#! /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= two_hyphens=0 # Loop over args until a filename is found while [ x"$1" != x ] ; 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" echo "transparent concatenation of any combination of compressed and" echo "non-compressed files. If any given file is compressed, its uncompressed" echo "content is used. If a given file does not exist, zcat tries the" echo "compressed file names corresponding to the supported compressors." echo "The supported compressors are gzip, bzip2, 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 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 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 ;; -) ;; --) shift ; two_hyphens=1 ; break ;; -?*) args="${args} $1" ;; *) break ;; esac shift done 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" 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 gzip) prog="gzip -cdfq" ;; bzip2) prog="bzip2 -cdfq" ;; lzip) prog="lzip -cdfq" ;; xz) prog="xz -cdfq" ;; *) prog=cat ;; esac ${prog} -- "$i" | cat ${args} r=$? if [ $r != 0 ]; then retval=$r ; fi fi done exit ${retval}