merged in lzma patch from mandriva
Этот коммит содержится в:
родитель
41f06e42b1
Коммит
a5ba278729
@ -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 ###
|
||||||
|
|
||||||
|
28
src/util.c
28
src/util.c
@ -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
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user