#! /bin/sh # Peter Daum (Jan 1998, mc-4.1.22) # override any locale for dates. But LANG override LC_TIME (at least in glibc) # unset LC_ALL # LC_TIME=C # export LC_TIME LC_ALL=C export LC_ALL # paths to used programs: ncat=cat # regular cat zcat=zcat # gunzip to stdout bzcat="bzip2 -dc" # bunzip2 to stdout file=file # "file" command sed=sed filelist=FILELIST # names for "special" files patchfs_list () { date=`date +"%b %d %H:%M"` perm="-r--r--r--" uid=00000000 gid=00000000 size=00000000 nlink=" 1" echo "$perm $nlink $uid $gid $size $date $filelist" $cat $1 | $sed -n "/^diff /{ s|^.* \([^ ]*\)$|$perm $nlink $uid $gid $size $date \1|gp }" } patchfs_copyout () { if [ "$2" = "$filelist" ]; then # list of all affected files $cat $1 | $sed -n "/^diff /{ s|^.* \([^ ]*\)$|\1|gp }" > $3 exit 0 fi fn=`echo $2|$sed 's|/|\\\/|g'` # escape '/' in filename $cat $1 | $sed -n "/^diff .*$fn/,/^diff /{ /^diff ./{ /$fn/p d } p }" > $3 } patchfs_run () { exit 0 } type=`$file $2` case $type in *bzip*) cat=$bzcat ;; *gzip*) cat=$zcat ;; *text*) cat=$ncat ;; *) exit 1 esac umask 077 case "$1" in list) patchfs_list $2; exit 0;; copyout) patchfs_copyout $2 $3 $4; exit 0;; run) patchfs_run; exit 0;; esac exit 1