#!/bin/bash
#
# diff_of
#
# Differenz der beiden Dateien bestimmen.
# Wenn die Dateien gepackt sind, dann werden sie vorher entpackt (.gz, .xz und .bz2)
####################################################################################
#
if [[ $# -ne 2 || ! -f "$1" || ! -f "$2" ]]
 then
  echo "usage: `basename $0` <file1> <file2>"
  exit 1
fi
#
if [[ "${1##*.}" = "gz" ]]
 then
  D1="${1%.gz}"
  gunzip -c "$1" >"$D1"
elif [[ "${1##*.}" = "xz" ]]
 then
  D1="${1%.xz}"
  unxz -c "$1" >"$D1"
elif [[ "${1##*.}" = "bz2" ]]
 then
  D1="${1%.bz2}"
  bunzip2 -c "$1" >"$D1"
elif [[ "${1##*.}" = "tgz" ]]
 then
  D1="${1%.tgz}.lst"
  tar tvfz "$1" | sort -k6 >"$D1"
elif [[ "${1##*.}" = "txz" ]]
 then
  D1="${1%.txz}.lst"
  tar tvfJ "$1" | sort -k6 >"$D1"
elif [[ "${1##*.}" = "tbz" || "${1##*.}" = "tbz2" ]]
 then
  D1="${1%*.tbz*}.lst"
  tar tvfj "$1" | sort -k6 >"$D1"
else
  D1="$1"
fi
if [[ "${2##*.}" = "gz" ]]
 then
  D2="${2%.gz}"
  gunzip -c "$2" >"$D2"
elif [[ "${2##*.}" = "xz" ]]
 then
  D2="${2%.xz}"
  unxz -c "$2" >"$D2"
elif [[ "${2##*.}" = "bz2" ]]
 then
  D2="${2%.bz2}"
  bunzip2 -c "$2" >"$D2"
elif [[ "${2##*.}" = "tgz" ]]
 then
  D2="${2%.tgz}.lst"
  tar tvfz "$2" | sort -k6 >"$D2"
elif [[ "${2##*.}" = "txz" ]]
 then
  D2="${2%.txz}.lst"
  tar tvfJ "$2" | sort -k6 >"$D2"
elif [[ "${2##*.}" = "tbz" || "${2##*.}" = "tbz2" ]]
 then
  D2="${2%*.tbz*}.lst"
  tar tvfj "$2" | sort -k6 >"$D2"
else
  D2="$2"
fi
diff "$D1" "$D2"
[[ "$1" != "$D1" ]] && rm "$D1"
[[ "$2" != "$D2" ]] && rm "$D2"
