mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 12:56:51 +03:00
76 lines
1.6 KiB
Bash
76 lines
1.6 KiB
Bash
#! /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=${UID-0} '
|
|
{
|
|
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 p "$1" "$2" > "$3" 2>/dev/null
|
|
}
|
|
|
|
|
|
umask 077
|
|
cmd="$1"
|
|
shift
|
|
case "$cmd" in
|
|
list) mcarjfs_list "$@" ;;
|
|
copyout) mcarjfs_copyout "$@" ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
exit 0
|