123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #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);
- }
|