Hello again,

 Here is another trivial patch to a dspam tool, this time to fix the broken
command line parsing in dspam_train. It suffered from 2 problems:

1. The username, documented as optional in the man page, was required and
   you couldn't run just "dspam_train spam_dir ham_dir"

2. The check that "spam_dir" and "ham_dir" were directories in the
   beginning of the script wasn't done at all because "!=" (which can't be
   used to compare string in Perl) was used instead of "ne".

This patch fixes these 2 problems and also slightly updates the man page
(the description of "-i index" option still would need to be added
ideally...).

 As before, please let me know if you have any questions about this patch,
thanks,
VZ

diff -r b2246e7d9208 man/dspam_train.1
--- a/man/dspam_train.1 Tue Apr 15 04:16:53 2008 +0200
+++ b/man/dspam_train.1 Tue Apr 15 04:16:56 2008 +0200
@@ -20,11 +20,10 @@ dspam_train - train a corpus of mail
 .BI \ username \fR
 ]
 [\c
-.BI \ spam_dir \fR
+.BI \ --client \fR
 ]
-[\c
-.BI \ nonspam_dir \fR
-]
+.BI spam_dir \fR
+.BI nonspam_dir \fR

 .ad
 .SH DESCRIPTION
@@ -46,18 +45,23 @@ of a particular corpus against dspam in

 .n3 3
 .TP
-.BI [username]\c
-Specifies the user to train.
+.BI --client\c
+If specified, dspam is used in client-server mode.

 .n3 3
 .TP
-.BI [spam_dir]\c
+.BI username\c
+Specifies the user to train, if omitted the current user name is used.
+
+.n3 3
+.TP
+.BI spam_dir\c
 Specifies the pathname to the directory containing the corpus of spam. Each
 message should be separate in its own file.

 .n3 3
 .TP
-.BI [nonspam_dir]\c
+.BI nonspam_dir\c
 Specifies the pathname to the directory containing the corpus of nonspam. Each
 message should be separate in its own file.

diff -r b2246e7d9208 src/tools/dspam_train.in
--- a/src/tools/dspam_train.in  Tue Apr 15 04:16:53 2008 +0200
+++ b/src/tools/dspam_train.in  Tue Apr 15 04:16:56 2008 +0200
@@ -18,7 +18,9 @@ if ($SPAM_CORPUS eq "--client" || $SPAM_
 $NONSPAM_CORPUS = shift;

 if ($NONSPAM_CORPUS eq "") {
-  usage();
+    # we were wrong about the first argument, it was the spam corpus and not
+    # the user name in fact
+    ($USER, $NONSPAM_CORPUS, $SPAM_CORPUS) = ((getpwuid($<))[0], $SPAM_CORPUS, 
$USER)
 }

 sub usage {
@@ -26,7 +28,7 @@ sub usage {
     exit(-1);
 }

-if ($SPAM_CORPUS != "-i" && (! -d $SPAM_CORPUS || ! -d $NONSPAM_CORPUS)) {
+if ($SPAM_CORPUS ne "-i" && (! -d $SPAM_CORPUS || ! -d $NONSPAM_CORPUS)) {
     print STDERR "ERROR: " . ((-d $SPAM_CORPUS) ? "nonspam" : "spam" ) . 
"corpus must be path to maildir directory\n";
     usage();
 }

Reply via email to