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

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

unix.superglobalmegacorp.com

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