#! /bin/sh # # ARC Virtual filesystem executive # Copyright (C) 2008 Jacques Pelletier # May be distributed under the terms of the GNU Public License # # # 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" | gawk -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