Eine DOS-Datei kann durch eine Escape-Sequenz von UNIX aus angefordert werden. Hierbei kann der Name der gewünschten Datei angegeben oder ein Dialog zur Auswahl durch den Anwender angezeigt werden.
Für die Übertragung von binären Dateien kann Terms97801 eine Verschlüsselung gemäß uuencode durchführen. Es gelten folgende Escape-Sequenzen:
<ESC>GA<Name>; ASCII-Datei mit Dateinamen
<ESC>GB<Name>; binäre Datei uuencoded mit
Dateinamen
<ESC>GC<Name>; ASCII-Datei mit Dateiauswahl-Dialog
<ESC>GD<Name>; binäre Datei uuencoded mit
Dateiauswahl-Dialog
Nach abgeschlossener Übertragung wird ein Linefeed und ein EOF (End Of File) gesandt.
Das Linefeed ist notwendig, da ein EOF nur am Zeilenanfang erkannt wird. Beim ASCII-Filetransfer wird die Datei also um eine leere Zeile länger.
Der EOF-Character kann in dem Dialog System..Filetransfer angegeben werden. Dort kann außerdem eingestellt werden, ob die unter DOS üblichen Carridge-Returns vor dem Senden entfernt werden sollen.
Als Beispiele wurden die Shell-Skripte tgf (terms get file) und tgfb (terms get file binary) in den Lieferumfang aufgenommen, von denen letzteres hier erläutert werden soll:
#!/bin/sh
#################################################
# tgfb - terms get file binary (uuencoded)
#################################################
Da die TTY-Parameter verändert werden, muß dafür gesorgt werden, daß sie beim Abbruch zurückgestellt werden.
# error handler - restore stty settings
_error()
{
if [ X$STTYSET = X ]
then
exit
else
stty $STTYSET
exit
fi
}
trap '_error' 2 3
Anzeige der Aufruf-Syntax
USAGE="\nUSAGE:tgfb [dosfile]\n"
# print options
if [ X$1 = X-h ]
then
echo $USAGE
exit
fi
Als erstes werden die aktuellen TTY-Einstellungen gespeichert
# save the stty settings for restore
STTYSET=`stty -g`
und dann alle Nachbearbeitungen abgeschaltet
stty -echo
stty kill ''
stty erase ''
stty -opost
Die zu empfangende Datei muß vorübergehend gespeichert werden und braucht einen eindeutigen Namen.
TMPFILE=/tmp/terms.fget.u.$$
Falls kein Dateiname angegeben wurde, wird er erfragt
# argument is DOS-file
if [ $# -lt 1 ]
then
SOURCE=Dos-File
# ask for file name
echo "\033GD\c"
cat > $TMPFILE
else
SOURCE=$1
# do not ask for file name
echo "\033GB"$2";\c"
cat > $TMPFILE
fi
RESULT=$?
Jetzt wird das TTY wieder in die normale Einstellung gebracht
# restore stty settings
stty $STTYSET
Die Decodierung sollte nur gestartet werden, wenn alles glatt ging
if [ $RESULT -ne 0 ]
then
echo "tgfb:Error: cat returned "$RESULT
exit $RESULT
else
echo "Starte Decodierung"
fi
# uudecode the file
Eingedeutschte Decodierung erwartet Beginn statt BEGIN
unset LANG
Decodiere und melde Ergebnis
uudecode $TMPFILE
RESULT=$?
if [ $RESULT -ne 0 ]
then
echo "tgfb:Error: uudecode returned "$RESULT
else
echo $SOURCE "empfangen\n"
fi
Die temporäre Datei muß gelöscht werden, sonst ist bald die Platte voll
# remove temporary file
rm $TMPFILE
Terms97801 kann den Inhalt einer Datei auf die Leitung zum Host geben. Hierzu ist der Menüpunkt Bearbeiten..Datei einfügen vorhanden. Eine Datei kann auch durch Drag&Drop aus dem Datei-Manager an den Host gesendet werden.
Läuft z.B. auf dem UNIX-Host ein Editor, so kann eine Text-Datei über Drag&Drop in das Terms97801-Fenster 'gedroppt' werden. Der Editor empfängt dann die Textdatei, als sei sie über die Tastatur eingegeben worden.
Warnung: Die Auswirkungen, wenn eine binäre Datei, z.B. ein Programm, per Drag&Drop in eine UNIX-Anwendung gegeben wird, sind unvorhersehbar. Aus diesem Grund sollte der Drag&Drop-Mechanismus für Anwender/innen ohne technisches Hintergrundwissen gesperrt werden.