|
|
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.