1: #include "../h/rt.h"
2:
3: /*
4: * close(f) - close file f.
5: */
6:
7: Xclose(nargs, arg1, arg0)
8: int nargs;
9: struct descrip arg1, arg0;
10: {
11: register int i;
12:
13: /*
14: * f must be a file.
15: */
16: DeRef(arg1)
17: if (QUAL(arg1) || TYPE(arg1) != T_FILE)
18: runerr(105, &arg1);
19:
20: /*
21: * If f has a buffer associated with it, "free" it.
22: */
23: for (i = 0; i < numbufs; i++) {
24: if (bufused[i] == BLKLOC(arg1)->file.fd) {
25: bufused[i] = NULL;
26: break;
27: }
28: }
29:
30: /*
31: * Close f, using fclose or pclose as appropriate.
32: */
33: if (BLKLOC(arg1)->file.status & FS_PIPE)
34: pclose(BLKLOC(arg1)->file.fd);
35: else
36: fclose(BLKLOC(arg1)->file.fd);
37: BLKLOC(arg1)->file.status = 0;
38:
39: /*
40: * Return the closed file.
41: */
42: arg0 = arg1;
43: }
44:
45: Procblock(close,1)
Defined functions
Xclose
defined in line
7;
never used