[comp.sources.d] Public domain curses/terminfo

liebman@xrxns.UUCP (Chris Liebman) (08/28/87)

I just blew the dust off of an old archive tape and loaded in the 
public domain curses/terminfo package that Pavel Curtis posted to the net
a Loooooooong time ago.  Bad news, on my 68020 4.3bsd box I get core
dumping problems when I run compile.   I have not looked into this yet
and I thought I would post this to see if anyone has patches (to the original
posting) or a newer version. Here is the RCS ident stuff of what I have:

$Header:   RCS/comp_error.v  Revision 2.1  82/10/25  14:45:31  pavel  Exp$
$Header:   RCS/comp_hash.v  Revision 2.1  82/10/25  14:45:34  pavel  Exp$
$Header:   RCS/comp_main.v  Revision 2.1  82/10/25  14:45:37  pavel  Exp$
$Header: comp_parse.c,v 3.1 84/12/13 11:19:32 john Exp $
$Header:   RCS/comp_scan.v  Revision 2.1  82/10/25  14:45:55  pavel  Exp$
$Header:   RCS/compiler.v  Revision 2.1  82/10/25  14:46:04  pavel  Exp$
$Header:   RCS/curses.v  Revision 2.1  82/10/25  14:46:08  pavel  Exp$
$Header:   RCS/dump.v  Revision 2.1  82/10/25  14:46:20  pavel  Exp$
$Header:   RCS/lib_addch.v  Revision 2.1  82/10/25  14:46:23  pavel  Exp$
$Header:   RCS/lib_addstr.v  Revision 2.1  82/10/25  14:46:26  pavel  Exp$
$Header:   RCS/lib_beep.v  Revision 2.1  82/10/25  14:46:29  pavel  Exp$
$Header:   RCS/lib_box.v  Revision 2.1  82/10/25  14:46:31  pavel  Exp$
$Header:   RCS/lib_clear.v  Revision 2.1  82/10/25  14:46:34  pavel  Exp$
$Header:   RCS/lib_clrbot.v  Revision 2.1  82/10/25  14:46:37  pavel  Exp$
$Header:   RCS/lib_clreol.v  Revision 2.1  82/10/25  14:46:42  pavel  Exp$
$Header:   RCS/lib_delch.v  Revision 2.1  82/10/25  14:46:52  pavel  Exp$
$Header:   RCS/lib_deleteln.v  Revision 2.1  82/10/25  14:46:55  pavel  Exp$
$Header:   RCS/lib_delwin.v  Revision 2.1  82/10/25  14:47:01  pavel  Exp$
$Header: lib_doupdate.c,v 3.1 84/12/13 11:20:28 john Exp $
$Header:   RCS/lib_endwin.v  Revision 2.1  82/10/25  14:47:13  pavel  Exp$
$Header:   RCS/lib_erase.v  Revision 2.2  82/11/03  12:27:41  pavel  Exp$
$Header:   RCS/lib_fixterm.v  Revision 2.1  82/10/25  14:47:22  pavel  Exp$
$Header:   RCS/lib_getch.v  Revision 2.1  82/10/25  14:47:29  pavel  Exp$
$Header:   RCS/lib_getstr.v  Revision 2.1  82/10/25  14:47:33  pavel  Exp$
$Header:   RCS/lib_initscr.v  Revision 2.1  82/10/25  14:47:36  pavel  Exp$
$Header:   RCS/lib_insch.v  Revision 2.1  82/10/25  14:47:39  pavel  Exp$
$Header:   RCS/lib_insertln.v  Revision 2.1  82/10/25  14:47:44  pavel  Exp$
$Header:   RCS/lib_longname.v  Revision 2.1  82/10/25  14:47:49  pavel  Exp$
$Header:   RCS/lib_move.v  Revision 2.1  82/10/25  14:47:51  pavel  Exp$
$Header:   RCS/lib_mvcur.v  Revision 2.1  82/10/25  14:47:54  pavel  Exp$
$Header:   RCS/lib_mvwin.v  Revision 2.1  82/10/25  14:48:10  pavel  Exp$
$Header:   RCS/lib_newterm.v  Revision 2.1  82/10/25  14:48:14  pavel  Exp$
$Header:   RCS/lib_options.v  Revision 2.1  82/10/25  14:48:24  pavel  Exp$
$Header:   RCS/lib_overlay.v  Revision 2.2  82/10/28  18:10:11  pavel  Exp$
$Header:   RCS/lib_printw.v  Revision 2.1  82/10/25  14:48:38  pavel  Exp$
$Header:   RCS/lib_raw.v  Revision 2.1  82/10/25  14:48:42  pavel  Exp$
$Header: lib_refresh.c,v 3.1 84/12/13 11:20:51 john Exp $
$Header:   RCS/lib_scanw.v  Revision 2.1  82/10/25  14:48:51  pavel  Exp$
$Header:   RCS/lib_scroll.v  Revision 2.1  82/10/25  14:48:54  pavel  Exp$
$Header:   RCS/lib_scrreg.v  Revision 2.1  82/10/25  14:49:00  pavel  Exp$
$Header:   RCS/lib_set_term.v  Revision 2.1  82/10/25  14:49:06  pavel  Exp$
$Header:   RCS/lib_setup.v  Revision 2.1  82/10/25  14:49:09  pavel  Exp$
$Header:   RCS/lib_touchwin.v  Revision 2.1  82/10/25  14:49:13  pavel  Exp$
$Header:   RCS/lib_tparm.v  Revision 2.1  82/10/25  14:49:19  pavel  Exp$
$Header: lib_tputs.c,v 3.1 84/12/13 11:21:03 john Exp $
$Header:   RCS/lib_trace.v  Revision 2.1  82/10/25  14:49:35  pavel  Exp$
$Header:   RCS/lib_tstp.v  Revision 2.1  82/10/25  14:49:39  pavel  Exp$
$Header:   RCS/lib_unctrl.v  Revision 2.1  82/10/25  14:49:42  pavel  Exp$
$Header:   RCS/lib_vidattr.v  Revision 2.1  82/10/25  14:49:45  pavel  Exp$
$Header:   RCS/object.v  Revision 2.1  82/10/25  14:49:50  pavel  Exp$
$Header: read_entry.c,v 3.1 84/12/13 11:21:14 john Exp $
$Header:   RCS/terminfo.v  Revision 2.1  82/10/25  14:49:59  pavel  Exp$
$Header:   RCS/unctrl.v  Revision 2.1  82/10/25  14:50:04  pavel  Exp$

