#! /bin/sh

function mode {
  ruby -e "printf %Q(%o\n), File.stat(%q($1)).mode"
}

rm -rf src dest

mkdir dest
cp -rp data src
cd src
ln -s foo foobar
cd ..

today=`date +%Y/%m/%d`
yesterday=`date --date '1 day ago' +%Y/%m/%d`

../pdumpfs src dest
diff -r src dest/$today/src || exit 1

mv dest/$today dest/$yesterday

echo update > src/foo
mkdir src/newdir
echo newfile > src/newdir/newfile
echo newfile2 > src/newfile2
rm -f src/bar

../pdumpfs src dest
diff -r src dest/$today/src || exit 1

find src |sort | while read srcfile; do
   destfile="dest/$today/$srcfile"
   if test `mode $srcfile` != `mode $destfile`; then
       echo "error: modes of $srcfile and $destfile differ"
       exit 1
   fi
done || exit 1

echo ok.

rm -rf src dest
exit 0
