Subj : writepkt.pl part 1 of 2 To : All From : tony summerfelt Date : Wed Aug 28 2002 03:58 pm $addseenbys="SEEN-BY: 379/1\n"; $echo="z1c"; $TempDir='r:/pkt'; $areaDir = "r:/pkt"; $Debug = 0; $EOL = ($Debug) ? "\n" : "\r"; $OrgNode = 100; $DestNode = 139; $Year,$Mon,$Day,$Hour,$Min,$Sec; $Baud = 0; $PktVer = 2; $OrgNet = 249; $DestNet = 249; $ProdCode = 0x100; $PassWord = "test"; $OrgZone = 1; $DestZone = 1; $AuxNet = $OrgNet; $CapWord = 0x100; $ProdCode2 = 0; $CapWord2 = 1; $OrgPoint = 0; $DestPoint = 0; $ProdSpec = 0; $Attrib = 0; $Cost = 0; $To = ""; $From = ""; $Subj = ""; $Area = ""; $seenby=""; $nmsgs = 0; # this is where a loop would go if more than one feed opendir(DIR, $areaDir); @news = sort grep(/\.\d+/i, readdir(DIR)); closedir(DIR); ($Sec, $Min, $Hour, $Day, $Mon, $Year) = localtime(); $Year += 1900; $PktFile = sprintf("%s/%02d%02d%02d%02d.PKT",$TempDir,$Day,$Hour,$Min,$Sec); open(MSG,">$PktFile") || die "can't open $PktFile -- $!"; binmode(MSG); &pktheader() unless ($Debug); chdir($areaDir); foreach $msg (sort @news) { open(FILE,$msg) || die" $!\n"; print "$msg\n"; while() { #$_ =~ tr/\200-\377/\0-\177/; # mask hi-bit characters #$_ =~ tr/\0-\037/\040-\100/; # mask control characters next if (-s $msg) >32000; $From = $To = ""; &readheader(); $From="unknown" if $From eq ""; $To="unknown" if $To eq ""; @lines = ; grep(s/\n/\r/,@lines) unless ($Debug); shift(@lines) while ($lines[0] eq "\n"); next if $#lines == -1; ++$nmsgs; &msgheader() unless($Debug); print MSG "\0$To\0"; print MSG "$From\0"; print MSG "$Subj\0"; print MSG "AREA:$area$EOL"; print MSG @lines; print MSG $origin; print MSG $seenby; print MSG $path; @lines = (); print MSG "\0"; } $seenby=""; } print MSG "\0\0"; close(MSG); close(FILE); print "\n$nmsgs processed\n"; chdir("r:/pkt"); sub pktheader { local($buf); $buf = pack("SSSSSSSSSSSSSa8SSSSSSSSSSL", $OrgNode,$DestNode, $Year,$Mon,$Day,$Hour,$Min,$Sec, $Baud,$PktVer, $OrgNet,$DestNet, $ProdCode,$PassWord, $OrgZone,$DestZone,$AuxNet, $CapWord,$ProdCode2,$CapWord2, $OrgZone,$DestZone, $OrgPoint,$DestPoint,$ProdSpec); syswrite(MSG,$buf,58); } sub msgheader { local($buf); local($DateTime) = $date; $buf = pack("SSSSSSSa20", $PktVer,$OrgNode,$DestNode,$OrgNet, $DestNet,$Attrib,$Cost,$DateTime); print MSG $buf; } --- GoldED/SuSE 3.0.1-os1+ * Origin: ...the vented spleen - kingston, on (613) 544-9332 (1:249/139) .