Annotation of researchv10no/cmd/spitbol/swcinp.c, revision 1.1.1.1

1.1       root        1: /*
                      2:        swcinp( filecnt,fileptr ) is responsible for switching between
                      3:        input files for standard input.  filecnt is the number of
                      4:        input filnames specified on the command line and fileptr is
                      5:        points to an array of character pointers.
                      6: 
                      7:        all files on the command line are read before the standard
                      8:        input provided by the shell.  after all input is exhausted
                      9:        a -1 is returned to indicate EOF.
                     10: */
                     11: 
                     12: int    swcinp( filecnt,fileptr )
                     13: int    filecnt;
                     14: char   *fileptr[];
                     15: 
                     16: {
                     17:        static  int     curfile = -1,
                     18:                        originp = 0;
                     19:        register int    fd;
                     20: 
                     21:        if (filecnt == 0) {
                     22:                if (originp == 0) {
                     23:                        --originp;
                     24:                        fd = 0;
                     25:                } else {
                     26:                        fd = -1;
                     27:                }
                     28:        } else {
                     29:                if (originp == -1)
                     30:                        return  originp;
                     31:                if (originp == 0)
                     32:                        originp = dup( 0 );
                     33:                close( 0 );
                     34:                fd = -1;
                     35:                if (curfile < filecnt - 1) {
                     36:                        do {
                     37:                                fd = open( fileptr[++curfile],0 );
                     38:                                if (fd != 0) {
                     39:                                        register int len = 0;
                     40:                                        write( 2,"can't open ",11 );
                     41:                                        while ( fileptr[curfile][len] != '\0' )
                     42:                                                len++;
                     43:                                        write( 2,fileptr[curfile],len );
                     44:                                        write( 2,"\n",1 );
                     45:                                }
                     46:                        } while ( fd != 0 && curfile < filecnt - 1 );
                     47:                }
                     48:                if ( curfile == filecnt - 1 && fd != 0 ) {
                     49:                        if (originp > 0) {
                     50:                                fd = dup( originp );
                     51:                                close( originp );
                     52:                                originp = -1;
                     53:                        } else {
                     54:                                fd = -1;
                     55:                        }
                     56:                }
                     57:        }
                     58: 
                     59:        return fd;
                     60: }

unix.superglobalmegacorp.com

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