mc/vfs/extfs/patchfs
Norbert Warmuth 549fecfff7 Wed Dec 16 06:47:47 1998 Norbert Warmuth <nwarmuth@privat.circular.de>
* screen.c (Xtry_to_select): Don't select a similar file when
"name" can't be found in the panel (when deleting files the
selection jumpped from the deleted "file" to a directory which
started with the same character as "file", annoying).
Strip known vfs suffixes from "name" before trying to select
(I think Timur made this suggestion a few months ago). Know the
vfs is mature enough to do this.

* vfs/vfs.c (vfs_strip_suffix_from_filename): New function which strips
known vfs suffixes from a filename and returns a malloced string
which has to be freed. Possible improvement: strip vfs suffix from
last path component.

* vfs/extfs/*: added "umask 077" to every script.
1998-12-16 06:16:13 +00:00

74 lines
1.3 KiB
Bash

#!/bin/sh
# Peter Daum <gator@cs.tu-berlin.de> (Jan 1998, mc-4.1.22)
# 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