diff options
Diffstat (limited to 'src/vfs/extfs/helpers/ualz.in')
-rw-r--r-- | src/vfs/extfs/helpers/ualz.in | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/vfs/extfs/helpers/ualz.in b/src/vfs/extfs/helpers/ualz.in new file mode 100644 index 0000000..d054553 --- /dev/null +++ b/src/vfs/extfs/helpers/ualz.in @@ -0,0 +1,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 |