Merge branch '4509_lzo'

* 4509_lzo:
  Ticket #4509: support for lzo/lzop compression format.
This commit is contained in:
Andrew Borodin 2023-11-26 17:28:03 +03:00
commit cede013095
14 changed files with 75 additions and 4 deletions

View File

@ -891,6 +891,11 @@ get_compression_type (int fd, const char *name)
&& magic[2] == 'Z' && magic[3] == 'M' && magic[4] == 'A' && magic[5] == 0x00) && magic[2] == 'Z' && magic[3] == 'M' && magic[4] == 'A' && magic[5] == 0x00)
return COMPRESSION_LZMA; return COMPRESSION_LZMA;
/* LZO format - \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a lzop compressed data */
if (magic[0] == 0x89 && magic[1] == 0x4c &&
magic[2] == 0x5a && magic[3] == 0x4f && magic[4] == 0x00 && magic[5] == 0x0d)
return COMPRESSION_LZO;
/* XZ compression magic */ /* XZ compression magic */
if (magic[0] == 0xFD if (magic[0] == 0xFD
&& magic[1] == 0x37 && magic[1] == 0x37
@ -930,6 +935,8 @@ decompress_extension (int type)
return "/ulz4" VFS_PATH_URL_DELIMITER; return "/ulz4" VFS_PATH_URL_DELIMITER;
case COMPRESSION_LZMA: case COMPRESSION_LZMA:
return "/ulzma" VFS_PATH_URL_DELIMITER; return "/ulzma" VFS_PATH_URL_DELIMITER;
case COMPRESSION_LZO:
return "/ulzo" VFS_PATH_URL_DELIMITER;
case COMPRESSION_XZ: case COMPRESSION_XZ:
return "/uxz" VFS_PATH_URL_DELIMITER; return "/uxz" VFS_PATH_URL_DELIMITER;
case COMPRESSION_ZSTD: case COMPRESSION_ZSTD:

View File

@ -84,6 +84,7 @@ enum compression_type
COMPRESSION_LZIP, COMPRESSION_LZIP,
COMPRESSION_LZ4, COMPRESSION_LZ4,
COMPRESSION_LZMA, COMPRESSION_LZMA,
COMPRESSION_LZO,
COMPRESSION_XZ, COMPRESSION_XZ,
COMPRESSION_ZSTD, COMPRESSION_ZSTD,
}; };

View File

@ -32,6 +32,9 @@ do_view_action() {
lzma) lzma)
lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null
;; ;;
lzo)
lzop -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
xz) xz)
xz -dc "${MC_EXT_FILENAME}" 2>/dev/null xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
;; ;;
@ -65,6 +68,10 @@ do_view_action() {
lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \ lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf - tar tvvf -
;; ;;
tar.lzo|tzo)
lzop -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.xz) tar.xz)
xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \ xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf - tar tvvf -
@ -114,6 +121,10 @@ do_view_action() {
lz4 -dc "${MC_EXT_FILENAME}" | \ lz4 -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null cpio -itv 2>/dev/null
;; ;;
cpio.lzo)
lzop -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null
;;
cpio.xz) cpio.xz)
xz -dc "${MC_EXT_FILENAME}" | \ xz -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null cpio -itv 2>/dev/null
@ -177,6 +188,9 @@ do_open_action() {
lzma) lzma)
lzma -dc "${MC_EXT_FILENAME}" | ${pager} lzma -dc "${MC_EXT_FILENAME}" | ${pager}
;; ;;
lzo)
lzop -dc "${MC_EXT_FILENAME}" | ${pager}
;;
xz) xz)
xz -dc "${MC_EXT_FILENAME}" | ${pager} xz -dc "${MC_EXT_FILENAME}" | ${pager}
;; ;;

View File

