1
1

merged in lzma patch from mandriva

Этот коммит содержится в:
Enrico Weigelt, metux IT service 2009-01-24 06:11:35 +01:00
родитель 41f06e42b1
Коммит a5ba278729
10 изменённых файлов: 59 добавлений и 4 удалений

Просмотреть файл

@ -114,6 +114,7 @@
* vfs/extfs/uarc.in: * vfs/extfs/uarc.in:
* vfs/extfs/uc1541.in: added support for historic archive formats * vfs/extfs/uc1541.in: added support for historic archive formats
(patch provided by jpelletier) (patch provided by jpelletier)
* merged in lzma patch from mandriva
2009-01-19 Patrick Winnertz <winnie@debian.org> 2009-01-19 Patrick Winnertz <winnie@debian.org>

Просмотреть файл

@ -185,6 +185,7 @@ edit_load_file_fast (WEdit *edit, const char *filename)
static const struct edit_filters { static const struct edit_filters {
const char *read, *write, *extension; const char *read, *write, *extension;
} all_filters[] = { } all_filters[] = {
{ "lzma -cd %s 2>&1", "lzma > %s", ".bz2" },
{ "bzip2 -cd %s 2>&1", "bzip2 > %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", ".gz" },
{ "gzip -cd %s 2>&1", "gzip > %s", ".Z" } { "gzip -cd %s 2>&1", "gzip > %s", ".Z" }

Просмотреть файл

@ -119,6 +119,11 @@ regex/\.t(ar\.bz2|bz|b2)$
Open=%cd %p#utar Open=%cd %p#utar
View=%view{ascii} bzip2 -dc %f 2>/dev/null | tar tvvf - 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 # .tar.F - used in QNX
regex/\.tar\.F$ regex/\.tar\.F$
# Open=%cd %p#utar # Open=%cd %p#utar
@ -298,6 +303,10 @@ regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz2$
Open=case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff @MAN_FLAGS@ @MANDOC@ ;; esac | %var{PAGER:more} 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 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 ### ### Images ###
@ -564,6 +573,11 @@ type/^compress
Open=gzip -dc %f | %var{PAGER:more} Open=gzip -dc %f | %var{PAGER:more}
View=%view{ascii} gzip -dc %f 2>/dev/null 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 ### ### Default ###

Просмотреть файл

@ -952,7 +952,7 @@ get_current_wd (char *buffer, int size)
enum compression_type enum compression_type
get_compression_type (int fd) get_compression_type (int fd)
{ {
unsigned char magic[4]; unsigned char magic[16];
/* Read the magic signature */ /* Read the magic signature */
if (mc_read (fd, (char *) magic, 4) != 4) if (mc_read (fd, (char *) magic, 4) != 4)
@ -996,6 +996,31 @@ get_compression_type (int fd)
return COMPRESSION_BZIP2; 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; return 0;
} }
@ -1006,6 +1031,7 @@ decompress_extension (int type)
case COMPRESSION_GZIP: return "#ugz"; case COMPRESSION_GZIP: return "#ugz";
case COMPRESSION_BZIP: return "#ubz"; case COMPRESSION_BZIP: return "#ubz";
case COMPRESSION_BZIP2: return "#ubz2"; case COMPRESSION_BZIP2: return "#ubz2";
case COMPRESSION_LZMA: return "#ulzma";
} }
/* Should never reach this place */ /* Should never reach this place */
fprintf (stderr, "Fatal: decompress_extension called with an unknown argument\n"); fprintf (stderr, "Fatal: decompress_extension called with an unknown argument\n");

Просмотреть файл

