🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.bugs
Article #873

Bugfixes for nethack

#873
From: Jonas Olsson
Date: Fri, 07 Aug 1987 09:56
154 lines
4950 bytes
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;
Technical Details
Message-ID: <291@myab.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!mnetor!uunet!seismo!mcvax!enea!chalmers!myab!jonas

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!mnetor!uunet!seismo!mcvax!enea!chalmers!myab!jonas
From: jonas@myab.UUCP (Jonas Olsson)
Newsgroups: comp.sources.bugs
Subject: Bugfixes for nethack
Message-ID: <291@myab.UUCP>
Date: Fri, 7-Aug-87 05:56:12 EDT
Article-I.D.: myab.291
Posted: Fri Aug  7 05:56:12 1987
Date-Received: Sun, 9-Aug-87 13:30:29 EDT
Reply-To: jonas@myab.UUCP (Jonas Olsson)
Organization: Myab Gothenburg, Sweden
Lines: 154