summaryrefslogtreecommitdiffstats
path: root/src/cmd/upas/bayes/msgdb.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-10-29 16:26:32 +0000
committerrsc <devnull@localhost>2005-10-29 16:26:32 +0000
commitd1f529f46f957c78a3db73b42c2fcd2d3c9f8a34 (patch)
treea4d6f28106cca984926b9dd5ecddd6053b654617 /src/cmd/upas/bayes/msgdb.c
parent9f1fdc128738b2ed76258ac22a8574c681f3df3a (diff)
downloadplan9port-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.c63
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);
+}