]> diplodocus.org Git - minc/log
minc
22 years agoSwitch from Getopt::Std to Getopt::Long and Pod::Usage. This is much
epg [Wed, 14 Apr 2004 18:16:22 +0000 (18:16 +0000)]
Switch from Getopt::Std to Getopt::Long and Pod::Usage.  This is much
better even though we don't use long options.

22 years agoImprove NAME and SYNOPSIS pod.
epg [Wed, 14 Apr 2004 18:05:57 +0000 (18:05 +0000)]
Improve NAME and SYNOPSIS pod.

22 years ago(AUTHORS): Update.
epg [Sun, 11 Apr 2004 21:31:08 +0000 (21:31 +0000)]
(AUTHORS): Update.

22 years agoUpdate svn:executable to modern Subversion convention.
epg [Sun, 11 Apr 2004 21:25:46 +0000 (21:25 +0000)]
Update svn:executable to modern Subversion convention.

22 years agoHere you go.
epg [Sun, 11 Apr 2004 21:25:23 +0000 (21:25 +0000)]
Here you go.

22 years agoThis has no information not already in the POD, and minc is now ready
epg [Sun, 11 Apr 2004 21:19:58 +0000 (21:19 +0000)]
This has no information not already in the POD, and minc is now ready
to run out of the box.  Bye bye README.

22 years agoDrop Log::Dispatch (finally) and simplify logging.
epg [Sun, 11 Apr 2004 21:16:49 +0000 (21:16 +0000)]
Drop Log::Dispatch (finally) and simplify logging.

Kill global constants LOG_DEBUGLEVEL, SCREEN_DEBUGLEVEL, DEBUGCHAR,
INFOCHAR, INCOMINGCHAR, SAVECHAR, WARNCHAR, ERRORCHAR.

Kill global $logger and functions logsave, loginfo, logdebug, logwarn,
logerr.

(mylog): Kill first two parameters; all @_ are now catenated for the
log message.  Simply open $logfile and write the timestamp and
message, no more.

(logheader): Renamed from logincoming.  Adapt to new mylog.

(log_headers): s/logincoming/logheader/

(store_message): Call mylog instead of logsave.

22 years agoTwo optimizations:
epg [Sat, 10 Apr 2004 04:00:17 +0000 (04:00 +0000)]
Two optimizations:

Don't load .mincspam until it is actually needed, in filter_mail.

Print the first status message (the number of messages to process)
as soon as we can, in getfiles.

22 years agoFile::Basename hasn't been used since we stopped using `mhpath new`.
epg [Sat, 10 Apr 2004 03:51:53 +0000 (03:51 +0000)]
File::Basename hasn't been used since we stopped using `mhpath new`.

22 years ago(filter_mail): Only calculate $msgcount len once.
epg [Sat, 3 Apr 2004 23:36:19 +0000 (23:36 +0000)]
(filter_mail): Only calculate $msgcount len once.

22 years agoKilled the sysexits stuff a while back.
epg [Sat, 3 Apr 2004 06:56:49 +0000 (06:56 +0000)]
Killed the sysexits stuff a while back.

22 years agoDon't break when -m is not specified.
epg [Sat, 3 Apr 2004 06:37:39 +0000 (06:37 +0000)]
Don't break when -m is not specified.

22 years agowhitespace police
epg [Sat, 3 Apr 2004 06:35:35 +0000 (06:35 +0000)]
whitespace police

22 years agoAdd new -m option to stop processing after a certain number of messages.
epg [Sat, 3 Apr 2004 06:30:55 +0000 (06:30 +0000)]
Add new -m option to stop processing after a certain number of messages.

22 years agoSwitch to %opts style getopts.
epg [Sat, 3 Apr 2004 06:22:45 +0000 (06:22 +0000)]
Switch to %opts style getopts.

22 years agoNote licensing terms (same as Perl itself).
epg [Sat, 3 Apr 2004 06:04:11 +0000 (06:04 +0000)]
Note licensing terms (same as Perl itself).

22 years agoWhoops, SYNOPSIS was out of sync again.
epg [Sat, 3 Apr 2004 06:03:32 +0000 (06:03 +0000)]
Whoops, SYNOPSIS was out of sync again.

22 years agoDrop -h and use Getopt::Std automatic --help. New $VERSION global.
epg [Sat, 3 Apr 2004 06:03:07 +0000 (06:03 +0000)]
Drop -h and use Getopt::Std automatic --help.  New $VERSION global.

