1
1

Added XZ compression support. Signed-off-by: xgizzmo <xgizzmo@slackbuilds.org>

Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Этот коммит содержится в:
xgizzmo 2009-05-11 22:00:51 -04:00 коммит произвёл Slava Zanko
родитель 121ff2965c
Коммит 24ca27fe30
9 изменённых файлов: 40 добавлений и 1 удалений

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

@ -321,6 +321,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[] = {
{ "xz -cd %s 2>&1", "xz > %s", ".xz" },
{ "lzma -cd %s 2>&1", "lzma > %s", ".lzma" }, { "lzma -cd %s 2>&1", "lzma > %s", ".lzma" },
{ "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" },

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

@ -124,6 +124,11 @@ regex/\.t(ar\.lzma|lz)$
Open=%cd %p#utar Open=%cd %p#utar
View=%view{ascii} lzma -dc %f 2>/dev/null | tar tvvf - 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 # .tar.F - used in QNX
regex/\.tar\.F$ regex/\.tar\.F$
# Open=%cd %p#utar # Open=%cd %p#utar
@ -320,6 +325,10 @@ 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} 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 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 ### ### Images ###
@ -601,6 +610,11 @@ regex/\.lzma$
Open=lzma -dc %f | %var{PAGER:more} Open=lzma -dc %f | %var{PAGER:more}
View=%view{ascii} lzma -dc %f 2>/dev/null 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 ### ### Default ###

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

@ -875,6 +875,16 @@ get_compression_type (int fd)
} }
} }
/* XZ compression magic */
if (magic[0] == 0xFD
&& magic[1] == 0x37 && magic[2] == 0x7A && magic[3] == 0x58) {
if (mc_read (fd, (char *) magic + 4, 2) == 2) {
if (magic[4] == 0x5A && magic[5] == 0x00) {
return COMPRESSION_XZ;
}
}
}
return 0; return 0;
} }
@ -886,6 +896,7 @@ decompress_extension (int type)
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"; case COMPRESSION_LZMA: return "#ulzma";
case COMPRESSION_XZ: return "#uxz";
} }
/* 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");

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

@ -183,7 +183,8 @@ enum compression_type {
COMPRESSION_GZIP, COMPRESSION_GZIP,
COMPRESSION_BZIP, COMPRESSION_BZIP,
COMPRESSION_BZIP2, COMPRESSION_BZIP2,
COMPRESSION_LZMA COMPRESSION_LZMA,
COMPRESSION_XZ
}; };
/* 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

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

@ -30,6 +30,7 @@ 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";; *.lzma) MYCAT="lzma -dc";;
*.xz) MYCAT="xz -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";;

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

@ -13,6 +13,7 @@ AWK=@AWK@
mclslRfs_list () { mclslRfs_list () {
case "$1" in case "$1" in
*.lzma) MYCAT="lzma -dc";; *.lzma) MYCAT="lzma -dc";;
*.xz) MYCAT="xz -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";;

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

@ -8,6 +8,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 $lzcat="lzma -dc"; # unlzma to stdout
$xzcat="xz -dc"; # unxz to stdout
$file="file"; # "file" command $file="file"; # "file" command
$TZ='GMT'; # default timezone (for Date module) $TZ='GMT'; # default timezone (for Date module)
@ -185,6 +186,8 @@ if (/gzip/) {
exit 1 unless (open IN, "$bzcat $mbox_qname|"); exit 1 unless (open IN, "$bzcat $mbox_qname|");
} elsif (/lzma/) { } elsif (/lzma/) {
exit 1 unless (open IN, "$lzcat $mbox_qname|"); exit 1 unless (open IN, "$lzcat $mbox_qname|");
} elsif (/xz/) {
exit 1 unless (open IN, "$xzcat $mbox_qname|");
} else { } else {
exit 1 unless (open IN, "<$mbox_name"); exit 1 unless (open IN, "<$mbox_name");
} }

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

@ -13,6 +13,7 @@ use File::Temp 'tempfile';
# standard binaries # standard binaries
my $lzma = 'lzma'; my $lzma = 'lzma';
my $xz = 'xz';
my $bzip = 'bzip2'; my $bzip = 'bzip2';
my $gzip = 'gzip'; my $gzip = 'gzip';
my $fileutil = 'file'; my $fileutil = 'file';
@ -73,6 +74,8 @@ sub myin
$_=`$fileutil $qfname`; $_=`$fileutil $qfname`;
if (/lzma/) { if (/lzma/) {
return "$lzma -dc $qfname"; return "$lzma -dc $qfname";
} elsif (/xz/) {
return "$xz -dc $qfname";
} elsif (/bzip/) { } elsif (/bzip/) {
return "$bzip -dc $qfname"; return "$bzip -dc $qfname";
} elsif (/gzip/) { } elsif (/gzip/) {
@ -91,6 +94,8 @@ sub myout
$_=`$fileutil $qfname`; $_=`$fileutil $qfname`;
if (/lzma/) { if (/lzma/) {
return "$lzma -c $sep $qfname"; return "$lzma -c $sep $qfname";
} elsif (/xz/) {
return "$xz -c $sep $qfname";
} elsif (/bzip/) { } elsif (/bzip/) {
return "$bzip -c $sep $qfname"; return "$bzip -c $sep $qfname";
} elsif (/gzip/) { } elsif (/gzip/) {

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

@ -12,6 +12,8 @@ bz2/1 bzip2 < %1 > %3
ubz2/1 bzip2 -d < %1 > %3 ubz2/1 bzip2 -d < %1 > %3
lzma/1 lzma < %1 > %3 lzma/1 lzma < %1 > %3
ulzma/1 lzma -d < %1 > %3 ulzma/1 lzma -d < %1 > %3
xz/1 xz < %1 > %3
uxz/1 xz -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