/*

   Externes KMS-Kommando "ARCHIV"

   Syntax : ARCHIV [<name>] [!]

   Wirkung: Aktuelle Nachricht extern abspeichern.
            Entweder unter dem angegebenem AmigaDOS-Dateinamen "name" oder
            der Bezeichnung der Gruppe, aus dem die Nachricht stammt, im
            aktuellen Verzeichnis.
            Wenn "!" angegeben ist, wird überschrieben, sonst angehängt.

*/

/* Dies ist das Verzeichnis, in dem die Nachrichten abgelegt werden. */
/* Bitte an eigene Bedürfnisse anpassen!                             */

ARCDIR = "ARC:"

/*********************************************************************/

/*** Startup ***/

OPTIONS RESULTS

RC = 0

SIGNAL ON BREAK_C
SIGNAL ON BREAK_D
SIGNAL ON BREAK_E
SIGNAL ON BREAK_F
SIGNAL ON HALT
SIGNAL ON IOERR
SIGNAL ON SYNTAX

CALL PRAGMA('W', 'Null')

/*** Main ***/

OPTIONS FAILAT 25

PARSE ARG dateiname overwrite

GetMsg ALL mymsg
IF RC > 0 THEN
   SAY "Keine Nachricht gelesen!"
ELSE
   DO
   IF dateiname = "" THEN dateiname = ARCDIR||mymsg.Group
   IF dateiname = ARCDIR THEN dateiname = ARCDIR||"NETMAIL"

   SAY "Speichere Nachricht in Datei "||STRIP(dateiname)||"..."

   IF overwrite = "!" THEN
      DO
      IF OPEN(ausdat, STRIP(dateiname), 'W') = 0 THEN
         DO
         SAY "Fehler beim öffnen der Datei!"
         EXIT
         END
      END
   ELSE IF OPEN(ausdat, STRIP(dateiname), 'A') = 0 THEN
      IF OPEN(ausdat, STRIP(dateiname), 'W') = 0 THEN
         DO
         SAY "Fehler beim öffnen der Datei!"
         EXIT
         END

   CALL WRITECH(ausdat, "From: ")
   CALL WRITECH(ausdat, mymsg.FromName)

   CALL WRITECH(ausdat, " <")
   CALL WRITECH(ausdat, mymsg.FromAddr)
   CALL WRITELN(ausdat, ">")

   CALL WRITECH(ausdat, "To  : ")
   CALL WRITECH(ausdat, mymsg.ToName)

   CALL WRITECH(ausdat, " <")
   CALL WRITECH(ausdat, mymsg.ToAddr)
   CALL WRITELN(ausdat, ">")

   CALL WRITECH(ausdat, "Date: ")
   CALL WRITELN(ausdat, mymsg.CreationDate)

   CALL WRITECH(ausdat, "Subj: ")
   CALL WRITELN(ausdat, mymsg.Subject)

   CALL WRITECH(ausdat, "M-Id: ")
   CALL WRITELN(ausdat, mymsg.MsgID)

   CALL WRITECH(ausdat, "R-Id: ")
   CALL WRITELN(ausdat, mymsg.ReferID)

   CALL WRITECH(ausdat, "Org.: ")
   CALL WRITELN(ausdat, mymsg.Organization)

   CALL WRITECH(ausdat, "Dist: ")
   CALL WRITELN(ausdat, mymsg.Distribution)

   CALL WRITELN(ausdat, "Comm:");

   CALL WRITELN(ausdat, mymsg.Comments)

   CALL WRITELN(ausdat, "");

   CALL WRITELN(ausdat, mymsg.MsgText)

   CALL CLOSE(ausdat)

   SAY "Ok."

   END

/*** Final cleanup ***/

EXIT

BREAK_C:
BREAK_D:
BREAK_E:
BREAK_F:
   SAY "*** Break!"
   EXIT
ERROR:
   SAY "KMS-Err:" KMS.LASTERROR
   EXIT
HALT:
IOERR:
SYNTAX:
   IF RC ~= 0 THEN SAY "Syntax Error:" RC ERRORTEXT(RC) "Line" SIGL
   EXIT

