V10/ncurses/screen/newwin.c
# include "curses.ext"
# include <signal.h>
/* @(#) newwin.c: 1.1 10/15/83 (1.17 3/16/83) */
char *calloc();
char *malloc();
extern char *getenv();
extern WINDOW *makenew();
/*
* allocate space for and set up defaults for a new _window
*
* 1/26/81 (Berkeley). This used to be newwin.c
*/
WINDOW *
newwin(nlines, ncols, by, bx)
register int nlines, ncols, by, bx;
{
register WINDOW *win;
register chtype *sp;
register int i;
char *calloc();
if (by + nlines > LINES)
nlines = LINES - by;
if (bx + ncols > COLS)
ncols = COLS - bx;
if (nlines == 0)
nlines = LINES - by;
if (ncols == 0)
ncols = COLS - bx;
if ((win = makenew(nlines, ncols, by, bx)) == NULL)
return NULL;
for (i = 0; i < nlines; i++)
if ((win->_y[i] = (chtype *) calloc(ncols, sizeof (chtype))) == NULL) {
register int j;
for (j = 0; j < i; j++)
cfree((char *)win->_y[j]);
cfree((char *)win->_firstch);
cfree((char *)win->_lastch);
cfree((char *)win->_y);
cfree((char *)win);
return NULL;
}
else
for (sp = win->_y[i]; sp < win->_y[i] + ncols; )
*sp++ = ' ';
return win;
}