Sophie

Sophie

distrib > Mandriva > 2009.1 > i586 > media > main-release-src > by-pkgid > d332d08c90e19358bb4c06236acd8a8c > files > 15

mc-4.6.2-8mdv2009.1.src.rpm

diff -p -up mc-4.6.2/edit/edit.c.xz~ mc-4.6.2/edit/edit.c
--- mc-4.6.2/edit/edit.c.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/edit/edit.c	2009-02-04 11:37:43.915939133 -0500
@@ -186,7 +186,9 @@ static const struct edit_filters {
 } all_filters[] = {
     { "bzip2 -cd %s 2>&1",  "bzip2 > %s",  ".bz2" },
     { "gzip -cd %s 2>&1",   "gzip > %s",   ".gz"  },
-    { "gzip -cd %s 2>&1",   "gzip > %s",   ".Z"   }
+    { "gzip -cd %s 2>&1",   "gzip > %s",   ".Z"   },
+    { "lzma -cd %s 2>&1",   "lzma > %s",   ".lzma" },
+    { "xz -cd %s 2>&1",     "xz > %s",     ".xz" }
 };
 
 /* Return index of the filter or -1 is there is no appropriate filter */
diff -p -up mc-4.6.2/lib/mc.ext.in.xz~ mc-4.6.2/lib/mc.ext.in
--- mc-4.6.2/lib/mc.ext.in.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/lib/mc.ext.in	2009-02-04 11:37:20.656148483 -0500
@@ -119,6 +119,16 @@ regex/\.t(ar\.bz2|bz|b2)$
 	Open=%cd %p#utar
 	View=%view{ascii} bzip2 -dc %f 2>/dev/null | tar tvvf -
 
+# .tar.lzma, .tlz
+regex/\.t(ar\.lzma|lz)$
+	Open=%cd %p#utar
+	View=%view{ascii} lzma -dc %f 2>/dev/null | tar tvvf -
+
+# .tar.xz, .txz
+regex/\.t(ar\.xz|xz)$
+        Open=%cd %p#utar
+        View=%view{ascii} xz -dc %f 2>/dev/null | tar tvvf -
+
 # .tar.F - used in QNX
 regex/\.tar\.F$
 	# Open=%cd %p#utar
@@ -298,6 +308,14 @@ regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|
 	Open=case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac | %var{PAGER:more}
 	View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac
 
+regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$
+	Open=case %d/%f in */log/*|*/logs/*) lzma -dc %f ;; *) lzma -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac | %var{PAGER:more}
+	View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) lzma -dc %f ;; *) lzma -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac
+
+regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$
+	Open=case %d/%f in */log/*|*/logs/*) xz -dc %f ;; *) xz -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac | %var{PAGER:more}
+	View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) xz -dc %f ;; *) xz -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac
+
 
 ### Images ###
 
@@ -545,6 +563,15 @@ type/^compress
 	Open=gzip -dc %f | %var{PAGER:more}
 	View=%view{ascii} gzip -dc %f 2>/dev/null
 
+# lzma
+regex/\.lzma$
+	Open=lzma -dc %f | %var{PAGER:more}
+	View=%view{ascii} lzma -dc %f 2>/dev/null
+
+# xz
+regex/\.xz$
+	Open=xz -dc %f | %var{PAGER:more}
+	View=%view{ascii} xz -dc %f 2>/dev/null
 
 ### Default ###
 
diff -p -up mc-4.6.2/src/util.c.xz~ mc-4.6.2/src/util.c
--- mc-4.6.2/src/util.c.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/src/util.c	2009-02-04 11:37:20.657147284 -0500
@@ -947,7 +947,7 @@ get_current_wd (char *buffer, int size)
 enum compression_type
 get_compression_type (int fd)
 {
-    unsigned char magic[4];
+    unsigned char magic[16];
 
     /* Read the magic signature */
     if (mc_read (fd, (char *) magic, 4) != 4)
@@ -991,6 +991,36 @@ get_compression_type (int fd)
 	    return COMPRESSION_BZIP2;
 	}
     }