Thanks in advance.
Chris Liebman
-- 
------------
UUCP:	..!rochester!rocksanne!xrxns!liebman
ARPA:	liebman.lsbgegpcad@Xerox.Com
ATT:	1-703-729-8000 Ex# 5187

john@frog.UUCP (John Woods, Software) (09/02/87)

In article <225@xrxns.UUCP>, liebman@xrxns.UUCP (Chris Liebman) writes:
> I just blew the dust off of an old archive tape and loaded in the 
> public domain curses/terminfo package that Pavel Curtis posted to the net
> a Loooooooong time ago.  Bad news, on my 68020 4.3bsd box I get core
> dumping problems when I run compile.

I just recently did the same, with similar results.  Here are the changes
I made to (A) make it work, and (B) make lint somewhat happier with it.
I don't know that these changes are either necessary or sufficient, but
they appeared both in my testing.  (Except for the changes to dump.c to
use '\E' on output rather than '^[', which was neither).

If anyone has more changes, I'd be quite happy to see them.  My intent is
to implement the System V Release 3 features in this terminfo package.
(Yes, some of us are enslaved to AT&T, rather than to UCB...)

*** comp_parse.c  Wed Sep  2 11:31:33 1987
--- /src/lib/pcurses.dir/=src/comp_parse.c  Wed Sep  2 11:14:06 1987
***************
*** 621,627
  	       ||  fwrite(string_table, sizeof(char), next_free, fp)
  								  != next_free)
  	    return(-1);
! 
  }
  
  

--- 621,627 -----
  	       ||  fwrite(string_table, sizeof(char), next_free, fp)
  								  != next_free)
  	    return(-1);
! 	return 0;	/* jfw */
  }
  
  
***************
*** 799,802
  	    }
  
  	}
  }

--- 799,803 -----
  	    }
  
  	}
+ 	return 0;	/* jfw */
  }
