diff options
| author | rsc <devnull@localhost> | 2005-10-29 16:26:32 +0000 |
|---|---|---|
| committer | rsc <devnull@localhost> | 2005-10-29 16:26:32 +0000 |
| commit | d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34 (patch) | |
| tree | a4d6f28106cca984926b9dd5ecddd6053b654617 /src/cmd/upas/bayes/msgdb.c | |
| parent | 9f1fdc128738b2ed76258ac22a8574c681f3df3a (diff) | |
| download | plan9port-d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34.tar.gz plan9port-d1f529f46f957c78a3db73b42c2fcd2d3c9f8a34.zip | |
Thanks to John Cummings.
Diffstat (limited to 'src/cmd/upas/bayes/msgdb.c')
| -rw-r--r-- | src/cmd/upas/bayes/msgdb.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/cmd/upas/bayes/msgdb.c b/src/cmd/upas/bayes/msgdb.c new file mode 100644 index 00000000..3026a0cc --- /dev/null +++ b/src/cmd/upas/bayes/msgdb.c @@ -0,0 +1,63 @@ +#include <u.h> +#include <libc.h> +#include <bio.h> +#include "msgdb.h" + +void +usage(void) +{ + fprint(2, "usage: msgdb [-c] file\n"); + exits("usage"); +} + +void +main(int argc, char **argv) +{ + int create = 0; + Msgdb *db; + char *tok, *p; + long val; + int input; + Biobuf b; + + input = 0; + ARGBEGIN{ + case 'c': + create = 1; + break; + case 'i': + input = 1; + break; + default: + usage(); + }ARGEND + + if(argc != 1) + usage(); + + if((db = mdopen(argv[0], create)) == nil) + sysfatal("open db: %r"); + + if(input){ + Binit(&b, 0, OREAD); + while((tok = Brdline(&b, '\n')) != nil){ + tok[Blinelen(&b)-1] = '\0'; + p = strrchr(tok, ' '); + if(p == nil) + val = mdget(db, tok)+1; + else{ + *p++ = 0; + val = atoi(p); + } + mdput(db, tok, val); + } + }else{ + mdenum(db); + Binit(&b, 1, OWRITE); + while(mdnext(db, &tok, &val) >= 0) + Bprint(&b, "%s %ld\n", tok, val); + Bterm(&b); + } + mdclose(db); + exits(nil); +} |
