creps@silver.bacs.indiana.edu (Steve Creps) (01/24/88)
I went back and had some more trouble after changing the routine I
mentioned in my last message. Then I realized that the PC Curses code
itself was dependent on _maxy and _maxx being equal to the number of
lines or columns in a window. That meant I had to go through all the
code replacing these variables as appropriate. Thank goodness for fgrep!
After recompiling the Curses library with these changes, the program
I'm porting worked well.
Patches follow my .signature.
- - - - - - - - -
Steve Creps on the VAX 8650 running Ultrix 2.0-1 at Indiana University.
creps@silver.bacs.indiana.edu, ...iuvax!silver!creps, creps@iubacs.bitnet
"F-14 Tomcat! There IS no substitute."
*** old/boxes.c
--- boxes.c
**************
*** 36,42
int i;
if (ymax == 0)
! ymax = win->_maxy;
if (xmax == 0)
xmax = win->_maxx;
--- 36,42 -----
int i;
if (ymax == 0)
! ymax = win->_maxy - 1;
if (xmax == 0)
xmax = win->_maxx - 1;
**************
*** 38,44
if (ymax == 0)
ymax = win->_maxy;
if (xmax == 0)
! xmax = win->_maxx;
if (ymin >= win->_maxy || ymax > win->_maxy ||
xmin >= win->_maxx || xmax > win->_maxx ||
--- 38,44 -----
if (ymax == 0)
ymax = win->_maxy - 1;
if (xmax == 0)
! xmax = win->_maxx - 1;
if (ymin >= win->_maxy || ymax > win->_maxy ||
xmin >= win->_maxx || xmax > win->_maxx ||
*** old/charadd.c
--- charadd.c
**************
*** 51,57
int ts = win->_tabsize;
ch &= 0xff; /* kill any sing-extend */
! if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
return(ERR);
switch (ch)
{
--- 51,57 -----
int ts = win->_tabsize;
ch &= 0xff; /* kill any sing-extend */
! if (y >= win->_maxy || x >= win->_maxx || y < 0 || x < 0)
return(ERR);
switch (ch)
{
**************
*** 95,101
win->_maxchng[y] = x;
} /* if */
win->_line[y][x++] = ch;
! if (x > win->_maxx) /* wrap around test */
{
x = 0;
if ((y = newline(win, y)) < 0)
--- 95,101 -----
win->_maxchng[y] = x;
} /* if */
win->_line[y][x++] = ch;
! if (x >= win->_maxx) /* wrap around test */
{
x = 0;
if ((y = newline(win, y)) < 0)
*** old/chardel.c
--- chardel.c
**************
*** 28,34
int *end;
short y = win->_cury;
short x = win->_curx;
! short maxx = win->_maxx;
end = &win->_line[y][maxx];
temp1 = &win->_line[y][x];
--- 28,34 -----
int *end;
short y = win->_cury;
short x = win->_curx;
! short maxx = win->_maxx - 1;
end = &win->_line[y][maxx];
temp1 = &win->_line[y][x];
*** old/charins.c
--- charins.c
**************
*** 28,34
int *end;
int x = win->_curx;
int y = win->_cury;
! int maxx = win->_maxx;
if((c < ' ') && (c == '\n' || c == '\r' || c == '\t' || c == '\b'))
return(waddch(win, c));
--- 28,34 -----
int *end;
int x = win->_curx;
int y = win->_cury;
! int maxx = win->_maxx - 1;
if((c < ' ') && (c == '\n' || c == '\r' || c == '\t' || c == '\b'))
return(waddch(win, c));
*** old/clrtobot.c
--- clrtobot.c
**************
*** 35,41
for (y = win->_cury; y <= win->_regbottom; y++)
{
minx = _NO_CHANGE;
! end = &win->_line[y][win->_maxx];
for (ptr = &win->_line[y][startx]; ptr <= end; ptr++)
{
if (*ptr != blank)
--- 35,41 -----
for (y = win->_cury; y <= win->_regbottom; y++)
{
minx = _NO_CHANGE;
! end = &win->_line[y][win->_maxx - 1];
for (ptr = &win->_line[y][startx]; ptr <= end; ptr++)
{
if (*ptr != blank)
*** old/clrtoeol.c
--- clrtoeol.c
**************
*** 34,40
x = win->_curx;
blank = ' ' | (win->_attrs & ATR_MSK);
! end = &win->_line[y][win->_maxx];
minx = _NO_CHANGE;
maxx = &win->_line[y][x];
for (ptr = maxx; ptr <= end; ptr++)
--- 34,40 -----
x = win->_curx;
blank = ' ' | (win->_attrs & ATR_MSK);
! end = &win->_line[y][win->_maxx - 1];
minx = _NO_CHANGE;
maxx = &win->_line[y][x];
for (ptr = maxx; ptr <= end; ptr++)
*** old/linedel.c
--- linedel.c
**************
*** 35,41
{
win->_line[y] = win->_line[y+1];
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx;
}
win->_minchng[y] = 0;
win->_maxchng[y] = win->_maxx;
--- 35,41 -----
{
win->_line[y] = win->_line[y+1];
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx - 1;
}
win->_minchng[y] = 0;
win->_maxchng[y] = win->_maxx - 1;
**************
*** 38,44
win->_maxchng[y] = win->_maxx;
}
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx;
win->_line[win->_regbottom] = temp;
for (end = &(temp[win->_maxx]); temp <= end;)
*temp++ = blank;
--- 38,44 -----
win->_maxchng[y] = win->_maxx - 1;
}
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx - 1;
win->_line[win->_regbottom] = temp;
for (end = &(temp[win->_maxx - 1]); temp <= end;)
*temp++ = blank;
**************
*** 40,46
win->_minchng[y] = 0;
win->_maxchng[y] = win->_maxx;
win->_line[win->_regbottom] = temp;
! for (end = &(temp[win->_maxx]); temp <= end;)
*temp++ = blank;
return(OK);
} /* wdeleteln */
--- 40,46 -----
win->_minchng[y] = 0;
win->_maxchng[y] = win->_maxx - 1;
win->_line[win->_regbottom] = temp;
! for (end = &(temp[win->_maxx - 1]); temp <= end;)
*temp++ = blank;
return(OK);
} /* wdeleteln */
*** old/lineins.c
--- lineins.c
**************
*** 33,39
{
win->_line[y] = win->_line[y-1];
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx;
} /* for */
win->_line[win->_cury] = temp;
for (end = &temp[win->_maxx]; temp <= end; temp++)
--- 33,39 -----
{
win->_line[y] = win->_line[y-1];
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx - 1;
} /* for */
win->_line[win->_cury] = temp;
for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
**************
*** 36,42
win->_maxchng[y] = win->_maxx;
} /* for */
win->_line[win->_cury] = temp;
! for (end = &temp[win->_maxx]; temp <= end; temp++)
*temp = blank;
win->_minchng[win->_cury] = 0;
win->_maxchng[win->_cury] = win->_maxx;
--- 36,42 -----
win->_maxchng[y] = win->_maxx - 1;
} /* for */
win->_line[win->_cury] = temp;
! for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
*temp = blank;
win->_minchng[win->_cury] = 0;
win->_maxchng[win->_cury] = win->_maxx - 1;
**************
*** 39,45
for (end = &temp[win->_maxx]; temp <= end; temp++)
*temp = blank;
win->_minchng[win->_cury] = 0;
! win->_maxchng[win->_cury] = win->_maxx;
return(OK);
} /* winsertln */
--- 39,45 -----
for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
*temp = blank;
win->_minchng[win->_cury] = 0;
! win->_maxchng[win->_cury] = win->_maxx - 1;
return(OK);
} /* winsertln */
*** old/move.c
--- move.c
**************
*** 23,29
int y;
int x;
{
! if ((x < 0)||(x > win->_maxx)||(y < win->_regtop)||(y >win->_regbottom))
return(ERR);
win->_curx = x;
win->_cury = y;
--- 23,29 -----
int y;
int x;
{
! if ((x < 0)||(x >= win->_maxx)||(y < win->_regtop)||(y >win->_regbottom))
return(ERR);
win->_curx = x;
win->_cury = y;
*** old/newwin.c
--- newwin.c
**************
*** 59,66
win->_curx = 0;
win->_cury = 0;
! win->_maxy = num_lines - 1;
! win->_maxx = num_columns - 1;
win->_begy = begy;
win->_begx = begx;
win->_flags = 0;
--- 59,66 -----
win->_curx = 0;
win->_cury = 0;
! win->_maxy = num_lines;
! win->_maxx = num_columns;
win->_begy = begy;
win->_begx = begx;
win->_flags = 0;
**************
*** 157,164
if (
begy < orig->_begy ||
begx < orig->_begx ||
! (begy + num_lines) > (orig->_begy + orig->_maxy) ||
! (begx + num_columns) > (orig->_begx + orig->_maxx)
)
return((WINDOW *) ERR);
--- 157,164 -----
if (
begy < orig->_begy ||
begx < orig->_begx ||
! (begy + num_lines) >= (orig->_begy + orig->_maxy) ||
! (begx + num_columns) >= (orig->_begx + orig->_maxx)
)
return((WINDOW *) ERR);
**************
*** 163,169
return((WINDOW *) ERR);
if (num_lines == 0)
! num_lines = orig->_maxy - (begy - orig->_begy);
if (num_columns == 0)
num_columns = orig->_maxx - (begx - orig->_begx);
if ((win = makenew(num_lines, num_columns, begy, begx)) == (WINDOW *) ERR)
--- 163,169 -----
return((WINDOW *) ERR);
if (num_lines == 0)
! num_lines = orig->_maxy - 1 - (begy - orig->_begy);
if (num_columns == 0)
num_columns = orig->_maxx - 1 - (begx - orig->_begx);
if ((win = makenew(num_lines, num_columns, begy, begx)) == (WINDOW *) ERR)
**************
*** 165,171
if (num_lines == 0)
num_lines = orig->_maxy - (begy - orig->_begy);
if (num_columns == 0)
! num_columns = orig->_maxx - (begx - orig->_begx);
if ((win = makenew(num_lines, num_columns, begy, begx)) == (WINDOW *) ERR)
return((WINDOW *) ERR);
--- 165,171 -----
if (num_lines == 0)
num_lines = orig->_maxy - 1 - (begy - orig->_begy);
if (num_columns == 0)
! num_columns = orig->_maxx - 1 - (begx - orig->_begx);
if ((win = makenew(num_lines, num_columns, begy, begx)) == (WINDOW *) ERR)
return((WINDOW *) ERR);
*** old/overlay.c
--- overlay.c
**************
*** 33,40
int last_line;
int last_col;
! last_col = min(win1->_maxx, win2->_maxx);
! last_line = min(win1->_maxy, win2->_maxy);
attrs = win2->_attrs & ATR_MSK;
minchng = win2->_minchng;
maxchng = win2->_maxchng;
--- 33,40 -----
int last_line;
int last_col;
! last_col = min(win1->_maxx, win2->_maxx) - 1;
! last_line = min(win1->_maxy, win2->_maxy) - 1;
attrs = win2->_attrs & ATR_MSK;
minchng = win2->_minchng;
maxchng = win2->_maxchng;
**************
*** 95,102
int last_col;
last_col = min(win1->_maxx, win2->_maxx);
! last_line = min(win1->_maxy, win2->_maxy);
! attrs = win2->_attrs & ATR_MSK;
minchng = win2->_minchng;
maxchng = win2->_maxchng;
--- 95,102 -----
int last_line;
int last_col;
! last_col = min(win1->_maxx, win2->_maxx) - 1;
! last_line = min(win1->_maxy, win2->_maxy) - 1;
attrs = win2->_attrs & ATR_MSK;
minchng = win2->_minchng;
maxchng = win2->_maxchng;
*** old/refresh.c
--- refresh.c
**************
*** 53,59
begy = win->_begy;
begx = win->_begx;
! for (i=0, j=begy; i <= win->_maxy; i++, j++)
{
if (win->_minchng[i] != _NO_CHANGE)
{
--- 53,59 -----
begy = win->_begy;
begx = win->_begx;
! for (i=0, j=begy; i < win->_maxy; i++, j++)
{
if (win->_minchng[i] != _NO_CHANGE)
{
*** old/scrreg.c
--- scrreg.c
**************
*** 30,36
&&
(win->_cury <= bottom)
&&
! (bottom <= win->_maxy)
)
{
win->_regtop = top;
--- 30,36 -----
&&
(win->_cury <= bottom)
&&
! (bottom < win->_maxy)
)
{
win->_regtop = top;
*** old/strget.c
--- strget.c
**************
*** 152,158
x += 2;
else /* normal char */
x++;
! if (x > w->_maxx) /* go to next line? */
x = 0;
} /* while */
if (!(w->_curx)) /* if step-over newline */
--- 152,158 -----
x += 2;
else /* normal char */
x++;
! if (x >= w->_maxx) /* go to next line? */
x = 0;
} /* while */
if (!(w->_curx)) /* if step-over newline */
**************
*** 156,162
x = 0;
} /* while */
if (!(w->_curx)) /* if step-over newline */
! nbs = w->_maxx+1 - x;
else /* in-line tab */
nbs = w->_curx - x; /* positions to erase */
} /* if */
--- 156,162 -----
x = 0;
} /* while */
if (!(w->_curx)) /* if step-over newline */
! nbs = w->_maxx - x;
else /* in-line tab */
nbs = w->_curx - x; /* positions to erase */
} /* if */
**************
*** 168,175
(w->_cury) /* if not on top line */
{
mvwaddch(w,w->_cury-1,w->_maxx,' '); /* put space at line end */
! wmove(w,w->_cury-1,w->_maxx); /* and go there again */
! } /* else */
} /* while */
wrefresh(w); /* redraw screen */
--- 168,175 -----
else
if (w->_cury) /* if not on top line */
{
! mvwaddch(w,w->_cury-1,w->_maxx - 1,' ');/* put space at line end */
! wmove(w,w->_cury-1,w->_maxx - 1); /* and go there again */
} /* else */
} /* while */
*** old/windel.c
--- windel.c
**************
*** 27,33
{
int i;
! if (! (win->_flags & _SUBWIN)) /* subwindow uses 'parent's' lines */
{
for (i = 0; i <= win->_maxy && win->_line[i]; i++)
free(win->_line[i]);
--- 27,33 -----
if (! (win->_flags & _SUBWIN)) /* subwindow uses 'parent's' lines */
{
! for (i = 0; i < win->_maxy && win->_line[i]; i++)
free(win->_line[i]);
}
free(win->_minchng);
*** old/winerase.c
--- winerase.c
**************
*** 33,39
for (y = win->_regtop; y <= win->_regbottom; y++) /* clear all lines */
{
start = win->_line[y];
! end = &start[win->_maxx];
while (start <= end) /* clear all line */
*start++ = blank;
win->_minchng[y] = 0;
--- 33,39 -----
for (y = win->_regtop; y <= win->_regbottom; y++) /* clear all lines */
{
start = win->_line[y];
! end = &start[win->_maxx - 1];
while (start <= end) /* clear all line */
*start++ = blank;
win->_minchng[y] = 0;
**************
*** 37,43
while (start <= end) /* clear all line */
*start++ = blank;
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx;
}
win->_cury = win->_regtop; /* cursor home */
win->_curx = 0;
--- 37,43 -----
while (start <= end) /* clear all line */
*start++ = blank;
win->_minchng[y] = 0;
! win->_maxchng[y] = win->_maxx - 1;
}
win->_cury = win->_regtop; /* cursor home */
win->_curx = 0;
*** old/winmove.c
--- winmove.c
**************
*** 23,29
WINDOW *win;
int begy, begx;
{
! if ((begy + win->_maxy) > (LINES-1) || (begx + win->_maxx) > (COLS-1))
return(ERR);
win->_begy = begy;
win->_begx = begx;
--- 23,29 -----
WINDOW *win;
int begy, begx;
{
! if ((begy + win->_maxy) >= (LINES-1) || (begx + win->_maxx) >= (COLS-1))
return(ERR);
win->_begy = begy;
win->_begx = begx;
*** old/winscrol.c
--- winscrol.c
**************
*** 40,46
{
win->_line[i] = win->_line[i+1]; /* re-arrange line pointers */
win->_minchng[i] = 0;
! win->_maxchng[i] = win->_maxx;
}
for (ptr = temp; ptr - temp <= win->_maxx; ptr++)
*ptr = blank; /* make a blank line */
--- 40,46 -----
{
win->_line[i] = win->_line[i+1]; /* re-arrange line pointers */
win->_minchng[i] = 0;
! win->_maxchng[i] = win->_maxx - 1;
}
for (ptr = temp; ptr - temp < win->_maxx; ptr++)
*ptr = blank; /* make a blank line */
**************
*** 42,48
win->_minchng[i] = 0;
win->_maxchng[i] = win->_maxx;
}
! for (ptr = temp; ptr - temp <= win->_maxx; ptr++)
*ptr = blank; /* make a blank line */
win->_line[win->_regbottom] = temp;
if (win->_cury > win->_regtop) /* if not on top line */
--- 42,48 -----
win->_minchng[i] = 0;
win->_maxchng[i] = win->_maxx - 1;
}
! for (ptr = temp; ptr - temp < win->_maxx; ptr++)
*ptr = blank; /* make a blank line */
win->_line[win->_regbottom] = temp;
if (win->_cury > win->_regtop) /* if not on top line */
**************
*** 48,52
= temp;
if (win->_cury > win->_regtop) /* if not on top line */
win->_cury--; /* cursor scrolls too */
! win->_minchng[win->_regbottom] = 0;
win->_maxchng[win->_regbottom] = win->_maxx;
--- 48,52 -----
if (win->_cury > win->_regtop) /* if not on top line */
win->_cury--; /* cursor scrolls too */
win->_minchng[win->_regbottom] = 0;
! win->_maxchng[win->_regbottom] = win->_maxx - 1;
} /* scroll */