mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 21:06:52 +03:00
036d995eea
subshell when none is needed.
99 lines
2.6 KiB
Bash
99 lines
2.6 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Written by Christofer Edvardsen <ce@earthling.net>, Feb 1998
|
|
#
|
|
# This script makes it possible to view and copy files to/from a hp48
|
|
# (tested with a HP48G and the emulator x48)
|
|
#
|
|
# To use the hp48 external filesystem:
|
|
# - read the relevant parts of your HP48 manual
|
|
# - install kermit
|
|
# - connect the HP48 to your computer or start x48
|
|
# - below change the line which reflects the serial device you use
|
|
# - configure your HP48 (<left shift> - i/o - iopar):
|
|
# port: wire
|
|
# baud: 9600
|
|
# transfer format: binary (fast transfers) or
|
|
# ascii (editable on the pc)
|
|
# - start the server on the HP48: <left shift> - i/o - srvr - serve
|
|
# or the shortcut <right shift> - <right arrow>
|
|
# - on MC's commandline enter "cd hp48:"
|
|
#
|
|
# Make sure you have kermit installed and that it's using the right serial
|
|
# device by changing /dev/ttyXX on the next line
|
|
AWK=@AWK@
|
|
KERMIT="kermit -l /dev/ttyS1 -b 9600"
|
|
|
|
hp48_cmd()
|
|
{
|
|
$KERMIT -C "SET EXIT WARNING OFF,REMOTE $1,QUIT"
|
|
}
|
|
|
|
hp48_cd()
|
|
{
|
|
(echo SET EXIT WARNING OFF;echo REMOTE HOST HOME
|
|
for HP48_DIR in `echo "$1" | tr '/' ' '`;do
|
|
if [ "x$HP48_DIR" != "x." ];then echo REMOTE HOST "$HP48_DIR"; fi
|
|
done
|
|
echo QUIT)| $KERMIT -B >/dev/null
|
|
}
|
|
|
|
hp48_retdir()
|
|
{
|
|
echo "$1"
|
|
}
|
|
|
|
hp48_retsize()
|
|
{
|
|
printf "%d" "$2" 2>/dev/null
|
|
}
|
|
|
|
hp48_parser()
|
|
{
|
|
HP48_DIRS=
|
|
read -r INPUT
|
|
while [ "x$INPUT" != "xEOF" ]
|
|
do
|
|
case `echo "$INPUT" | $AWK '{if (int($2)) if ($3 == "Directory") print "dir";else print "file"}'` in
|
|
dir) HP48_DIRS="$HP48_DIRS `hp48_retdir \"$INPUT\"`"
|
|
printf "drwxr-xr-x 1 %-8d %-8d %8d %s %s\n" 0 0 `hp48_retsize "$INPUT"` "`date +\"%b %d %Y %k:%M\"`" "$HP48_CDIR/`hp48_retdir \"$INPUT\"`";;
|
|
file) printf "-rw-r--r-- 1 %-8d %-8d %8d %s %s\n" 0 0 `hp48_retsize "$INPUT"` "`date +\"%b %d %Y %k:%M\"`" "$HP48_CDIR/`hp48_retdir \"$INPUT\"`";;
|
|
esac
|
|
read -r INPUT
|
|
done
|
|
for HP48_DIR in $HP48_DIRS;
|
|
do
|
|
HP48_PDIR="$HP48_CDIR"
|
|
HP48_CDIR="$HP48_CDIR/$HP48_DIR"; hp48_cmd "HOST $HP48_DIR" >/dev/null
|
|
hp48_list
|
|
HP48_CDIR="$HP48_PDIR"; hp48_cmd "HOST UPDIR" >/dev/null
|
|
done
|
|
}
|
|
|
|
hp48_list()
|
|
{
|
|
{ hp48_cmd "DIRECTORY"; echo; echo EOF; } | hp48_parser
|
|
}
|
|
|
|
# override any locale for dates
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
case "$1" in
|
|
list) HP48_CDIR=
|
|
hp48_cmd "HOST HOME" >/dev/null
|
|
hp48_list
|
|
exit 0;;
|
|
copyout)
|
|
cd "`dirname "$4"`"
|
|
hp48_cd "`dirname "$3"`"
|
|
$KERMIT -B -g "`basename "$3"`" -a "$4" >/dev/null
|
|
exit 0;;
|
|
copyin)
|
|
cd "`dirname "$4"`"
|
|
hp48_cd "`dirname "$3"`"
|
|
$KERMIT -B -s "$4" -a "`basename "$3"`" >/dev/null
|
|
exit 0;;
|
|
esac
|
|
exit 1
|