extfs patchfs update
Adam Byrtek 'alpha'
alpha at student.uci.agh.edu.pl
Wed Dec 4 17:41:56 UTC 2002
Hello.
I've noticed, that patchfs is quite useless right now. I've updated it
to handle unified diffs (the most popular patch format), and I'm
working on the context diff format.
Now I work on fixing mailfs...
I'm including new patchfs as an attachment - if you want to, add it to
mc distribution.
Regards
alpha
ps. I've just subscribed to this list. I want to say I'm really happy,
that GNOME support has been thrown out of mc, and that the real mc is
now actively developed. Hope I can help...
--
_.|._ |_ _. : Adam Byrtek, alpha@(irc.pl|debian.org)
(_|||_)| |(_| : gg 1802819, pgp 0xB25952C0
| : jid alpha.jabberpl.org
-------------- next part --------------
#! /bin/sh
# Peter Daum <gator at cs.tu-berlin.de> (Jan 1998, mc-4.1.22)
# modified to work with unified diffs, some additional fixes
# Adam Byrtek <alpha at debian.org>, 4 Dec 2002
# WARNING: look out for TAB (0x09) chars in sed patterns!
# (sed does not accept \t)
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 ()
{
# default attributes
date=`date +"%b %d %H:%M"`
perm="-r--r--r--"
uid=00000000
gid=00000000
size=00000000
nlink=" 1"
# filelist virtual file
echo "$perm $nlink $uid $gid $size $date $filelist"
$cat $1 |
$sed -ne "/^--- / {
s/^--- \([^ ]*\).*/$perm $nlink $uid $gid $size $date \1/gp
}"
}
patchfs_copyout ()
{
if [ "$2" = "$filelist" ]; then
# list of all affected files
$cat $1 |
$sed -ne "/^--- / {
s/^--- \([^ ]*\).*/\1/gp
}" > $3
else
# escape '/' in filename
fn=`echo $2 | $sed 's|/|\\\/|g'`
$cat $1 |
$sed -ne "/^--- $fn/,/^--- / {
/^--- / {
/^--- $fn/p
d
}
p
}" > $3
fi
exit 0
}
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
More information about the mc-devel
mailing list