1 d957951b 2005-02-11 devnull #include <u.h>
2 d957951b 2005-02-11 devnull #include <libc.h>
3 d957951b 2005-02-11 devnull #include <bio.h>
4 d957951b 2005-02-11 devnull #include <ndb.h>
7 d957951b 2005-02-11 devnull * search the database for matches
10 d957951b 2005-02-11 devnull usage(void)
12 d957951b 2005-02-11 devnull fprint(2, "usage: query attr value [returned attribute]\n");
13 d957951b 2005-02-11 devnull exits("usage");
17 d957951b 2005-02-11 devnull search(Ndb *db, char *attr, char *val, char *rattr)
20 d957951b 2005-02-11 devnull Ndbtuple *t;
21 d957951b 2005-02-11 devnull Ndbtuple *nt;
24 d957951b 2005-02-11 devnull if(rattr){
25 d957951b 2005-02-11 devnull p = ndbgetvalue(db, &s, attr, val, rattr, nil);
27 d957951b 2005-02-11 devnull print("%s\n", p);
33 d957951b 2005-02-11 devnull t = ndbsearch(db, &s, attr, val);
34 d957951b 2005-02-11 devnull while(t){
35 d957951b 2005-02-11 devnull for(nt = t; nt; nt = nt->entry)
36 d957951b 2005-02-11 devnull print("%s=%s ", nt->attr, nt->val);
37 d957951b 2005-02-11 devnull print("\n");
38 d957951b 2005-02-11 devnull ndbfree(t);
39 d957951b 2005-02-11 devnull t = ndbsnext(&s, attr, val);
44 d957951b 2005-02-11 devnull main(int argc, char **argv)
46 d957951b 2005-02-11 devnull char *rattr = 0;
48 d957951b 2005-02-11 devnull char *dbfile = 0;
49 d957951b 2005-02-11 devnull int reps = 1;
51 d957951b 2005-02-11 devnull ARGBEGIN{
52 d957951b 2005-02-11 devnull case 'f':
53 d957951b 2005-02-11 devnull dbfile = ARGF();
57 d957951b 2005-02-11 devnull switch(argc){
59 d957951b 2005-02-11 devnull reps = atoi(argv[3]);
60 d957951b 2005-02-11 devnull /* fall through */
62 d957951b 2005-02-11 devnull rattr = argv[2];
65 d957951b 2005-02-11 devnull rattr = 0;
71 d957951b 2005-02-11 devnull db = ndbopen(dbfile);
72 d957951b 2005-02-11 devnull if(db == 0){
73 d957951b 2005-02-11 devnull fprint(2, "no db files\n");
74 d957951b 2005-02-11 devnull exits("no db");
76 d957951b 2005-02-11 devnull while(reps--)
77 d957951b 2005-02-11 devnull search(db, argv[0], argv[1], rattr);
78 d957951b 2005-02-11 devnull ndbclose(db);
80 d957951b 2005-02-11 devnull exits(0);