+
+    /* LZMA files; both LZMA_Alone and LZMA utils formats. The LZMA_Alone
+     * format is used by the LZMA_Alone tool from LZMA SDK. The LZMA utils
+     * format is the default format of LZMA utils 4.32.1 and later. */
+    if (magic[0] < 0xE1 || (magic[0] == 0xFF && magic[1] == 'L' &&
+	magic[2] == 'Z' && magic[3] == 'M')) {
+	if (mc_read (fd, (char *) magic + 4, 9) == 9) {
+	    /* LZMA utils format */
+	    if (magic[0] == 0xFF && magic[4] == 'A' && magic[5] == 0x00)
+		return COMPRESSION_LZMA;
+	    /* The LZMA_Alone format has no magic bytes, thus we
+	     * need to play a wizard. This can give false positives,
+	     * thus the detection below should be removed when
+	     * the newer LZMA utils format has got popular. */
+	    if (magic[0] < 0xE1 && magic[4] < 0x20 &&
+		((magic[10] == 0x00 && magic[11] == 0x00 &&
+		  magic[12] == 0x00) ||
+		 (magic[5] == 0xFF && magic[6] == 0xFF &&
+		  magic[7] == 0xFF && magic[8] == 0xFF &&
+		  magic[9] == 0xFF && magic[10] == 0xFF &&
+		  magic[11] == 0xFF && magic[12] == 0xFF)))
+		return COMPRESSION_LZMA;
+	}
+    }
+ 
+    /* XZ (aka LZMA 2) files */
+    if ((magic[0] == 0xFD) && (magic[1] == '7') && (magic[2] == 'z') &&
+	(magic[3] >= 'X') && (magic[4] <= 'z') && (magic[5] == 0x00))
+	    return COMPRESSION_XZ;
+
     return 0;
 }
 
@@ -1001,6 +1031,8 @@ decompress_extension (int type)
 	case COMPRESSION_GZIP: return "#ugz";
 	case COMPRESSION_BZIP:   return "#ubz";
 	case COMPRESSION_BZIP2:  return "#ubz2";
+	case COMPRESSION_LZMA:  return "#ulzma";
+	case COMPRESSION_XZ:  return "#uxz";
 	}
 	/* Should never reach this place */
 	fprintf (stderr, "Fatal: decompress_extension called with an unknown argument\n");