@ -31,6 +31,9 @@ get_unpacker() {
man.lzma) man.lzma)
unpacker="lzma -dc" unpacker="lzma -dc"
;; ;;
man.lzo)
unpacker="lzop -dc"
;;
man.xz) man.xz)
unpacker="xz -dc" unpacker="xz -dc"
;; ;;
@ -67,7 +70,7 @@ do_view_action() {
nroff.ms) nroff.ms)
nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}" nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}"
;; ;;
man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz|man.zst) man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.lzo|man.xz|man.zst)
case "${MC_EXT_FILENAME}" in case "${MC_EXT_FILENAME}" in
*/log/*|*/logs/*) */log/*|*/logs/*)
${unpacker} "${MC_EXT_FILENAME}" ${unpacker} "${MC_EXT_FILENAME}"
@ -114,7 +117,7 @@ do_open_action() {
nroff.ms) nroff.ms)
nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}" | ${pager} nroff @MAN_FLAGS@ -ms "${MC_EXT_FILENAME}" | ${pager}
;; ;;
man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz|man.zst) man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.lzo|man.xz|man.zst)
case "${MC_EXT_FILENAME}" in case "${MC_EXT_FILENAME}" in
*/log/*|*/logs/*) */log/*|*/logs/*)
${unpacker} "${MC_EXT_FILENAME}" ${unpacker} "${MC_EXT_FILENAME}"

View File

@ -25,7 +25,7 @@
regexp=(^#.*|.*~$) regexp=(^#.*|.*~$)
[archive] [archive]
extensions=7z;Z;ace;apk;arc;arj;ark;bz2;cab;cpio;deb;gz;lha;lz;lz4;lzh;lzma;rar;rpm;tar;tbz;tbz2;tgz;tlz;txz;tzst;vsix;xz;zip;zoo;zst extensions=7z;Z;ace;apk;arc;arj;ark;bz2;cab;cpio;deb;gz;lha;lz;lz4;lzh;lzma;lzo;rar;rpm;tar;tbz;tbz2;tgz;tlz;txz;tzo;tzst;vsix;xz;zip;zoo;zst
[doc] [doc]
extensions=chm;css;ctl;diz;doc;docm;docx;dtd;fodg;fodp;fods;fodt;htm;html;json;letter;lsm;mail;man;markdown;md;me;mkd;msg;nroff;odg;odp;ods;odt;pdf;po;ppt;pptm;pptx;ps;rtf;sgml;shtml;tex;text;txt;xls;xlsm;xlsx;xml;xsd;xslt extensions=chm;css;ctl;diz;doc;docm;docx;dtd;fodg;fodp;fods;fodt;htm;html;json;letter;lsm;mail;man;markdown;md;me;mkd;msg;nroff;odg;odp;ods;odt;pdf;po;ppt;pptm;pptx;ps;rtf;sgml;shtml;tex;text;txt;xls;xlsm;xlsx;xml;xsd;xslt

View File

@ -242,6 +242,12 @@ Regex=\\.t(ar\\.lz4|lz4)$
Open=%cd %p/utar:// Open=%cd %p/utar://
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4 View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4
# .tar.lzo, .tzo
[tar.lzo]
Regex=\\.t(ar\\.lzo|zo)$
Open=%cd %p/utar://
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lzo
# .tar.xz, .txz # .tar.xz, .txz
[tar.xz] [tar.xz]
Regex=\\.t(ar\\.xz|xz)$ Regex=\\.t(ar\\.xz|xz)$
@ -318,6 +324,11 @@ Shell=.cpio.lz4
Open=%cd %p/ucpio:// Open=%cd %p/ucpio://
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4 View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4
[cpio.lzo]
Shell=.cpio.lzo
Open=%cd %p/ucpio://
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lzo
[cpio.xz] [cpio.xz]
Shell=.cpio.xz Shell=.cpio.xz
Open=%cd %p/ucpio:// Open=%cd %p/ucpio://
@ -515,6 +526,11 @@ Regex=([^0-9]|^[^\\.]*)\\.([1-9][A-Za-z]*|[ln])\\.lzma$
Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more} Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more}
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more} View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more}
[man.lzo]
Regex=([^0-9]|^[^\\.]*)\\.([1-9][A-Za-z]*|[ln])\\.lzo$
Open=@EXTHELPERSDIR@/text.sh open man.lzo %var{PAGER:more}
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzo %var{PAGER:more}
[man.xz] [man.xz]
Regex=([^0-9]|^[^\\.]*)\\.([1-9][A-Za-z]*|[ln])\\.xz$ Regex=([^0-9]|^[^\\.]*)\\.([1-9][A-Za-z]*|[ln])\\.xz$
Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more} Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more}
@ -882,6 +898,12 @@ ShellIgnoreCase=true
Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more} Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more}
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4 View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4
[lzo]
Shell=.lzo
ShellIgnoreCase=true
Open=@EXTHELPERSDIR@/archive.sh view lzo %var{PAGER:more}
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lzo
[wim] [wim]
Shell=.wim Shell=.wim
ShellIgnoreCase=true ShellIgnoreCase=true

View File

@ -93,6 +93,15 @@ shell_patterns=0
tar cf - "$Pwd" | zstd -f > "$tar.tar.zst" && \ tar cf - "$Pwd" | zstd -f > "$tar.tar.zst" && \
echo "../$tar.tar.zst created." echo "../$tar.tar.zst created."
8 Compress the current subdirectory (tar.lzo)
Pwd=`basename %d /`
echo -n "Name of the compressed file (without extension) [$Pwd]: "
read tar
[ "$tar"x = x ] && tar="$Pwd"
cd .. && \
tar cf - "$Pwd" | lzop -f > "$tar.tar.lzo" && \
echo "../$tar.tar.lzo created."
= f \.c$ & t r = f \.c$ & t r
+ f \.c$ & t r & ! t t + f \.c$ & t r & ! t t
c Compile and link current .c file c Compile and link current .c file
@ -228,7 +237,7 @@ U Uudecode marked news articles (needs work)
fi fi
echo "Please test the output file before deleting anything." echo "Please test the output file before deleting anything."
=+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.zst | f \.tar\.Z$ | f \.tar\.bz2$ & t rl =+ f \.tar\.gz$ | f \.tar\.z$ | f \.tgz$ | f \.tpz$ | f \.tar\.lz$ | f \.tar\.lz4$ | f \.tar\.lzma$ | f \.tar\.lzo$ | f \.tar\.7z$ | f \.tar\.xz$ | f \.tar\.zst | f \.tar\.Z$ | f \.tar\.bz2$ & t rl
x Extract the contents of a compressed tar file x Extract the contents of a compressed tar file
unset PRG unset PRG
case %f in case %f in
@ -238,6 +247,7 @@ x Extract the contents of a compressed tar file
*.tar.lz) PRG="lzip -dc";; *.tar.lz) PRG="lzip -dc";;
*.tar.lz4) PRG="lz4 -dc";; *.tar.lz4) PRG="lz4 -dc";;
*.tar.lzma) PRG="lzma -dc";; *.tar.lzma) PRG="lzma -dc";;
*.tar.lzo) PRG="lzop -dc";;
*.tar.xz) PRG="xz -dc";; *.tar.xz) PRG="xz -dc";;
*.tar.zst) PRG="zstd -dc";; *.tar.zst) PRG="zstd -dc";;
*) exit 1;; *) exit 1;;

View File

@ -1564,6 +1564,7 @@ wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._
keyword whole lsusb cyan keyword whole lsusb cyan
keyword whole lzip cyan keyword whole lzip cyan
keyword whole lziprecover cyan keyword whole lziprecover cyan
keyword whole lzop cyan
keyword whole lynx cyan keyword whole lynx cyan
keyword whole MAKEDEV cyan keyword whole MAKEDEV cyan
keyword whole MAKEFLOPPIES cyan keyword whole MAKEFLOPPIES cyan

View File

@ -142,6 +142,7 @@ static const struct edit_filters
{ "lz4 -cd %s 2>&1", "lz4 > %s", ".lz4" }, { "lz4 -cd %s 2>&1", "lz4 > %s", ".lz4" },
{ "lzip -cd %s 2>&1", "lzip > %s", ".lz"}, { "lzip -cd %s 2>&1", "lzip > %s", ".lz"},
{ "lzma -cd %s 2>&1", "lzma > %s", ".lzma" }, { "lzma -cd %s 2>&1", "lzma > %s", ".lzma" },
{ "lzop -cd %s 2>&1", "lzop > %s", ".lzo"},
{ "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" }

View File

@ -132,6 +132,7 @@ mcisofs_list () {
*.lz) MYCAT="lzip -dc";; *.lz) MYCAT="lzip -dc";;
*.lz4) MYCAT="lz4 -dc";; *.lz4) MYCAT="lz4 -dc";;
*.lzma) MYCAT="lzma -dc";; *.lzma) MYCAT="lzma -dc";;
*.lzo) MYCAT="lzop -dc";;
*.xz) MYCAT="xz -dc";; *.xz) MYCAT="xz -dc";;
*.zst) MYCAT="zstd -dc";; *.zst) MYCAT="zstd -dc";;
*.bz2) MYCAT="bzip2 -dc";; *.bz2) MYCAT="bzip2 -dc";;

View File

@ -15,6 +15,7 @@ case "$1" in
*.lz) MYCAT="lzip -dc";; *.lz) MYCAT="lzip -dc";;
*.lz4) MYCAT="lz4 -dc";; *.lz4) MYCAT="lz4 -dc";;
*.lzma) MYCAT="lzma -dc";; *.lzma) MYCAT="lzma -dc";;
*.lzo) MYCAT="lzop -dc";;
*.xz) MYCAT="xz -dc";; *.xz) MYCAT="xz -dc";;
*.zst) MYCAT="zstd -dc";; *.zst) MYCAT="zstd -dc";;
*.bz2) MYCAT="bzip2 -dc";; *.bz2) MYCAT="bzip2 -dc";;

View File

@ -11,6 +11,7 @@ $bzcat="bzip2 -dc"; # bunzip2 to stdout
$lzipcat="lzip -dc"; # unlzip to stdout $lzipcat="lzip -dc"; # unlzip to stdout
$lz4cat="lz4 -dc"; # unlz4 to stdout $lz4cat="lz4 -dc"; # unlz4 to stdout
$lzcat="lzma -dc"; # unlzma to stdout $lzcat="lzma -dc"; # unlzma to stdout
$lzocat="lzop -dc"; # unlzo to stdout
$xzcat="xz -dc"; # unxz to stdout $xzcat="xz -dc"; # unxz to stdout
$zstdcat="zstd -dc"; # unzstd to stdout $zstdcat="zstd -dc"; # unzstd to stdout
$file="file"; # "file" command $file="file"; # "file" command
@ -194,6 +195,8 @@ if (/gzip/) {
exit 1 unless (open IN, "$lz4cat $mbox_qname|"); exit 1 unless (open IN, "$lz4cat $mbox_qname|");
} elsif (/lzma/) { } elsif (/lzma/) {
exit 1 unless (open IN, "$lzcat $mbox_qname|"); exit 1 unless (open IN, "$lzcat $mbox_qname|");
} elsif (/lzo/) {
exit 1 unless (open IN, "$lzocat $mbox_qname|");
} elsif (/xz/) { } elsif (/xz/) {
exit 1 unless (open IN, "$xzcat $mbox_qname|"); exit 1 unless (open IN, "$xzcat $mbox_qname|");
} elsif (/zst/) { } elsif (/zst/) {

View File

@ -17,6 +17,7 @@ use File::Temp 'tempfile';
my $lzip = 'lzip'; my $lzip = 'lzip';
my $lz4 = 'lz4'; my $lz4 = 'lz4';
my $lzma = 'lzma'; my $lzma = 'lzma';
my $lzo = 'lzop';
my $xz = 'xz'; my $xz = 'xz';
my $zstd = 'zstd'; my $zstd = 'zstd';
my $bzip = 'bzip2'; my $bzip = 'bzip2';
@ -88,6 +89,8 @@ sub myin
return "$lzip -dc $qfname"; return "$lzip -dc $qfname";
} elsif (/^'*lzma/) { } elsif (/^'*lzma/) {
return "$lzma -dc $qfname"; return "$lzma -dc $qfname";
} elsif (/^'*lzo/) {
return "$lzo -dc $qfname";
} elsif (/^'*xz/) { } elsif (/^'*xz/) {
return "$xz -dc $qfname"; return "$xz -dc $qfname";
} elsif (/^'*zst/) { } elsif (/^'*zst/) {
@ -114,6 +117,8 @@ sub myout
return "$lzip -c $sep $qfname"; return "$lzip -c $sep $qfname";
} elsif (/^'*lzma/) { } elsif (/^'*lzma/) {
return "$lzma -c $sep $qfname"; return "$lzma -c $sep $qfname";
} elsif (/^'*lzo/) {
return "$lzo -c $sep $qfname";
} elsif (/^'*xz/) { } elsif (/^'*xz/) {
return "$xz -c $sep $qfname"; return "$xz -c $sep $qfname";
} elsif (/^'*zst/) { } elsif (/^'*zst/) {

View File

@ -16,6 +16,8 @@ lz4/1 lz4 < %1 > %3
ulz4/1 lz4 -d < %1 > %3 ulz4/1 lz4 -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
lzo/1 lzop < %1 > %3
ulzo/1 lzop -d < %1 > %3
xz/1 xz < %1 > %3 xz/1 xz < %1 > %3
uxz/1 xz -d < %1 > %3 uxz/1 xz -d < %1 > %3
zst/1 zstd < %1 > %3 zst/1 zstd < %1 > %3