Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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[128];
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] = 0;
36
			print("%s\n", buf);
37
		}
38
	}
39
	close(fd);
40
}
41
 
42
void
43
main(int argc, char **argv)
44
{
45
	char *p;
46
	int i;
47
	Biobuf in;
48
 
49
	ARGBEGIN{
50
	case 's':
51
		statusonly = 1;
52
		break;
53
	default:
54
		usage();
55
	}ARGEND
56
 
57
	if(argc > 0)
58
		server = argv[0];
59
	else
60
		server = "/net/cs";
61
 
62
	if(argc > 1){
63
		for(i=1; i<argc; i++)
64
			query(argv[i]);
65
		exits(status);
66
	}
67
 
68
	Binit(&in, 0, OREAD);
69
	for(;;){
70
		print("> ");
71
		p = Brdline(&in, '\n');
72
		if(p == 0)
73
			break;
74
		p[Blinelen(&in)-1] = 0;
75
		query(p);
76
	}
77
	exits(nil);
78
}