|
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 |
|