blob: d054553ff006fe60e069a6021abfa1b04c483b0d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#!/bin/sh
#
# Written by Pavel Roskin <proski@gnu.org>
# (C) 2005 The Free Software Foundation.
#
#
UNALZ=unalz
mcualz_list ()
{
$UNALZ -l "$1" | @AWK@ -v uid=`id -nu` -v gid=`id -ng` '
{
if ($1 ~ /[0-9][0-9][:/][0-9][0-9][:/][0-9][0-9]$/)
{
# Kludge for non-POSIX date format in unalz 0.50
split($1, date, "[/:]")
if (length(date[1]) == 4) {
pdate = date[2] "/" date[3] "/" date[1]
} else {
pdate = date[1] "/" date[2] "/" date[3]
}
time=$2
perm=$3
size=$4
sub(/^ *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* */, "")
file=$0
gsub(/\\/, "/", file)
if (perm ~ /.D../)
perm = "drwxr-xr-x"
else
perm = "-rw-r--r--"
printf "%s 1 %s %s %d %s %s %s\n", perm, uid, gid, size, pdate, time, file
}
}
'
}
mcualz_copyout ()
{
TMPDIR=`mktemp -d ${MC_TMPDIR:-/tmp}/mctmpdir-ualz.XXXXXX` || exit 1
# This is a workaround for a bug in unalz 0.50 - it crashes if the
# output directory is an absolute path.
dir=`dirname "$TMPDIR/$2"`
mkdir -p "$dir"
$UNALZ -d "$TMPDIR" "$1" "$2" >/dev/null
cat "$TMPDIR/$2" > "$3"
rm -rf "$TMPDIR"
}
# override any locale for dates
LC_ALL=C
export LC_ALL
umask 077
cmd="$1"
shift
case "$cmd" in
list) mcualz_list "$@" ;;
copyout) mcualz_copyout "$@" ;;
*) exit 1 ;;
esac
exit 0
|