*** comp_scan.c  Wed Sep  2 11:31:41 1987
--- /src/lib/pcurses.dir/=src/comp_scan.c  Wed Sep  2 11:14:11 1987
***************
*** 93,99
  {
  	long		number;
  	int		type;
! 	register char	ch;
  	static char	buffer[1024];
  	register char	*ptr;
  	int		dot_flag = FALSE;

--- 93,100 -----
  {
  	long		number;
  	int		type;
! /*	register char	ch; */
! 	int		ch;	/* jfw */
  	static char	buffer[1024];
  	register char	*ptr;
  	int		dot_flag = FALSE;
***************
*** 340,346
  	register int	count = 0;
  	int		number;
  	int		i;
!         char		ch;
  
  	while ((ch = next_char()) != ','  &&  ch != EOF)
  	{

--- 341,347 -----
  	register int	count = 0;
  	int		number;
  	int		i;
! /*      char */int	ch;
  
  	while ((ch = next_char()) != ','  &&  ch != EOF)
  	{
***************
*** 397,403
  			
  			case 'r':	*(ptr++) = '\r';	break;
  			
! 			case 'b':	*(ptr++) = '\008';	break;
  
  			case 's':	*(ptr++) = ' ';		break;
  			

--- 398,404 -----
  			
  			case 'r':	*(ptr++) = '\r';	break;
  			
! /* was 008 */		case 'b':	*(ptr++) = '\010';	break;
  
  			case 's':	*(ptr++) = ' ';		break;
  			
*** dump.c  Wed Sep  2 11:32:11 1987
--- /src/lib/pcurses.dir/=src/dump.c  Wed Sep  2 11:14:28 1987
***************
*** 81,87
  		    if (cur_column > 9
  				&&  cur_column + strlen(BoolNames[i]) + 2 > 79)
  		    {
! 			printf("\n\t");
  			cur_column = 9;
  		    }
  		    printf("%s, ", BoolNames[i]);

--- 81,87 -----
  		    if (cur_column > 9
  				&&  cur_column + strlen(BoolNames[i]) + 2 > 79)
  		    {
! 				printf("\n\t");
  			cur_column = 9;
  		    }
  		    printf("%s, ", BoolNames[i]);
***************
*** 108,117
  	    {
  		if (_first_term.Strings[i])
  		{
! 		    sprintf(buffer, "%s=%s, ", StrNames[i],
! 							_first_term.Strings[i]);
! 		    expand(buffer);
! 		    if (cur_column > 9  &&  cur_column + strlen(buffer) > 79)
  		    {
  			printf("\n\t");
  			cur_column = 9;

--- 108,117 -----
  	    {
  		if (_first_term.Strings[i])
  		{
! 		    sprintf(buffer, "%s=%s", StrNames[i],
! 							_first_term.Strings[i]);
! 		    expand(buffer);
! 		    if (cur_column > 9  &&  cur_column + strlen(buffer) > 77)
  		    {
  			printf("\n\t");
  			cur_column = 9;
***************
*** 116,123
  			printf("\n\t");
  			cur_column = 9;
  		    }
! 		    printf("%s", buffer);
! 		    cur_column += strlen(buffer);
  		}
  	    }
  

--- 116,123 -----
  			printf("\n\t");
  			cur_column = 9;
  		    }
! 		    printf("%s, ", buffer);
! 		    cur_column += strlen(buffer) + 2;
  		}
  	    }
  
***************
*** 121,127
  		}
  	    }
  
! 	    putchar('\n');
  	}
  }
  

--- 121,127 -----
  		}
  	    }
  
! 		    putchar('\n');
  	}
  }
  
