Blame src/tools/oggz-diff

Packit a38265
#!/bin/sh
Packit a38265
Packit a38265
## Copyright (C) 2003 Commonwealth Scientific and Industrial Research
Packit a38265
## Organisation (CSIRO) Australia
Packit a38265
##
Packit a38265
## Redistribution and use in source and binary forms, with or without
Packit a38265
## modification, are permitted provided that the following conditions
Packit a38265
## are met:
Packit a38265
##
Packit a38265
## - Redistributions of source code must retain the above copyright
Packit a38265
## notice, this list of conditions and the following disclaimer.
Packit a38265
##
Packit a38265
## - Redistributions in binary form must reproduce the above copyright
Packit a38265
## notice, this list of conditions and the following disclaimer in the
Packit a38265
## documentation and/or other materials provided with the distribution.
Packit a38265
##
Packit a38265
## - Neither the name of CSIRO Australia nor the names of its
Packit a38265
## contributors may be used to endorse or promote products derived from
Packit a38265
## this software without specific prior written permission.
Packit a38265
##
Packit a38265
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit a38265
## ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit a38265
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
Packit a38265
## PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
Packit a38265
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
Packit a38265
## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
Packit a38265
## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
Packit a38265
## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
Packit a38265
## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
Packit a38265
## NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Packit a38265
## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit a38265
Packit a38265
version () {
Packit a38265
  echo >&2 "oggz-diff version "1.1.1
Packit a38265
  exit 1
Packit a38265
}
Packit a38265
Packit a38265
usage () {
Packit a38265
  echo >&2 "oggz-diff, diff oggz-dumps of two Ogg files."
Packit a38265
  echo >&2
Packit a38265
  echo >&2 "Usage: oggz-diff [options] [OGGZDUMP_OPTIONS] [DIFF_OPTIONS] file1.ogg file2.ogg"
Packit a38265
  echo >&2
Packit a38265
  echo >&2 "options: [--verbose] [-v | --version] [-h | --help]"
Packit a38265
  echo >&2
Packit a38265
  echo >&2 "Supported oggz-dump and diff options:"
Packit a38265
  echo >&2
Packit a38265
  echo >&2 "OGGZDUMP_OPTIONS: [-b | --binary] [-x | --hexadecimal]"
Packit a38265
  echo >&2 "    [-O | --hide-offset] [-S | --hide-serialno] [-G | --hide-granulepos]"
Packit a38265
  echo >&2 "    [-P | --hide-packetno] [-s serialno | --serialno serialno]"
Packit a38265
  echo >&2 "    [-c content-type | --content-type content-type]"
Packit a38265
  echo >&2
Packit a38265
  echo >&2 "DIFF_OPTIONS: [-q | --brief] [-C NUM | --context[=NUM]]"
Packit a38265
  echo >&2 "     [-u | -U NUM | --unified[=NUM]] [-e | -ed] [--normal] [--rcs]"
Packit a38265
  echo >&2 "     [-y | --side-by-side] [-l | --paginate]"
Packit a38265
  echo >&2
Packit a38265
  exit 1
Packit a38265
}
Packit a38265
Packit a38265
GETOPTEST=`getopt --version`
Packit a38265
case $GETOPTEST in
Packit a38265
getopt*) # GNU getopt
Packit a38265
  GETOPTARGS="-l verbose -l version -l brief -l context:: -l unified:: -l ed -l normal -l rcs -l side-by-side -l paginate -l binary -l hexadecimal -l serialno: -l content-type: -l hide-offset -l hide-serialno -l hide-granulepos -l hide-packetno -l help -- +qC:uU:eylbxs:c:OSGPhv"
Packit a38265
  QARGS="--verbose --version --brief --context --unified --ed --normal --rcs --side-by-side --paginate --binary --hexadecimal --serialno --content-type --hide-offset --hide-serialno --hide-granulepos --hide-packetno --help -q -C -u -U -e -y -l -b -x -s -c -O -S -G -P -h -v"
Packit a38265
  ;;
Packit a38265
*) # POSIX getopt ?
Packit a38265
  GETOPTARGS="qC:uU:eylbxs:c:OSGPhv"
Packit a38265
  QARGS="-q -C -u -U -e -y -l -b -x -s -c -O -S -G -P -h -v"
Packit a38265
  ;;
Packit a38265
esac
Packit a38265
Packit a38265
# First check for -? option
Packit a38265
if test "X$1" = "X-?"; then
Packit a38265
  exit 0
Packit a38265
fi
Packit a38265
Packit a38265
TEMP=`getopt $GETOPTARGS "$@"`
Packit a38265
Packit a38265
if test "$?" != "0"; then
Packit a38265
  usage
Packit a38265
fi
Packit a38265
Packit a38265
eval set -- "$TEMP"
Packit a38265
Packit a38265
DIFFOPTS="-w" # -w, --ignore-all-space
Packit a38265
DUMPOPTS=""
Packit a38265
VERBOSE=""
Packit a38265
Packit a38265
while test "X$1" != "X--"; do
Packit a38265
  case "$1" in
Packit a38265
    -q|--brief)
Packit a38265
      DIFFOPTS=$DIFFOPTS" -q"
Packit a38265
      ;;
Packit a38265
    -C)
Packit a38265
      shift
