use strict;
use warnings;
-require 'sysexits.ph';
-
use Data::Dumper;
use Errno;
use Fcntl qw(O_WRONLY O_EXCL O_CREAT);
our $opt_s; # ;; # stupid cperl-mode
if (not getopts('dfhnps')) {
- exit(&EX_USAGE);
+ exit(2);
}
if ($opt_d) {
$dumpfilters = 1;
} elsif ($opt_h) {
print("Sorry bub, no help.\n");
- exit(&EX_OK);
+ exit;
} elsif ($opt_n) {
$run = 0;
}
###############################################################################
# Utility procedures
-sub _errprint {
- printf(STDERR '%s:%s', __FILE__, __LINE__);
-
- if (@_) {
- print(STDERR ': ');
- foreach (@_) {
- print(STDERR);
- }
- }
-}
-
-sub err {
- my $ex = shift;
-
- _errprint(@_);
- print(STDERR ": $!\n");
-
- exit($ex);
-}
-
-sub errx {
- my $ex = shift;
-
- _errprint(@_);
- print(STDERR "\n");
-
- exit($ex);
-}
-
sub mkfolder {
my $mhfolder = shift;
my $folder;
if (-d $target or mkdir($target)) {
next;
} else {
- err(&EX_OSERR,
- "Failed to create +$mhfolder ($component)");
+ die("Failed to create +$mhfolder ($component)");
}
}
}
my @result;
if (not opendir(DIR, $dir)) {
- err(&EX_OSERR, "Failed opendir($dir)");
+ die("Failed opendir($dir)");
}
# Initialize $! to 0 (success) because stupid stupid Perl provides
} readdir(DIR);
if ($! != 0) {
- err(&EX_OSERR, "Failed readdir($dir)");
+ die("Failed readdir($dir)");
}
if (scalar(@result) == 0) {
$dir = "$mh/$mhfolder";
if (not opendir(DIR, $dir)) {
- err(&EX_OSERR, "Failed opendir($dir)");
+ die("Failed opendir($dir)");
}
$! = 0;
@list = readdir(DIR);
if ($! != 0) {
- err(&EX_OSERR, "Failed readdir($dir)");
+ die("Failed readdir($dir)");
}
closedir(DIR);
# This algorithm is different from the maildir one; let's make
# 10 tries instead of 3.
if ($try == 9) {
- errx(&EX_TEMPFAIL, "Attempted filename $mhmsg exists.");
+ die("Attempted filename $mhmsg exists.");
}
# This algorithm is different; i don't think we need to sleep.
if ($run) {
if (not rename($msg, $mhmsg)) {
- err(&EX_OSERR, "Failed rename($msg, $mhmsg)");
+ die("Failed rename($msg, $mhmsg)");
}
# Mark each message as soon as we store it and bomb if that
$status = system('mark', "+$mhfolder", "$msgnum", '-sequence',
'unseen', '-add');
if (not WIFEXITED($status)) {
- err(&EX_OSERR, "Failed to run mark");
+ die("Failed to run mark");
} elsif (WEXITSTATUS($status) != 0) {
- errx(&EX_SOFTWARE, "Failed to mark message unseen.");
+ die("Failed to mark message unseen.");
}
}
}
if ($dumpfilters) {
$Data::Dumper::Indent = 1;
print(Dumper(\@FILTERS));
- exit(&EX_OK);
+ exit;
}
@msglist = getfiles("$MAILDIR/new");