mirror of https://github.com/MidnightCommander/mc
81 lines
1.4 KiB
Bash
81 lines
1.4 KiB
Bash
#! /bin/sh
|
|
|
|
# Peter Daum <gator@cs.tu-berlin.de> (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
|
|
|
|
|