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