1 d1f529f4 2005-10-29 devnull #include <u.h>
2 d1f529f4 2005-10-29 devnull #include <libc.h>
3 d1f529f4 2005-10-29 devnull #include <bio.h>
4 d1f529f4 2005-10-29 devnull #include "msgdb.h"
7 d1f529f4 2005-10-29 devnull usage(void)
9 d1f529f4 2005-10-29 devnull fprint(2, "usage: msgdb [-c] file\n");
10 d1f529f4 2005-10-29 devnull exits("usage");
14 d1f529f4 2005-10-29 devnull main(int argc, char **argv)
16 d1f529f4 2005-10-29 devnull int create = 0;
17 d1f529f4 2005-10-29 devnull Msgdb *db;
18 d1f529f4 2005-10-29 devnull char *tok, *p;
19 d1f529f4 2005-10-29 devnull long val;
20 d1f529f4 2005-10-29 devnull int input;
21 d1f529f4 2005-10-29 devnull Biobuf b;
23 d1f529f4 2005-10-29 devnull input = 0;
24 d1f529f4 2005-10-29 devnull ARGBEGIN{
25 d1f529f4 2005-10-29 devnull case 'c':
26 d1f529f4 2005-10-29 devnull create = 1;
28 d1f529f4 2005-10-29 devnull case 'i':
29 d1f529f4 2005-10-29 devnull input = 1;
35 d1f529f4 2005-10-29 devnull if(argc != 1)
38 d1f529f4 2005-10-29 devnull if((db = mdopen(argv[0], create)) == nil)
39 d1f529f4 2005-10-29 devnull sysfatal("open db: %r");
41 d1f529f4 2005-10-29 devnull if(input){
42 d1f529f4 2005-10-29 devnull Binit(&b, 0, OREAD);
43 d1f529f4 2005-10-29 devnull while((tok = Brdline(&b, '\n')) != nil){
44 d1f529f4 2005-10-29 devnull tok[Blinelen(&b)-1] = '\0';
45 d1f529f4 2005-10-29 devnull p = strrchr(tok, ' ');
46 d1f529f4 2005-10-29 devnull if(p == nil)
47 d1f529f4 2005-10-29 devnull val = mdget(db, tok)+1;
49 d1f529f4 2005-10-29 devnull *p++ = 0;
50 d1f529f4 2005-10-29 devnull val = atoi(p);
52 d1f529f4 2005-10-29 devnull mdput(db, tok, val);
55 d1f529f4 2005-10-29 devnull mdenum(db);
56 d1f529f4 2005-10-29 devnull Binit(&b, 1, OWRITE);
57 d1f529f4 2005-10-29 devnull while(mdnext(db, &tok, &val) >= 0)
58 d1f529f4 2005-10-29 devnull Bprint(&b, "%s %ld\n", tok, val);
59 d1f529f4 2005-10-29 devnull Bterm(&b);
61 d1f529f4 2005-10-29 devnull mdclose(db);
62 d1f529f4 2005-10-29 devnull exits(nil);