#!/bin/sh
cat << EOF
Content-type: text/plain

Not supported.
EOF
exit

trap "" 13
INPUT=`echo "$QUERY_STRING" | tr -dc '[:alpha:][0-9]./,-_' | tr -s './'`
if [ "`echo $INPUT | cut -c 1`" = "/" ]; then
  echo Naughty naughty.
  exit
fi
ARCHIVE="`echo $INPUT | cut -d , -f 1`"
FILENAME="`echo $INPUT | cut -d , -f 2`"
echo "$REMOTE_HOST $ARCHIVE $FILENAME $REQUEST_URI" >> .notar
if [ "$ARCHIVE" = ".." -o "$ARCHIVE" = "." ]; then
  echo "Sorry, archive cannot be . or .."
elif [ "$FILENAME" = ".." -o "$ARCHIVE" = "." ]; then
  echo "Sorry, filename cannot be . or .."
else
  ARCHSIZE=`./sizeof $ARCHIVE`
  if [ -f "$ARCHIVE" ]; then
    echo "[$FILENAME from $ARCHIVE ($ARCHSIZE bytes) at $HTTP_HOST]"
    FBASE="`basename $ARCHIVE`"
    if [ "`basename $FBASE .bz2`" != "$FBASE" ]; then
      EXTRACTOR='/usr/local/bin/bunzip2 -c -q'
    elif [ "`basename $FBASE .gz`" != "$FBASE" -o "`basename $FBASE .tgz`" != "$FBASE" ]; then
      EXTRACTOR='/bin/gunzip -c'
    else
      echo Unknown extension.
      exit 1
    fi
    $EXTRACTOR "$ARCHIVE" | tar -xf - -O "$FILENAME" 2> /dev/null
    if [ "$?" = "2" ]; then
      echo "File '$FILENAME' was not found."
      echo "Possibilities: `$EXTRACTOR "$ARCHIVE" | tar -tf -`"
    else
      echo "Error code $?."
    fi
  else
    echo "The archive '$ARCHIVE' cannot be found."
  fi
fi
