summaryrefslogtreecommitdiffstats
path: root/src/vfs/extfs/helpers/uace.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/vfs/extfs/helpers/uace.in')
-rw-r--r--src/vfs/extfs/helpers/uace.in67
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