Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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