my($idlebest,$linebest);
for my $utmp (User::Utmp::getut(),{ "ut_line"=>"psaux" }) {
local $_;
- next if defined($_=$utmp->{"ut_type"}) && $_!=User::Utmp::USER_PROCESS;
+ next if defined($_=$utmp->{"ut_type"}) && $_!=User::Utmp::USER_PROCESS();
next if defined($_=$utmp->{"ut_user"}) && !$valid_users{$_};
my $line="/dev/".$utmp->{"ut_line"};
my $atime=(stat $line)[8];
return $first;
}
+sub is_multipart
+{
+ return 0 if !$Audit->is_mime();
+ return $Audit->is_multipart();
+}
+
sub mimehead
{
my($part)=@_;
my($err,$isspam)=@_;
$err=$? if !defined $err;
- return undef() if !WIFEXITED($?);
- return undef() if WIFSIGNALED($?);
- return undef() if WIFSTOPPED($?);
- return $isspam||1 if WEXITSTATUS($?); # is-spam
- return 0; # not-spam
+ return undef() if !WIFEXITED($?);
+ return undef() if WIFSIGNALED($?);
+ return undef() if WIFSTOPPED($?);
+ return 0 if !WEXITSTATUS($?);
+ return $isspam||1 if 1==WEXITSTATUS($?); # isspam
+ cluck "Possible FIXME or your system is broken (WEXITSTATUS==".WEXITSTATUS($?).")";
+ return 0; # simulate as not spam
}
# return: true (error-message or "1") if is spam
{
my($cmd)=@_;
- $cmd||="$HOME/bin/spamassassin --exit-code";
- # spamassassin has exit code 1 if IS spam, code 0 if NOT spam
+ $cmd||="spamassassin --exit-code 1";
+ # spamassassin has the specified exit code if IS spam, code 0 if NOT spam
+ # See &_spamchildcode for the code 1.
local *CHILD;
local $SIG{"PIPE"}=sub { warn "spamassassin gave me SIGPIPE: broken pipe"; };
# prevent Razor2's: Can't call method "log" on unblessed reference at Razor2/Client/Agent.pm line 212.