--- mc-orig/mc-4.6.2/lib/mc.ext.in 2008-05-11 20:17:26 +0400 +++ mc-orig/mc-4.6.2/lib/mc.ext.in 2008-07-15 12:55:04 +0400 @@ -144,6 +144,11 @@ Open=%cd %p#uarj View=%view{ascii} unarj l %f +# cab +regex/\.([cC][aA][bB])$ + Open=%cd %p#ucab + View=%view{ascii} cabextract -l %f + # ha regex/\.([Hh][Aa])$ Open=%cd %p#uha --- mc-orig/mc-4.6.2/vfs/extfs/extfs.ini 2008-05-11 20:17:26 +0400 +++ mc-orig/mc-4.6.2/vfs/extfs/extfs.ini 2008-07-15 13:21:32 +0400 @@ -12,6 +12,9 @@ # For arj usage you need a special patch to unarj (see unarj.diff) uarj +# For cab files +ucab + # ar is used for static libraries uar --- mc-orig/mc-4.6.2/vfs/extfs/Makefile.am 2008-05-11 20:17:26 +0400 +++ mc-orig/mc-4.6.2/vfs/extfs/Makefile.am 2008-07-14 17:14:06 +0400 @@ -4,7 +4,7 @@ EXTFS_MISC = README extfs.ini sfs.ini # Scripts hat don't need adaptation to the local system -EXTFS_CONST = bpp rpm trpm u7z +EXTFS_CONST = bpp rpm trpm u7z ucab # Scripts that need adaptation to the local system - source files EXTFS_IN = \ @@ -54,6 +54,7 @@ uzip \ uzoo + if USE_VFS extfs_DATA = $(EXTFS_MISC) extfs_SCRIPTS = $(EXTFS_CONST) $(EXTFS_OUT) --- mc-orig/mc-4.6.2/vfs/extfs/Makefile.in 2008-05-11 20:17:26 +0400 +++ mc-orig/mc-4.6.2/vfs/extfs/Makefile.in 2008-07-14 17:15:58 +0400 @@ -251,7 +251,7 @@ EXTFS_MISC = README extfs.ini sfs.ini # Scripts hat don't need adaptation to the local system -EXTFS_CONST = bpp rpm trpm u7z +EXTFS_CONST = bpp rpm trpm u7z ucab # Scripts that need adaptation to the local system - source files EXTFS_IN = \ --- mc-orig/mc-4.6.2/vfs/extfs/ucab +++ mc-orig/mc-4.6.2/vfs/extfs/ucab @@ -0,0 +1,40 @@ +#! /bin/sh + +CAB=cabextract + +mccabfs_list () +{ + $CAB -l "$1" | gawk -v uid=`id -un` -v gid=`id -gn` ' +BEGIN { flag=0 } +/^-------/ { flag++; if (flag > 1) exit 0; next } +{ +if (flag == 0) next +if (length($6) == 0) next +pr="-rw-r--r--" +split($3, a, ".") +split($4, b, ":") +printf "%s 1 %s %s %d %02d/%02d/%02d %02d:%02d %s\n", pr, uid, gid, $1, a[2], a[1], a[3], b[1], b[2], $6 +}' + +} + +mccabfs_copyout () +{ + $CAB -F "$2" -p "$1" > "$3" +} + +LC_ALL=C +export LC_ALL + +umask 077 + +cmd="$1" + +case "$cmd" in + # Workaround for a bug in mc - directories must precede files to + # avoid duplicate entries, so we sort output by filenames + list) mccabfs_list "$2" ;; + copyout) mccabfs_copyout "$2" "$3" "$4" ;; + *) exit 1 ;; +esac +exit 0