|
|
1.1 ! root 1: # include "curses.ext" ! 2: # include <signal.h> ! 3: /* @(#) makenew.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: /* ! 12: * This routine sets up a window buffer and returns a pointer to it. ! 13: */ ! 14: WINDOW * ! 15: makenew(num_lines, num_cols, begy, begx) ! 16: int num_lines, num_cols, begy, begx; ! 17: { ! 18: ! 19: register int i; ! 20: register WINDOW *win; ! 21: register int by, bx, nlines, ncols; ! 22: char *malloc(), *calloc(); ! 23: ! 24: by = begy; ! 25: bx = begx; ! 26: nlines = num_lines; ! 27: ncols = num_cols; ! 28: ! 29: if (nlines <= 0 || ncols <= 0 || by > LINES || bx > COLS) ! 30: return NULL; ! 31: ! 32: # ifdef DEBUG ! 33: if(outf) fprintf(outf, "MAKENEW(%d, %d, %d, %d)\n", nlines, ncols, by, bx); ! 34: # endif ! 35: if ((win = (WINDOW *) calloc(1, sizeof (WINDOW))) == NULL) ! 36: return NULL; ! 37: # ifdef DEBUG ! 38: if(outf) fprintf(outf, "MAKENEW: nlines = %d\n", nlines); ! 39: # endif ! 40: if ((win->_y = (chtype **) calloc(nlines, sizeof (chtype *))) == NULL) { ! 41: cfree((char *)win); ! 42: return (WINDOW *) NULL; ! 43: } ! 44: if ((win->_firstch = (short *) calloc(nlines, sizeof (short))) == NULL) { ! 45: cfree((char *)win); ! 46: cfree((char *)win->_y); ! 47: } ! 48: if ((win->_lastch = (short *) calloc(nlines, sizeof (short))) == NULL) { ! 49: cfree((char *)win); ! 50: cfree((char *)win->_y); ! 51: cfree((char *)win->_firstch); ! 52: } ! 53: # ifdef DEBUG ! 54: if(outf) fprintf(outf, "MAKENEW: ncols = %d\n", ncols); ! 55: # endif ! 56: win->_cury = win->_curx = 0; ! 57: win->_clear = (nlines == LINES && ncols == COLS); ! 58: win->_maxy = nlines; ! 59: win->_maxx = ncols; ! 60: win->_begy = by; ! 61: win->_begx = bx; ! 62: win->_scroll = win->_leave = win->_use_idl = FALSE; ! 63: win->_tmarg = 0; ! 64: win->_bmarg = nlines - 1; ! 65: for (i = 0; i < nlines; i++) ! 66: win->_firstch[i] = win->_lastch[i] = _NOCHANGE; ! 67: if (bx + ncols == COLS) { ! 68: win->_flags |= _ENDLINE; ! 69: /* Full window: scrolling heuristics (linefeed) work */ ! 70: if (nlines == LINES && ncols == COLS && ! 71: by == 0 && bx == 0 && scroll_forward) ! 72: win->_flags |= _FULLWIN; ! 73: /* Scrolling window: it might scroll on us by accident */ ! 74: if (by + nlines == LINES && auto_right_margin) ! 75: win->_flags |= _SCROLLWIN; ! 76: } ! 77: # ifdef DEBUG ! 78: if(outf) fprintf(outf, "MAKENEW: win->_clear = %d\n", win->_clear); ! 79: if(outf) fprintf(outf, "MAKENEW: win->_leave = %d\n", win->_leave); ! 80: if(outf) fprintf(outf, "MAKENEW: win->_scroll = %d\n", win->_scroll); ! 81: if(outf) fprintf(outf, "MAKENEW: win->_flags = %0.2o\n", win->_flags); ! 82: if(outf) fprintf(outf, "MAKENEW: win->_maxy = %d\n", win->_maxy); ! 83: if(outf) fprintf(outf, "MAKENEW: win->_maxx = %d\n", win->_maxx); ! 84: if(outf) fprintf(outf, "MAKENEW: win->_begy = %d\n", win->_begy); ! 85: if(outf) fprintf(outf, "MAKENEW: win->_begx = %d\n", win->_begx); ! 86: # endif ! 87: return win; ! 88: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.