Packit a38265
      DIFFOPTS=$DIFFOPTS" -C $1"
Packit a38265
      ;;
Packit a38265
    --context)
Packit a38265
      shift
Packit a38265
      if test "x$1" = "x"; then
Packit a38265
        DIFFOPTS=$DIFFOPTS" --context"
Packit a38265
      else
Packit a38265
        DIFFOPTS=$DIFFOPTS" --context=$1"
Packit a38265
      fi
Packit a38265
      ;;
Packit a38265
    -u)
Packit a38265
      DIFFOPTS=$DIFFOPTS" -u"
Packit a38265
      ;;
Packit a38265
    -U)
Packit a38265
      shift
Packit a38265
      DIFFOPTS=$DIFFOPTS" -U $1"
Packit a38265
      ;;
Packit a38265
    --unified)
Packit a38265
      shift
Packit a38265
      if test "x$1" = "x"; then
Packit a38265
        DIFFOPTS=$DIFFOPTS" --unified"
Packit a38265
      else
Packit a38265
        DIFFOPTS=$DIFFOPTS" --unified=$1"
Packit a38265
      fi
Packit a38265
      ;;
Packit a38265
    -e|--ed)
Packit a38265
      DIFFOPTS=$DIFFOPTS" -e"
Packit a38265
      ;;
Packit a38265
    --normal)
Packit a38265
      DIFFOPTS=$DIFFOPTS" --normal"
Packit a38265
      ;;
Packit a38265
    --rcs)
Packit a38265
      DIFFOPTS=$DIFFOPTS" --rcs"
Packit a38265
      ;;
Packit a38265
    -y|--side-by-side)
Packit a38265
      DIFFOPTS=$DIFFOPTS" -y"
Packit a38265
      ;;
Packit a38265
    -l|--paginate)
Packit a38265
      DIFFOPTS=$DIFFOPTS" -l"
Packit a38265
      ;;
Packit a38265
    -b|--binary)
Packit a38265
      DUMPOPTS=$DUMPOPTS" -b"
Packit a38265
      ;;
Packit a38265
    -x|--hexadecimal)
Packit a38265
      DUMPOPTS=$DUMPOPTS" -x"
Packit a38265
      ;;
Packit a38265
    -s|--serialno)
Packit a38265
      shift
Packit a38265
      DUMPOPTS=$DUMPOPTS" -s $1"
Packit a38265
      ;;
Packit a38265
    -c)
Packit a38265
      shift
Packit a38265
      DUMPOPTS=$DUMPOPTS" -c $1"
Packit a38265
      ;;
Packit a38265
    -O|--hide-offset)
Packit a38265
      DUMPOPTS=$DUMPOPTS" -O"
Packit a38265
      ;;
Packit a38265
    -S|--hide-serialno)
Packit a38265
      DUMPOPTS=$DUMPOPTS" -S"
Packit a38265
      ;;
Packit a38265
    -G|--hide-granulepos)
Packit a38265
      DUMPOPTS=$DUMPOPTS" -G"
Packit a38265
      ;;
Packit a38265
    -P|--hide-packetno)
Packit a38265
      DUMPOPTS=$DUMPOPTS" -P"
Packit a38265
      ;;
Packit a38265
    --verbose)
Packit a38265
      VERBOSE="y"
Packit a38265
      ;;
Packit a38265
    -v|--version)
Packit a38265
      version
Packit a38265
      ;;
Packit a38265
    -h|--help)
Packit a38265
      usage
Packit a38265
      ;;
Packit a38265
  esac
Packit a38265
  shift
Packit a38265
done
Packit a38265
Packit a38265
# Check that all options parsed ok
Packit a38265
if test "x$1" != "x--"; then
Packit a38265
  usage
Packit a38265
fi
Packit a38265
shift #get rid of the '--'
Packit a38265
Packit a38265
if test "x$1" = "x"; then
Packit a38265
  usage
Packit a38265
fi
Packit a38265
if test "x$2" = "x"; then
Packit a38265
  usage
Packit a38265
fi
Packit a38265
Packit a38265
if test "x$VERBOSE" != "x"; then
Packit a38265
  echo >&2 "OGGZDUMP_OPTIONS: " $DUMPOPTS
Packit a38265
  echo >&2 "DIFF_OPTIONS: " $DIFFOPTS
Packit a38265
fi
Packit a38265
Packit a38265
FIFO1="${TMPDIR:-/tmp}/`basename $1`.dump-1-$$"
Packit a38265
FIFO2="${TMPDIR:-/tmp}/`basename $2`.dump-2-$$"
Packit a38265
Packit a38265
exec 5>$FIFO1
Packit a38265
exec 6>$FIFO2
Packit a38265
Packit a38265
oggz-dump $DUMPOPTS $1 >&5
Packit a38265
if test "$?" != "0"; then
Packit a38265
  exit 1
Packit a38265
fi
Packit a38265
Packit a38265
oggz-dump $DUMPOPTS $2 >&6
Packit a38265
if test "$?" != "0"; then
Packit a38265
  exit 1
Packit a38265
fi
Packit a38265
Packit a38265
diff $DIFFOPTS $FIFO1 $FIFO2
Packit a38265
ret=$?
Packit a38265
Packit a38265
rm $FIFO1 $FIFO2
Packit a38265
Packit a38265
exit $ret
Packit a38265