2 * search the network database for matches
9 static int all, multiple;
15 fprint(2, "usage: query [-am] [-f ndbfile] attr value "
16 "[returned-attr [reps]]\n");
20 /* print values of nt's attributes matching rattr */
22 prmatch(Ndbtuple *nt, char *rattr)
24 for(; nt; nt = nt->entry)
25 if (strcmp(nt->attr, rattr) == 0)
26 Bprint(&bout, "%s\n", nt->val);
30 search(Ndb *db, char *attr, char *val, char *rattr)
36 /* first entry with a matching rattr */
38 p = ndbgetvalue(db, &s, attr, val, rattr, &t);
42 Bprint(&bout, "%s\n", p);
48 /* all entries with matching rattrs */
50 for(t = ndbsearch(db, &s, attr, val); t != nil;
51 t = ndbsnext(&s, attr, val)){
59 for(t = ndbsearch(db, &s, attr, val); t; t = ndbsnext(&s, attr, val)){
60 for(nt = t; nt; nt = nt->entry)
61 Bprint(&bout, "%s=%s ", nt->attr, nt->val);
68 main(int argc, char **argv)
71 char *rattr = nil, *dbfile = nil;
82 dbfile = EARGF(usage());
90 reps = atoi(argv[3]); /* wtf use is this? */
102 if(Binit(&bout, 1, OWRITE) == -1)
103 sysfatal("Binit: %r");
104 db = ndbopen(dbfile);
106 fprint(2, "%s: no db files\n", argv0);
110 search(db, argv[0], argv[1], rattr);