diff options
Diffstat (limited to 'src/vfs/extfs/helpers/uace.in')
-rw-r--r-- | src/vfs/extfs/helpers/uace.in | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/vfs/extfs/helpers/uace.in b/src/vfs/extfs/helpers/uace.in new file mode 100644 index 0000000..22eae30 --- /dev/null +++ b/src/vfs/extfs/helpers/uace.in @@ -0,0 +1,67 @@ +#! /bin/sh + +# +# ACE Virtual filesystem executive v0.1 +# Works with unace v2.5 + +# Note: There are two packages for Debian: 'unace' (v1.2b) and +# 'unace-nonfree' (v2.x). This script supports 'unace-nonfree' only. +# 'unace', which supports only old versions of ACE archives (and is +# therefore of little use), uses the pipe character to separate columns +# in its listing format. + +# 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 +ACE_LIST=${MC_TEST_EXTFS_LIST_CMD:-"unace l"} +ACE_GET="unace x" +# ACE_PUT="unace ?" not available + +# The 'list' command executive + +# Unace: DD.MM.YY HH:MM packed size ratio file +# ls: +mc_ace_fs_list() +{ + if [ "x$UID" = "x" ]; then + UID=`id -ru 2>/dev/null` + if [ "x$UID" = "x" ]; then + UID=0 + fi + fi + $ACE_LIST "$1" | @AWK@ -v uid=$UID ' +/%/ { + split($1,date,".") + + if (date[3] > 50) + date[3]=date[3] + 1900 + else + date[3]=date[3] + 2000 + + printf "-rw-r--r-- 1 %-8d %-8d %8d %02d-%02d-%04d %s %s\n", uid, 0, $4, date[2], date[1], date[3], $2, $6 +}' 2>/dev/null + exit 0 +} + +# Command: copyout archivename storedfilename extractto +mc_ace_fs_copyout() +{ + $ACE_GET "$1" "$2" > /dev/null 2>&1 + mv "$2" "$3" +} + +# The main routine +umask 077 + +cmd="$1" +shift + +case "$cmd" in + list) mc_ace_fs_list "$@" ;; + copyout) mc_ace_fs_copyout "$@" ;; + *) exit 1 ;; +esac +exit 0 |