/********************************************************************** * Copyright (c) Digital Equipment Corporation 1984, 1985, 1986. * * All Rights Reserved. * * Reference "/usr/src/COPYRIGHT" for applicable restrictions. * **********************************************************************/ /* SCCSID: @(#)delwin.c 3.0 4/22/86 */ # include "curses.ext" /* * This routine deletes a window and releases it back to the system. * * 4/6/83 (Berkeley) @(#)delwin.c 1.5 */ delwin(win) reg WINDOW *win; { reg int i; reg WINDOW *wp, *np; if (win->_orig == NULL) { /* * If we are the original window, delete the space for * all the subwindows, and the array of space as well. */ for (i = 0; i < win->_maxy && win->_y[i]; i++) cfree(win->_y[i]); wp = win->_nextp; while (wp != win) { np = wp->_nextp; delwin(wp); wp = np; } } else { /* * If we are a subwindow, take ourself out of the * list. NOTE: if we are a subwindow, the minimum list * is orig followed by this subwindow, so there are * always at least two windows in the list. */ for (wp = win->_nextp; wp->_nextp != win; wp = wp->_nextp) continue; wp->_nextp = win->_nextp; } cfree(win->_y); cfree(win->_firstch); cfree(win->_lastch); cfree(win); }