]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/ndb/csquery.c
ip/ipconfig, ndb/dns, libndb: handle parseipmask() errors
[plan9front.git] / sys / src / cmd / ndb / csquery.c
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4
5 char *server;
6 char *status;
7 int statusonly;
8
9 void
10 usage(void)
11 {
12         fprint(2, "usage: ndb/csquery [/net/cs [addr...]]\n");
13         exits("usage");
14 }
15
16 void
17 query(char *addr)
18 {
19         char buf[8192+1];
20         int fd, n;
21
22         fd = open(server, ORDWR);
23         if(fd < 0)
24                 sysfatal("cannot open %s: %r", server);
25         if(write(fd, addr, strlen(addr)) != strlen(addr)){
26                 if(!statusonly)
27                         fprint(2, "translating %s: %r\n", addr);
28                 status = "errors";
29                 close(fd);
30                 return;
31         }
32         if(!statusonly){
33                 seek(fd, 0, 0);
34                 while((n = read(fd, buf, sizeof(buf)-1)) > 0){
35                         buf[n++] = '\n';
36                         write(1, buf, n);
37                 }
38                 write(1, "\n", 1);
39         }
40         close(fd);
41 }
42
43 void
44 main(int argc, char **argv)
45 {
46         char *p;
47         int i;
48         Biobuf in;
49
50         ARGBEGIN{
51         case 's':
52                 statusonly = 1;
53                 break;
54         default:
55                 usage();
56         }ARGEND
57
58         if(argc > 0)
59                 server = argv[0];
60         else
61                 server = "/net/cs";
62
63         if(argc > 1){
64                 for(i=1; i<argc; i++)
65                         query(argv[i]);
66                 exits(status);
67         }
68
69         Binit(&in, 0, OREAD);
70         for(;;){
71                 print("> ");
72                 p = Brdline(&in, '\n');
73                 if(p == 0)
74                         break;
75                 p[Blinelen(&in)-1] = 0;
76                 query(p);
77         }
78         exits(nil);
79 }