|
|
1.1 ! root 1: ! 2: /* ! 3: osclose( ioptr ) closes the file represented by the ioblk. ! 4: osclose will flush an output file's buffer before closing. ! 5: */ ! 6: ! 7: #include "spitblks.h" ! 8: #include "spitio.h" ! 9: ! 10: int ! 11: osclose( ioptr ) ! 12: ! 13: struct ioblk *ioptr; ! 14: ! 15: { ! 16: register int errcnt = 0; ! 17: ! 18: if ( !(ioptr -> flg & IO_OPN)) ! 19: return 0; ! 20: ! 21: if ( ioptr -> flg & IO_OUP ) ! 22: errcnt += flush( ioptr ); ! 23: ! 24: if ( ioptr -> flg & IO_SYS ) ! 25: return errcnt; ! 26: ! 27: if ( close( ioptr -> fdn ) < 0) ! 28: errcnt++; ! 29: ioptr -> flg &= ~IO_OPN; ! 30: ! 31: if ( ioptr -> flg & IO_PIP ) { ! 32: if ( ioptr -> flg & IO_DED ) ! 33: ioptr -> flg &= ~IO_DED; ! 34: else if ( ioptr -> flg & IO_INP ) { ! 35: kill( ioptr -> pid ); ! 36: oswait( ioptr -> pid); ! 37: } else oswait( ioptr -> pid ); ! 38: } ! 39: ! 40: return errcnt; ! 41: } ! 42:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.