Introduction
Introduction Statistics Contact Development Disclaimer Help
bmf.c: improve some code-style - bmf - bmf (Bayesian Mail Filter) 0.9.4 fork + …
git clone git://git.codemadness.org/bmf
Log
Files
Refs
README
LICENSE
---
commit cd31f403d6c7b3acf4a41365c063c4cefef34e83
parent d4c3810c7f1e6030166288e0e30224c17dfd5ba5
Author: Hiltjo Posthuma <[email protected]>
Date: Sun, 23 Sep 2018 14:29:09 +0200
bmf.c: improve some code-style
Diffstat:
M bmf.c | 532 +++++++++++++++--------------…
1 file changed, 250 insertions(+), 282 deletions(-)
---
diff --git a/bmf.c b/bmf.c
@@ -18,309 +18,277 @@
#include "filt.h"
/* modes of operation (mutually exclusive) */
-typedef enum
-{
- mode_test, /* test and produce report */
- mode_normal, /* test and register result */
- mode_reg_s, /* register as spam */
- mode_reg_n, /* register as non-spam */
- mode_n_to_s, /* undo non-spam registration and register as spam */
- mode_s_to_n /* undo spam registration and register as non-spam */
+typedef enum {
+ mode_test, /* test and produce report */
+ mode_normal, /* test and register result */
+ mode_reg_s, /* register as spam */
+ mode_reg_n, /* register as non-spam */
+ mode_n_to_s, /* undo non-spam registration and register…
+ * spam */
+ mode_s_to_n /* undo spam registration and register as
+ * non-spam */
} runmode_t;
-static void usage( void )
+static void
+usage(void)
{
- printf( "\n"
- "Usage: " PACKAGE " [mode] [options]\n"
- "\n"
- "Modes of operation (mutually exclusive; the last one specified is…
- "\t\tRegister message using historical data if no mode is specifie…
- "\t-n\tRegister message as non-spam.\n"
- "\t-s\tRegister message as spam.\n"
- "\t-N\tRegister message as non-spam and undo prior registration as…
- "\t-S\tRegister message as spam and undo prior registration as non…
- "\t-t\tTest mode, print report and do not save results.\n"
- "\n"
- "Other options:\n"
- "\t-d db\tSpecify database or directory name.\n"
- "\t-k n\tSpecify count of extrema to use (keepers), default is 15.…
- "\t-m type\t[DEPRECATED] Specify mail storage format (mbox|maildir…
- "\t-p\tPassthrough mode, like SpamAssassin.\n"
- "\t-v\tIncrease verbosity level.\n"
- "\t-V\tShow version information and exit.\n"
- "\t-h\tShow this message and exit.\n"
- "\n" );
- exit( 2 );
+ printf("\n"
+ "Usage: " PACKAGE " [mode] [options]\n"
+ "\n"
+ "Modes of operation (mutually exclusive; the last one specified…
+ "\t\tRegister message using historical data if no mode is speci…
+ "\t-n\tRegister message as non-spam.\n"
+ "\t-s\tRegister message as spam.\n"
+ "\t-N\tRegister message as non-spam and undo prior registration…
+ "\t-S\tRegister message as spam and undo prior registration as …
+ "\t-t\tTest mode, print report and do not save results.\n"
+ "\n"
+ "Other options:\n"
+ "\t-d db\tSpecify database or directory name.\n"
+ "\t-k n\tSpecify count of extrema to use (keepers), default is …
+ "\t-m type\t[DEPRECATED] Specify mail storage format (mbox|mail…
+ "\t-p\tPassthrough mode, like SpamAssassin.\n"
+ "\t-v\tIncrease verbosity level.\n"
+ "\t-V\tShow version information and exit.\n"
+ "\t-h\tShow this message and exit.\n"
+ "\n");
+ exit(2);
}
-static void version( void )
+static void
+version(void)
{
- printf( "\n"
- PACKAGE " version " VERSION " - a Bayesian mail filter\n"
- "Copyright (c) 2002 Tom Marshall\n"
- "\n"
- PACKAGE " comes with ABSOLUTELY NO WARRANTY.\n"
- "This is free software. You are welcome to redistribute it under …
- "of the GNU General Public License. See the file LICENSE in the s…
- "distribution, or visit http://www.gnu.org/licenses/gpl.html\n"
- "\n" );
- exit( 2 );
+ printf("\n"
+ PACKAGE " version " VERSION " - a Bayesian mail filter\n"
+ "Copyright (c) 2002 Tom Marshall\n"
+ "\n"
+ PACKAGE " comes with ABSOLUTELY NO WARRANTY.\n"
+ "This is free software. You are welcome to redistribute it und…
+ "of the GNU General Public License. See the file LICENSE in th…
+ "distribution, or visit http://www.gnu.org/licenses/gpl.html\n"
+ "\n");
+ exit(2);
}
-int main( int argc, char** argv )
+int
+main(int argc, char **argv)
{
- int ch;
- dbfmt_t dbfmt = db_text;
- char* dbname = NULL;
- bool_t rdonly;
-
- runmode_t mode = mode_normal;
- mbox_t mboxtype = detect;
- bool_t do_passthru = false;
-
- dbh_t* pdb;
- dbt_t* pblist;
- dbt_t* pglist;
- dbt_t* ptable;
- vec_t mlist;
- stats_t stats;
- lex_t lex;
- tok_t tok;
- bool_t is_spam = false;
-
- int fd = STDIN_FILENO;
-
- if (pledge("stdio rpath wpath cpath flock", NULL) == -1)
- err(1, "pledge");
-
- srand(time(NULL));
- atexit( dump_alloc_heap );
-
- stats.keepers = DEF_KEEPERS;
- while( (ch = getopt( argc, argv, "NSVd:hk:m:npstv" )) != EOF )
- {
- switch( ch )
- {
- case 'N':
- mode = mode_s_to_n;
- break;
- case 'S':
- mode = mode_n_to_s;
- break;
- case 'V':
- version();
- break; /* notreached */
- case 'd':
- free( dbname );
- dbname = strdup( optarg );
- break;
- case 'h':
- usage();
- break; /* notreached */
- case 'k':
- stats.keepers = atoi( optarg );
- break;
- case 'm':
- if( strcasecmp( optarg, "mbox" ) == 0 )
- {
- mboxtype = mbox;
- }
- else if( strcasecmp( optarg, "maildir" ) == 0 )
- {
- mboxtype = maildir;
- }
- else
- {
- usage();
- }
- break;
- case 'n':
- mode = mode_reg_n;
- break;
- case 'p':
- do_passthru = true;
- break;
- case 's':
- mode = mode_reg_s;
- break;
- case 't':
- mode = mode_test;
- if (pledge("stdio rpath cpath flock", NULL) == -1)
- err(1, "pledge");
- break;
- case 'v':
- g_verbose++;
- verbose( 1, "Verbose level now %u\n", g_verbose );
- break;
- default:
- usage();
- }
- }
- stats.extrema = (discrim_t*)malloc( stats.keepers*sizeof(discrim_t) );
-
- pdb = dbh_open( dbfmt, "localhost", dbname, "", "" );
- if( pdb == NULL )
- {
- fprintf( stderr, "%s: cannot open database\n", argv[0] );
- exit( 2 );
- }
-
- lex_create( &lex, mboxtype );
- if( !lex_load( &lex, fd ) )
- {
- fprintf( stderr, "%s: cannot read input\n", argv[0] );
- exit( 2 );
- }
- lex_nexttoken( &lex, &tok );
- if( tok.tt == eof )
- {
- fprintf( stderr, "%s: no input available\n", argv[0] );
- exit( 2 );
- }
+ int ch;
+ dbfmt_t dbfmt = db_text;
+ char *dbname = NULL;
+ bool_t rdonly;
+ runmode_t mode = mode_normal;
+ mbox_t mboxtype = detect;
+ bool_t do_passthru = false;
+ dbh_t *pdb;
+ dbt_t *pblist;
+ dbt_t *pglist;
+ dbt_t *ptable;
+ vec_t mlist;
+ stats_t stats;
+ lex_t lex;
+ tok_t tok;
+ bool_t is_spam = false;
- if (mode == mode_test) {
- rdonly = 1;
- pblist = pdb->opentable( pdb, "spamlist", rdonly );
- if( pblist == NULL )
- {
- fprintf( stderr, "%s: cannot open spamlist\n", argv[0] );
- exit( 2 );
- }
+ int fd = STDIN_FILENO;
- pglist = pdb->opentable( pdb, "goodlist", rdonly );
- if( pglist == NULL )
- {
- fprintf( stderr, "%s: cannot open goodlist\n", argv[0] );
- exit( 2 );
- }
+ if (pledge("stdio rpath wpath cpath flock", NULL) == -1)
+ err(1, "pledge");
- if (pledge("stdio", NULL) == -1)
- err(1, "pledge");
- }
+ srand(time(NULL));
+ atexit(dump_alloc_heap);
- while( tok.tt != eof )
- {
- if( mboxtype == mbox && tok.tt != from )
- {
- fprintf( stderr, "%s: input does not look like an mbox message\n",…
- exit( 2 );
- }
-
- if (mode != mode_test) {
- rdonly = 0;
- pblist = pdb->opentable( pdb, "spamlist", rdonly );
- if( pblist == NULL ) {
- fprintf( stderr, "%s: cannot open spamlist\n", argv[0] );
- exit( 2 );
- }
-
- pglist = pdb->opentable( pdb, "goodlist", rdonly );
- if( pglist == NULL )
- {
- fprintf( stderr, "%s: cannot open goodlist\n", argv[0] );
- exit( 2 );
- }
+ stats.keepers = DEF_KEEPERS;
+ while ((ch = getopt(argc, argv, "NSVd:hk:m:npstv")) != EOF) {
+ switch (ch) {
+ case 'N':
+ mode = mode_s_to_n;
+ break;
+ case 'S':
+ mode = mode_n_to_s;
+ break;
+ case 'V':
+ version();
+ break; /* notreached */
+ case 'd':
+ free(dbname);
+ dbname = strdup(optarg);
+ break;
+ case 'h':
+ usage();
+ break; /* notreached */
+ case 'k':
+ stats.keepers = atoi(optarg);
+ break;
+ case 'm':
+ if (strcasecmp(optarg, "mbox") == 0) {
+ mboxtype = mbox;
+ } else if (strcasecmp(optarg, "maildir") == 0) {
+ mboxtype = maildir;
+ } else {
+ usage();
+ }
+ break;
+ case 'n':
+ mode = mode_reg_n;
+ break;
+ case 'p':
+ do_passthru = true;
+ break;
+ case 's':
+ mode = mode_reg_s;
+ break;
+ case 't':
+ mode = mode_test;
+ if (pledge("stdio rpath cpath flock", NULL) == -1)
+ err(1, "pledge");
+ break;
+ case 'v':
+ g_verbose++;
+ verbose(1, "Verbose level now %u\n", g_verbose);
+ break;
+ default:
+ usage();
+ }
}
+ stats.extrema = (discrim_t *) malloc(stats.keepers * sizeof(discrim_t)…
- vec_create( &mlist );
- bvec_loadmsg( &mlist, &lex, &tok );
-
- switch( mode )
- {
- case mode_test:
- bayesfilt( pglist, pblist, &mlist, &stats );
- is_spam = (stats.spamicity > SPAM_CUTOFF);
- break;
- case mode_normal:
- bayesfilt( pglist, pblist, &mlist, &stats );
- is_spam = (stats.spamicity > SPAM_CUTOFF);
- ptable = (is_spam ? pblist : pglist);
- svec_sort( &mlist );
- if( !ptable->mergeclose( ptable, &mlist ) )
- {
- fprintf( stderr, "%s: cannot merge/save list\n", argv[0] );
- exit( 2 );
- }
- break;
- case mode_reg_s:
- stats.spamicity = 1.0;
- is_spam = true;
- svec_sort( &mlist );
- if( !pblist->mergeclose( pblist, &mlist ) )
- {
- fprintf( stderr, "%s: cannot merge/save list\n", argv[0] );
- exit( 2 );
- }
- break;
- case mode_reg_n:
- stats.spamicity = 0.0;
- is_spam = false;
- svec_sort( &mlist );
- if( !pglist->mergeclose( pglist, &mlist ) )
- {
- fprintf( stderr, "%s: cannot merge/save list\n", argv[0] );
- exit( 2 );
- }
- break;
- case mode_n_to_s:
- stats.spamicity = 1.0;
- is_spam = true;
- svec_sort( &mlist );
- if( !pblist->mergeclose( pblist, &mlist ) ||
- !pglist->unmergeclose( pglist, &mlist ) )
- {
- fprintf( stderr, "%s: cannot merge/save list\n", argv[0] );
- exit( 2 );
- }
- break;
- case mode_s_to_n:
- stats.spamicity = 0.0;
- is_spam = false;
- svec_sort( &mlist );
- if( !pblist->unmergeclose( pblist, &mlist ) ||
- !pglist->mergeclose( pglist, &mlist ) )
- {
- fprintf( stderr, "%s: cannot merge/save list\n", argv[0] );
- exit( 2 );
- }
- break;
- default:
- usage();
- }
-
- if( mode == mode_test )
- {
- statdump( &stats, STDOUT_FILENO );
- }
+ pdb = dbh_open(dbfmt, "localhost", dbname, "", "");
+ if (pdb == NULL) {
+ fprintf(stderr, "%s: cannot open database\n", argv[0]);
+ exit(2);
+ }
+ lex_create(&lex, mboxtype);
+ if (!lex_load(&lex, fd)) {
+ fprintf(stderr, "%s: cannot read input\n", argv[0]);
+ exit(2);
+ }
+ lex_nexttoken(&lex, &tok);
+ if (tok.tt == eof) {
+ fprintf(stderr, "%s: no input available\n", argv[0]);
+ exit(2);
+ }
+ if (mode == mode_test) {
+ rdonly = 1;
+ pblist = pdb->opentable(pdb, "spamlist", rdonly);
+ if (pblist == NULL) {
+ fprintf(stderr, "%s: cannot open spamlist\n", argv[0]);
+ exit(2);
+ }
+ pglist = pdb->opentable(pdb, "goodlist", rdonly);
+ if (pglist == NULL) {
+ fprintf(stderr, "%s: cannot open goodlist\n", argv[0]);
+ exit(2);
+ }
+ if (pledge("stdio", NULL) == -1)
+ err(1, "pledge");
+ }
+ while (tok.tt != eof) {
+ if (mboxtype == mbox && tok.tt != from) {
+ fprintf(stderr, "%s: input does not look like an mbox …
+ exit(2);
+ }
+ if (mode != mode_test) {
+ rdonly = 0;
+ pblist = pdb->opentable(pdb, "spamlist", rdonly);
+ if (pblist == NULL) {
+ fprintf(stderr, "%s: cannot open spamlist\n", …
+ exit(2);
+ }
+ pglist = pdb->opentable(pdb, "goodlist", rdonly);
+ if (pglist == NULL) {
+ fprintf(stderr, "%s: cannot open goodlist\n", …
+ exit(2);
+ }
+ }
+ vec_create(&mlist);
+ bvec_loadmsg(&mlist, &lex, &tok);
- if( do_passthru )
- {
- lex_passthru( &lex, is_spam, stats.spamicity );
- }
+ switch (mode) {
+ case mode_test:
+ bayesfilt(pglist, pblist, &mlist, &stats);
+ is_spam = (stats.spamicity > SPAM_CUTOFF);
+ break;
+ case mode_normal:
+ bayesfilt(pglist, pblist, &mlist, &stats);
+ is_spam = (stats.spamicity > SPAM_CUTOFF);
+ ptable = (is_spam ? pblist : pglist);
+ svec_sort(&mlist);
+ if (!ptable->mergeclose(ptable, &mlist)) {
+ fprintf(stderr, "%s: cannot merge/save list\n"…
+ exit(2);
+ }
+ break;
+ case mode_reg_s:
+ stats.spamicity = 1.0;
+ is_spam = true;
+ svec_sort(&mlist);
+ if (!pblist->mergeclose(pblist, &mlist)) {
+ fprintf(stderr, "%s: cannot merge/save list\n"…
+ exit(2);
+ }
+ break;
+ case mode_reg_n:
+ stats.spamicity = 0.0;
+ is_spam = false;
+ svec_sort(&mlist);
+ if (!pglist->mergeclose(pglist, &mlist)) {
+ fprintf(stderr, "%s: cannot merge/save list\n"…
+ exit(2);
+ }
+ break;
+ case mode_n_to_s:
+ stats.spamicity = 1.0;
+ is_spam = true;
+ svec_sort(&mlist);
+ if (!pblist->mergeclose(pblist, &mlist) ||
+ !pglist->unmergeclose(pglist, &mlist)) {
+ fprintf(stderr, "%s: cannot merge/save list\n"…
+ exit(2);
+ }
+ break;
+ case mode_s_to_n:
+ stats.spamicity = 0.0;
+ is_spam = false;
+ svec_sort(&mlist);
+ if (!pblist->unmergeclose(pblist, &mlist) ||
+ !pglist->mergeclose(pglist, &mlist)) {
+ fprintf(stderr, "%s: cannot merge/save list\n"…
+ exit(2);
+ }
+ break;
+ default:
+ usage();
+ }
- vec_destroy( &mlist );
+ if (mode == mode_test) {
+ statdump(&stats, STDOUT_FILENO);
+ }
+ if (do_passthru) {
+ lex_passthru(&lex, is_spam, stats.spamicity);
+ }
+ vec_destroy(&mlist);
- if (mode != mode_test) {
- pglist->close( pglist );
- free( pglist );
- pblist->close( pblist );
- free( pblist );
+ if (mode != mode_test) {
+ pglist->close(pglist);
+ free(pglist);
+ pblist->close(pblist);
+ free(pblist);
+ }
}
- }
-
- if (mode == mode_test) {
- pglist->close( pglist );
- free( pglist );
- pblist->close( pblist );
- free( pblist );
- }
- lex_destroy( &lex );
+ if (mode == mode_test) {
+ pglist->close(pglist);
+ free(pglist);
+ pblist->close(pblist);
+ free(pblist);
+ }
+ lex_destroy(&lex);
- pdb->close( pdb );
- free( pdb );
+ pdb->close(pdb);
+ free(pdb);
- free( stats.extrema );
+ free(stats.extrema);
- return ( (do_passthru || is_spam) ? 0 : 1 );
+ return ((do_passthru || is_spam) ? 0 : 1);
}
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.