#!/bin/sh # rc=0 trap 'exit $rc' 0 trap 'exit 1' 1 2 3 14 15 # ###################################################################### # # # BFT-Reader - [B]inary [F]ile [T]ransfer Automatic Reader # # # # Version 1.0 - Written 01.03.95 by Steffen Beyer # # # # Copyright (C) 1995 by software design & management GmbH & Co. KG # # # ###################################################################### # ###################################################################### # # # Aenderungshistorie: # # # # Versions-Nr. Datum Bearbeiter Aenderung # # ------------- -------- ---------- ------------------------------ # # Version 1.1 02.03.95 sb Bug in trap-Anweisung behoben # # Version 1.2 04.03.95 sb Auf Bourne-Shell umgestellt # # Version 1.3 06.03.95 sb 'pwd' entfernt da unnoetig # # # ###################################################################### # ###################################################################### # # # Temporaere Dateien: # # # # - BFT_READER$$.tmp (Inhalt der empfangenen (verpackten) Mail) # # # # (Diese Datei wird im Verzeichnis '$HOME/bft' angelegt) # # # ###################################################################### # ###################################################################### # # # Benoetigt: # # # # - sh # # - whoami # # - cat # # - cd # # - mkdir # # - rm # # - mv # # - awk # # - uudecode # # - elm # # # ###################################################################### # ################# # # # B E G I N # # # ################# # # Eine wichtige elementare Information: # user=`/usr/ucb/whoami` # # Initialisierung der Flags, Dateinamen und Pfade: # ok="" folder="$HOME/bft" bft_temp="BFT_READER$$.tmp" bft_file="BFT_READER$$.txt" # # Ist das BFT-Verzeichnis vorhanden und benutzbar (vor allem: schreibbar)? # (Ansonsten wird versucht, das Verzeichnis anzulegen) # if [ -d "$folder" -a -r "$folder" -a -w "$folder" -a -x "$folder" ] then ok="true" else if [ -d "$HOME" -a -r "$HOME" -a -w "$HOME" -a -x "$HOME" ] then cd $HOME if [ ! \( -f bft -o -d bft -o -c bft -o -b bft -o -p bft \) ] then mkdir bft if [ -d "$folder" -a -r "$folder" -a -w "$folder" -a -x "$folder" ] then ok="true" fi fi fi fi # # Ist das BFT-Verzeichnis benutzbar (schreibbar)? # if [ "$ok" = "" ] then # # Falls das bft-Verzeichnis nicht benutzbar ist... # elm -s "'$folder' nicht zugaenglich!" $user <<@ Das Tool zum automatischen Entpacken von (i.a. Binaer-) Dateien, die durch 'BFT' (Binary File Transfer) ueber e-mail verschickt wurden, konnte das Verzeichnis '\$HOME/bft' '$folder' entweder nicht finden und nicht anlegen, oder nicht lesen, nicht schreiben oder nicht zum aktuellen Verzeichnis machen! Beseitigen Sie dieses Problem (durch Anlegen dieses Verzeichnisses und/oder Setzen der Zugriffsrechte), um weiterhin BFT-Dateien automatisch entpackt zu bekommen! @ # # ...wird die Mail normal zugestellt: # rc=3 exit fi # # Ansonsten gehe in das BFT-Verzeichnis: # cd $folder # # Im Falle eines Abbruchs oder einer exit-Anweisung (Signal #0) # soll vorher die temporaere Datei geloescht werden: # rc=0 trap 'rm -f $bft_temp ; exit $rc' 0 trap 'rm -f $bft_temp ; exit 2' 1 2 3 14 15 # # Speichere die ueber 'stdin' uebergebene Mail temporaer ab: # cat >$bft_temp # # Stelle den Namen der entpackten Datei vor dem Entpacken fest: # file=`cat $bft_temp | awk '/^begin/{x=$3;exit}END{print x}'` # # Falls die Mail keine 'begin'-Zeile enthaelt, wird sie normal zugestellt: # if [ "$file" = "" ] then rc=4 exit fi # # Existiert bereits eine (nichtleere) Datei dieses Namens? # if [ -f "$file" -a -s "$file" ] then mv $bft_temp $bft_file elm -s "Nicht entpackt: '$file'" $user <<@ Durch BFT wurde die (verpackte) Datei '$file' empfangen. Sie konnte jedoch nicht automatisch entpackt werden, da es im Verzeichnis '$folder' bereits eine Datei mit diesem Namen gibt. Benennen Sie die Datei '$file' um oder loeschen Sie sie, bevor Sie im Verzeichnis '$folder' den Befehl 'uudecode $bft_file' eingeben, um die empfangene Datei zu entpacken. Anschliessend koennen Sie die Datei '$bft_file' loeschen. @ # # Und Bearbeitung beenden: # rc=0 exit fi # # Fuer den Fall dass die Datei '$file' existiert, aber leer ist, loesche sie: # rm -f $file # # Nun koennen wir endlich die Datei entpacken: # uudecode $bft_temp rc=$? # # Alles glatt gegangen? # if [ "$rc" != "0" ] then mv $bft_temp $bft_file elm -s "Fehlerhaft? '$file'" $user <<@ Durch BFT wurde die Datei '$file' empfangen. Beim Entpacken lieferte 'uudecode' jedoch einen Fehler (Returncode $rc)! Die verpackte Datei '$bft_file' und/oder die (vermutlich fehlerhafte) entpackte Datei '$file' ist/sind im Verzeichnis '$folder' zu finden. @ # # Und Bearbeitung beenden: # rc=5 exit fi # # Ansonsten, wenn alles in Ordnung ist: # elm -s "Empfangen: '$file'" $user <<@ Durch BFT wurde die Datei '$file' empfangen. Die entpackte Datei ist im Verzeichnis '$folder' zu finden. @ # # Und fertig! # rc=0 exit # # (Aufgeraeumt wird durch die obige trap-Anweisung!) # ################### # # # T H E E N D # # # ###################