Репозитории ALT
S: | 4.8.30-alt3 |
5.1: | 4.8.11-alt0.M51.1 |
4.1: | 4.6.2-alt7.pre1 |
4.0: | 4.6.1r-alt9 |
3.0: | 4.6.1r-alt3 |
Группа :: Работа с файлами
Пакет: mc
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: mc-4.6.2-alt-extfs-ucab.patch
Скачать
Скачать
diff -urN mc-orig/mc-4.6.2/lib/mc.ext.in mc-mod/mc-4.6.2/lib/mc.ext.in
--- mc-orig/mc-4.6.2/lib/mc.ext.in 2008-05-11 20:17:26 +0400
+++ mc-mod/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
diff -urN mc-orig/mc-4.6.2/vfs/extfs/extfs.ini mc-mod/mc-4.6.2/vfs/extfs/extfs.ini
--- mc-orig/mc-4.6.2/vfs/extfs/extfs.ini 2008-05-11 20:17:26 +0400
+++ mc-mod/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
diff -urN mc-orig/mc-4.6.2/vfs/extfs/Makefile.am mc-mod/mc-4.6.2/vfs/extfs/Makefile.am
--- mc-orig/mc-4.6.2/vfs/extfs/Makefile.am 2008-05-11 20:17:26 +0400
+++ mc-mod/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)
diff -urN mc-orig/mc-4.6.2/vfs/extfs/Makefile.in mc-mod/mc-4.6.2/vfs/extfs/Makefile.in
--- mc-orig/mc-4.6.2/vfs/extfs/Makefile.in 2008-05-11 20:17:26 +0400
+++ mc-mod/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 = \
diff -urN mc-orig/mc-4.6.2/vfs/extfs/ucab mc-mod/mc-4.6.2/vfs/extfs/ucab
--- mc-orig/mc-4.6.2/vfs/extfs/ucab 1970-01-01 03:00:00 +0300
+++ mc-mod/mc-4.6.2/vfs/extfs/ucab 2009-01-22 15:21:51 +0300
@@ -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