|
|
1.1 root 1: #include <ipc.h>
2: #include <fio.h>
3: /*
4: name<tab>company<tab>dialcode<tab>phone<tab>location<tab>room<tab>org<tab>mail<\n>
5: */
6: int fd;
7:
8: timeout(){
9: fprint(2, "telno: timeout\n");
10: exit(1);
11: }
12: main(argc, argv)
13: char *argv[];
14: {
15: register i;
16:
17: if(argc==1){
18: fprint(2, "usage: telno datum...\n");
19: return 1;
20: }
21: fd=ipcopen(ipcpath("nj/homer/dq", "dk", "dq1"), "light");
22: if(fd==-1){
23: fprint(2, "telno: call failed: %s\n", errstr);
24: return 1;
25: }
26: copy("-\n", 0);
27: nap(20);
28: for(i=1; i<argc; i++)
29: lookup(argv[i]);
30: return 0;
31: }
32: char peekbuf[20];
33: int npeek=0;
34: #define unget(c) (peekbuf[npeek++]=(c))
35: lookup(s)
36: char *s;
37: {
38: char buf[256];
39: sprint(buf, "%s\n", s);
40: write(fd, buf, strlen(buf));
41: copy("\n", 0);
42: unget('\n');
43: copy("\n.\n", 1);
44: return 0;
45: }
46: get(){
47: register n, c;
48: char buf[sizeof peekbuf];
49: if(npeek==0){
50: n=read(fd, buf, sizeof peekbuf);
51: if(n<=0){
52: fprint(2, "telno: read error\n");
53: exit(1);
54: }
55: while(--n>=0)
56: unget(buf[n]);
57: }
58: c=peekbuf[--npeek];
59: c&=0x7F;
60: if(c<' ' && c!='\n')
61: return get();
62: return c;
63: }
64: copy(end, output)
65: register char *end;
66: {
67: register n=0;
68: register char *e;
69: char c;
70: for(;;){
71: c=get();
72: if(output)
73: Fputc(1, c);
74: e=end;
75: while(c==*e && *++e)
76: c=get();
77: if(*e==0)
78: break;
79: if(e>end){
80: unget(c);
81: while(e>end+1)
82: unget(*--e);
83: }
84: }
85: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.