|
|
1.1 root 1: /*
2: * tee-- pipe fitting
3: */
4:
5: #include <signal.h>
6: int aflag;
7: int openf[100];
8:
9: char in[512];
10:
11:
12: main(argc,argv)
13: char *argv[];
14: {
15: register i, j;
16: int r, n;
17:
18: while(argc > 1 && argv[1][0] == '-') {
19: switch(argv[1][1]) {
20: case 'a':
21: aflag++;
22: break;
23:
24: case 'i':
25: signal(SIGINT, SIG_IGN);
26: break;
27:
28: }
29: argv++;
30: argc--;
31: }
32:
33: n = 0;
34: while(argc-- > 1) {
35: if(aflag) {
36: openf[n] = open(argv[1], 1);
37: if(openf[n] < 0)
38: openf[n] = creat(argv[1], 0666);
39: lseek(openf[n], 0L, 2);
40: } else
41: openf[n] = creat(argv[1], 0666);
42: if(openf[n] < 0) {
43: puts("tee: cannot open ");
44: puts(argv[1]);
45: puts("\n");
46: } else
47: n++;
48: argv++;
49: }
50: openf[n++] = 1;
51:
52: for(;;) {
53: r = read(0, in, 512);
54: if(r <= 0)
55: exit(0);
56: for(i=0; i<n; i++)
57: write(openf[i], in, r);
58: }
59: }
60:
61: puts(s)
62: char *s;
63: {
64: while(*s)
65: write(2, s++, 1);
66: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.