mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
69 lines
1.3 KiB
Bash
69 lines
1.3 KiB
Bash
#!/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
|