1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/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
|