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