#!hs2 #!debug 0 var ( $basepath, $filename, $NG, $flist, $alist ) var ( $r, $f, $line ) $NG = "hamster.liste" # hier den Namen der NG für die Mailingliste eintragen $filename = "OE-6017.msg" # hier den Namen der Archiv-Datei einsetzen $basepath = HamPath + "KorrNews\Scripte\" # hier den Pfad eintragen, in dem die Dateien vorliegen $filename = $basepath + $filename if (! FileExists($filename) ) # Eingabe-Datei überprüfen error ("Eingabedatei"+$filename+"existiert nicht!") quit(1) # gibt es gar nicht endif if (! DirExists(Hampath+"Groups\"+$NG) ) # existiert Gruppe im Hamster error ("Der Hamster führt "+$NG+" gar nicht!") quit(2) endif $flist = ListAlloc( false, true) # Speicher erstellen listclear ( $flist ) # löschen, und $f = ListLoad( $flist, $filename ) # aus Datei laden if ( $f ) # fehlgeschlagen ? quit (3) endif $r = OE_Convert( $flist ) print ($r) insertNG ( $flist ) $f = ListSave( $flist, $basepath+"Ham$$.mbx") quit ############################################################################# { prüfen, ob Zeile eine From-Zeile des MBox-Formats ist } { Muster: "From -@- Sat Jan 1 12:34:56 2000"} Sub ParseFrom( $From ) { Sequentielle Prüfung der Syntax } trace (0) var ( $p1, $ch ) if (Pos( "From ", $From )<>1) { Muß mit 'From ' anfangen } return(0) endif if (copy($From, 6,1) == " ") { hier kein Space mehr } return(0) endif $p1 = Pos(" ", $From, 6) { Noch ein Wort (EMail) } debug (3, copy($From, $p1)) if (! $p1) return(0) endif if (copy($From, $p1+1,1) == " ") { hier kein Space mehr } return(0) endif $p1 = Pos(" ", $From, $p1+1) { Noch ein Wort (WTag) } debug (3, copy($From, $p1)) if (! $p1) return(0) endif if (copy($From, $p1+1,1) == " ") { hier kein Space mehr } return(0) endif $p1 = Pos(" ", $From, $p1+1) { Noch ein Wort (Monat) } debug (3, copy($From, $p1)) if (! $p1) return(0) endif if (copy($From, $p1+1,1) == " ") { hier kein Space mehr } return(0) endif $p1 = Pos(" ", $From, $p1+1) { Noch ein Wort (Datum) } debug (3, copy($From, $p1)) if (! $p1) return(0) endif if (copy($From, $p1+1,1) == " ") { hier kein Space mehr } return(0) endif $p1 = Pos(" ", $From, $p1+1) { Noch ein Wort (Uhrzeit) } debug (3, copy($From, $p1)) if (! $p1) return(0) endif if (copy($From, $p1+1,1) == " ") { hier kein Space mehr } return(0) endif $p1 = Pos(" ", $From, $p1+1) { Noch ein Wort (Jahr) } debug (3, copy($From, $p1)) if ($p1) return(0) endif return(1) trace (0) endsub {ParseFrom( $From )} #---------------------------------------------------------------------------- # Liste erweitern um NG-Bezeichner sub insertNG( $nlist ) var ( $lindex, $lline ) $lindex = 0 while ( $lindex < listcount($nlist)) $lline = ListGet( $nlist, $lindex ) if (ParseFrom($lline)) ListInsert ($nlist, $lindex+1, "Newsgroups: "+$NG) ListInsert ($nlist, $lindex+2, "FollowUp-To: poster") endif inc ($lindex) endwhile endsub {insertNG($nlist)} #---------------------------------------------------------------------------- # OE-Mime to MBox Konvertierung # erst einmal prüfen, ob Umsetzen notwendig sub OE_Check( $olist, *$boundary, *$sindex ) var ( $cline, $OEMail, $p ) trace(0) $boundary = "" $cline = ListGet($olist, 0) # erste Zeile prüfen debug (3, $cline) if (pos("Return-Path: <", $cline) != 1) # keine Mail? return (false) # dann schon falsch endif $sindex = 1 while ( $sindex $lb) # Ende-Markierung? Debug (3, ">",$lline,"< ", $lindex) repeat # JA! Debug (3, Listcount($olist) ) ListDelete( $olist, $lindex ) # Rest löschen until ( $lindex >= ListCount($olist) ) return # Fertig endif while ($lline != "") $lline = ListGet( $olist, $lindex) # Zeile lesen ListDelete( $olist, $lindex ) # und löschen endwhile # MBox -Zeile einfügen ListInsert ( $olist, $lindex, "From -@- Sat Jan 1 12:34:56 2000" ) if ($lindex) ListInsert ( $olist, $lindex, "" ) endif endif inc ( $lindex ) endwhile endsub