Blame


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>
5 d957951b 2005-02-11 devnull #include <ip.h>
6 d957951b 2005-02-11 devnull
7 d957951b 2005-02-11 devnull /*
8 d957951b 2005-02-11 devnull * search the database for matches
9 d957951b 2005-02-11 devnull */
10 d957951b 2005-02-11 devnull
11 d957951b 2005-02-11 devnull void
12 d957951b 2005-02-11 devnull usage(void)
13 d957951b 2005-02-11 devnull {
14 d957951b 2005-02-11 devnull fprint(2, "usage: ipquery attr value rattribute\n");
15 d957951b 2005-02-11 devnull exits("usage");
16 d957951b 2005-02-11 devnull }
17 d957951b 2005-02-11 devnull
18 d957951b 2005-02-11 devnull void
19 d957951b 2005-02-11 devnull search(Ndb *db, char *attr, char *val, char **rattr, int nrattr)
20 d957951b 2005-02-11 devnull {
21 d957951b 2005-02-11 devnull Ndbtuple *t;
22 d957951b 2005-02-11 devnull
23 d957951b 2005-02-11 devnull t = ndbipinfo(db, attr, val, rattr, nrattr);
24 d957951b 2005-02-11 devnull for(; t; t = t->entry)
25 d957951b 2005-02-11 devnull print("%s=%s ", t->attr, t->val);
26 d957951b 2005-02-11 devnull print("\n");
27 d957951b 2005-02-11 devnull ndbfree(t);
28 d957951b 2005-02-11 devnull }
29 d957951b 2005-02-11 devnull
30 d957951b 2005-02-11 devnull void
31 d957951b 2005-02-11 devnull main(int argc, char **argv)
32 d957951b 2005-02-11 devnull {
33 d957951b 2005-02-11 devnull Ndb *db;
34 d957951b 2005-02-11 devnull char *dbfile = 0;
35 d957951b 2005-02-11 devnull
36 d957951b 2005-02-11 devnull ARGBEGIN{
37 d957951b 2005-02-11 devnull case 'f':
38 d957951b 2005-02-11 devnull dbfile = ARGF();
39 d957951b 2005-02-11 devnull break;
40 d957951b 2005-02-11 devnull }ARGEND;
41 d957951b 2005-02-11 devnull
42 d957951b 2005-02-11 devnull if(argc < 3)
43 d957951b 2005-02-11 devnull usage();
44 d957951b 2005-02-11 devnull
45 d957951b 2005-02-11 devnull db = ndbopen(dbfile);
46 d957951b 2005-02-11 devnull if(db == 0){
47 d957951b 2005-02-11 devnull fprint(2, "no db files\n");
48 d957951b 2005-02-11 devnull exits("no db");
49 d957951b 2005-02-11 devnull }
50 d957951b 2005-02-11 devnull search(db, argv[0], argv[1], argv+2, argc-2);
51 d957951b 2005-02-11 devnull ndbclose(db);
52 d957951b 2005-02-11 devnull
53 d957951b 2005-02-11 devnull exits(0);
54 d957951b 2005-02-11 devnull }