: ########################################################################## # Title : uncpio - unpack cpio file # Author : Heiner Steven # Date : 1994-09-23 # Requires : cpio, icat, uncompress # Category : File Utilities # SCCS-Id. : @(#) uncpio 1.2 03/12/19 ########################################################################## # Description # ########################################################################## PN=`basename "$0"` # Program name VER='1.2' usage () { echo >&2 "$PN - unarchive cpio archive, $VER (stv '95) usage: $PN [-vu] [archive...] -v print extracted file names -u unconditionally overwrite existing files If the specified archive does not exist, the files archive.cpz, archive.cpio and compressed versions of archive.cpio are also tried." exit 1 } msg () { for i do echo "$PN: $i" >&2 done } fatal () { msg "$@"; exit 1; } set -- `getopt huv "$@"` CpioOpt=dm # Options for cpio while [ $# -gt 0 ] do case "$1" in -h) usage;; -v) CpioOpt="${CpioOpt}v";; -u) CpioOpt="${CpioOpt}u";; --) shift; break;; -*) usage;; *) break;; # File name esac shift done Err=0 if [ $# -lt 1 ] then # read from stdin -- uncompressed cpio -i$CpioOpt || fatal "error extracting from standard input" else for file in $* # no blanks permitted in file name do if [ -f "$file" -a -r "$file" ] then # file exists # If input is no cpio-archive, try 'icat' to # uncompress input echo "$file - \c" >&2 cpio -i$CpioOpt < "$file" 2> /dev/null || icat "$file" | cpio -i$CpioOpt elif [ -f "$file.cpio" -a -r "$file.cpio" ] then cpio -i$CpioOpt < $file.cpio elif [ -f "$file.cpz" -a -r "$file.cpz" ] then # compressed echo "$file.cpz - \c" >&2 uncompress < $file.cpz | cpio -i$CpioOpt elif [ -n "`ls $file.cpio.* 2> /dev/null`" ] then icat $file.cpio.* | cpio -i$CpioOpt else msg "$file not found - ignored" Err=`expr $Err + 1` fi done fi exit $Err