From 0bf18240550ff309e66a8a264bea696669421bfe Mon Sep 17 00:00:00 2001 From: Jindrich Novy Date: Fri, 7 Mar 2008 14:37:40 +0000 Subject: [PATCH] - add lzma vfs support by Lasse Collin - update extensions patch to use xdg-open --- mc-extensions.patch | 97 ++++++++++++++++------- mc-lzma.patch | 183 ++++++++++++++++++++++++++++++++++++++++++++ mc.spec | 8 +- 3 files changed, 258 insertions(+), 30 deletions(-) create mode 100644 mc-lzma.patch diff --git a/mc-extensions.patch b/mc-extensions.patch index b021d4e..3e1a014 100644 --- a/mc-extensions.patch +++ b/mc-extensions.patch @@ -1,17 +1,7 @@ ---- mc/configure.ac.extensions 2006-12-28 06:34:31.000000000 +0100 -+++ mc/configure.ac 2007-01-04 15:42:15.000000000 +0100 -@@ -83,7 +83,7 @@ - AC_CHECK_TOOL(AR, ar, ar) - - dnl Only list browsers here that can be run in background (i.e. with `&') --AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape]) -+AC_CHECK_PROGS(X11_WWW, [firefox gnome-moz-remote mozilla konqueror opera netscape]) - - dnl - dnl Ovverriding mmap support. This has to be before AC_FUNC_MMAP is used. ---- mc/configure.extensions 2006-12-28 06:34:48.000000000 +0100 -+++ mc/configure 2007-01-04 15:42:15.000000000 +0100 -@@ -7166,7 +7166,7 @@ +diff -up mc-4.6.2-pre1/configure.extensions mc-4.6.2-pre1/configure +--- mc-4.6.2-pre1/configure.extensions 2007-09-11 16:33:32.000000000 +0200 ++++ mc-4.6.2-pre1/configure 2008-03-07 14:28:51.000000000 +0100 +@@ -5736,7 +5736,7 @@ fi @@ -20,9 +10,22 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 ---- mc/lib/mc.ext.in.extensions 2006-12-28 04:45:29.000000000 +0100 -+++ mc/lib/mc.ext.in 2007-01-04 15:53:33.000000000 +0100 -@@ -220,14 +220,25 @@ +diff -up mc-4.6.2-pre1/lib/mc.ext.in.extensions mc-4.6.2-pre1/lib/mc.ext.in +--- mc-4.6.2-pre1/lib/mc.ext.in.extensions 2006-12-28 04:57:01.000000000 +0100 ++++ mc-4.6.2-pre1/lib/mc.ext.in 2008-03-07 14:28:31.000000000 +0100 +@@ -119,6 +119,11 @@ + 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.F - used in QNX + regex/\.tar\.F$ + # Open=%cd %p#utar +@@ -220,14 +225,25 @@ # C shell/.c @@ -35,7 +38,8 @@ + Include=editor # Header - regex/\.(h|hpp)$ +-regex/\.(h|hpp)$ ++regex/\.([Hh]|[Hh]pp|HPP)$ + Include=editor + +# Asm @@ -50,7 +54,7 @@ Open=%var{EDITOR:vi} %f # Object -@@ -251,10 +262,12 @@ +@@ -251,10 +267,12 @@ # GNU Info page type/^Info\ text @@ -65,7 +69,18 @@ # Manual page # Exception - .so libraries are not manual pages -@@ -328,18 +341,24 @@ +@@ -298,6 +316,10 @@ + 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 ++ + + ### Images ### + +@@ -328,18 +350,24 @@ type/^Netpbm Include=image @@ -88,11 +103,11 @@ include/image - Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (gqview %f &); fi -+ Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (display %f &); fi ++ Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (xdg-open %f &); fi View=%view{ascii} identify %f #View=%view{ascii} asciiview %f -@@ -347,7 +366,8 @@ +@@ -347,7 +375,8 @@ ### Sound files ### regex/\.([wW][aA][vV]|[sS][nN][dD]|[vV][oO][cC]|[aA][uU]|[sS][mM][pP]|[aA][iI][fF][fF]|[sS][nN][dD])$ @@ -102,7 +117,7 @@ regex/\.([mM][oO][dD]|[sS]3[mM]|[xX][mM]|[iI][tT]|[mM][tT][mM]|669|[sS][tT][mM]|[uU][lL][tT]|[fF][aA][rR])$ Open=mikmod %f -@@ -357,11 +377,16 @@ +@@ -357,11 +386,16 @@ Open=vplay -s 22 %f regex/\.([mM][pP]3)$ @@ -122,7 +137,7 @@ View=%view{ascii} ogginfo %s regex/\.([mM][iI][dD][iI]?|[rR][mM][iI][dD]?)$ -@@ -371,11 +396,15 @@ +@@ -371,11 +405,15 @@ Open=mplayer -vo null %f View=%view{ascii} mplayer -quiet -slave -frames 0 -vo null -ao null -identify %f 2>/dev/null | tail +13 || file %f @@ -139,7 +154,7 @@ ### Video ### -@@ -395,20 +424,27 @@ +@@ -395,20 +433,27 @@ regex/\.([mM][pP]4|[mM][pP][eE]?[gG])$ Include=video @@ -168,7 +183,7 @@ #Open=(gtv %f >/dev/null 2>&1 &) #Open=(xanim %f >/dev/null 2>&1 &) -@@ -417,12 +453,13 @@ +@@ -417,12 +462,13 @@ # Postscript type/^PostScript @@ -179,12 +194,12 @@ # PDF type/^PDF - Open=(xpdf %f &) -+ Open=(evince %f >/dev/null 2>&1 &) ++ Open=(xdg-open %f >/dev/null 2>&1 &) + #Open=(xpdf %f >/dev/null 2>&1 &) #Open=(acroread %f &) #Open=(ghostview %f &) View=%view{ascii} pdftotext %f - -@@ -433,7 +470,7 @@ +@@ -433,7 +479,7 @@ # html regex/\.([hH][tT][mM][lL]?)$ Open=(if test -n "@X11_WWW@" && test -n "$DISPLAY"; then (@X11_WWW@ file://%d/%p &) 1>&2; else links %f || lynx -force_html %f || ${PAGER:-more} %f; fi) 2>/dev/null @@ -193,7 +208,7 @@ # StarOffice 5.2 shell/.sdw -@@ -450,22 +487,27 @@ +@@ -450,22 +496,27 @@ # Microsoft Word Document regex/\.([Dd][oO][cCtT]|[Ww][rR][iI])$ @@ -226,3 +241,27 @@ View=%view{ascii} xls2csv %f || strings %f # Use OpenOffice.org to open any MS Office documents +@@ -542,6 +593,11 @@ + 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 ++ + + ### Default ### + +diff -up mc-4.6.2-pre1/configure.ac.extensions mc-4.6.2-pre1/configure.ac +--- mc-4.6.2-pre1/configure.ac.extensions 2007-09-10 16:25:30.000000000 +0200 ++++ mc-4.6.2-pre1/configure.ac 2008-03-07 14:28:51.000000000 +0100 +@@ -83,7 +83,7 @@ + AC_CHECK_TOOL(AR, ar, ar) + + dnl Only list browsers here that can be run in background (i.e. with `&') +-AC_CHECK_PROGS(X11_WWW, [gnome-moz-remote mozilla konqueror opera netscape]) ++AC_CHECK_PROGS(X11_WWW, [firefox gnome-moz-remote mozilla konqueror opera netscape]) + + dnl + dnl Ovverriding mmap support. This has to be before AC_FUNC_MMAP is used. diff --git a/mc-lzma.patch b/mc-lzma.patch new file mode 100644 index 0000000..ff0c439 --- /dev/null +++ b/mc-lzma.patch @@ -0,0 +1,183 @@ +# LZMA support for Midnight Commander +# 2006-03-17 +# +# This patch adds basic support for LZMA compressed files to +# Midnight Commander 4.6.1. You should have LZMA utils 4.32.x +# or later. Older versions of LZMA utils will *not* work. +# +# Copyright (C) 2006 Lasse Collin +# +# This patch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +diff -Naru mc-4.6.1.orig/edit/edit.c mc-4.6.1/edit/edit.c +--- mc-4.6.1.orig/edit/edit.c 2005-05-27 17:19:18.000000000 +0300 ++++ mc-4.6.1/edit/edit.c 2006-03-17 17:39:49.000000000 +0200 +@@ -186,6 +186,7 @@ + static const struct edit_filters { + const char *read, *write, *extension; + } all_filters[] = { ++ { "lzma -cd %s 2>&1", "lzma > %s", ".bz2" }, + { "bzip2 -cd %s 2>&1", "bzip2 > %s", ".bz2" }, + { "gzip -cd %s 2>&1", "gzip > %s", ".gz" }, + { "gzip -cd %s 2>&1", "gzip > %s", ".Z" } + +diff -Naru mc-4.6.1.orig/src/util.c mc-4.6.1/src/util.c +--- mc-4.6.1.orig/src/util.c 2005-05-27 17:19:18.000000000 +0300 ++++ mc-4.6.1/src/util.c 2006-03-17 18:20:50.000000000 +0200 +@@ -900,7 +900,7 @@ + * Warning: this function moves the current file pointer */ + int 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) +@@ -944,6 +944,31 @@ + 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; ++ } ++ } ++ + return 0; + } + +@@ -954,6 +979,7 @@ + case COMPRESSION_GZIP: return "#ugz"; + case COMPRESSION_BZIP: return "#ubz"; + case COMPRESSION_BZIP2: return "#ubz2"; ++ case COMPRESSION_LZMA: return "#ulzma"; + } + /* Should never reach this place */ + fprintf (stderr, "Fatal: decompress_extension called with an unknown argument\n"); +diff -Naru mc-4.6.1.orig/src/util.h mc-4.6.1/src/util.h +--- mc-4.6.1.orig/src/util.h 2005-01-13 21:20:47.000000000 +0200 ++++ mc-4.6.1/src/util.h 2006-03-17 17:34:34.000000000 +0200 +@@ -169,7 +169,8 @@ + COMPRESSION_NONE, + COMPRESSION_GZIP, + COMPRESSION_BZIP, +- COMPRESSION_BZIP2 ++ COMPRESSION_BZIP2, ++ COMPRESSION_LZMA + }; + + int get_compression_type (int fd); +diff -Naru mc-4.6.1.orig/vfs/extfs/iso9660.in mc-4.6.1/vfs/extfs/iso9660.in +--- mc-4.6.1.orig/vfs/extfs/iso9660.in 2004-10-29 12:14:38.000000000 +0300 ++++ mc-4.6.1/vfs/extfs/iso9660.in 2006-03-17 17:45:28.000000000 +0200 +@@ -25,6 +25,7 @@ + mcisofs_list () { + # left as a reminder to implement compressed image support =) + case "$1" in ++ *.lzma) MYCAT="lzma -dc";; + *.bz2) MYCAT="bzip2 -dc";; + *.gz) MYCAT="gzip -dc";; + *.z) MYCAT="gzip -dc";; +diff -Naru mc-4.6.1.orig/vfs/extfs/lslR.in mc-4.6.1/vfs/extfs/lslR.in +--- mc-4.6.1.orig/vfs/extfs/lslR.in 2003-06-22 12:54:21.000000000 +0300 ++++ mc-4.6.1/vfs/extfs/lslR.in 2006-03-17 17:45:08.000000000 +0200 +@@ -12,6 +12,7 @@ + + mclslRfs_list () { + case "$1" in ++ *.lzma) MYCAT="lzma -dc";; + *.bz2) MYCAT="bzip2 -dc";; + *.gz) MYCAT="gzip -dc";; + *.z) MYCAT="gzip -dc";; +diff -Naru mc-4.6.1.orig/vfs/extfs/mailfs.in mc-4.6.1/vfs/extfs/mailfs.in +--- mc-4.6.1.orig/vfs/extfs/mailfs.in 2002-12-24 08:56:17.000000000 +0200 ++++ mc-4.6.1/vfs/extfs/mailfs.in 2006-03-17 17:53:47.000000000 +0200 +@@ -7,6 +7,7 @@ + + $zcat="zcat"; # gunzip to stdout + $bzcat="bzip2 -dc"; # bunzip2 to stdout ++$lzcat="lzma -dc"; # unlzma to stdout + $file="file"; # "file" command + $TZ='GMT'; # default timezone (for Date module) + +@@ -132,6 +133,8 @@ + 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|"); + } else { + exit 1 unless (open IN, "<$mbox_name"); + } +diff -Naru mc-4.6.1.orig/vfs/extfs/patchfs.in mc-4.6.1/vfs/extfs/patchfs.in +--- mc-4.6.1.orig/vfs/extfs/patchfs.in 2004-11-17 01:00:40.000000000 +0200 ++++ mc-4.6.1/vfs/extfs/patchfs.in 2006-03-17 17:52:47.000000000 +0200 +@@ -12,6 +12,7 @@ + use File::Temp 'tempfile'; + + # standard binaries ++my $lzma = 'lzma'; + my $bzip = 'bzip2'; + my $gzip = 'gzip'; + my $fileutil = 'file'; +@@ -70,7 +71,9 @@ + my ($qfname)=(quotemeta $_[0]); + + $_=`$fileutil $qfname`; +- if (/bzip/) { ++ if (/lzma/) { ++ return "$lzma -dc $qfname"; ++ } elsif (/bzip/) { + return "$bzip -dc $qfname"; + } elsif (/gzip/) { + return "$gzip -dc $qfname"; +@@ -86,7 +89,9 @@ + my ($sep) = $append ? '>>' : '>'; + + $_=`$fileutil $qfname`; +- if (/bzip/) { ++ if (/lzma/) { ++ return "$lzma -c $sep $qfname"; ++ } elsif (/bzip/) { + return "$bzip -c $sep $qfname"; + } elsif (/gzip/) { + return "$gzip -c $sep $qfname"; +diff -Naru mc-4.6.1.orig/vfs/extfs/sfs.ini mc-4.6.1/vfs/extfs/sfs.ini +--- mc-4.6.1.orig/vfs/extfs/sfs.ini 1998-12-15 17:57:43.000000000 +0200 ++++ mc-4.6.1/vfs/extfs/sfs.ini 2006-03-17 17:44:01.000000000 +0200 +@@ -10,6 +10,8 @@ + 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 + uhtml/1 lynx -force_html -dump %1 > %3 diff --git a/mc.spec b/mc.spec index 887673d..d0fcc38 100644 --- a/mc.spec +++ b/mc.spec @@ -1,7 +1,7 @@ Summary: User-friendly text console file manager and visual shell Name: mc Version: 4.6.2 -Release: 1.pre1%{?dist} +Release: 2.pre1%{?dist} Epoch: 1 License: GPLv2 Group: System Environment/Shells @@ -29,6 +29,7 @@ Patch14: mc-cloexec.patch Patch15: mc-prompt.patch Patch16: mc-refresh.patch Patch17: mc-preserveattr.patch +Patch18: mc-lzma.patch %description Midnight Commander is a visual shell much like a file manager, only @@ -57,6 +58,7 @@ specific files. %patch15 -p1 -b .prompt %patch16 -p1 -b .refresh %patch17 -p1 -b .preserveattr +%patch18 -p1 -b .lzmavfs # convert files in /lib to UTF-8 pushd lib @@ -195,6 +197,10 @@ rm -rf $RPM_BUILD_ROOT %dir %{_libexecdir}/mc %changelog +* Fri Mar 7 2008 Jindrich Novy 4.6.2-2.pre1 +- add lzma vfs support by Lasse Collin +- update extensions patch to use xdg-open + * Mon Feb 25 2008 Jindrich Novy 4.6.2-1.pre1 - update to 4.6.2-pre1 - forwardport the UTF-8 patch to 4.6.2-pre1 and convert new