#! /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 # # # 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" | mawk -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