22 years agoMove STDOUT auto-flushing to filter_mail where it belongs.
epg [Sat, 3 Apr 2004 05:45:43 +0000 (05:45 +0000)]
Move STDOUT auto-flushing to filter_mail where it belongs.

22 years agoWhoops, remove -f and -s options from getopts call.
epg [Sat, 3 Apr 2004 05:35:49 +0000 (05:35 +0000)]
Whoops, remove -f and -s options from getopts call.

22 years agoDrop -f (filter-only) and -s (spam-only) options.
epg [Sat, 3 Apr 2004 05:34:20 +0000 (05:34 +0000)]
Drop -f (filter-only) and -s (spam-only) options.

22 years agoEr, put in the rest of the @SPAM changes. Also make store_message
epg [Sat, 3 Apr 2004 05:12:44 +0000 (05:12 +0000)]
Er, put in the rest of the @SPAM changes.  Also make store_message
return the new message number.

22 years agoCollapse the spam-checking and filtering passes into a single pass and
epg [Sat, 3 Apr 2004 05:11:30 +0000 (05:11 +0000)]
Collapse the spam-checking and filtering passes into a single pass and
adapt the diagnostic output to make sense in the new single pass.

(store_message): Don't print anything.

(preprocess): Move the message sorting to MAIN and spam processing to
filter_mail.

(filter_mail): Do spam filtering in this loop and do all status
printing here.

(%FOLDERS): This should not have been global; move it into
filter_mail.

(MAIN): Sort messages before calling filter_mail.  If any SPAM
messages were detected, scan(1) them.

22 years agoDrop sysexits.ph, _errprint, err, and errx. Use die in place of err
epg [Fri, 12 Mar 2004 05:18:41 +0000 (05:18 +0000)]
Drop sysexits.ph, _errprint, err, and errx.  Use die in place of err
and errx, and exit(2) for invalid options.

22 years agodoc fixes
epg [Fri, 12 Mar 2004 05:11:07 +0000 (05:11 +0000)]
doc fixes

22 years ago(preprocess): Return the @result list sorted by mtime.
epg [Fri, 12 Mar 2004 03:44:18 +0000 (03:44 +0000)]
(preprocess): Return the @result list sorted by mtime.

22 years agoRename kill_spam to preprocess in preparation for bloat. Clean up a
epg [Thu, 11 Mar 2004 23:12:20 +0000 (23:12 +0000)]
Rename kill_spam to preprocess in preparation for bloat.  Clean up a
bit.

22 years ago(getfiles): If no messages are found, silently exit early.
epg [Sat, 13 Dec 2003 05:25:20 +0000 (05:25 +0000)]
(getfiles): If no messages are found, silently exit early.

22 years agoNew option -p. Using this option causes minc to print the filename
epg [Sat, 26 Apr 2003 06:48:34 +0000 (06:48 +0000)]
New option -p.  Using this option causes minc to print the filename
for each message before checking it for spam, which is useful for
debugging the spam filter.

23 years agouse FileHandle and set autoflush on STDOUT since the new spam checking
epg [Sun, 6 Apr 2003 02:23:24 +0000 (02:23 +0000)]
use FileHandle and set autoflush on STDOUT since the new spam checking
is so fast the status reporting is now funky without autoflushing.

Document spam_check, spam_start_hook, spam_stop_hook.

My trick for defining is_spam() was broken and i never noticed because
i wasn't doing use strict in .mincspam; fix it with eval and also add
spam_start_hook and spam_stop_hook.

(kill_spam): Now call spam_start_hook(), save the list it returns, and
pass it to each spam_check() call (formerly known as is_spam()).  Also
pass it to spam_stop_hook() after processing all spam.  This allows
the spam processor to maintain state, and do other things like talk to
a co-process.

23 years ago(store_message): Don't log the SPAM folder; since we hadn't logged
epg [Thu, 13 Mar 2003 01:25:49 +0000 (01:25 +0000)]
(store_message): Don't log the SPAM folder; since we hadn't logged
any headers in the spam case, it just fills the log with useless
crap.

23 years ago(find_mh_folder): DOH! The // match operation must be done
epg [Tue, 11 Mar 2003 01:13:18 +0000 (01:13 +0000)]
(find_mh_folder): DOH!  The // match operation must be done
case-insensitive.  I think it used to be and i accidentally changed it
when i changed the substitution operation to matching.

