date and time created 83/01/10 14:50:59 by mckusick
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 11 Jan 1983 06:50:59 +0000 (22:50 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Tue, 11 Jan 1983 06:50:59 +0000 (22:50 -0800)
SCCS-vsn: usr.bin/pascal/libpc/DFDISPOSE.c 4.1

usr/src/usr.bin/pascal/libpc/DFDISPOSE.c [new file with mode: 0644]

diff --git a/usr/src/usr.bin/pascal/libpc/DFDISPOSE.c b/usr/src/usr.bin/pascal/libpc/DFDISPOSE.c
new file mode 100644 (file)
index 0000000..cca1429
--- /dev/null
@@ -0,0 +1,32 @@
+/* Copyright (c) 1982 Regents of the University of California */
+
+static char sccsid[] = "@(#)DFDISPOSE.c        4.1     (Berkeley)      %G%";
+
+/*
+ * Close all active files within a dynamic record,
+ * then dispose of the record.
+ */
+
+#include "h00vars.h"
+#include "libpc.h"
+
+DFDISPOSE(var, size)
+       char    **var;  /* pointer to pointer being deallocated */
+       long    size;   /* sizeof(bletch) */
+{
+       register struct iorec   *next, *prev;
+       struct iorec *start, *end;
+
+       start = (struct iorec *)(*var);
+       end = (struct iorec *)(*var + size);
+       prev = (struct iorec *)(&_fchain);
+       next = _fchain.fchain;
+       while(next != FILNIL && (next->flev < GLVL || next < start)) {
+               prev = next;
+               next = next->fchain;
+       }
+       while(next != FILNIL && next < end)
+               next = PFCLOSE(next);
+       prev->fchain = next;
+       DISPOSE(var, size);
+}