sub audit
{
- {
- local $store_ignorenewmail=1; # no reason now, just a paranoia
- store "=input","btw";
- }
-
# TODO: <short-m@> storage?
# never spawn new mail if FROM_MAILER
return @AuditStored!=$did_last;
}
+sub write_message
+{
+my($folder)=@_;
+
+ local $_;
+ local *F;
+ open F,">>$folder" or do { warn "Append \"$folder\": $!"; return 0; };
+ do { warn "Lock \"$folder\": $!"; return 0; } if $_=Mail::Audit::audit_get_lock(\*F,$folder);
+ seek F,0,IO::Handle::SEEK_END or warn "Seek-end \"$folder\" (ignoring): $!";
+ # No 'need_from' here although it is a bit risky to rely on our network peer
+ print F $Message,"\n" or warn "Write to \"$folder\": $!";
+ close F or warn "Close \"$folder\"";
+ return 1; # some attempt was made, FIXME: proper error detection
+}
+
sub process
{
my($message)=@_;
);
local @AuditStored=();
do { smssend $opt_smstest; return; } if $opt_smstest;
+ write_message("$Mail/input");
audit();
warn 'Corrupted $_, repaired' if defined($save_)!=defined($_) || (defined($_) && $save_ ne $_);
}