23 years agomdeliver/current/mdeliver.c:
epg [Sun, 19 Jan 2003 03:11:14 +0000 (03:11 +0000)]
mdeliver/current/mdeliver.c:
    (deliver): In rev 1582 i changed this from using rename(2) to
    the recommended link(2) + unlink(2).  But in minc i was using
    open(2) + rename(2) instead, which is just as safe as link +
    unlink but with one advantage.  So switch to that model.

minc/current/minc:
    (store_message): Document the open + rename procedure and
    explain why it is used instead of link + unlink.

23 years agoNow that the new stuff has proved solid, switch back to reading
epg [Thu, 2 Jan 2003 04:21:50 +0000 (04:21 +0000)]
Now that the new stuff has proved solid, switch back to reading
.mincfilter instead of .mincfilter2.

23 years ago(logincoming): Move part of log_headers here.
epg [Mon, 30 Dec 2002 02:25:03 +0000 (02:25 +0000)]
(logincoming): Move part of log_headers here.

(log_headers): Pass the array of contents for each header to
logincoming rather than indexing here.  logincoming now checks for an
empty array (i.e. message missing this header) before trying to index
into it (it used to bomb).

23 years agoDOH! Perl has 'next' not 'continue'.
epg [Mon, 30 Dec 2002 01:57:10 +0000 (01:57 +0000)]
DOH!  Perl has 'next' not 'continue'.

23 years agoAdd a magic header filters can use to match against any To or
epg [Mon, 30 Dec 2002 01:51:55 +0000 (01:51 +0000)]
Add a magic header filters can use to match against any To or
To-related header, based on procmail's '^TO' special regex.

23 years ago(store_message): Fix usage of the system function so that the shell
epg [Sun, 29 Dec 2002 03:53:00 +0000 (03:53 +0000)]
(store_message): Fix usage of the system function so that the shell
won't be invoked.

23 years agoAdd Emacs and vi local variables at the bottom, (attempting) to
epg [Sun, 29 Dec 2002 00:21:49 +0000 (00:21 +0000)]
Add Emacs and vi local variables at the bottom, (attempting) to
enforce four-space indents with no tabs.

23 years ago(find_mh_folder): If get_headers fails, return 'malformed' instead of
epg [Sun, 29 Dec 2002 00:13:07 +0000 (00:13 +0000)]
(find_mh_folder): If get_headers fails, return 'malformed' instead of
'inbox' so that malformed messages are quarantined for inspection.

23 years agoDoc fixes.
epg [Sun, 29 Dec 2002 00:05:34 +0000 (00:05 +0000)]
Doc fixes.

23 years agoImplement Doug's two killer features: 1) store all occurrences of a
epg [Sat, 28 Dec 2002 22:28:31 +0000 (22:28 +0000)]
Implement Doug's two killer features: 1) store all occurrences of a
header, not just the last, 2) use pure ordered structure for the
filters, allowing inter-mixing of filters (i.e. you can have some
List-Id filters followed by some X-Mailing-List filters followed by
more List-Id filters and they will all be matched in the correct
order).

Earlier i was using Tie::IxHash to make the filters hash ordered, but
i wasn't using it for the internal hashes so it was incomplete.  I
didn't need hashes in teh first place; switching to nested arrays for
the filters structure solves this problem as well as Doug's killer
feature and as a bonus removes the Tie::IxHash dependency.

README:
    Remove Tie::IxHash from list of non-standard modules.

minc:
    Drop Tie::IxHash.

    FILTERS and %headers become more complex structures (code and
    documentation changes).

    For now, use .mincfilter2 instead of .mincfilter (will change
    back as soon as the new code has had a good shake-down).

    (log_headers): Adapt for new %headers structure and add comment
    cross-referencing the get_headers comment explaining the
    structure.

    (get_headers): Document the %headers structure.  Build and return
    the new structure, preserving multiple occurrences of the same
    header.

    (find_mh_folder): Use the new @FILTERS structure.

    (MAIN): Use @FILTERS instead of %FILTERS.

    In the closing pod section, fix the EXAMPLES section and add a
    section documenting @FILTERS.

23 years agoIdiot. Put error messages to STDERR where they belong.
epg [Sat, 28 Dec 2002 01:26:49 +0000 (01:26 +0000)]
Idiot.  Put error messages to STDERR where they belong.

23 years agoSet MHCONTEXT environment variable to allow (a little) more
epg [Sat, 28 Dec 2002 00:42:57 +0000 (00:42 +0000)]
Set MHCONTEXT environment variable to allow (a little) more
concurrency.  Document the new file.

