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

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

unix.superglobalmegacorp.com

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