ipquery.c 773 B

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