dvadf
PK Sb\�~�~M M
mc-wrapper.shnu �[��� MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/var/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"
if test -r "$MC_PWD_FILE"; then
MC_PWD="`cat "$MC_PWD_FILE"`"
if test -n "$MC_PWD" && test -d "$MC_PWD"; then
cd "$MC_PWD"
fi
unset MC_PWD
fi
rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE
unset MC_USER
PK Sb\����o o
fish/rmdirnu �[��� #RMD $FISH_FILENAME
if rmdir "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Sb\k�xE� �
fish/hardlinknu �[��� #LINK $FISH_FILEFROM $FISH_FILETO
FILEFROM="/${FISH_FILEFROM}"
FILETO="/${FISH_FILETO}"
if ln "${FILEFROM}" "${FILETO}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Sb\j�Oc� � fish/infonu �[��� LC_TIME=C
export LC_TIME
#FISH_HAVE_HEAD 1
#FISH_HAVE_SED 2
#FISH_HAVE_AWK 4
#FISH_HAVE_PERL 8
#FISH_HAVE_LSQ 16
#FISH_HAVE_DATE_MDYT 32
#FISH_HAVE_TAIL 64
res=0
if `echo yes| head -c 1 > /dev/null 2>&1` ; then
res=`expr $res + 1`
fi
if `echo 1 | sed 's/1/2/' >/dev/null 2>&1` ; then
res=`expr $res + 2`
fi
if `echo 1| awk '{print}' > /dev/null 2>&1` ; then
res=`expr $res + 4`
fi
if `perl -v > /dev/null 2>&1` ; then
res=`expr $res + 8`
fi
if `ls -Q / >/dev/null 2>&1` ; then
res=`expr $res + 16`
fi
dat=`ls -lan / 2>/dev/null | head -n 3 | (
while read p l u g s rec; do
if [ -n "$g" ]; then
if [ -n "$l" ]; then
echo "$rec"
fi
fi
done
)`
dat=`echo $dat | cut -c1 2>/dev/null`
r=`echo "0123456789"| grep "$dat"`
if [ -z "$r" ]; then
res=`expr $res + 32`
fi
if `echo yes| tail -c +1 - > /dev/null 2>&1` ; then
res=`expr $res + 64`
fi
echo $res
echo "### 200"
PK Tb\��� r r fish/unlinknu �[��� #DELE $FISH_FILENAME
if rm -f "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\���eg g fish/getnu �[��� #RETR $FISH_FILENAME $FISH_START_OFFSET
LC_TIME=C
export LC_TIME
fish_get_perl ()
{
FILENAME=$1
OFFSET=$2
perl -e '
use strict;
use POSIX;
use Fcntl;
my $filename = $ARGV[0];
my $pos = $ARGV[1];
my $content;
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = lstat("$filename");
my $n;
if (open IFILE,$filename) {
if ($size<$pos) {
printf("0\n");
} else {
$size-=$pos;
printf("$size\n");
}
printf("### 100\n");
seek (IFILE, $pos, 0);
while ($n = read(IFILE,$content,$blksize)!= 0) {
print $content;
}
close IFILE;
printf("### 200\n");
} else {
printf("### 500\n");
}
exit 0
' "${FILENAME}" $OFFSET
}
fish_get_tail ()
{
FILENAME=$1
OFFSET=$2
LC_TIME=C
export LC_TIME
if dd if="${FILENAME}" of=/dev/null bs=1 count=1 2>/dev/null ; then
file_size=`ls -ln "${FILENAME}" 2>/dev/null | (
read p l u g s r
echo $s
)`
if [ $OFFSET -gt 0 ]; then
file_size=`expr $file_size - $OFFSET`
OFFSET=`expr $OFFSET + 1`
fi
if [ $file_size -gt 0 ]; then
echo $file_size
else
echo 0
fi
echo "### 100"
if [ $OFFSET -gt 0 ]; then
tail -c +${OFFSET} "${FILENAME}"
else
cat "${FILENAME}"
fi
echo "### 200"
else
echo "### 500"
fi
}
fish_get_dd ()
{
FILENAME=$1
OFFSET=$2
LC_TIME=C
export LC_TIME
if dd if="${FILENAME}" of=/dev/null bs=1 count=1 2>/dev/null ; then
file_size=`ls -ln "${FILENAME}" 2>/dev/null | (
read p l u g s r
echo $s
)`
file_size=`expr $file_size - $OFFSET`
if [ $file_size -gt 0 ]; then
echo $file_size
else
echo 0
fi
echo "### 100"
if [ $OFFSET -gt 0 ]; then
dd skip=$OFFSET ibs=1 if="${FILENAME}" 2>/dev/null
else
cat "${FILENAME}"
fi
echo "### 200"
else
echo "### 500"
fi
}
if [ -n "${FISH_HAVE_PERL}" ]; then
fish_get_perl "/${FISH_FILENAME}" ${FISH_START_OFFSET}
elif [ -n "${FISH_HAVE_TAIL}" ]; then
fish_get_tail "/${FISH_FILENAME}" ${FISH_START_OFFSET}
else
fish_get_dd "/${FISH_FILENAME}" ${FISH_START_OFFSET}
fi
PK Tb\�C��� � fish/appendnu �[��� #APPE $FISH_FILESIZE $FISH_FILENAME
FILENAME="/${FISH_FILENAME}"
echo "### 001"
{
bss=4096
bsl=4095
if [ $FISH_FILESIZE -lt $bss ]; then
bss=1;
bsl=0;
fi
while [ $FISH_FILESIZE -gt 0 ]; do
cnt=`expr \\( $FISH_FILESIZE + $bsl \\) / $bss`
n=`dd bs=$bss count=$cnt | tee -a "${FILENAME}" | wc -c`
FISH_FILESIZE=`expr $FISH_FILESIZE - $n`
done
}; echo "### 200"
PK Tb\�*�3� � fish/lnnu �[��� #SYMLINK $FISH_FILEFROM $FISH_FILETO
FILEFROM="${FISH_FILEFROM}"
FILETO="/${FISH_FILETO}"
if ln -s "${FILEFROM}" "${FILETO}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\�Ρ � fish/lsnu �[��� #LIST /${FISH_DIR}
LC_TIME=C
export LC_TIME
perl_res="1"
fish_list_lsq ()
{
FISH_DIR="$1"
ls -Qlan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
while read p l u g s m d y n; do
echo "P$p $u.$g"
echo "S$s"
echo "d$m $d $y"
echo ":$n"
echo
done
)
ls -Qlan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
while read p l u g a i m d y n; do
echo "P$p $u.$g"
echo "E$a$i"
echo "d$m $d $y"
echo ":$n"
echo
done
)
echo '### 200'
}
fish_list_sed ()
{
FISH_DIR="$1"
ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
while read p l u g s rec; do
if [ -n "$g" ]; then
if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+ //'`
filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
else
filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ //'`
filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
fi
pfile=\"`echo "$filename" | sed -e 's#^\(.*\) -> \(.*\)#\1" -> "\2#'`\"
echo "P$p $u.$g"
echo "S$s"
if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
echo "d$filedate"
else
echo "D$filedate"
fi
echo ":$pfile"
echo
fi
done
)
ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
while read p l u g a i rec; do
if [ -n "$g" ]; then
if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+ //'`
filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
else
filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ //'`
filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
fi
pfile=\"`echo "$filename" | sed -e 's#^\(.*\) -> \(.*\)#\1" -> "\2#'`\"
echo "P$p $u.$g"
echo "E$a$i"
if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
echo "d$filedate"
else
echo "D$filedate"
fi
echo ":$pfile"
echo
fi
done
)
echo '### 200'
}
fish_list_poor_ls ()
{
FISH_DIR="$1"
ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
while read p l u g s m d y n n2 n3; do
if [ -n "$g" ]; then
if [ "$m" = "0" ]; then
s=$d; m=$y; d=$n; y=$n2; n=$n3
else
n=$n" "$n2" "$n3
fi
echo "P$p $u $g"
echo "S$s"
echo "d$m $d $y"
echo ":"$n
echo
fi
done
)
ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
while read p l u g a i m d y n n2 n3; do
if [ -n "$g" ]; then
if [ "$a" = "0" ]; then
a=$m; i=$d; m=$y; d=$n; y=$n2; n=$n3
else
n=$n" "$n2" "$n3
fi
echo "P$p $u $g"
echo "E$a$i"
echo "d$m $d $y"
echo ":"$n
echo
fi
done
)
echo '### 200'
}
fish_list_perl ()
{
FISH_DIR=$1
perl -e '
use strict;
use POSIX;
use Fcntl;
use POSIX ":fcntl_h"; #S_ISLNK was here until 5.6
import Fcntl ":mode" unless defined &S_ISLNK; #and is now here
my $dirname = $ARGV[0];
if (opendir (DIR, $dirname)) {
while((my $filename = readdir (DIR))){
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = lstat("$dirname/$filename");
my $mloctime= strftime("%%m-%%d-%%Y %%H:%%M", localtime $mtime);
my $strutils_shell_escape_regex = s/([;<>\*\|`&\$!#\(\)\[\]\{\}:'\''"\ \\])/\\$1/g;
my $e_filename = $filename;
$e_filename =~ $strutils_shell_escape_regex;
if (S_ISLNK ($mode)) {
my $linkname = readlink ("$dirname/$filename");
$linkname =~ $strutils_shell_escape_regex;
printf("R%%o %%o $uid.$gid\nS$size\nd$mloctime\n:\"%%s\" -> \"%%s\"\n\n", S_IMODE($mode), S_IFMT($mode), $e_filename, $linkname);
} elsif (S_ISCHR ($mode) || S_ISBLK ($mode)) {
my $minor = $rdev %% 256;
my $major = int( $rdev / 256 );
printf("R%%o %%o $uid.$gid\nE$major,$minor\nd$mloctime\n:\"%%s\"\n\n", S_IMODE($mode), S_IFMT($mode), $e_filename);
} else {
printf("R%%o %%o $uid.$gid\nS$size\nd$mloctime\n:\"%%s\"\n\n", S_IMODE($mode), S_IFMT($mode), $e_filename);
}
}
printf("### 200\n");
closedir(DIR);
} else {
printf("### 500\n");
}
exit 0
' "/${FISH_DIR}"
perl_res=$?
}
if [ -n "${FISH_HAVE_PERL}" ]; then
fish_list_perl "/${FISH_FILENAME}"
fi
if [ "${perl_res}" != "0" ]; then
if [ -n "${FISH_HAVE_LSQ}" ]; then
fish_list_lsq "/${FISH_FILENAME}"
elif [ -n "${FISH_HAVE_SED}" ]; then
fish_list_sed "/${FISH_FILENAME}"
else
fish_list_poor_ls "/${FISH_FILENAME}"
fi
fi
PK Tb\�e e
fish/utimenu �[��� #UTIME "$FISH_TOUCHATIME_W_NSEC" "$FISH_TOUCHMTIME_W_NSEC" "$FISH_FILENAME"
if TZ=UTC touch -m -d "$FISH_TOUCHMTIME_W_NSEC" "/${FISH_FILENAME}" 2>/dev/null && \
TZ=UTC touch -a -d "$FISH_TOUCHATIME_W_NSEC" "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
elif TZ=UTC touch -m -t $FISH_TOUCHMTIME "/${FISH_FILENAME}" 2>/dev/null && \
TZ=UTC touch -a -t $FISH_TOUCHATIME "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
elif [ -n "$FISH_HAVE_PERL" ] &&
perl -e 'utime '$FISH_FILEATIME','$FISH_FILEMTIME',@ARGV;' "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\�H?�� � fish/sendnu �[��� #STOR $FISH_FILESIZE $FISH_FILENAME
FILENAME="/${FISH_FILENAME}"
echo "### 001"
{
> "${FILENAME}"
bss=4096
bsl=4095
if [ $FISH_FILESIZE -lt $bss ]; then
bss=1;
bsl=0;
fi
while [ $FISH_FILESIZE -gt 0 ]; do
cnt=`expr \\( $FISH_FILESIZE + $bsl \\) / $bss`
n=`dd bs=$bss count=$cnt | tee -a "${FILENAME}" | wc -c`
FISH_FILESIZE=`expr $FISH_FILESIZE - $n`
done
}; echo "### 200"
PK Tb\�,�X X fish/fexistsnu �[��� #ISEXISTS $FISH_FILENAME
ls -l "/${FISH_FILENAME}" >/dev/null 2>/dev/null
echo '### '$?
PK Tb\�A�o o
fish/mkdirnu �[��� #MKD $FISH_FILENAME
if mkdir "/$FISH_FILENAME" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\%�,e e fish/README.fishnu �[���
FIles transferred over SHell protocol (V 0.0.3)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This protocol was designed for transferring files over a remote shell
connection (rsh and compatibles). It can be as well used for transfers over
rsh, and there may be other uses.
Client sends requests of following form:
#FISH_COMMAND
equivalent shell commands,
which may be multiline
Only fish commands are defined here, shell equivalents are for your
information only and will probably vary from implementation to
implementation. Fish commands always have priority: server is
expected to execute fish command if it understands it. If it does not,
however, it can try the luck and execute shell command.
Since version 4.7.3, the scripts that FISH sends to host machines after
a command is transmitted are no longer hardwired in the Midnight
Commander source code.
First, mc looks for system-wide set of scripts, then it checks whether
current user has host-specific overrides in his per-user mc
configuration directory. User-defined overrides take priority over
sytem-wide scripts if they exist. The order in which the directories are
traversed is as follows:
/usr/libexec/mc/fish
~/.local/share/mc/fish/<hostname>/
Server's reply is multiline, but always ends with
### 000<optional text>
line. ### is prefix to mark this line, 000 is return code. Return
codes are superset to those used in ftp.
There are few new exit codes defined:
000 don't know; if there were no previous lines, this marks COMPLETE
success, if they were, it marks failure.
001 don't know; if there were no previous lines, this marks
PRELIMinary success, if they were, it marks failure
Connecting
~~~~~~~~~~
Client uses "echo FISH:;/bin/sh" as command executed on remote
machine. This should make it possible for server to distinguish FISH
connections from normal rsh/ssh.
Commands
~~~~~~~~
#FISH
echo; start_fish_server; echo '### 200'
This command is sent at the beginning. It marks that client wishes to
talk via FISH protocol. #VER command must follow. If server
understands FISH protocol, it has option to put FISH server somewhere
on system path and name it start_fish_server.
#VER 0.0.2 <feature1> <feature2> <...>
echo '### 000'
This command is the second one. It sends client version and extensions
to the server. Server should reply with protocol version to be used,
and list of extensions accepted.
VER 0.0.0 <feature2>
### 200
#PWD
pwd; echo '### 200'
Server should reply with current directory (in form /abc/def/ghi)
followed by line indicating success.
#LIST /directory
ls -lLa $1 | grep '^[^cbt]' | ( while read p x u g s m d y n; do echo "P$p $u.$g
S$s
d$m $d $y
:$n
"; done )
ls -lLa $1 | grep '^[cb]' | ( while read p x u g a i m d y n; do echo "P$p $u.$g
E$a$i
dD$m $d $y
:$n
"; done )
echo '### 200'
This allows client to list directory or get status information about
single file. Output is in following form (any line except :<filename>
may be omitted):
P<unix permissions> <owner>.<group>
S<size>
d<3-letters month name> <day> <year or HH:MM>
D<year> <month> <day> <hour> <minute> <second>[.1234]
E<major-of-device>,<minor>
:<filename>
L<filename symlink points to>
<blank line to separate items>
Unix permissions are of form X--------- where X is type of
file. Currently, '-' means regular file, 'd' means directory, 'c', 'b'
means character and block device, 'l' means symbolic link, 'p' means
FIFO and 's' means socket.
'd' has three fields: month (one of strings Jan Feb Mar Apr May Jun
Jul Aug Sep Oct Nov Dec), day of month, and third is either single
number indicating year, or HH:MM field (assume current year in such
case). As you've probably noticed, this is pretty broken; it is for
compatibility with ls listing.
#RETR /some/name
ls -l /some/name | ( read a b c d x e; echo $x ); echo '### 100'; cat /some/name; echo '### 200'
Server sends line with filesize on it, followed by line with ### 100
indicating partial success, then it sends binary data (exactly
filesize bytes) and follows them with (with no preceding newline) ###
200.
Note that there's no way to abort running RETR command - except
closing the connection.
#STOR <size> /file/name
> /file/name; echo '### 001'; ( dd bs=4096 count=<size/4096>; dd bs=<size%4096> count=1 ) 2>/dev/null | ( cat > %s; cat > /dev/null ); echo '### 200'
This command is for storing /file/name, which is exactly size bytes
big. You probably think I went crazy. Well, I did not: that strange
cat > /dev/null has purpose to discard any extra data which was not
written to disk (due to for example out of space condition).
[Why? Imagine uploading file with "rm -rf /" line in it.]
#CWD /somewhere
cd /somewhere; echo '### 000'
It is specified here, but I'm not sure how wise idea is to use this
one: it breaks stateless-ness of the protocol.
Following commands should be rather self-explanatory:
#CHMOD 1234 file
chmod 1234 file; echo '### 000'
#DELE /some/path
rm -f /some/path; echo '### 000'
#MKD /some/path
mkdir /some/path; echo '### 000'
#RMD /some/path
rmdir /some/path; echo '### 000'
#RENAME /path/a /path/b
mv /path/a /path/b; echo '### 000'
#LINK /path/a /path/b
ln /path/a /path/b; echo '### 000'
#SYMLINK /path/a /path/b
ln -s /path/a /path/b; echo '### 000'
#CHOWN user /file/name
chown user /file/name; echo '### 000'
#CHGRP group /file/name
chgrp group /file/name; echo '### 000'
#INFO
...collect info about host into $result ...
echo $result
echo '### 200'
#READ <offset> <size> /path/and/filename
cat /path/and/filename | ( dd bs=4096 count=<offset/4096> > /dev/null;
dd bs=<offset%4096> count=1 > /dev/null;
dd bs=4096 count=<offset/4096>;
dd bs=<offset%4096> count=1; )
Returns ### 200 on successful exit, ### 291 on successful exit when
reading ended at eof, ### 292 on successfull exit when reading did not
end at eof.
#WRITE <offset> <size> /path/and/filename
Hmm, shall we define these ones if we know our client is not going to
use them?
you can use follow parameters:
FISH_FILESIZE
FISH_FILENAME
FISH_FILEMODE
FISH_FILEOWNER
FISH_FILEGROUPE
FISH_FILEFROM
FISH_FILETO
NB:
'FISH_FILESIZE' used if we operate with single file name in 'unlink', 'rmdir', 'chmod', etc...
'FISH_FILEFROM','FISH_FILETO' used if we operate with two files in 'ln', 'hardlink', 'mv' etc...
'FISH_FILEOWNER', 'FISH_FILEGROUPE' is a new user/group in chown
also flags:
FISH_HAVE_HEAD
FISH_HAVE_SED
FISH_HAVE_AWK
FISH_HAVE_PERL
FISH_HAVE_LSQ
FISH_HAVE_DATE_MDYT
That's all, folks!
pavel@ucw.cz
PK Tb\�ȼȬ �
fish/chownnu �[��� #CHOWN $FISH_FILEOWNER:$FISH_FILEGROUP $FISH_FILENAME
if chown ${FISH_FILEOWNER}:${FISH_FILEGROUP} "/${FISH_FILENAME}" ; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\�Xw� �
fish/chmodnu �[��� #CHMOD $FISH_FILEMODE $FISH_FILENAME
if chmod ${FISH_FILEMODE} "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\�8�� � fish/mvnu �[��� #RENAME $FISH_FILEFROM $FISH_FILETO
if mv "/${FISH_FILEFROM}" "/${FISH_FILETO}" 2>/dev/null; then
echo "### 000"
else
echo "### 500"
fi
PK Tb\.�(� � mc-wrapper.cshnu �[��� set MC_USER="`id | sed 's/[^(]*(//;s/).*//'`"
if ($?TMPDIR) then
setenv MC_PWD_FILE $TMPDIR/mc-$MC_USER/mc.pwd.$$
else
setenv MC_PWD_FILE /var/tmp/mc-$MC_USER/mc.pwd.$$
endif
/usr/bin/mc -P "$MC_PWD_FILE" $*
if (-r "$MC_PWD_FILE") then
setenv MC_PWD "`cat '$MC_PWD_FILE'`"
if ( -d "$MC_PWD" ) then
cd "$MC_PWD"
endif
unsetenv MC_PWD
endif
rm -f "$MC_PWD_FILE"
unsetenv MC_PWD_FILE
unsetenv MC_USER
PK Tb\�붕� � mc.shnu �[��� # Don't define aliases in plain Bourne shell
[ -n "${BASH_VERSION}${KSH_VERSION}${ZSH_VERSION}" ] || return 0
alias mc='. /usr/libexec/mc/mc-wrapper.sh'
PK Tb\�L��1 1 mc.cshnu �[��� alias mc 'source /usr/libexec/mc/mc-wrapper.csh'
PK Tb\^��
� � ext.d/video.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
*)
mplayer -identify -vo null -ao null -frames 0 "${MC_EXT_FILENAME}" 2>&1 | \
sed -n 's/^ID_//p'
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
ram)
(realplay "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
;;
*)
if [ -n "$DISPLAY" ]; then
(mplayer "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
mplayer -vo null "${MC_EXT_FILENAME}"
fi
#(gtv "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
#(xanim "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Tb\��5 5 ext.d/web.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
html)
links -dump "${MC_EXT_FILENAME}" 2>/dev/null || \
w3m -dump "${MC_EXT_FILENAME}" 2>/dev/null || \
lynx -dump -force_html "${MC_EXT_FILENAME}"
;;
*)
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
html)
(if [ -n "" -a -n "$DISPLAY" ]; then
( file://"${MC_EXT_CURRENTDIR}"/"${MC_EXT_BASENAME}" &) 1>&2
else
elinks "${MC_EXT_FILENAME}" || \
links "${MC_EXT_FILENAME}" || \
lynx -force_html "${MC_EXT_FILENAME}" || \
${PAGER:-more} "${MC_EXT_FILENAME}"
fi) 2>/dev/null
;;
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Tb\��dv\ \ ext.d/package.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
trpm)
rpm -qivl --scripts `basename "${MC_EXT_BASENAME}" .trpm`
;;
src.rpm|rpm)
if rpm --nosignature --version >/dev/null 2>&1; then
RPM="rpm --nosignature"
else
RPM="rpm"
fi
$RPM -qivlp --scripts "${MC_EXT_FILENAME}"
;;
deb)
dpkg-deb -I "${MC_EXT_FILENAME}" && echo && dpkg-deb -c "${MC_EXT_FILENAME}"
;;
debd)
dpkg -s `echo "${MC_EXT_BASENAME}" | sed 's/\([0-9a-z.-]*\).*/\1/'`
;;
deba)
apt-cache show `echo "${MC_EXT_BASENAME}" | sed 's/\([0-9a-z.-]*\).*/\1/'`
;;
*)
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Ub\��l�k k ext.d/image.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
jpeg)
identify "${MC_EXT_FILENAME}"
which exif >/dev/null 2>&1 && exif "${MC_EXT_FILENAME}" 2>/dev/null
;;
xpm)
sxpm "${MC_EXT_FILENAME}"
;;
*)
identify "${MC_EXT_FILENAME}"
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
xbm)
(bitmap "${MC_EXT_FILENAME}" &)
;;
xcf)
(gimp "${MC_EXT_FILENAME}" &)
;;
svg)
(inkscape "${MC_EXT_FILENAME}" &)
;;
*)
if [ -n "$DISPLAY" ]; then
(gqview "${MC_EXT_FILENAME}" &)
elif see >/dev/null 2>&1; then
(see "${MC_EXT_FILENAME}" &)
else
(zgv "${MC_EXT_FILENAME}" &)
fi
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Ub\�pQ� � ext.d/archive.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
# $3 - pager
action=$1
filetype=$2
pager=$3
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
gz)
gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
bz2)
bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
bzip)
bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
lz)
lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
lz4)
lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
lzma)
lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
xz)
xz -dc "${MC_EXT_FILENAME}" 2>/dev/null
;;
tar)
tar tvvf - < "${MC_EXT_FILENAME}"
;;
tar.gz|tar.qpr)
gzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.bzip)
bzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.bzip2)
bzip2 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.lz)
lzip -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.lz4)
lz4 -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.lzma)
lzma -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.xz)
xz -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
tar.F)
freeze -dc "${MC_EXT_FILENAME}" 2>/dev/null | \
tar tvvf -
;;
lha)
lha l "${MC_EXT_FILENAME}"
;;
arj)
arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
unarj l "${MC_EXT_FILENAME}"
;;
cab)
cabextract -l "${MC_EXT_FILENAME}"
;;
ha)
ha lf "${MC_EXT_FILENAME}"
;;
rar)
rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
unrar v -c- "${MC_EXT_FILENAME}"
;;
alz)
unalz -l "${MC_EXT_FILENAME}"
;;
cpio.z|cpio.gz)
gzip -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null
;;
cpio.lz)
lzip -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null
;;
cpio.lz4)
lz4 -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null
;;
cpio.xz)
xz -dc "${MC_EXT_FILENAME}" | \
cpio -itv 2>/dev/null
;;
cpio)
cpio -itv < "${MC_EXT_FILENAME}" 2>/dev/null
;;
7z)
7za l "${MC_EXT_FILENAME}" 2>/dev/null ||
7z l "${MC_EXT_FILENAME}"
;;
ace)
unace l "${MC_EXT_FILENAME}"
;;
arc)
arc l "${MC_EXT_FILENAME}"
;;
zip)
unzip -v "${MC_EXT_FILENAME}"
;;
zoo)
zoo l "${MC_EXT_FILENAME}"
;;
*)
;;
esac
}
do_open_action() {
filetype=$1
pager=$2
case "${filetype}" in
bzip2)
bzip2 -dc "${MC_EXT_FILENAME}" | ${pager}
;;
bzip)
bzip -dc "${MC_EXT_FILENAME}" | ${pager}
;;
gz)
gz -dc "${MC_EXT_FILENAME}" | ${pager}
;;
lz)
lzip -dc "${MC_EXT_FILENAME}" | ${pager}
;;
lz4)
lz4 -dc "${MC_EXT_FILENAME}" | ${pager}
;;
lzma)
lzma -dc "${MC_EXT_FILENAME}" | ${pager}
;;
xz)
xz -dc "${MC_EXT_FILENAME}" | ${pager}
;;
par2)
par2 r "${MC_EXT_FILENAME}"
;;
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}" "${pager}"
;;
*)
;;
esac
PK Ub\Y�:A� � ext.d/doc.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
STAROFFICE_REGEXP='\.(sxw|sdw|stw|sxc|stc|sxi|sti|sxd|std||sxm||sxg)$'
staroffice_console() {
filename=$1;shift
is_view=$1; shift
if [ -n "${is_view}" ]; then
is_view='-dump'
fi
tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
cd $tmp
soffice2html.pl "${filename}"
elinks ${is_view} content.html
rm -rf "$tmp"
}
get_ooffice_executable() {
which loffice >/dev/null 2>&1 && \
echo "loffice" || \
echo "ooffice"
}
do_view_action() {
filetype=$1
case "${filetype}" in
ps)
ps2ascii "${MC_EXT_FILENAME}"
;;
pdf)
pdftotext -layout -nopgbrk "${MC_EXT_FILENAME}" -
;;
odt)
if [ ` echo "${MC_EXT_FILENAME}" | grep -c "${STAROFFICE_REGEXP}"` -ne 0 ]; then
staroffice_console "${MC_EXT_FILENAME}" "view"
else
odt2txt "${MC_EXT_FILENAME}"
fi
;;
msdoc)
which wvHtml >/dev/null 2>&1 &&
{
tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
wvHtml "${MC_EXT_FILENAME}" --targetdir="$tmp" page.html
elinks -dump "$tmp/page.html"
rm -rf "$tmp"
} || \
antiword -t "${MC_EXT_FILENAME}" || \
catdoc -w "${MC_EXT_FILENAME}" || \
word2x -f text "${MC_EXT_FILENAME}" - || \
strings "${MC_EXT_FILENAME}"
;;
msxls)
which xlHtml >/dev/null 2>&1 && {
tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
xlhtml -a "${MC_EXT_FILENAME}" > "$tmp/page.html"
elinks -dump "$tmp/page.html"
rm -rf "$tmp"
} || \
xls2csv "${MC_EXT_FILENAME}" || \
strings "${MC_EXT_FILENAME}"
;;
dvi)
which dvi2tty >/dev/null 2>&1 && \
dvi2tty "${MC_EXT_FILENAME}" || \
catdvi "${MC_EXT_FILENAME}"
;;
djvu)
djvused -e print-pure-txt "${MC_EXT_FILENAME}"
;;
epub)
einfo -v "${MC_EXT_FILENAME}"
;;
*)
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
ps)
if [ -n "$DISPLAY" ]; then
(gv "${MC_EXT_FILENAME}" &)
else
ps2ascii "${MC_EXT_FILENAME}" | ${PAGER:-more}
fi
;;
pdf)
if [ ! -n "$DISPLAY" ]; then
pdftotext -layout -nopgbrk "${MC_EXT_FILENAME}" - | ${PAGER:-more}
elif see > /dev/null 2>&1; then
(see "${MC_EXT_FILENAME}" &)
else
(xpdf "${MC_EXT_FILENAME}" &)
fi
#(acroread "${MC_EXT_FILENAME}" &)
#(ghostview "${MC_EXT_FILENAME}" &)
;;
ooffice)
if [ -n "$DISPLAY" ]; then
OOFFICE=`get_ooffice_executable`
(${OOFFICE} "${MC_EXT_FILENAME}" &)
else
if [ `echo "${MC_EXT_FILENAME}" | grep -c "${STAROFFICE_REGEXP}"` -ne 0 ]; then
staroffice_console "${MC_EXT_FILENAME}"
else
odt2txt "${MC_EXT_FILENAME}" | ${PAGER:-more}
fi
fi
;;
abw)
(abiword "${MC_EXT_FILENAME}" &)
;;
gnumeric)
(gnumeric "${MC_EXT_FILENAME}" &)
;;
msdoc)
if [ -n "$DISPLAY" ]; then
(abiword "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
wvHtml "${MC_EXT_FILENAME}" --targetdir="$tmp" page.html -1
elinks "$tmp/page.html"
rm -rf "$tmp"
fi
;;
msxls)
if [ -n "$DISPLAY" ]; then
(gnumeric "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
xlhtml -a "${MC_EXT_FILENAME}" > "$tmp/page.html"
elinks "$tmp/page.html"
rm -rf "$tmp"
fi
;;
msppt)
if [ -n "$DISPLAY" ]; then
OOFFICE=`get_ooffice_executable`
(${OOFFICE} "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
tmp=`mktemp -d ${TMPDIR:-/tmp}/%p.XXXXXX`
ppthtml "${MC_EXT_FILENAME}" > "$tmp/page.html"
elinks "$tmp/page.html"
rm -rf "$tmp"
fi
;;
framemaker)
fmclient -f "${MC_EXT_FILENAME}"
;;
dvi)
if [ -n "$DISPLAY" ]; then
(xdvi "${MC_EXT_FILENAME}" &)
else
dvisvga "${MC_EXT_FILENAME}" || \
dvi2tty "${MC_EXT_FILENAME}" | ${PAGER:-more}
fi
;;
djvu)
djview "${MC_EXT_FILENAME}" &
;;
comic)
cbrpager "${MC_EXT_FILENAME}" &
;;
epub)
lucidor "${MC_EXT_FILENAME}" >/dev/null &
;;
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Ub\�\�� �
ext.d/text.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of archive
# $3 - pager
action=$1
filetype=$2
pager=$3
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
get_unpacker() {
filetype=$1
case "${filetype}" in
man.gz)
unpacker="gzip -dc"
;;
man.bz)
unpacker="bzip -dc"
;;
man.bz2)
unpacker="bzip2 -dc"
;;
man.lz)
unpacker="lzip -dc"
;;
man.lz4)
unpacker="lz4 -dc"
;;
man.lzma)
unpacker="lzma -dc"
;;
man.xz)
unpacker="xz -dc"
;;
esac
echo ${unpacker}
}
do_view_action() {
filetype=$1
unpacker=`get_unpacker ${filetype}`
case "${filetype}" in
man)
case "${MC_EXT_FILENAME}" in
*/log/*|*/logs/*)
cat "${MC_EXT_FILENAME}"
;;
*)
MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
;;
esac
;;
pod)
pod2man "${MC_EXT_FILENAME}" | nroff -c -Tlatin1 -mandoc
;;
nroff.me)
nroff -c -Tlatin1 -me "${MC_EXT_FILENAME}"
;;
nroff.ms)
nroff -c -Tlatin1 -ms "${MC_EXT_FILENAME}"
;;
man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz)
case "${MC_EXT_FILENAME}" in
*/log/*|*/logs/*)
${unpacker} "${MC_EXT_FILENAME}"
;;
*)
# "man" takes care of uncompressing.
# This way the stdin is left intact so the correct width is used.
MANROFFOPT=-c MAN_KEEP_FORMATTING=1 man -P cat "${MC_EXT_FILENAME}"
;;
esac
;;
*)
;;
esac
}
do_open_action() {
filetype=$1
pager=$2
unpacker=`get_unpacker ${filetype}`
case "${filetype}" in
info)
info -f "${MC_EXT_FILENAME}"
;;
man)
case "${MC_EXT_FILENAME}" in
*/log/*|*/logs/*)
cat "${MC_EXT_FILENAME}"
;;
*)
{ zsoelim "${MC_EXT_FILENAME}" 2>/dev/null || cat "${MC_EXT_FILENAME}"; } | \
nroff -c -Tlatin1 -mandoc
;;
esac | ${pager}
;;
pod)
pod2man "${MC_EXT_FILENAME}" | nroff -c -Tlatin1 -mandoc | ${pager}
;;
nroff.me)
nroff -c -Tlatin1 -me "${MC_EXT_FILENAME}" | ${pager}
;;
nroff.ms)
nroff -c -Tlatin1 -ms "${MC_EXT_FILENAME}" | ${pager}
;;
man.gz|man.bz|man.bz2|man.lz|man.lz4|man.lzma|man.xz)
case "${MC_EXT_FILENAME}" in
*/log/*|*/logs/*)
${unpacker} "${MC_EXT_FILENAME}"
;;
*)
${unpacker} "${MC_EXT_FILENAME}" | nroff -c -Tlatin1 -mandoc
;;
esac | ${pager}
;;
chm)
if [ -n "$DISPLAY" ]; then
which kchmviewer > /dev/null 2>&1 \
&& (kchmviewer "${MC_EXT_FILENAME}" &) \
|| (xchm "${MC_EXT_FILENAME}" &)
else
chm_http "${MC_EXT_FILENAME}" & elinks http://localhost:8080/index.html
kill -INT %1
fi
;;
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}" "${pager}"
;;
*)
;;
esac
PK Ub\�^�
ext.d/misc.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
iso9660)
isoinfo -d -i "${MC_EXT_FILENAME}" && isoinfo -l -R -J -i "${MC_EXT_FILENAME}"
;;
cat)
/bin/cat "${MC_EXT_FILENAME}" 2>/dev/null
;;
ar)
file "${MC_EXT_FILENAME}" && nm -C "${MC_EXT_FILENAME}"
;;
lib)
gplib -t "${MC_EXT_FILENAME}" | \
/usr/bin/perl -e 'while (<>) { @a=split /[\s\t]+/, $_; printf ("%-30s | %10d | %s.%s.%02d | %s\n", $a[0], ($a[1]*1),$a[7], lc($a[4]), $a[5], $a[6]);}'
;;
so)
file "${MC_EXT_FILENAME}" && nm -C -D "${MC_EXT_FILENAME}"
;;
elf)
file "${MC_EXT_FILENAME}" && nm -C "${MC_EXT_FILENAME}"
;;
dbf)
dbview -b "${MC_EXT_FILENAME}"
;;
sqlite)
sqlite3 "${MC_EXT_FILENAME}" .dump
;;
mo)
msgunfmt "${MC_EXT_FILENAME}" || \
cat "${MC_EXT_FILENAME}"
;;
lyx)
lyxcat "${MC_EXT_FILENAME}"
;;
torrent)
ctorrent -x "${MC_EXT_FILENAME}" 2>/dev/null
;;
javaclass)
jad -p "${MC_EXT_FILENAME}" 2>/dev/null
;;
*)
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
dbf)
dbview "${MC_EXT_FILENAME}"
;;
sqlite)
sqlite3 "${MC_EXT_FILENAME}"
;;
glade)
if glade-3 --version >/dev/null 2>&1; then
(glade-3 "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
(glade-2 "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
fi
;;
po)
(poedit "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
;;
lyx)
lyx "${MC_EXT_FILENAME}"
;;
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Ub\��| | ext.d/sound.shnu ȯ�� #!/bin/sh
# $1 - action
# $2 - type of file
action=$1
filetype=$2
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
do_view_action() {
filetype=$1
case "${filetype}" in
mp3)
mpg123 -vtn1 "${MC_EXT_FILENAME}" 2>&1 | \
sed -n '/^Title/,/^Comment/p;/^MPEG/,/^Audio/p'
;;
ogg)
ogginfo "${MC_EXT_FILENAME}"
;;
wma)
mplayer -quiet -slave -frames 0 -vo null -ao null -identify "${MC_EXT_FILENAME}" 2>/dev/null | \
tail +13 || file "${MC_EXT_FILENAME}"
;;
*)
cat "${MC_EXT_FILENAME}"
;;
esac
}
do_open_action() {
filetype=$1
case "${filetype}" in
common)
if [ -n "$DISPLAY" ]; then
(xmms "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
play "${MC_EXT_FILENAME}"
fi
;;
mod)
mikmod "${MC_EXT_FILENAME}"
#tracker "${MC_EXT_FILENAME}"
;;
wav22)
vplay -s 22 "${MC_EXT_FILENAME}"
;;
mp3)
if [ -n "$DISPLAY" ]; then
(xmms "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
mpg123 "${MC_EXT_FILENAME}"
fi
;;
ogg)
if [ -n "$DISPLAY" ]; then
(xmms "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
ogg123 "${MC_EXT_FILENAME}"
fi
;;
midi)
timidity "${MC_EXT_FILENAME}"
;;
wma)
mplayer -vo null "${MC_EXT_FILENAME}"
;;
playlist)
if [ -n "$DISPLAY" ]; then
(xmms -p "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
else
mplayer -vo null -playlist "${MC_EXT_FILENAME}"
fi
;;
*)
;;
esac
}
case "${action}" in
view)
do_view_action "${filetype}"
;;
open)
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
do_open_action "${filetype}"
;;
*)
;;
esac
PK Ub\�K�f04 04
cons.savernu ȯ�� ELF >