X-Git-Url: http://git.jankratochvil.net/?p=PerlMail.git;a=blobdiff_plain;f=perlmail-accept;h=aca0ad97c2d5f55ef5eade6b73ae5af24fb207e8;hp=09bdc0364bee45dee80384554f8628f34767065b;hb=991fa5bfbdc7a0aecf47d1d13be2ce97547c7f94;hpb=7538e1d7ec07518967c8c2951852fa84c30e7095 diff --git a/perlmail-accept b/perlmail-accept index 09bdc03..aca0ad9 100755 --- a/perlmail-accept +++ b/perlmail-accept @@ -555,6 +555,22 @@ my($funcref,@funcargs)=@_; 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 or warn "Write to \"$folder\": $!"; + do { print F "\n"; warn "Missing trailing newline, fixed"; } if $Message!~/\n$/s; + close F or warn "Close \"$folder\""; + return 1; # some attempt was made, FIXME: proper error detection +} + sub process { my($message)=@_; @@ -568,6 +584,7 @@ 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 $_); }