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