int mvwin(WINDOW *win, int by, int bx) { WINDOW *orig; int dy, dx; if (by + win->_maxy > LINES || bx + win->_maxx > COLS) return (ERR); dy = by - win->_begy; dx = bx - win->_begx; orig = win->_orig; if (orig == NULL) { orig = win; do { win->_begy += dy; win->_begx += dx; _swflags_(win); win = win->_nextp; } while (win != orig); } else { if (by < orig->_begy || win->_maxy + dy > orig->_maxy) return (ERR); if (bx < orig->_begx || win->_maxx + dx > orig->_maxx) return (ERR); win->_begy = (short)by; win->_begx = (short)bx; _swflags_(win); _set_subwin_(orig, win); } (void) touchwin(win); return (OK); }
int mvwin( reg WINDOW *win, reg int by, reg int bx ) { register WINDOW *orig; register int dy, dx; if (by + win->_maxy > LINES || bx + win->_maxx > COLS) return ERR; dy = by - win->_begy; dx = bx - win->_begx; orig = win->_orig; if (orig == NULL) { orig = win; do { win->_begy += dy; win->_begx += dx; _swflags_(win); win = win->_nextp; } while (win != orig); } else { if (by < orig->_begy || win->_maxy + dy > orig->_maxy) return ERR; if (bx < orig->_begx || win->_maxx + dx > orig->_maxx) return ERR; win->_begy = by; win->_begx = bx; _swflags_(win); _set_subwin_(orig, win); } touchwin(win); return OK; }
static WINDOW * makenew(int num_lines, int num_cols, int begy, int begx) { WINDOW *win; int by, bx, nl, nc; by = begy; bx = begx; nl = num_lines; nc = num_cols; #ifdef DEBUG fprintf(outf, "MAKENEW(%d, %d, %d, %d)\n", nl, nc, by, bx); #endif if ((win = (WINDOW *) malloc(sizeof (*win))) == NULL) return (NULL); #ifdef DEBUG fprintf(outf, "MAKENEW: nl = %d\n", nl); #endif if ((win->_y = (char **)malloc(nl * sizeof (win->_y[0]))) == NULL) { free(win); return (NULL); } #ifdef DEBUG fprintf(outf, "MAKENEW: nc = %d\n", nc); #endif win->_cury = win->_curx = 0; win->_clear = FALSE; win->_maxy = (short)nl; win->_maxx = (short)nc; win->_begy = (short)by; win->_begx = (short)bx; win->_flags = 0; win->_scroll = win->_leave = FALSE; _swflags_(win); win->_orig = NULL; #ifdef DEBUG fprintf(outf, "MAKENEW: win->_clear = %d\n", win->_clear); fprintf(outf, "MAKENEW: win->_leave = %d\n", win->_leave); fprintf(outf, "MAKENEW: win->_scroll = %d\n", win->_scroll); fprintf(outf, "MAKENEW: win->_flags = %0.2o\n", win->_flags); fprintf(outf, "MAKENEW: win->_maxy = %d\n", win->_maxy); fprintf(outf, "MAKENEW: win->_maxx = %d\n", win->_maxx); fprintf(outf, "MAKENEW: win->_begy = %d\n", win->_begy); fprintf(outf, "MAKENEW: win->_begx = %d\n", win->_begx); #endif return (win); }