diff -p -up mc-4.6.2/src/util.h.xz~ mc-4.6.2/src/util.h
--- mc-4.6.2/src/util.h.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/src/util.h	2009-02-04 11:37:20.657147284 -0500
@@ -178,7 +178,9 @@ enum compression_type {
 	COMPRESSION_NONE,
 	COMPRESSION_GZIP,
 	COMPRESSION_BZIP,
-	COMPRESSION_BZIP2
+	COMPRESSION_BZIP2,
+	COMPRESSION_LZMA,
+	COMPRESSION_XZ
 };
 
 /* Looks for ``magic'' bytes at the start of the VFS file to guess the
diff -p -up mc-4.6.2/vfs/extfs/iso9660.in.xz~ mc-4.6.2/vfs/extfs/iso9660.in
--- mc-4.6.2/vfs/extfs/iso9660.in.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/vfs/extfs/iso9660.in	2009-02-04 11:37:20.657147284 -0500
@@ -31,6 +31,8 @@ mcisofs_list () {
 case "$1" in
   *.bz2) MYCAT="bzip2 -dc";;
   *.gz)  MYCAT="gzip -dc";;
+  *.lzma) MYCAT="lzma -dc";;
+  *.xz)  MYCAT="xz -dc";;
   *.z)   MYCAT="gzip -dc";;
   *.Z)   MYCAT="gzip -dc";;
   *)     MYCAT="cat";;
diff -p -up mc-4.6.2/vfs/extfs/lslR.in.xz~ mc-4.6.2/vfs/extfs/lslR.in
--- mc-4.6.2/vfs/extfs/lslR.in.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/vfs/extfs/lslR.in	2009-02-04 11:37:20.657147284 -0500
@@ -14,6 +14,8 @@ mclslRfs_list () {
 case "$1" in
   *.bz2) MYCAT="bzip2 -dc";;
   *.gz)  MYCAT="gzip -dc";;
+  *.lzma) MYCAT="lzma -dc";;
+  *.xz)  MYCAT="xz -dc";;
   *.z)   MYCAT="gzip -dc";;
   *.Z)   MYCAT="gzip -dc";;
   *)     MYCAT="cat";;
diff -p -up mc-4.6.2/vfs/extfs/mailfs.in.xz~ mc-4.6.2/vfs/extfs/mailfs.in
--- mc-4.6.2/vfs/extfs/mailfs.in.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/vfs/extfs/mailfs.in	2009-02-04 11:37:20.658147062 -0500
@@ -7,6 +7,8 @@ use bytes;
 
 $zcat="zcat";                 # gunzip to stdout
 $bzcat="bzip2 -dc";           # bunzip2 to stdout
+$lzcat="lzma -dc";            # unlzma to stdout
+$xz="xz -dc";                 # unxz to stdout
 $file="file";                 # "file" command
 $TZ='GMT';                    # default timezone (for Date module)
 
@@ -182,6 +184,10 @@ if (/gzip/) {
     exit 1 unless (open IN, "$zcat $mbox_qname|");
 } elsif (/bzip/) {
     exit 1 unless (open IN, "$bzcat $mbox_qname|");
+} elsif (/lzma/) {
+    exit 1 unless (open IN, "$lzcat $mbox_qname|");
+} elsif (/xz/) {
+    exit 1 unless (open IN, "$xzcat $mbox_qname|");
 } else {
     exit 1 unless (open IN, "<$mbox_name");
 }
diff -p -up mc-4.6.2/vfs/extfs/patchfs.in.xz~ mc-4.6.2/vfs/extfs/patchfs.in
--- mc-4.6.2/vfs/extfs/patchfs.in.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/vfs/extfs/patchfs.in	2009-02-04 11:37:20.658147062 -0500
@@ -14,6 +14,8 @@ use File::Temp 'tempfile';
 # standard binaries
 my $bzip = 'bzip2';
 my $gzip = 'gzip';
+my $lzma = 'lzma';
+my $xz = 'xz';
 my $fileutil = 'file';
 
 # date parsing requires Date::Parse from TimeDate module
@@ -74,6 +76,10 @@ sub myin
 	return "$bzip -dc $qfname";
     } elsif (/gzip/) {
 	return "$gzip -dc $qfname";
+    } elsif (/lzma/) {
+	return "$lzma -dc $qfname";
+    } elsif (/xz/) {
+	return "$xz -dc $qfname";
     } else {
 	return "cat $qfname";
     }
@@ -90,6 +96,10 @@ sub myout
 	return "$bzip -c $sep $qfname";
     } elsif (/gzip/) {
 	return "$gzip -c $sep $qfname";
+    } elsif (/lzma/) {
+	return "$lzma -c $sep $qfname";
+    } elsif (/xz/) {
+	return "$xz -c $sep $qfname";
     } else {
 	return "cat $sep $qfname";
     }
diff -p -up mc-4.6.2/vfs/extfs/sfs.ini.xz~ mc-4.6.2/vfs/extfs/sfs.ini
--- mc-4.6.2/vfs/extfs/sfs.ini.xz~	2009-02-01 13:46:18.000000000 -0500
+++ mc-4.6.2/vfs/extfs/sfs.ini	2009-02-04 11:37:20.658147062 -0500
@@ -10,8 +10,12 @@ bz/1	bzip < %1 > %3
 ubz/1	bzip -d < %1 > %3
 bz2/1	bzip2 < %1 > %3
 ubz2/1	bzip2 -d < %1 > %3
+lzma/1	lzma < %1 > %3
+ulzma/1	lzma -d < %1 > %3
 tar/1	tar cf %3 %1
 tgz/1	tar czf %3 %1
+xz/1	xz < %1 > %3
+uxz/1	xz -d < %1 > %3
 uhtml/1	lynx -force_html -dump %1 > %3
 uman/1	groff -Tascii -man %1 > %3
 uue/1	uuenpipe < %1 > %3