From b8e9ff4740eeb1a23ef1efb77f81bd7341f313e8 Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Mon, 10 Jan 1983 22:50:59 -0800 Subject: [PATCH 1/1] date and time created 83/01/10 14:50:59 by mckusick SCCS-vsn: usr.bin/pascal/libpc/DFDISPOSE.c 4.1 --- usr/src/usr.bin/pascal/libpc/DFDISPOSE.c | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 usr/src/usr.bin/pascal/libpc/DFDISPOSE.c diff --git a/usr/src/usr.bin/pascal/libpc/DFDISPOSE.c b/usr/src/usr.bin/pascal/libpc/DFDISPOSE.c new file mode 100644 index 0000000000..cca142934e --- /dev/null +++ b/usr/src/usr.bin/pascal/libpc/DFDISPOSE.c @@ -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); +} -- 2.20.1