23 years agoApparently pod2html doesn't grok E<sol>. Suck. Use E<047> instead.
epg [Sun, 13 Oct 2002 19:05:50 +0000 (19:05 +0000)]
Apparently pod2html doesn't grok E<sol>.  Suck.  Use E<047> instead.

23 years agoFix long-standing bug where filters were applied out of order because
epg [Sun, 13 Oct 2002 18:58:03 +0000 (18:58 +0000)]
Fix long-standing bug where filters were applied out of order because
hashes are not guaranteed to stay in the order they were defined.  Use
Tie::IxHash to make %FILTERS an ordered hash.

README:
    Note that Tie::IxHash is now required.

minc:
    use Tie::IxHash;

    (%FILTERS): Make this an ordered hash with Tie::IxHash.

23 years agoLink to example .mincspam file.
epg [Sun, 13 Oct 2002 18:21:56 +0000 (18:21 +0000)]
Link to example .mincspam file.

23 years agoRemove references to razor in documentation.
epg [Sun, 13 Oct 2002 16:58:19 +0000 (16:58 +0000)]
Remove references to razor in documentation.

23 years ago($run): Declare with our instead of my so it will be available to the
epg [Sun, 13 Oct 2002 16:49:43 +0000 (16:49 +0000)]
($run): Declare with our instead of my so it will be available to the
user-defined is_spam function.  Document this.

23 years ago(store_message): Whoops, document that the for loop is a modified
epg [Sun, 13 Oct 2002 16:32:26 +0000 (16:32 +0000)]
(store_message): Whoops, document that the for loop is a modified
version of the maildir delivery algorithm; now some of these other
comments make more sense.

23 years agoFactor out the razor-check spam stuff. Instead, read ~/.mincspam if
epg [Sun, 13 Oct 2002 16:22:00 +0000 (16:22 +0000)]
Factor out the razor-check spam stuff.  Instead, read ~/.mincspam if
it exists, otherwise define a dummy is_spam function.  Document this.

23 years ago(get_headers): Don't allow input from the message to break the
epg [Tue, 10 Sep 2002 10:05:15 +0000 (10:05 +0000)]
(get_headers): Don't allow input from the message to break the
regex used to split headers.

Today i encountered a message with the following ilnes:

