mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 04:22:34 +03:00
Ticket #4130: add PAK archive support for extfs.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
7f4960553a
commit
954e83191c
@ -625,6 +625,7 @@ src/vfs/extfs/helpers/ucab
|
|||||||
src/vfs/extfs/helpers/uha
|
src/vfs/extfs/helpers/uha
|
||||||
src/vfs/extfs/helpers/ulha
|
src/vfs/extfs/helpers/ulha
|
||||||
src/vfs/extfs/helpers/ulib
|
src/vfs/extfs/helpers/ulib
|
||||||
|
src/vfs/extfs/helpers/unar
|
||||||
src/vfs/extfs/helpers/urar
|
src/vfs/extfs/helpers/urar
|
||||||
src/vfs/extfs/helpers/uwim
|
src/vfs/extfs/helpers/uwim
|
||||||
src/vfs/extfs/helpers/uzip
|
src/vfs/extfs/helpers/uzip
|
||||||
|
@ -176,6 +176,11 @@ type/^LHa\ .*archive
|
|||||||
Open=%cd %p/ulha://
|
Open=%cd %p/ulha://
|
||||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha
|
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha
|
||||||
|
|
||||||
|
# PAK
|
||||||
|
type/^PAK\ .*archive
|
||||||
|
Open=%cd %p/unar://
|
||||||
|
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view pak
|
||||||
|
|
||||||
# arj
|
# arj
|
||||||
regex/i/\.a(rj|[0-9][0-9])$
|
regex/i/\.a(rj|[0-9][0-9])$
|
||||||
Open=%cd %p/uarj://
|
Open=%cd %p/uarj://
|
||||||
|
1
src/vfs/extfs/helpers/.gitignore
vendored
1
src/vfs/extfs/helpers/.gitignore
vendored
@ -20,6 +20,7 @@ uarj
|
|||||||
ucab
|
ucab
|
||||||
uha
|
uha
|
||||||
ulha
|
ulha
|
||||||
|
unar
|
||||||
urar
|
urar
|
||||||
uwim
|
uwim
|
||||||
uzip
|
uzip
|
||||||
|
@ -31,6 +31,7 @@ EXTFS_IN = \
|
|||||||
uha.in \
|
uha.in \
|
||||||
ulha.in \
|
ulha.in \
|
||||||
ulib.in \
|
ulib.in \
|
||||||
|
unar.in \
|
||||||
urar.in \
|
urar.in \
|
||||||
uwim.in \
|
uwim.in \
|
||||||
uzip.in \
|
uzip.in \
|
||||||
@ -61,6 +62,7 @@ EXTFS_OUT = \
|
|||||||
uha \
|
uha \
|
||||||
ulha \
|
ulha \
|
||||||
ulib \
|
ulib \
|
||||||
|
unar \
|
||||||
urar \
|
urar \
|
||||||
uwim \
|
uwim \
|
||||||
uzip \
|
uzip \
|
||||||
|
@ -73,3 +73,6 @@ patchsetfs - list of patches of current file
|
|||||||
|
|
||||||
# Gputils lib archives.
|
# Gputils lib archives.
|
||||||
ulib
|
ulib
|
||||||
|
|
||||||
|
# PAK Archive
|
||||||
|
unar
|
||||||
|
59
src/vfs/extfs/helpers/unar.in
Normal file
59
src/vfs/extfs/helpers/unar.in
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Written by Ilia Maslakov <il.smind@gmail.com>
|
||||||
|
#
|
||||||
|
# (C) 2020 The Free Software Foundation.
|
||||||
|
|
||||||
|
# Define awk
|
||||||
|
AWK=@AWK@
|
||||||
|
|
||||||
|
# Define which archiver you are using with appropriate options
|
||||||
|
UNAR_LIST="lsar "
|
||||||
|
UNAR_GET="unar "
|
||||||
|
|
||||||
|
# The 'list' command executive
|
||||||
|
mc_unar_fs_list()
|
||||||
|
{
|
||||||
|
# List the contents of the archive and sort it out
|
||||||
|
$UNAR_LIST -l "$1" | $AWK -v uid=`id -nu` -v gid=`id -ng` '
|
||||||
|
BEGIN { flag = 0 }
|
||||||
|
/^\(Flags/ {next}
|
||||||
|
/^\(Mode/ {next}
|
||||||
|
{
|
||||||
|
flag++;
|
||||||
|
if (flag < 4)
|
||||||
|
next
|
||||||
|
pr="-r--r--r--"
|
||||||
|
if (index($2, "D") != 0)
|
||||||
|
pr="dr-xr-xr-x"
|
||||||
|
split($6, a, "-")
|
||||||
|
split($7, b, ":")
|
||||||
|
printf "%s 1 %s %s %d %02d/%02d/%02d %02d:%02d %s\n", pr, uid, gid, $3, a[3], a[2], a[1], b[1], b[2], $8
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# The 'copyout' command executive to copy displayed files to a destination
|
||||||
|
mc_unar_fs_copyout ()
|
||||||
|
{
|
||||||
|
TMPDIR=`mktemp -d "${MC_TMPDIR:-/tmp}/mctmpdir-uha.XXXXXX"` || exit 1
|
||||||
|
|
||||||
|
$UNAR_GET "$1" "$2" -o "$TMPDIR" >/dev/null
|
||||||
|
we=`basename "$1" | sed -E 's|^(.*?)\.\w+$|\1|'`
|
||||||
|
cat "$TMPDIR/$we/$2" > "$3"
|
||||||
|
cd /
|
||||||
|
rm -rf "$TMPDIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
# The main routine
|
||||||
|
umask 077
|
||||||
|
|
||||||
|
cmd="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
case "$cmd" in
|
||||||
|
list) mc_unar_fs_list "$@" ;;
|
||||||
|
copyout) mc_unar_fs_copyout "$@" ;;
|
||||||
|
*) exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user