Annotation of researchv9/cmd/tee.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.