jonas@myab.UUCP (Jonas Olsson) (08/07/87)
Here are some bugs I have fixed in nethack:
1: delay_output didn't work with the terminfo curses library,
and ospeed was undefined. To fix this I have added a new option
in config.h to tell that the terminfo package is used, changed
the format of the delay string in termcap.c and declared ospeed
in tty.c
2: On terminals with no highlighting, a null pointer was sent to
sprintf in invent.c when printing out the headers. This was
fixed by adding a test if the pointers are null.
UUCP: {decvax,philabs}!mcvax!enea!chalmers!myab!jonas
Phone: +46-31-187512
Surface Mail: Jonas Olsson, MYAB, Dr Forselius gata 21, S-413 26 GOTHENBURG
SWEDEN
Feed this to patch:
*** config.h.old Fri Aug 7 10:06:15 1987
--- config.h Fri Jul 31 10:57:00 1987
***************
*** 28,33
/* #define BETA /* if a beta-test copy [MRS] */
#define VERSION "1.3d" /* version number. */
/* #define PYRAMID_BUG /* avoid a bug on the Pyramid */
/* #define APOLLO /* same for the Apollo */
/* #define STUPID /* avoid some complicated expressions if
--- 28,34 -----
/* #define BETA /* if a beta-test copy [MRS] */
#define VERSION "1.3d" /* version number. */
+ #define TERMINFO /* if Terminfo curses package is used (System V.[23]) */
/* #define PYRAMID_BUG /* avoid a bug on the Pyramid */
/* #define APOLLO /* same for the Apollo */
/* #define STUPID /* avoid some complicated expressions if
*** invent.c.old Fri Aug 7 10:27:08 1987
--- invent.c Mon Aug 3 10:54:33 1987
***************
*** 1016,1022
static char buf[4 + 4 + 15 + 1];
if (pos == NULL) pos = obj_symbols;
! Sprintf(buf, "%s%s%s", HI, names[pos - obj_symbols], HE);
return (buf);
}
#endif /* SORTING /**/
--- 1016,1025 -----
static char buf[4 + 4 + 15 + 1];
if (pos == NULL) pos = obj_symbols;
! if (HI && HE)
! Sprintf(buf, "%s%s%s", HI, names[pos - obj_symbols], HE);
! else
! Sprintf(buf, "%s", names[pos - obj_symbols]);
return (buf);
}
#endif /* SORTING /**/
*** termcap.c.old Fri Jul 31 14:13:18 1987
--- termcap.c Fri Aug 7 10:11:46 1987
***************
*** 298,303
}
#else
if(!flags.nonull)
tputs("50", 1, xputc);
/* cbosgd!cbcephus!pds for SYS V R2 */
--- 298,304 -----
}
#else
if(!flags.nonull)
+ #ifndef TERMINFO
tputs("50", 1, xputc);
#else
/* cbosgd!cbcephus!pds for SYS V R2 */
***************
*** 299,305
#else
if(!flags.nonull)
tputs("50", 1, xputc);
!
/* cbosgd!cbcephus!pds for SYS V R2 */
/* is this terminfo, or what? */
/* tputs("$<50>", 1, xputc); */
--- 300,306 -----
if(!flags.nonull)
#ifndef TERMINFO
tputs("50", 1, xputc);
! #else
/* cbosgd!cbcephus!pds for SYS V R2 */
tputs("$<50>", 1, xputc);
#endif
***************
*** 301,309
tputs("50", 1, xputc);
/* cbosgd!cbcephus!pds for SYS V R2 */
! /* is this terminfo, or what? */
! /* tputs("$<50>", 1, xputc); */
!
else if(ospeed > 0 || ospeed < SIZE(tmspc10)) if(CM) {
/* delay by sending cm(here) an appropriate number of times */
register int cmlen = strlen(tgoto(CM, curx-1, cury-1));
--- 302,309 -----
tputs("50", 1, xputc);
#else
/* cbosgd!cbcephus!pds for SYS V R2 */
! tputs("$<50>", 1, xputc);
! #endif
else if(ospeed > 0 || ospeed < SIZE(tmspc10)) if(CM) {
/* delay by sending cm(here) an appropriate number of times */
register int cmlen = strlen(tgoto(CM, curx-1, cury-1));
*** tty.c.old Fri Jul 31 14:22:36 1987
--- tty.c Fri Aug 7 10:14:47 1987
***************
*** 66,71
#endif
extern short ospeed;
static char erase_char, kill_char;
static boolean settty_needed = FALSE;
--- 66,74 -----
#endif
+ #ifdef TERMINFO
+ short ospeed; /* used in delay_output, terminfo doesn't declare ospeed */
+ #else
extern short ospeed;
#endif
static char erase_char, kill_char;
***************
*** 67,72
#endif
extern short ospeed;
static char erase_char, kill_char;
static boolean settty_needed = FALSE;
struct termstruct inittyb, curttyb;
--- 70,76 -----
short ospeed; /* used in delay_output, terminfo doesn't declare ospeed */
#else
extern short ospeed;
+ #endif
static char erase_char, kill_char;
static boolean settty_needed = FALSE;
struct termstruct inittyb, curttyb;