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 {
const char *read, *write, *extension;
} all_filters[] = {
{ "xz -cd %s 2>&1", "xz > %s", ".xz" },
{ "lzma -cd %s 2>&1", "lzma > %s", ".lzma" },
{ "bzip2 -cd %s 2>&1", "bzip2 > %s", ".bz2" },
{ "gzip -cd %s 2>&1", "gzip > %s", ".gz" },

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

@ -124,6 +124,11 @@ 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
@ -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}
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 ###
@ -601,6 +610,11 @@ 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 ###

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

@ -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;
}
@ -886,6 +896,7 @@ decompress_extension (int type)
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");

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

@ -183,7 +183,8 @@ enum compression_type {
COMPRESSION_GZIP,
COMPRESSION_BZIP,
COMPRESSION_BZIP2,
COMPRESSION_LZMA
COMPRESSION_LZMA,
COMPRESSION_XZ
};
/* 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 =)
case "$1" in
*.lzma) MYCAT="lzma -dc";;
*.xz) MYCAT="xz -dc";;
*.bz2) MYCAT="bzip2 -dc";;
*.gz) MYCAT="gzip -dc";;
*.z) MYCAT="gzip -dc";;

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

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

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

@ -8,6 +8,7 @@ use bytes;
$zcat="zcat"; # gunzip to stdout
$bzcat="bzip2 -dc"; # bunzip2 to stdout
$lzcat="lzma -dc"; # unlzma to stdout
$xzcat="xz -dc"; # unxz to stdout
$file="file"; # "file" command
$TZ='GMT'; # default timezone (for Date module)
@ -185,6 +186,8 @@ if (/gzip/) {
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");
}

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

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

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

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