1
1

Roll in changes from "christian.gennerat" <christian.gennerat@vz.cit.alcatel.fr>

Этот коммит содержится в:
Pavel Machek 1999-04-21 10:55:07 +00:00
родитель 49061a6fc1
Коммит 27a09e8635
3 изменённых файлов: 79 добавлений и 21 удалений

Просмотреть файл

@ -1,3 +1,9 @@
1999-04-21 Pavel Machek <pavel@artax.karlin.mff.cuni.cz>
* urar.in, uzip.in: rolled in patches from "christian.gennerat"
<christian.gennerat@vz.cit.alcatel.fr> for better handling of
spaces and copyin-feature-addon.
1999-04-18 Miguel de Icaza <miguel@nuclecu.unam.mx> 1999-04-18 Miguel de Icaza <miguel@nuclecu.unam.mx>
* extfs.c (get_path_from_entry): Fix a crash here. * extfs.c (get_path_from_entry): Fix a crash here.

Просмотреть файл

@ -2,9 +2,12 @@
# #
# Written by andrey joukov # Written by andrey joukov
# (C) 1996 2:5020/337.13@fidonet.org # (C) 1996 2:5020/337.13@fidonet.org
# beta version 1.0 # Updated by christian.gennerat@alcatel.fr 1999
# beta version 2.0
# #
UNRAR=rar DRAR=/usr/bin
RAR=$DRAR/rar
UNRAR=$DRAR/unrar # Prefer unrar (freeware)
# #
# NOTE: rar ver 2.0 by Eugene Roshal # NOTE: rar ver 2.0 by Eugene Roshal
# ftp.elf.stuba.sk/pub/pc/pack # ftp.elf.stuba.sk/pub/pc/pack
@ -12,12 +15,12 @@ UNRAR=rar
mcrarfs_list () mcrarfs_list ()
{ {
$UNRAR v -c- $1 | @AWK@ -v uid=${UID-0} ' $UNRAR v -c- "$1" | @AWK@ -v uid=${UID-0} '
BEGIN { flag=0; date="JanFebMarAprMayJunJulAugSepOctNovDec" } BEGIN { flag=0; date="JanFebMarAprMayJunJulAugSepOctNovDec" }
/^-------/ { flag++; if (flag > 1) exit 0; next } /^-------/ { flag++; if (flag > 1) exit 0; next }
{ {
if (flag == 0) next if (flag == 0) next
if (NF == 1) str = $1 if ( !/ [0-9][0-9]:[0-9][0-9] /) str = $0 # there is no time spec in this line
else { else {
if (str ~ /^\^/) if (str ~ /^\^/)
str=substr(str, 2) str=substr(str, 2)
@ -36,14 +39,37 @@ else {
}' 2>/dev/null }' 2>/dev/null
} }
mcrarfs_copyin ()
{
# copyin by christian.gennerat@alcatel.fr
# preserve pwd. It is clean, but is it necessary?
pwd=`pwd`
# Create a directory and copy in it the tmp file with the good name
mkdir $3.dir
cd $3.dir
di="${2%/*}"
# if file is to be written upper in the archive tree, make fake dir
if test "$di" != "${2##*/}" ; then
mkdir -p "$di"
fi
# (cp -p) to preserve date, but $2 is dated now!
cp -p $3 "$3.dir/$2"
$RAR a "$1" "$2" >/dev/null
cd $pwd
rm -rf $3.dir
}
mcrarfs_copyout () mcrarfs_copyout ()
{ {
$UNRAR p -c- -inul $1 $2 > $3 2>/dev/null $UNRAR p -c- -inul "$1" "$2" > $3 2>/dev/null
} }
umask 077 umask 077
# uncomment this line for debugging
#echo "`date +%T` ${0##*/} $1 $2 to=$3 tmp=$4" >>/tmp/${0##*/}.log
case "$1" in case "$1" in
list) mcrarfs_list $2; exit 0;; list) mcrarfs_list "$2"; exit 0;;
copyout) mcrarfs_copyout $2 $3 $4; exit 0;; copyin) mcrarfs_copyin "$2" "$3" $4; exit 0;;
copyout) mcrarfs_copyout "$2" "$3" $4; exit 0;;
esac esac
exit 1 exit 1

Просмотреть файл

