diff options
Diffstat (limited to 'src/vfs/extfs/helpers/uarj.in')
-rw-r--r-- | src/vfs/extfs/helpers/uarj.in | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/vfs/extfs/helpers/uarj.in b/src/vfs/extfs/helpers/uarj.in new file mode 100644 index 0000000..15549a0 --- /dev/null +++ b/src/vfs/extfs/helpers/uarj.in @@ -0,0 +1,75 @@ +#! /bin/sh +# +# Written by Viatcheslav Odintsov (2:5020/181) +# (C) 2002 ARJ Software Russia. +# +# This is an updated parser for ARJ archives in Midnight Commander. You need +# full ARJ rather than UNARJ. Open-source ARJ v 3.10 for Unix platforms can +# be obtained here: +# +# - http://www.sourceforge.net/projects/arj/ +# - http://arj.sourceforge.net/ + + +ARJ="arj -+ -ja1" + + +mcarjfs_list () +{ + $ARJ v "$1" | @AWK@ -v uuid=$(id -ru) ' + { + if (($0 ~ /^[0-9]+\) .*/)||($0 ~ /^------------ ---------- ---------- -----/)){ + if (filestr ~ /^[0-9]+\) .*/) { + printf "%s 1 %-8d %-8d %8d %02d-%02d-%02d %02d:%02d %s%s\n", perm, uid, gid, size, date[2], date[3], date[1], time[1], time[2], file, symfile + perm="" + file="" + symfile="" + filestr="" + } + } + + if ($0 ~ /^[0-9]+\) .*/) { + filestr=$0 + sub(/^[0-9]*\) /, "") + file=$0 + uid=uuid + gid=0 + } + + if ($0 ~ /^.* [0-9]+[\t ]+[0-9]+ [0-9]\.[0-9][0-9][0-9] [0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].*/) { + size=$3 + split($6, date, "-") + split($7, time, ":") + if ($8 ~ /^[rwx-]/) {perm=$8;} + else {perm="-rw-r--r--"} + } + + if ($0 ~ /^[\t ]+SymLink -> .*/) { + symfile = " -> "$3 + perm="l"substr(perm, 2) + } + + if ($0 ~ /^[\t ]+Owner: UID [0-9]+\, GID [0-9]+/) { + uid=$3 + gid=$5 + owner=1 + } + }' +} + + +mcarjfs_copyout () +{ + $ARJ e -y "$1" "$2" -jw"$3" >/dev/null 2>/dev/null +} + + +umask 077 +cmd="$1" +shift +case "$cmd" in + list) mcarjfs_list "$@" ;; + copyout) mcarjfs_copyout "$@" ;; + *) exit 1 ;; +esac +exit 0 |