BSD 4_1_snap release
[unix-history] / usr / src / lib / libpc / PCLOSE.c
index a23cfe9..605e2c0 100644 (file)
@@ -1,9 +1,8 @@
 /* Copyright (c) 1979 Regents of the University of California */
 
 /* Copyright (c) 1979 Regents of the University of California */
 
-static char sccsid[] = "@(#)PCLOSE.c 1.1 10/29/80";
+static char sccsid[] = "@(#)PCLOSE.c 1.4 6/10/81";
 
 #include "h00vars.h"
 
 #include "h00vars.h"
-#include "h01errs.h"
 
 PCLOSE(level)
 
 
 PCLOSE(level)
 
@@ -15,15 +14,20 @@ PCLOSE(level)
        while(next != FILNIL && next->flev <= level) {
                if (next->fbuf != 0) {
                        if ((next->funit & FDEF) == 0) {
        while(next != FILNIL && next->flev <= level) {
                if (next->fbuf != 0) {
                        if ((next->funit & FDEF) == 0) {
+                               if (next->fblk > PREDEF) {
+                                       fflush(next->fbuf);
+                                       setbuf(next->fbuf, NULL);
+                               }
                                fclose(next->fbuf);
                                if (ferror(next->fbuf)) {
                                fclose(next->fbuf);
                                if (ferror(next->fbuf)) {
-                                       ERROR(ECLOSE, next->pfname);
+                                       ERROR("%s: Close failed\n",
+                                               next->pfname);
                                        return;
                                }
                        }
                        if ((next->funit & TEMP) != 0 &&
                            unlink(next->pfname)) {
                                        return;
                                }
                        }
                        if ((next->funit & TEMP) != 0 &&
                            unlink(next->pfname)) {
-                               ERROR(EREMOVE, next->pfname);
+                               PERROR("Could not remove ", next->pfname);
                                return;
                        }
                }
                                return;
                        }
                }