Added XZ compression support. Signed-off-by: xgizzmo <xgizzmo@slackbuilds.org>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Этот коммит содержится в:
родитель
121ff2965c
Коммит
24ca27fe30
@ -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 ###
|
||||
|
||||
|
11
src/util.c
11
src/util.c
@ -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
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user