jz@mulga.oz (Justin Zobel) (11/27/87)
The commands 'p' and 'n' dump core if used to page past the end of the
folder list. Following is a fix.
jz
*** page.c.orig Thu Nov 5 11:14:46 1987
--- page.c Thu Nov 5 11:23:21 1987
***************
*** 174,180 ****
for( ; count > 0 ; count--) {
/* skip other pages of current folder */
! for(f=p ; p->next->name == f->name ; p=p->next)
;
if(p->next == (folder) NULL) {
addstatus("last folder", true);
--- 174,180 ----
for( ; count > 0 ; count--) {
/* skip other pages of current folder */
! for(f=p ; p->next && p->next->name == f->name ; p=p->next)
;
if(p->next == (folder) NULL) {
addstatus("last folder", true);
***************
*** 219,227 ****
for( ; count > 0 ; count--) {
/* skip other pages of current folder */
! for(f=p ; p->prev->name == f->name ; p=p->prev)
;
! if(curflr->prev == (folder) NULL) {
addstatus("first folder", true);
break;
} else {
--- 219,227 ----
for( ; count > 0 ; count--) {
/* skip other pages of current folder */
! for(f=p ; p->prev && p->prev->name == f->name ; p=p->prev)
;
! if(p->prev == (folder) NULL) {
addstatus("first folder", true);
break;
} else {
***************
*** 243,249 ****
addstatus("can't go back that many folders", true);
else {
/* skip other pages of current folder */
! for(f=p ; p->prev->name == f->name ; p=p->prev)
;
alternate = curflr;
curflr = p;
--- 243,249 ----
addstatus("can't go back that many folders", true);
else {
/* skip other pages of current folder */
! for(f=p ; p->prev && p->prev->name == f->name ; p=p->prev)
;
alternate = curflr;
curflr = p;jz@mulga.oz (Justin Zobel) (11/27/87)
Following is a patch to make vmail work properly on a Pyramid. The flag
PYRAMID must be set on compilation.
jz
*** init.c Thu Oct 8 10:32:45 1987
--- init.c Fri Nov 27 11:20:46 1987
***************
*** 43,48
cols = tgetnum("co");
/* lines holds no. of lines for headers, ie "li" less STATUS, TITLE */
lines = tgetnum("li") - 2;
ioctl(0, TIOCGETP, &tty);
ioctl(0, TIOCGETP, &chrs);
ioctl(0, TIOCGETP, &lchrs);
--- 43,49 -----
cols = tgetnum("co");
/* lines holds no. of lines for headers, ie "li" less STATUS, TITLE */
lines = tgetnum("li") - 2;
+ #ifdef PYRAMID
ioctl(0, TIOCGETP, &tty);
ioctl(0, TIOCGETC, &chrs);
ioctl(0, TIOCLGET, &lchrs);
***************
*** 44,49
/* lines holds no. of lines for headers, ie "li" less STATUS, TITLE */
lines = tgetnum("li") - 2;
ioctl(0, TIOCGETP, &tty);
ioctl(0, TIOCGETP, &chrs);
ioctl(0, TIOCGETP, &lchrs);
--- 45,54 -----
lines = tgetnum("li") - 2;
#ifdef PYRAMID
ioctl(0, TIOCGETP, &tty);
+ ioctl(0, TIOCGETC, &chrs);
+ ioctl(0, TIOCLGET, &lchrs);
+ #else
+ ioctl(0, TIOCGETP, &tty);
ioctl(0, TIOCGETP, &chrs);
ioctl(0, TIOCGETP, &lchrs);
#endif PYRAMID
***************
*** 46,51
ioctl(0, TIOCGETP, &tty);
ioctl(0, TIOCGETP, &chrs);
ioctl(0, TIOCGETP, &lchrs);
read_profile(&pargc, pargv, profile, home);
process_args(pargc, pargv);
--- 51,57 -----
ioctl(0, TIOCGETP, &tty);
ioctl(0, TIOCGETP, &chrs);
ioctl(0, TIOCGETP, &lchrs);
+ #endif PYRAMID
read_profile(&pargc, pargv, profile, home);
process_args(pargc, pargv);
***************
*** 74,79
signal(SIGTSTP, tstp);
signal(SIGINT, tint);
ioctl(0, TIOCGETP, &t_tty);
ioctl(0, TIOCGETP, &t_chrs);
ioctl(0, TIOCGETP, &t_lchrs);
--- 80,86 -----
signal(SIGTSTP, tstp);
signal(SIGINT, tint);
+ #ifdef PYRAMID
ioctl(0, TIOCGETP, &t_tty);
ioctl(0, TIOCGETC, &t_chrs);
ioctl(0, TIOCLGET, &t_lchrs);
***************
*** 75,80
signal(SIGINT, tint);
ioctl(0, TIOCGETP, &t_tty);
ioctl(0, TIOCGETP, &t_chrs);
ioctl(0, TIOCGETP, &t_lchrs);
--- 82,91 -----
#ifdef PYRAMID
ioctl(0, TIOCGETP, &t_tty);
+ ioctl(0, TIOCGETC, &t_chrs);
+ ioctl(0, TIOCLGET, &t_lchrs);
+ #else
+ ioctl(0, TIOCGETP, &t_tty);
ioctl(0, TIOCGETP, &t_chrs);
ioctl(0, TIOCGETP, &t_lchrs);
#endif PYRAMID
***************
*** 77,82
ioctl(0, TIOCGETP, &t_tty);
ioctl(0, TIOCGETP, &t_chrs);
ioctl(0, TIOCGETP, &t_lchrs);
y = FIRST;
display_page();
--- 88,94 -----
ioctl(0, TIOCGETP, &t_tty);
ioctl(0, TIOCGETP, &t_chrs);
ioctl(0, TIOCGETP, &t_lchrs);
+ #endif PYRAMID
y = FIRST;
display_page();
***************
*** 297,302
void
no_control()
{
ioctl(0, TIOCSETP, &tty);
ioctl(0, TIOCSETP, &chrs);
ioctl(0, TIOCSETP, &lchrs);
--- 309,315 -----
void
no_control()
{
+ #ifdef PYRAMID
ioctl(0, TIOCSETP, &tty);
ioctl(0, TIOCSETC, &chrs);
ioctl(0, TIOCLSET, &lchrs);
***************
*** 298,303
no_control()
{
ioctl(0, TIOCSETP, &tty);
ioctl(0, TIOCSETP, &chrs);
ioctl(0, TIOCSETP, &lchrs);
}
--- 311,320 -----
{
#ifdef PYRAMID
ioctl(0, TIOCSETP, &tty);
+ ioctl(0, TIOCSETC, &chrs);
+ ioctl(0, TIOCLSET, &lchrs);
+ #else
+ ioctl(0, TIOCSETP, &tty);
ioctl(0, TIOCSETP, &chrs);
ioctl(0, TIOCSETP, &lchrs);
#endif PYRAMID
***************
*** 300,305
ioctl(0, TIOCSETP, &tty);
ioctl(0, TIOCSETP, &chrs);
ioctl(0, TIOCSETP, &lchrs);
}
--- 317,323 -----
ioctl(0, TIOCSETP, &tty);
ioctl(0, TIOCSETP, &chrs);
ioctl(0, TIOCSETP, &lchrs);
+ #endif PYRAMID
}
***************
*** 309,314
void
to_control()
{
ioctl(0, TIOCSETP, &t_tty);
ioctl(0, TIOCSETP, &t_chrs);
ioctl(0, TIOCSETP, &t_lchrs);
--- 327,333 -----
void
to_control()
{
+ #ifdef PYRAMID
ioctl(0, TIOCSETP, &t_tty);
ioctl(0, TIOCSETC, &t_chrs);
ioctl(0, TIOCLSET, &t_lchrs);
***************
*** 310,315
to_control()
{
ioctl(0, TIOCSETP, &t_tty);
ioctl(0, TIOCSETP, &t_chrs);
ioctl(0, TIOCSETP, &t_lchrs);
}
--- 329,338 -----
{
#ifdef PYRAMID
ioctl(0, TIOCSETP, &t_tty);
+ ioctl(0, TIOCSETC, &t_chrs);
+ ioctl(0, TIOCLSET, &t_lchrs);
+ #else
+ ioctl(0, TIOCSETP, &t_tty);
ioctl(0, TIOCSETP, &t_chrs);
ioctl(0, TIOCSETP, &t_lchrs);
#endif PYRAMID
***************
*** 312,317
ioctl(0, TIOCSETP, &t_tty);
ioctl(0, TIOCSETP, &t_chrs);
ioctl(0, TIOCSETP, &t_lchrs);
}
--- 335,341 -----
ioctl(0, TIOCSETP, &t_tty);
ioctl(0, TIOCSETP, &t_chrs);
ioctl(0, TIOCSETP, &t_lchrs);
+ #endif PYRAMID
}