@ -1,13 +1,16 @@
#! /bin/sh #! /bin/sh
# #
# Written by Jakub Jelinek 1995 # Written by Jakub Jelinek 1995
# Updated by Christian Gennerat 1999
# #
# (C) 1995 The Free Software Foundation. # (C) 1995,1999 The Free Software Foundation.
# #
# #
XZIP=zip
XUNZIP=unzip DZIP=/usr/bin
XZIPINFO="unzip -Z" XZIP="$DZIP/zip -g"
XUNZIP="$DZIP/unzip"
XZIPINFO="$DZIP/unzip -Z"
# #
#If you don't have zipinfo, set ZIPINFO= #If you don't have zipinfo, set ZIPINFO=
# #
@ -17,28 +20,30 @@ mczipfs_list ()
DOZIPINFO=no DOZIPINFO=no
if test -n "$XZIPINFO"; then if test -n "$XZIPINFO"; then
DOZIPINFO= DOZIPINFO=
$XZIPINFO -l $1 | @AWK@ -v uid=${UID-0} -v zipfile=$1 -v xunzip=${XUNZIP-unzip} ' $XZIPINFO -l "$1" | @AWK@ -v uid=${UID-0} -v zipfile=$1 -v xunzip=${XUNZIP-unzip} '
/^Archive/ { next } /^Archive/ { next }
/^[0-9]*\ file/ { next } /^[0-9]*\ file/ { next }
/unx/ { /unx/ {
split($0,a,":")
nam = substr(a[2],4)
if ($1 ~ /^l/ ) { if ($1 ~ /^l/ ) {
arrow=" -> " arrow=" -> "
linkname="" linkname=""
cmd=xunzip " -p " zipfile " " $10 cmd=xunzip " -p " zipfile " " nam
cmd | getline linkname cmd | getline linkname
} else { } else {
arrow="" arrow=""
linkname="" linkname=""
} }
if ($10 ~ /^\^/) if (nam ~ /^\^/)
$10=substr($10, 2) nam=substr(nam, 2)
split($8, a, "-") split($8, a, "-")
if (a[3] < 50) if (a[3] < 50)
a[3] = 2000 + a[3] a[3] = 2000 + a[3]
else else
a[3] = 1900 + a[3] a[3] = 1900 + a[3]
printf "%s 1 %-8d %-8d %8d %3s %2d %4d %s %s%s%s\n", $1, uid, 0, $4, a[2], a[1], a[3], $9, $10, arrow, linkname printf "%s 1 %-8d %-8d %8d %3s %2d %4d %s %s%s%s\n", $1, uid, 0, $4, a[2], a[1], a[3], $9, nam, arrow, linkname
next next
} }
{ {
@ -49,7 +54,7 @@ exit 214
fi fi
fi fi
if test -n "$DOZIPINFO"; then if test -n "$DOZIPINFO"; then
$XUNZIP -v $1 | @AWK@ -v uid=${UID-0} ' $XUNZIP -v "$1" | @AWK@ -v uid=${UID-0} '
BEGIN { hyphens=0 } BEGIN { hyphens=0 }
/^Archive/ { next } /^Archive/ { next }
/^\ Length/ { next } /^\ Length/ { next }
@ -66,15 +71,36 @@ else
fi fi
} }
mczipfs_copyout () mczipfs_copyin ()
{ {
$XUNZIP -p $1 $2 > $3 2>/dev/null # preserve pwd. It is clean, but is it necessary?
pwd=`pwd`
# Create a directory and copy in it the tmp file with the good name
mkdir $3.dir
cd $3.dir
di="${2%/*}"
# if file is to be written upper in the archive tree, make fake dir
if test "$di" != "${2##*/}" ; then
mkdir -p "$di"
fi
# (cp -p) to preserve date, but $2 is dated now!
cp -p $3 "$3.dir/$2"
$XZIP "$1" "$2" >/dev/null
cd $pwd
rm -rf $3.dir
} }
mczipfs_copyout ()
{
$XUNZIP -p "$1" "$2" > $3 2>/dev/null
}
umask 077 umask 077
#echo "`date +%T` ${0##*/} $1 $2 to=$3 tmp=$4" >>/tmp/${0##*/}.log
case "$1" in case "$1" in
list) mczipfs_list $2; exit 0;; list) mczipfs_list "$2"; exit 0;;
copyout) mczipfs_copyout $2 $3 $4; exit 0;; # delete) mczipfs_delete "$2" "$3" ; exit 0;;
copyin) mczipfs_copyin "$2" "$3" $4 ; exit 0;;
copyout) mczipfs_copyout "$2" "$3" $4 ; exit 0;;
esac esac
exit 1 exit 1