summaryrefslogtreecommitdiffstats
path: root/src/vfs/extfs/helpers/uarj.in
blob: 15549a026c109c71bd0576c501455ee3023b14c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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