/*
 * 5799-WZQ (C) COPYRIGHT = NONE
 * LICENSED MATERIALS - PROPERTY OF IBM
 */
/* $Header:DFDISPOSE.c 12.0$ */
/* $ACIS:DFDISPOSE.c 12.0$ */
/* $Source: /ibm/acis/usr/src/usr.lib/libpc/RCS/DFDISPOSE.c,v $ */

#ifndef lint
static char *rcsid = "$Header:DFDISPOSE.c 12.0$";
#endif

/* Copyright (c) 1982 Regents of the University of California */

static	char sccsid[] = "@(#)DFDISPOSE.c	4.2	(Berkeley)	1/21/83";

/*
 * 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, TRUE);
	prev->fchain = next;
	DISPOSE(var, size);
}
