#!/bin/sh Usage() { cat <&2 fi file="" dir="" what="" export cdate=`date +%Y%m%d` tmpfile=`mktemp ${TMPDIR-/tmp}/makeupdate.$$.XXXXXXXXXX` trap 'Exit ' EXIT HUP INT PIPE TERM QUIT sdate="$1" dir="$2" find "$dir" \( -type f -or -type l \) -print0 | xargs -0 lmd5sum | sort -k 2 | (if [ "$sdate" = "--list" ]; then cat > $cdate.list else tee $cdate.list | diff -U0 $sdate.list - | perl -e ' open UPSH, ">update.sh" or die; print UPSH "#!/bin/sh\n"; print UPSH "echo -e \"\\nMaking update to $ENV{cdate}\\n\""; $l = 7; while(<>) { chomp; ($w, $f) = ($_ =~ /(.)[0-9a-f]{32}.\s*(\S+)/); next if $w !~ /[+-]/; if ($w =~ /-/) { print UPSH "rm -f \"".$f."\" && echo \"- ".$f."\"\n"; $l++; } else { print $f."\000"; } } print UPSH "\n"; print UPSH "tail +$l \"\$0\" | tar xPvf - | xargs -i echo \"+ {}\"\n"; print UPSH "apt-get update\n"; print UPSH "exit \$?;\n"; close UPSH; ' > $tmpfile tar cPf - --null -T $tmpfile >> update.sh fi ) rm -f $tmpfile trap '' EXIT exit 0