9 my $publish_rejections_patfile= '/dev/null';
10 my $publish_rejections= 0;
14 last unless $ARGV[0] =~ m/^-/;
19 $publish_rejections= 1;
20 $publish_rejections_patfile= $1 if length $1;
22 die "bad option $_ ?";
31 $dir =~ s,/bin$,/log,;
36 sub parse__headerline () {
37 $f{Subject}= $' if m/^Subject:\s*/i; #';
38 $f{MessageID}= $' if m/^Message\-ID:\s*/i; #';
39 $f{From}= $' if m/^From:\s*/i; #';
41 sub parse__stumpsubject () {
42 $f{MessageNum}=$1 if m/^Subject:.*\:\:\w+\/(\d+)$/i;
53 sub parse_submission () {
59 print STDERR "$hadng $had2|$_|\n";
60 $hadng++ if m/^Newsgroups:/i;
67 last unless m/^\S+\:|^\s|^$|^From /;
71 $f{Event}= $had2 ? 'receive newstyle' : 'receive';
74 $f{Subject}= '[suppressed]';
75 $f{Event}= 'receive junk';
79 sub parse_stump2webstump () {
82 parse__stumpsubject() unless exists $f{'MessageNum'};
93 sub parse_webstump2stump () {
96 parse__stumpsubject();
102 if (m/^\#( \w+.*)$/) {
105 next unless m/^reject|^approve|^preapprove/;
106 $f{Event}= $_.$cathow;
111 sub parse_mailout () {
114 $keepheader= 1 unless m/^[ \t]/;
119 $keepheader= 'mangle'
128 $line =~ s/\@.{0,2}/ at ../g if $keepheader eq 'mangle';
132 if (m/^X-Webstump-Event:\s*(?:\[(\d+)\])?\s*/i) { #';
133 $f{Event}= "notify $'";
134 $f{MessageNum}= $1 if defined $1;
141 next unless s/^\> //;
149 while (<STDIN>) { $message .= $_; }
150 STDIN->error and die $!;
154 sub want_publish_rejection_kind ($) {
156 return 1 if $publish_rejections_patfile eq '';
157 if (!open PF, '<', $publish_rejections_patfile) {
158 return 1 if $!==&ENOENT;
159 die "$publish_rejections_patfile: $!";
167 s/[^0-9a-zA-Z*?]/\\$&/g;
170 return $yn if $kind =~ m/^$_$/;
176 if ($publish_rejections &&
177 $f{Event} =~ m/^notify reject (\S+)/ &&
178 want_publish_rejection_kind($1))
180 $f{CopyRef}= $f{MessageNum} || $f{MessageID};
181 $f{CopyRef} =~ s/\W/ sprintf '-%02x', ord($&) /ge;
182 open I, ">$dir/public/nr-$f{CopyRef}.txt" or die $!;
183 print I $message or die $!;
187 open L, ">>$dir/event.log" or die $!;
191 $v= '' unless defined $v;
195 } qw(Now MessageNum MessageID From Subject Event CopyRef);
197 print L join("\t",@s)."\n" or die $!;