@ -178,7 +178,8 @@ enum compression_type {
COMPRESSION_NONE, COMPRESSION_NONE,
COMPRESSION_GZIP, COMPRESSION_GZIP,
COMPRESSION_BZIP, COMPRESSION_BZIP,
COMPRESSION_BZIP2 COMPRESSION_BZIP2,
COMPRESSION_LZMA
}; };
/* Looks for ``magic'' bytes at the start of the VFS file to guess the /* Looks for ``magic'' bytes at the start of the VFS file to guess the

Просмотреть файл

@ -29,6 +29,7 @@ test_iso () {
mcisofs_list () { mcisofs_list () {
# left as a reminder to implement compressed image support =) # left as a reminder to implement compressed image support =)
case "$1" in case "$1" in
*.lzma) MYCAT="lzma -dc";;
*.bz2) MYCAT="bzip2 -dc";; *.bz2) MYCAT="bzip2 -dc";;
*.gz) MYCAT="gzip -dc";; *.gz) MYCAT="gzip -dc";;
*.z) MYCAT="gzip -dc";; *.z) MYCAT="gzip -dc";;

Просмотреть файл

@ -12,6 +12,7 @@ AWK=@AWK@
mclslRfs_list () { mclslRfs_list () {
case "$1" in case "$1" in
*.lzma) MYCAT="lzma -dc";;
*.bz2) MYCAT="bzip2 -dc";; *.bz2) MYCAT="bzip2 -dc";;
*.gz) MYCAT="gzip -dc";; *.gz) MYCAT="gzip -dc";;
*.z) MYCAT="gzip -dc";; *.z) MYCAT="gzip -dc";;

Просмотреть файл

@ -7,6 +7,7 @@ use bytes;
$zcat="zcat"; # gunzip to stdout $zcat="zcat"; # gunzip to stdout
$bzcat="bzip2 -dc"; # bunzip2 to stdout $bzcat="bzip2 -dc"; # bunzip2 to stdout
$lzcat="lzma -dc"; # unlzma to stdout
$file="file"; # "file" command $file="file"; # "file" command
$TZ='GMT'; # default timezone (for Date module) $TZ='GMT'; # default timezone (for Date module)
@ -182,6 +183,8 @@ if (/gzip/) {
exit 1 unless (open IN, "$zcat $mbox_qname|"); exit 1 unless (open IN, "$zcat $mbox_qname|");
} elsif (/bzip/) { } elsif (/bzip/) {
exit 1 unless (open IN, "$bzcat $mbox_qname|"); exit 1 unless (open IN, "$bzcat $mbox_qname|");
} elsif (/lzma/) {
exit 1 unless (open IN, "$lzcat $mbox_qname|");
} else { } else {
exit 1 unless (open IN, "<$mbox_name"); exit 1 unless (open IN, "<$mbox_name");
} }

Просмотреть файл

@ -12,6 +12,7 @@ use POSIX;
use File::Temp 'tempfile'; use File::Temp 'tempfile';
# standard binaries # standard binaries
my $lzma = 'lzma';
my $bzip = 'bzip2'; my $bzip = 'bzip2';
my $gzip = 'gzip'; my $gzip = 'gzip';
my $fileutil = 'file'; my $fileutil = 'file';
@ -70,7 +71,9 @@ sub myin
my ($qfname)=(quotemeta $_[0]); my ($qfname)=(quotemeta $_[0]);
$_=`$fileutil $qfname`; $_=`$fileutil $qfname`;
if (/bzip/) { if (/lzma/) {
return "$lzma -dc $qfname";
} elsif (/bzip/) {
return "$bzip -dc $qfname"; return "$bzip -dc $qfname";
} elsif (/gzip/) { } elsif (/gzip/) {
return "$gzip -dc $qfname"; return "$gzip -dc $qfname";
@ -86,7 +89,9 @@ sub myout
my ($sep) = $append ? '>>' : '>'; my ($sep) = $append ? '>>' : '>';
$_=`$fileutil $qfname`; $_=`$fileutil $qfname`;
if (/bzip/) { if (/lzma/) {
return "$lzma -c $sep $qfname";
} elsif (/bzip/) {
return "$bzip -c $sep $qfname"; return "$bzip -c $sep $qfname";
} elsif (/gzip/) { } elsif (/gzip/) {
return "$gzip -c $sep $qfname"; return "$gzip -c $sep $qfname";

Просмотреть файл

@ -10,6 +10,8 @@ bz/1 bzip < %1 > %3
ubz/1 bzip -d < %1 > %3 ubz/1 bzip -d < %1 > %3
bz2/1 bzip2 < %1 > %3 bz2/1 bzip2 < %1 > %3
ubz2/1 bzip2 -d < %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 tar/1 tar cf %3 %1
tgz/1 tar czf %3 %1 tgz/1 tar czf %3 %1
uhtml/1 lynx -force_html -dump %1 > %3 uhtml/1 lynx -force_html -dump %1 > %3