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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#! /bin/sh
#
# ARC Virtual filesystem executive
# Copyright (C) 2008 Jacques Pelletier
# May be distributed under the terms of the GNU Public License
# <jpelletier@ieee.org>
#
# Define which archiver you are using with appropriate options
ARC_LIST=${MC_TEST_EXTFS_LIST_CMD:-"arc v"}
ARC_GET="arc x"
ARC_PUT="arc a"
ARC_DEL="arc d"
# The 'list' command executive
mc_arc_fs_list()
{
if [ "x$UID" = "x" ]; then
UID=`id -ru 2>/dev/null`
if [ "x$UID" = "x" ]; then
UID=0
fi
fi
$ARC_LIST "$1" | @AWK@ -v uid=$UID '
BEGIN {
# Copied from uzoo.in.
split("Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec", month_list, ":")
for (i=1; i<=12; i++) {
month[month_list[i]] = i
}
}
/^Name/ { next }
/===/ { next }
/^Total/ { next }
{
if ($8 > 50)
$8=$8 + 1900
else
$8=$8 + 2000
split($9, a, ":")
# convert AM/PM to 00-23
if (a[2] ~ /a$|p$/)
{
if (a[2] ~ /p$/)
a[1] = a[1]+12
a[2]=substr(a[2],1,2)
}
printf "-rw-r--r-- 1 %-8d %-8d %8d %02d-%02d-%04d %02d:%02d %s\n", uid, 0, $2, month[$7], $6, $8, a[1], a[2], $1
}' 2>/dev/null
exit 0
}
# Command: copyout archivename storedfilename extractto
mc_arc_fs_copyout()
{
$ARC_GET "$1" "$2" 2> /dev/null
mv "$2" "$3"
}
# Command: copyin archivename storedfilename sourcefile
mc_arc_fs_copyin()
{
mv "$3" "$2"
$ARC_PUT "$1" "$2" 2> /dev/null
}
# Command: rm archivename storedfilename
mc_arc_fs_rm()
{
$ARC_DEL "$1" "$2" 2> /dev/null
}
# The main routine
umask 077
cmd="$1"
shift
case "$cmd" in
list) mc_arc_fs_list "$@" ;;
copyout) mc_arc_fs_copyout "$@" ;;
copyin) mc_arc_fs_copyin "$@" ;;
rm) mc_arc_fs_rm "$@" ;;
*) exit 1 ;;
esac
exit 0
|