|
|
1.1 ! root 1: # include "curses.ext" ! 2: # include <signal.h> ! 3: /* @(#) subwin.c: 1.1 10/15/83 (1.17 3/16/83) */ ! 4: ! 5: char *calloc(); ! 6: char *malloc(); ! 7: extern char *getenv(); ! 8: ! 9: extern WINDOW *makenew(); ! 10: ! 11: WINDOW * ! 12: subwin(orig, num_lines, num_cols, begy, begx) ! 13: register WINDOW *orig; ! 14: int num_lines, num_cols, begy, begx; ! 15: { ! 16: ! 17: register int i; ! 18: register WINDOW *win; ! 19: register int by, bx, nlines, ncols; ! 20: register int j, k; ! 21: ! 22: by = begy; ! 23: bx = begx; ! 24: nlines = num_lines; ! 25: ncols = num_cols; ! 26: ! 27: /* ! 28: * make sure window fits inside the original one ! 29: */ ! 30: # ifdef DEBUG ! 31: if(outf) fprintf(outf, "SUBWIN(%0.2o, %d, %d, %d, %d)\n", orig, nlines, ncols, by, bx); ! 32: # endif ! 33: if (by < orig->_begy || bx < orig->_begx ! 34: || by + nlines > orig->_begy + orig->_maxy ! 35: || bx + ncols > orig->_begx + orig->_maxx) ! 36: return NULL; ! 37: if (nlines == 0) ! 38: nlines = orig->_maxy - orig->_begy - by; ! 39: if (ncols == 0) ! 40: ncols = orig->_maxx - orig->_begx - bx; ! 41: if ((win = makenew(nlines, ncols, by, bx)) == NULL) ! 42: return NULL; ! 43: j = by - orig->_begy; ! 44: k = bx - orig->_begx; ! 45: for (i = 0; i < nlines; i++) ! 46: win->_y[i] = &orig->_y[j++][k]; ! 47: win->_flags = _SUBWIN; ! 48: return win; ! 49: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.