Annotation of researchv10no/cmd/spitbol/swcoup.c, revision 1.1

1.1     ! root        1: /*
        !             2:        swcoup( oupptr ) switches between 2 output files:  the
        !             3:        standard output file provided by the shell and the optional
        !             4:        output file provided by the -o option.
        !             5: 
        !             6:        the switching is as follows:
        !             7: 
        !             8:        program listing, compilation statisitics, execution statistics,
        !             9:        and dump of variables at termination go to the -o file, if
        !            10:        specified.
        !            11: 
        !            12:        standard output produced by the executing program goes to the
        !            13:        standard output file provided by the shell.
        !            14: */
        !            15: 
        !            16: int swcoup( oupptr )
        !            17: char   *oupptr;
        !            18: 
        !            19: {
        !            20:        static  int     errflag = 0,
        !            21:                        origoup = 0,
        !            22:                        state   = 0;
        !            23:                int     fd,retval;
        !            24: 
        !            25:        retval  = 0;
        !            26:        if (oupptr == 0)
        !            27:                return  0;
        !            28: 
        !            29:        if (errflag != 0)
        !            30:                return  0;
        !            31: 
        !            32:        switch ( state ) {
        !            33: 
        !            34:                /*      1st switch:  standard output -> -o file */
        !            35: 
        !            36:                case 0: origoup = dup( 1 );
        !            37:                                  close( 1 );
        !            38:                        fd      = creat( oupptr,0666 );
        !            39:                        if ( fd < 0 ) {
        !            40:                                write( 2,"-o file open error\n",19 );
        !            41:                                ++errflag;
        !            42:                                fd      = dup( origoup );
        !            43:                                close( origoup );
        !            44:                                retval  = -1;
        !            45:                        }
        !            46:                        break;
        !            47: 
        !            48:                /*      2nd switch:  standard output -> shell output file  */
        !            49: 
        !            50:                case 1: close( 1 );
        !            51:                        fd      = dup( origoup );
        !            52:                        close( origoup );
        !            53:                        break;
        !            54: 
        !            55:                /*      3rd switch:  standard output -> -o file */
        !            56: 
        !            57:                case 2: close( 1 );
        !            58:                        fd      = open( oupptr,1 );
        !            59:                        if ( fd < 0 ) {
        !            60:                                write( 2,"error reopening\n",16 );
        !            61:                        }
        !            62:                                lseek( 1,0,2 );
        !            63:                        break;
        !            64: 
        !            65:                default:
        !            66:                        write( 2,"swcinp too many times\n",22 );
        !            67:        }
        !            68:        ++state;
        !            69:        return  retval;
        !            70: }

unix.superglobalmegacorp.com

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