***************
*** 128,133
  
  typedef unsigned char	uchar;
  
  expand(str)
  uchar	*str;
  {

--- 128,136 -----
  
  typedef unsigned char	uchar;
  
+ static char escapes[] = "\033\n\r\t\b\f \\:,";
+ static char maps[] = "Enrtbfs\\:,";
+ 
  expand(str)
  uchar	*str;
  {
***************
*** 133,139
  {
      	char	buffer[1024];
  	int	bufp;
! 	uchar	*ptr;
  
  	bufp = 0;
  	ptr = str;

--- 136,143 -----
  {
      	char	buffer[1024];
  	int	bufp;
! 	uchar	*ptr, *p;
! 	extern uchar *index();
  
  	bufp = 0;
  	ptr = str;
***************
*** 139,145
  	ptr = str;
  	while (*str)
  	{
! 	    if (*str < ' ')
  	    {
  		buffer[bufp++] = '^';
  		buffer[bufp++] = *str + '@';

--- 143,153 -----
  	ptr = str;
  	while (*str)
  	{
! 	    if ((p = index(escapes,*str)) != NULL) {
! 		sprintf(&buffer[bufp],"\\%c",maps[p-escapes]);
! 		bufp += 2;
! 	    }
! 	    else if (*str < ' ')
  	    {
  		buffer[bufp++] = '^';
  		buffer[bufp++] = *str + '@';
*** lib_addch.c  Wed Sep  2 11:32:12 1987
--- /src/lib/pcurses.dir/=src/lib_addch.c  Wed Sep  2 12:53:24 1987
***************
*** 51,57
  {
  	int	x, y;
  	int	newx;
! 	chtype	ch = c;
  
  #ifdef UNDEFINED
  	if (_tracing)

--- 51,57 -----
  {
  	int	x, y;
  	int	newx;
! 	chtype	ch = c & A_CHARTEXT;
  
  #ifdef UNDEFINED
  	if (_tracing)
*** lib_addstr.c  Wed Sep  2 11:32:12 1987
--- /src/lib/pcurses.dir/=src/lib_addstr.c  Wed Sep  2 11:14:31 1987
***************
*** 46,52
  
  waddstr(win, str)
  WINDOW	*win; 
! char	*str;
  {
  #ifdef TRACE
  	if (_tracing)

--- 46,52 -----
  
  waddstr(win, str)
  WINDOW	*win; 
! unsigned char	*str;
  {
  #ifdef TRACE
  	if (_tracing)
*** lib_delwin.c  Wed Sep  2 11:32:22 1987
--- /src/lib/pcurses.dir/=src/lib_delwin.c  Wed Sep  2 11:14:43 1987
***************
*** 57,64
  	if (! (win->_flags & _SUBWIN))
  	{
  	    for (i = 0; i <= win->_maxy  &&  win->_line[i]; i++)
! 		cfree(win->_line[i]);
! 	}
  
  	cfree(win->_numchngd);
  	cfree(win->_firstchar);

--- 57,68 -----
  	if (! (win->_flags & _SUBWIN))
  	{
  	    for (i = 0; i <= win->_maxy  &&  win->_line[i]; i++)
! 		free(win->_line[i]);
! 	}
! 
! 	free(win->_numchngd);
! 	free(win->_firstchar);
! 	free(win->_lastchar);
! 	free(win->_line);
! 	free(win);
! }
***************
*** 60,68
  		cfree(win->_line[i]);
  	}
  
- 	cfree(win->_numchngd);
- 	cfree(win->_firstchar);
- 	cfree(win->_lastchar);
- 	cfree(win->_line);
- 	cfree(win);
- }

--- 67,68 -----
  	free(win);
  }
*** lib_doupdate.c  Wed Sep  2 11:32:56 1987
--- /src/lib/pcurses.dir/=src/lib_doupdate.c  Wed Sep  2 11:14:59 1987
***************
*** 88,94
  doupdate()
  {
  	int	i;
! 	int	(*oldsig)();
  
  #ifdef TRACE
  	if (_tracing)

--- 88,96 -----
  doupdate()
  {
  	int	i;
! #ifdef SIGTSTP
! 	int	(*oldsig)();
! #endif
  
  #ifdef TRACE
  	if (_tracing)
***************
*** 95,101
  	    _tracef("doupdate() called");
  #endif
  
! 	oldsig = signal(SIGTSTP, SIG_IGN);
  
  	if (curscr->_clear)
  	{

--- 97,105 -----
  	    _tracef("doupdate() called");
  #endif
  
! #ifdef SIGTSTP
! 	oldsig = signal(SIGTSTP, SIG_IGN);
! #endif
  
  	if (curscr->_clear)
  	{
***************
*** 132,138
  
  	fflush(SP->_ofp);
  
! 	signal(SIGTSTP, oldsig);
  }
  
  

--- 136,144 -----
  
  	fflush(SP->_ofp);
  
! #ifdef SIGTSTP
! 	signal(SIGTSTP, oldsig);
! #endif
  }
  
  
*** lib_getch.c  Wed Sep  2 11:32:34 1987
--- /src/lib/pcurses.dir/=src/lib_getch.c  Wed Sep  2 12:55:16 1987
***************
*** 124,130
  kgetch()
  {
          struct try  *ptr;
! 	char        ch;
  	char        buffer[10];     /* Assume no sequences longer than 10 */
  	char        *bufp = buffer;
  	int         (*oldsig)();

--- 124,130 -----
  kgetch()
  {
          struct try  *ptr;
! 	int	    ch;	/* jfw: was char */
  	char        buffer[10];     /* Assume no sequences longer than 10 */
  	char        *bufp = buffer;
  	int         (*oldsig)();
*** lib_insch.c  Wed Sep  2 11:32:37 1987
--- /src/lib/pcurses.dir/=src/lib_insch.c  Wed Sep  2 12:56:06 1987
***************
*** 51,56
  	chtype	*temp1, *temp2;
  	chtype	*end;
  
  #ifdef TRACE
  	if (_tracing)
  	    _tracef("winsch(%o,'%c') called", win, c);

--- 51,57 -----
  	chtype	*temp1, *temp2;
  	chtype	*end;
  
+ 	c &= A_CHARTEXT;
  #ifdef TRACE
  	if (_tracing)
  	    _tracef("winsch(%o,'%c') called", win, c);
*** lib_newterm.c  Wed Sep  2 11:32:43 1987
--- /src/lib/pcurses.dir/=src/lib_newterm.c  Wed Sep  2 11:14:55 1987
***************
*** 108,114
  	newscr->_clear = TRUE;
  	curscr->_clear = FALSE;
  
! 	signal(SIGTSTP, tstp);
  
  	if (stdscr == NULL)
  	    if ((stdscr = newwin(lines, columns, 0, 0)) == ERR)

--- 108,116 -----
  	newscr->_clear = TRUE;
  	curscr->_clear = FALSE;
  
! #ifdef SIGTSTP
! 	signal(SIGTSTP, tstp);
! #endif
  
  	if (stdscr == NULL)
  	    if ((stdscr = newwin(lines, columns, 0, 0)) == ERR)
*** lib_newwin.c  Wed Sep  2 11:32:45 1987
--- /src/lib/pcurses.dir/=src/lib_newwin.c  Wed Sep  2 11:14:55 1987
***************
*** 75,86
  								      == NULL)
  	    {
  		for (j = 0; j < i; j++)
! 		    cfree(win->_line[j]);
! 
! 		cfree(win->_firstchar);
! 		cfree(win->_lastchar);
! 		cfree(win->_line);
! 		cfree(win);
  
  		return(ERR);
  	    }

--- 75,86 -----
  								      == NULL)
  	    {
  		for (j = 0; j < i; j++)
! 		    free(win->_line[j]);
! 
! 		free(win->_firstchar);
! 		free(win->_lastchar);
! 		free(win->_line);
! 		free(win);
  
  		return(ERR);
  	    }
***************
*** 161,167
  	if ((win->_line = (chtype **) calloc(num_lines, sizeof (chtype *)))
  								       == NULL)
  	{
! 		cfree(win);
  
  		return(ERR);
  	}

--- 161,167 -----
  	if ((win->_line = (chtype **) calloc(num_lines, sizeof (chtype *)))
  								       == NULL)
  	{
! 		free(win);
  
  		return(ERR);
  	}
***************
*** 168,175
  
  	if ((win->_firstchar = calloc(num_lines, sizeof(short))) == NULL)
  	{
! 		cfree(win);
! 		cfree(win->_line);
  
  		return(ERR);
  	}

--- 168,175 -----
  
  	if ((win->_firstchar = calloc(num_lines, sizeof(short))) == NULL)
  	{
! 		free(win);
! 		free(win->_line);
  
  		return(ERR);
  	}
***************
*** 176,184
  
  	if ((win->_lastchar = calloc(num_lines, sizeof(short))) == NULL)
  	{
! 		cfree(win);
! 		cfree(win->_line);
! 		cfree(win->_firstchar);
  
  		return(ERR);
  	}

--- 176,184 -----
  
  	if ((win->_lastchar = calloc(num_lines, sizeof(short))) == NULL)
  	{
! 		free(win);
! 		free(win->_line);
! 		free(win->_firstchar);
  
  		return(ERR);
  	}
***************
*** 185,194
  
  	if ((win->_numchngd = calloc(num_lines, sizeof(short))) == NULL)
  	{
! 		cfree(win);
! 		cfree(win->_line);
! 		cfree(win->_firstchar);
! 		cfree(win->_lastchar);
  
  		return(ERR);
  	}

--- 185,194 -----
  
  	if ((win->_numchngd = calloc(num_lines, sizeof(short))) == NULL)
  	{
! 		free(win);
! 		free(win->_line);
! 		free(win->_firstchar);
! 		free(win->_lastchar);
  
  		return(ERR);
  	}
*** lib_scanw.c  Wed Sep  2 11:33:05 1987
--- /src/lib/pcurses.dir/=src/lib_scanw.c  Wed Sep  2 11:15:03 1987
***************
*** 78,83
  char	*fmt;
  int	args;
  {
  	return(move(y, x) == OK ? sscanw(stdscr, fmt, &args) : ERR);
  }
  

--- 78,85 -----
  char	*fmt;
  int	args;
  {
+ /* is this right? jfw */
+ #define sscanw sscans
  	return(move(y, x) == OK ? sscanw(stdscr, fmt, &args) : ERR);
  }
  
***************
*** 103,108
  ** will have to modify this routine to use the interface that your
  ** "sscanf" uses.
  */
  
  static
  sscans(win, fmt, args)

--- 105,123 -----
  ** will have to modify this routine to use the interface that your
  ** "sscanf" uses.
  */
+ #ifdef unos
+ static Getc(bufp) unsigned char **bufp; {
+ 	unsigned char c = **bufp;
+ 	if (c == 0) return EOF;
+ 	(*bufp)++;
+ 	return c;
+ }
+ static Peekc(bufp) unsigned char **bufp; {
+ 	unsigned char c = **bufp;
+ 	if (c == 0) return EOF;
+ 	return c;
+ }
+ #endif
  
  static
  sscans(win, fmt, args)
***************
*** 110,115
  char	*fmt;
  int	*args;
  {
  	char	buf[100];
  	FILE	junk;
  

--- 125,131 -----
  char	*fmt;
  int	*args;
  {
+ #ifndef unos
  	char	buf[100];
  	FILE	junk;
  
***************
*** 122,125
  	junk._cnt = strlen(buf);
  
  	return(_doscan(&junk, fmt, args));
! }

--- 138,145 -----
  	junk._cnt = strlen(buf);
  
  	return(_doscan(&junk, fmt, args));
! #else
! 	unsigned char	buf[256], *bufp = buf;
  
  	if (wgetstr(win, buf) == ERR)
  	    return(ERR);
***************
*** 124,125
  	return(_doscan(&junk, fmt, args));
  }

--- 141,148 -----
  #else
  	unsigned char	buf[256], *bufp = buf;
  
+ 	if (wgetstr(win, buf) == ERR)
+ 	    return(ERR);
+ 	return gscanfl(Getc, Peekc, &bufp, fmt, args);
+ #endif
+ }
*** lib_tparm.c  Wed Sep  2 11:33:18 1987
--- /src/lib/pcurses.dir/=src/lib_tparm.c  Wed Sep  2 11:15:09 1987
***************
*** 26,31
   *	tparm.c
   *
   *  $Log:	RCS/lib_tparm.v $
   * Revision 2.1  82/10/25  14:49:19  pavel
   * Added Copyright Notice
   * 

--- 26,34 -----
   *	tparm.c
   *
   *  $Log:	RCS/lib_tparm.v $
+  * Revision 2.2  87/08/28  22:35:44  jfw
+  * Lint objects to npush(npop()), with good reason (evaluation order undef.d)!
+  *
   * Revision 2.1  82/10/25  14:49:19  pavel
   * Added Copyright Notice
   * 
***************
*** 253,259
  			break;
  
  		    case '+':
! 			npush(npop() + npop());
  			break;
  
  		    case '-':

--- 256,263 -----
  			break;
  
  		    case '+':
! /*			npush(npop() + npop()); */
! 			y = npop(); x = npop(); npush(y + x);
  			break;
  
  		    case '-':
***************
*** 263,269
  			break;
  
  		    case '*':
! 			npush(npop() * npop());
  			break;
  
  		    case '/':

--- 267,274 -----
  			break;
  
  		    case '*':
! /*			npush(npop() * npop()); */
! 			y = npop(); x = npop(); npush(y * x);
  			break;
  
  		    case '/':
***************
*** 279,285
  			break;
  
  		    case '&':
! 			npush(npop() & npop());
  			break;
  
  		    case '|':

--- 284,291 -----
  			break;
  
  		    case '&':
! /*			npush(npop() & npop()); */
! 			y = npop(); x = npop(); npush(y & x);
  			break;
  
  		    case '|':
***************
*** 283,289
  			break;
  
  		    case '|':
! 			npush(npop() | npop());
  			break;
  
  		    case '^':

--- 289,296 -----
  			break;
  
  		    case '|':
! /*			npush(npop() | npop()); */
! 			y = npop(); x = npop(); npush(y | x);
  			break;
  
  		    case '^':
***************
*** 287,293
  			break;
  
  		    case '^':
! 			npush(npop() ^ npop());
  			break;
  
  		    case '=':

--- 294,301 -----
  			break;
  
  		    case '^':
! /*			npush(npop() ^ npop()); */
! 			y = npop(); x = npop(); npush(y ^ x);
  			break;
  
  		    case '=':
***************
*** 309,315
  			break;
  
  		    case '!':
! 			npush(! npop());
  			break;
  
  		    case '~':

--- 317,324 -----
  			break;
  
  		    case '!':
! /*			npush(! npop()); */
! 			y = npop(); npush(!y);
  			break;
  
  		    case '~':
***************
*** 313,319
  			break;
  
  		    case '~':
! 			npush(~ npop());
  			break;
  
  		    case 'i':

--- 322,329 -----
  			break;
  
  		    case '~':
! /*			npush(~ npop()); */
! 			y = npop(); npush(~y);
  			break;
  
  		    case 'i':
*** lib_trace.c  Wed Sep  2 11:33:23 1987
--- /src/lib/pcurses.dir/=src/lib_trace.c  Wed Sep  2 11:15:09 1987
***************
*** 99,104
  	char	buffer[256];
  	char	*bufp = buffer;
  
  	while (*fmt)
  	{
  	    if (*fmt == '%')

--- 99,105 -----
  	char	buffer[256];
  	char	*bufp = buffer;
  
+ 	if (!_tracing) return;
  	while (*fmt)
  	{
  	    if (*fmt == '%')
*** lib_tstp.c  Wed Sep  2 11:33:24 1987
--- /src/lib/pcurses.dir/=src/lib_tstp.c  Wed Sep  2 11:15:10 1987
***************
*** 45,51
  #include "curses.priv.h"
  #include <signal.h>
  
! 
  static
  outc(ch)
  char	ch;

--- 45,51 -----
  #include "curses.priv.h"
  #include <signal.h>
  
! #ifdef SIGTSTP
  static
  outc(ch)
  char	ch;
***************
*** 52,58
  {
      	putc(ch, SP->_ofp);
  }
! 
  
  tstp()
  {

--- 52,58 -----
  {
      	putc(ch, SP->_ofp);
  }
! #endif
  
  tstp()
  {
***************
*** 56,61
  
  tstp()
  {
  #ifdef TRACE
  	if (_tracing)
  	    _tracef("tstp() called");

--- 56,62 -----
  
  tstp()
  {
+ #ifdef SIGTSTP
  #ifdef TRACE
  	if (_tracing)
  	    _tracef("tstp() called");
***************
*** 70,73
  	flushinp();
  	tputs(enter_ca_mode, 1, outc);
  	wrefresh(curscr);
  }

--- 71,75 -----
  	flushinp();
  	tputs(enter_ca_mode, 1, outc);
  	wrefresh(curscr);
+ #endif /* TSTP */
  }
*** read_entry.c  Wed Sep  2 11:33:29 1987
--- /src/lib/pcurses.dir/=src/read_entry.c  Wed Sep  2 11:15:13 1987
***************
*** 134,140
  	if ((header.name_size + header.bool_count) % 2 != 0)
  	    read(fd, &ch, 1);
  
! 	if (must_swap())
  	    read(fd, ptr->Numbers, min(NUMCOUNT, header.num_count * 2));
  	else
  	{

--- 134,140 -----
  	if ((header.name_size + header.bool_count) % 2 != 0)
  	    read(fd, &ch, 1);
  
! 	if (!must_swap())
  	    read(fd, ptr->Numbers, min(NUMCOUNT, header.num_count * 2));
  	else
  	{
***************
*** 143,148
  		read(fd, bytebuf, 2);
  		if (bytebuf[0] == 0377  &&  bytebuf[1] == 0377)
  		    ptr->Numbers[i] = -1;
  		else
  		    ptr->Numbers[i] = bytebuf[0] + 256 * bytebuf[1];
  	    }

--- 143,150 -----
  		read(fd, bytebuf, 2);
  		if (bytebuf[0] == 0377  &&  bytebuf[1] == 0377)
  		    ptr->Numbers[i] = -1;
+ 		else if (bytebuf[0] == 0376 && bytebuf[1] == 0377)
+ 		    ptr->Numbers[i] = -2;
  		else
  		    ptr->Numbers[i] = bytebuf[0] + 256 * bytebuf[1];
  	    }
***************
*** 183,189
  		for (i = 0; i < numread / 2; i++)
  		{
  		    ptr->Strings[i + cur_string] =
! 			(offset_buf[i].byte[0] == 0377
  					    &&  offset_buf[i].byte[1] == 0377)
  			? 0
  			: ((offset_buf[i].byte[0] + 256*offset_buf[i].byte[1])

--- 185,192 -----
  		for (i = 0; i < numread / 2; i++)
  		{
  		    ptr->Strings[i + cur_string] =
! 			((offset_buf[i].byte[0] == 0377 ||
! 			  offset_buf[i].byte[0] == 0376)
  					    &&  offset_buf[i].byte[1] == 0377)
  			? 0
  			: ((offset_buf[i].byte[0] + 256*offset_buf[i].byte[1])
***************
*** 195,201
  		for (i = 0; i < numread / 2; i++)
  		{
  		    ptr->Strings[i + cur_string] =
! 			(offset_buf[i].number == -1)
  			?
  			    0
  			:

--- 198,205 -----
  		for (i = 0; i < numread / 2; i++)
  		{
  		    ptr->Strings[i + cur_string] =
! 			(offset_buf[i].number == -1 ||
! 			 offset_buf[i].number == -2)
  			?
  			    0
  			:
***************
*** 244,245
  	return(test.byte[1]);
  }

--- 248,250 -----
  	return(test.byte[1]);
  }
  

--
John Woods, Charles River Data Systems, Framingham MA, (617) 626-1101
...!decvax!frog!john, ...!mit-eddie!jfw, jfw@eddie.mit.edu

ROBOTS!!  Underpaid robots from hyper-space INSPECTED my DELICATE WASHABLES!!

agnew@trwrc.UUCP (R.A. Agnew) (09/04/87)

In article <1596@frog.UUCP> john@frog.UUCP (John Woods, Software) writes:
>
>My intent is to implement the System V Release 3 features in this terminfo
package.
>
Is there anything in V.3 that would make terminfo/curses/tic etc. 
incompatible with V.2?

rlk@chinet.UUCP (Richard Klappal) (09/10/87)

In article <225@xrxns.UUCP> liebman.lsbgegpcad@Xerox.Com (Chris Liebman) writes:
>I just blew the dust off of an old archive tape and loaded in the 
>public domain curses/terminfo package that Pavel Curtis posted to the net
>a Loooooooong time ago.  Bad news, on my 68020 4.3bsd box I get core
>dumping problems when I run compile.   I have not looked into this yet
>and I thought I would post this to see if anyone has patches (to the original

I don't have the exact fix in front of me, but check all of the
comparisons that determine whether or not byte swapping is needed.
One of them has the resulting then/else code reversed, meaning that
for the one section, byte-swapping takes place when it shouldn't, and
vice versa.  Fix that and it should work.  I have it working (as far
as I have tested) on my 68000 based Fortune V7/BSD4.? system.

-- 
---
UUCP: ..!ihnp4!chinet!uklpl!rlk || MCIMail: rklappal || Compuserve: 74106,1021
      ..!ihnp4!ihu1h!rlk
---