X-scanner: scanned by Inflex 1.0.12.3 -
(http: //www.gsm.com.my)

What we have is a broken pile of shit from gsm.com (unsurprisingly,
as i visit the URL they provide, i see that one of their frame
components spits out an HTML page with Content-Type: text/plain)
that doesn't know how to fold headers.  At some point, some "helpful"
mail software (perhaps even my very own postfix installation; who
knows?) mangled what appeared to it to be an '(http' header; it
added a space after the colon.

Whether the mangling had happened or not, i'm sure minc would have
been confused.  Doug Porter provided the fix (using perl's \Q and
\E in the split() regex to disable pattern meta-chars in $fieldname).

23 years agoEr, whoops, tell getopt about the -f option.
epg [Sun, 8 Sep 2002 02:21:28 +0000 (02:21 +0000)]
Er, whoops, tell getopt about the -f option.

23 years ago(store_message): Splitting the two mark failure cases, i accidentally
epg [Mon, 2 Sep 2002 01:20:16 +0000 (01:20 +0000)]
(store_message): Splitting the two mark failure cases, i accidentally
reversed the sense of a test on one.

23 years agoI was using EX_TEMPFAIL for nearly every failure case, as if this were
epg [Mon, 2 Sep 2002 01:10:13 +0000 (01:10 +0000)]
I was using EX_TEMPFAIL for nearly every failure case, as if this were
a delivery program.  Comb the file for each incidence and use a better
exit code if appropriate.

(store_message): Handle not being able to run the mark command and
being able to run it but having it fail separately.

23 years agoFix pod buglet.
epg [Sun, 1 Sep 2002 06:08:16 +0000 (06:08 +0000)]
Fix pod buglet.

23 years agoAdd new -f option, for only running filters.
epg [Sun, 1 Sep 2002 06:03:25 +0000 (06:03 +0000)]
Add new -f option, for only running filters.

23 years ago(store_message): Explain why marking is done for each message individually.
epg [Sun, 1 Sep 2002 05:50:06 +0000 (05:50 +0000)]
(store_message): Explain why marking is done for each message individually.

23 years agoRevert rev 243.
epg [Sun, 1 Sep 2002 05:32:11 +0000 (05:32 +0000)]
Revert rev 243.

23 years ago(is_spam): Move $line and $message to be declared at the top of the
epg [Sun, 1 Sep 2002 00:00:54 +0000 (00:00 +0000)]
(is_spam): Move $line and $message to be declared at the top of the
function.

23 years ago(%FOLDERS): Remove this global. Whether to print the folder's name is
epg [Sat, 31 Aug 2002 23:58:52 +0000 (23:58 +0000)]
(%FOLDERS): Remove this global.  Whether to print the folder's name is
now being subsumed into the marking unseen messages functionality
moving into filter_mail.

(store_message): Don't run mark messages unseen, and start returning
the stored message number for callers to use.

(filter_mail): Keep a hash of folders and message numbers, printing
each folder name only once and running one mark(1) command for each
folder to mark the new messages unseen.

23 years agouse Errno and Fcntl qw(O_WRONLY O_EXCL O_CREAT) .
epg [Sat, 31 Aug 2002 18:44:47 +0000 (18:44 +0000)]
use Errno and Fcntl qw(O_WRONLY O_EXCL O_CREAT) .

(get_highest_msgnum): Restructure to step through readdir itself
rather than go through getfiles, since we don't want full path names
like that returns, but only the base filenames readdir returns.  Also
fix it to return the highest number in the folder, not that number
plus one, making its name accurate.

(store_message): Adapt to get_highest_msgnum returning only the
highest message number.  Use better $! test.  Only create the empty
message file with sysopen when not $run.  Use the full filename in the
error message when we couldn't find a new filename.

23 years ago(get_new_msgnum): New function, loops across the list returned by
epg [Fri, 30 Aug 2002 07:33:07 +0000 (07:33 +0000)]
(get_new_msgnum): New function, loops across the list returned by
getfiles and returns the number for a new message to go into an mh
folder.  This is a replacement for the command 'mhpath new'.

(store_message): Address the XXX comment about using 'mhpath new' by
not using it, instead calling get_new_msgnum.  Furthermore, use an
algorithm similar to the maildir delivery algorithm to get the
filename to rename to.

23 years ago(getfiles): Move definition of this function higher up, just below
epg [Fri, 30 Aug 2002 06:40:36 +0000 (06:40 +0000)]
(getfiles): Move definition of this function higher up, just below
store_message, since store_message is about to be calling (indirectly)
calling it.

23 years agoCross-reference to razor web site.
epg [Fri, 30 Aug 2002 04:40:40 +0000 (04:40 +0000)]
Cross-reference to razor web site.

23 years ago(getfiles): New function, returns a list of all entries in a
epg [Fri, 30 Aug 2002 00:27:37 +0000 (00:27 +0000)]
(getfiles): New function, returns a list of all entries in a
directory.

(MAIN): Call getfiles instead of using glob.

23 years agoMore mhpath todo commentary.
epg [Wed, 28 Aug 2002 19:29:26 +0000 (19:29 +0000)]
More mhpath todo commentary.

23 years agoChange a couple uses of C's not operator '!' to Perl's 'not'
epg [Wed, 28 Aug 2002 06:46:15 +0000 (06:46 +0000)]
Change a couple uses of C's not operator '!' to Perl's 'not'
operator.

23 years agoWrite a couple XXX todo comments.
epg [Wed, 28 Aug 2002 06:44:08 +0000 (06:44 +0000)]
Write a couple XXX todo comments.

23 years agoDocument that HOME is used to find the maildir in the absence of
epg [Tue, 27 Aug 2002 02:26:37 +0000 (02:26 +0000)]
Document that HOME is used to find the maildir in the absence of
the MAILDIR environment variable.

23 years agoCollapse the two 'use env' pragmas into one.
epg [Tue, 27 Aug 2002 02:22:13 +0000 (02:22 +0000)]
Collapse the two 'use env' pragmas into one.

23 years agoMove definition of logging constants to logging section.
epg [Tue, 27 Aug 2002 01:29:30 +0000 (01:29 +0000)]
Move definition of logging constants to logging section.

23 years ago(is_spam): Change logic of testing razor-check exit code slightly to
epg [Sun, 25 Aug 2002 22:29:48 +0000 (22:29 +0000)]
(is_spam): Change logic of testing razor-check exit code slightly to
bomb if execution of razor-check failed (as opposed to sucessful
execution with a failure exit code).

23 years ago(store_message): Test for failure when mark(1)ing the message unseen.
epg [Sun, 25 Aug 2002 22:26:40 +0000 (22:26 +0000)]
(store_message): Test for failure when mark(1)ing the message unseen.

23 years ago(_errprint): Use single-quotes for a printf format string.
epg [Sun, 25 Aug 2002 21:52:44 +0000 (21:52 +0000)]
(_errprint): Use single-quotes for a printf format string.

23 years ago(find_mh_folder): Fix logic: only use the lower-cased version of
epg [Sun, 25 Aug 2002 21:47:25 +0000 (21:47 +0000)]
(find_mh_folder): Fix logic: only use the lower-cased version of
the header string from %FILTERS for retrieving the header contents
from %headers.

23 years ago(kill_spam): Be more clear about the meaning of the number printed
epg [Sun, 25 Aug 2002 21:31:18 +0000 (21:31 +0000)]
(kill_spam): Be more clear about the meaning of the number printed
before returning.

23 years agoAudit the entire file for correct -n behavior.
epg [Sun, 25 Aug 2002 21:04:05 +0000 (21:04 +0000)]
Audit the entire file for correct -n behavior.

(store_message): Document why this calls mkfolder even in -n mode.

(is_spam): Don't actually do anything in -n mode.

23 years ago(find_mh_folder): Down-case header from %FILTERS before trying to
epg [Sun, 25 Aug 2002 20:53:31 +0000 (20:53 +0000)]
(find_mh_folder): Down-case header from %FILTERS before trying to
use it.

23 years ago(get_headers): Fix an XXX (print message and return () on encountering
epg [Sun, 25 Aug 2002 20:50:51 +0000 (20:50 +0000)]
(get_headers): Fix an XXX (print message and return () on encountering
malformed message.

(find_mh_folder): Handle get_headers failing.

23 years ago(get_headers): Remove XXX question about whitespace after discussion
epg [Sun, 25 Aug 2002 20:42:48 +0000 (20:42 +0000)]
(get_headers): Remove XXX question about whitespace after discussion
with dsp.

23 years ago(log_headers): Adapt to the %headers hash now having all-lowercase
epg [Sun, 25 Aug 2002 20:28:58 +0000 (20:28 +0000)]
(log_headers): Adapt to the %headers hash now having all-lowercase
keys.

23 years ago(kill_spam): Display progress report since this can be a lengthy
epg [Sun, 25 Aug 2002 20:26:27 +0000 (20:26 +0000)]
(kill_spam): Display progress report since this can be a lengthy
operation with no output otherwise.

23 years ago(get_headers): Down-case the header name before using it as a key to
epg [Sun, 25 Aug 2002 20:02:13 +0000 (20:02 +0000)]
(get_headers): Down-case the header name before using it as a key to
the hash.

23 years ago(is_spam): Remove the system('false') line and actually call
epg [Sun, 25 Aug 2002 19:19:53 +0000 (19:19 +0000)]
(is_spam): Remove the system('false') line and actually call
razor-check now.

23 years agoNew -s option, for processing spam only.
epg [Sun, 25 Aug 2002 18:41:32 +0000 (18:41 +0000)]
New -s option, for processing spam only.

($spamonly): New global.

(MAIN): Call filter_mail only if not $spamonly.

23 years agoNew error handling based on <err.h>.
epg [Sun, 25 Aug 2002 18:12:02 +0000 (18:12 +0000)]
New error handling based on <err.h>.

(_errprint): New function, handles printing of error messages for err
and errx.

(err): err(3) for Perl.

(errx): errx(3) for Perl.

(mkfolder):
(store_message):
(is_spam): Use err instead of die.

23 years agoBomb if HOME isn't set and if MAILDIR isn't set use $HOME/Maildir.
epg [Sun, 25 Aug 2002 09:31:41 +0000 (09:31 +0000)]
Bomb if HOME isn't set and if MAILDIR isn't set use $HOME/Maildir.

23 years agoSet svn:executable.
epg [Sun, 25 Aug 2002 09:01:10 +0000 (09:01 +0000)]
Set svn:executable.

23 years agoAdd minc program, based on an earlier minc which was not developed
epg [Sun, 25 Aug 2002 08:55:35 +0000 (08:55 +0000)]
Add minc program, based on an earlier minc which was not developed
very far.

23 years ago(no commit message)
<> [Sun, 25 Aug 2002 08:53:33 +0000 (08:53 +0000)]