cvs-unwrap   [plain text]


#!/bin/sh
#
#	cvs-unwrap - Extract a tar package created with `cvs-wrap'.
#

#ident $Id

program="`basename $0`"

usage="Usage: $program tarfile
Extracts directories from a gzipped tar file created by \`cvs-wrap'.
"

for option
do
  case "$option" in
    -h | --help)
      echo "$usage"
      exit 1
      ;;
    -*)
      echo "$program: Unknown option: $option"
      echo "$usage"
      exit 1
      ;;
    *)
      ;;
  esac
done

if [ $# -ne 1 ]; then
  echo "$program: Invalid parameters."
  echo "$usage"
  exit 1
fi

if [ ! -f "$1" ]; then
  echo "$program: \`$1' doesn't exist."
  echo "$usage"
  exit 1
fi

# Move the file to a new name.

tmpfile="$1.cvswrapped-file-$$"

rm -rf "$tmpfile"; mv "$1" "$tmpfile"

# Find and remove the wrapper reference, and unpack the wrapper.

if `gzip -t "$tmpfile" > /dev/null 2>&1`; then
  wrapper=`gzip -d -c "$tmpfile" | gnutar -t -f - | head -1`
  rm -rf "$wrapper"
  gzip -d -c "$tmpfile" | gnutar -m --preserve --sparse -x -f -
else
  wrapper=`gnutar -t -f "$tmpfile" | head -1`
  rm -rf "$wrapper"
  gnutar -m --preserve --sparse -x -f "$tmpfile"
fi

# Remove the temporary file.

rm -rf "$tmpfile"

exit 0