#!/bin/bash

if [ $# != 2 ] ; then
  echo "Syntax: $0 name1.jar name2.jar"
  exit
fi

if diff $1 $2 ; then
  echo Files are identical
  exit 0
fi

work=$(mktemp -d)

mkdir -p "$work/a"
mkdir -p "$work/b"

cwd="$(pwd)"

cd "$work/a"
unzip "$cwd/$1" | sort > "$work/a.list"
cd "$work/b"
unzip "$cwd/$2" | sort > "$work/b.list"
cd "$work"

if ! diff a.list b.list > diff.list ; then echo "Contents"; echo =====; cat
diff.list; echo ""; echo "Contents are different" > summary; fi

for class in $(find a -name \*.class | sed -e
"s:^\\a/::;s:\\.class$::;s:/:.:g"); do javap -c -classpath a $class >
a.javap; javap -c -classpath b $class > b.javap; if ! diff a.javap b.javap >
diff.javap ; then echo $class; echo =====; cat diff.javap; echo ""; echo
$class >> summary; fi; done

if [ -f summary ]; then
echo "Summary"
echo "======="
cat summary
else
  echo "File contents are identical"
fi

cd "$cwd"
rm -rf "$work"

Reply via email to