* allocate space for and set up defaults for a new window
static WINDOW
*makenew();
# undef nl /* don't need it here, and it interferes */
newwin(num_lines
, num_cols
, begy
, begx
)
int num_lines
, num_cols
, begy
, begx
;
reg
int i
, by
, bx
, nl
, nc
;
if ((win
= makenew(nl
, nc
, by
, bx
)) == NULL
)
if ((win
->_y
[i
] = (char *) calloc(nc
, sizeof (char))) == NULL
) {
for (sp
= win
->_y
[i
]; sp
< win
->_y
[i
] + nc
; )
subwin(orig
, num_lines
, num_cols
, begy
, begx
)
int num_lines
, num_cols
, begy
, begx
; {
* make sure window fits inside the original one
fprintf(outf
, "SUBWIN(%0.2o, %d, %d, %d, %d)\n", orig
, nl
, nc
, by
, bx
);
if (by
< orig
->_begy
|| bx
< orig
->_begx
|| by
+ nl
> orig
->_maxy
|| bx
+ nc
> orig
->_maxx
)
nl
= orig
->_maxy
- orig
->_begy
- by
;
nc
= orig
->_maxx
- orig
->_begx
- bx
;
if ((win
= makenew(nl
, nc
, by
, bx
)) == NULL
)
win
->_y
[i
] = &orig
->_y
[j
++][k
];
* This routine sets up a window buffer and returns a pointer to it.
makenew(num_lines
, num_cols
, begy
, begx
)
int num_lines
, num_cols
, begy
, begx
; {
fprintf(outf
, "MAKENEW(%d, %d, %d, %d)\n", nl
, nc
, by
, bx
);
if ((win
= (WINDOW
*) malloc(sizeof (WINDOW
))) == NULL
)
fprintf(outf
, "MAKENEW: nl = %d\n", nl
);
if ((win
->_y
= (char **) calloc(nl
, sizeof (char *))) == NULL
) {
if ((win
->_firstch
= calloc(nl
, sizeof (short))) == NULL
) {
if ((win
->_lastch
= calloc(nl
, sizeof (short))) == NULL
) {
fprintf(outf
, "MAKENEW: nc = %d\n", nc
);
win
->_cury
= win
->_curx
= 0;
win
->_clear
= (nl
== LINES
&& nc
== COLS
);
win
->_scroll
= win
->_leave
= FALSE
;
win
->_firstch
[i
] = win
->_lastch
[i
] = _NOCHANGE
;
if (bx
== 0 && nl
== LINES
&& by
== 0)
win
->_flags
|= _SCROLLWIN
;
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
);