|
|
researchv10 Norman
# include "curses.ext"
# include <signal.h>
/* @(#) subwin.c: 1.1 10/15/83 (1.17 3/16/83) */
char *calloc();
char *malloc();
extern char *getenv();
extern WINDOW *makenew();
WINDOW *
subwin(orig, num_lines, num_cols, begy, begx)
register WINDOW *orig;
int num_lines, num_cols, begy, begx;
{
register int i;
register WINDOW *win;
register int by, bx, nlines, ncols;
register int j, k;
by = begy;
bx = begx;
nlines = num_lines;
ncols = num_cols;
/*
* make sure window fits inside the original one
*/
# ifdef DEBUG
if(outf) fprintf(outf, "SUBWIN(%0.2o, %d, %d, %d, %d)\n", orig, nlines, ncols, by, bx);
# endif
if (by < orig->_begy || bx < orig->_begx
|| by + nlines > orig->_begy + orig->_maxy
|| bx + ncols > orig->_begx + orig->_maxx)
return NULL;
if (nlines == 0)
nlines = orig->_maxy - orig->_begy - by;
if (ncols == 0)
ncols = orig->_maxx - orig->_begx - bx;
if ((win = makenew(nlines, ncols, by, bx)) == NULL)
return NULL;
j = by - orig->_begy;
k = bx - orig->_begx;
for (i = 0; i < nlines; i++)
win->_y[i] = &orig->_y[j++][k];
win->_flags = _SUBWIN;
return win;
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.