|
|
1.1 root 1: /*-
2: * Copyright (c) 1982 The Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: static char sccsid[] = "@(#)PFCLOSE.c 1.4 (Berkeley) 4/9/90";
22: #endif /* not lint */
23:
24: /*
25: * Close a Pascal file deallocating resources as appropriate.
26: */
27:
28: #include "h00vars.h"
29: #include "libpc.h"
30:
31: struct iorec *
32: PFCLOSE(filep, lastuse)
33: register struct iorec *filep;
34: bool lastuse;
35: {
36: if ((filep->funit & FDEF) == 0 && filep->fbuf != NULL) {
37: /*
38: * Have a previous buffer, close associated file.
39: */
40: if (filep->fblk > PREDEF) {
41: fflush(filep->fbuf);
42: setbuf(filep->fbuf, NULL);
43: }
44: fclose(filep->fbuf);
45: if (ferror(filep->fbuf)) {
46: ERROR("%s: Close failed\n", filep->pfname);
47: return;
48: }
49: /*
50: * Temporary files are discarded.
51: */
52: if ((filep->funit & TEMP) != 0 && lastuse &&
53: unlink(filep->pfname)) {
54: PERROR("Could not remove ", filep->pfname);
55: return;
56: }
57: }
58: _actfile[filep->fblk] = FILNIL;
59: return (filep->fchain);
60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.