From: "Andrew A. Chernov, Black Mage" <ache@astral.msk.su>
Newsgroups: comp.unix.bsd
Subject: [386bsd] Patch #2 for curses, make it clean 8-bit
Date: Fri, 08 Jan 93 18:51:32 +0300
Distribution: world
Organization: Ha-oh-lahm Yetzirah
Reply-To: ache@astral.msk.su

I don't think, that any programs wish to use internal curses
attribute _STANDOUT directly, in expressions like:
	addch( ch | _STANDOUT );
Normal interface use standout() and standend() functions instead.
Many programs use 'char' type (with sign extention) for input characters
and sign extention becomes _STANDOUT mode in this case.
So, I refuse this future and allow 8-bit characters for programs,
which is designed for 7-bit only ('char' type using instead of
'unsigned char').

ATTENTION: use my first patch before this

*** addch.c.pl1	Fri Jan  8 15:40:46 1993
--- addch.c	Fri Jan  8 18:26:21 1993
***************
*** 43,49 ****
   */
  waddch(win, c)
  WINDOW	*win;
! chtype c;
  {
!     return _waddbytes(win, &c, 1);
  }
--- 43,50 ----
   */
  waddch(win, c)
  WINDOW	*win;
! char c;
  {
!     chtype ch = (unsigned char) c;
!     return _waddbytes(win, &ch, 1);
  }
*** box.c.pl1	Fri Jan  8 17:00:54 1993
--- box.c	Fri Jan  8 18:26:21 1993
***************
*** 44,50 ****
   */
  box(win, vert, hor)
  reg WINDOW	*win;
! chtype vert, hor; {
  
  	reg int		i;
  	reg int		endy, endx;
--- 44,50 ----
   */
  box(win, vert, hor)
  reg WINDOW	*win;
! char vert, hor; {
  
  	reg int		i;
  	reg int		endy, endx;
***************
*** 55,64 ****
  	fp = win->_y[0];
  	lp = win->_y[endy];
  	for (i = 0; i < endx; i++)
! 		fp[i] = lp[i] = hor;
  	endx--;
  	for (i = 0; i <= endy; i++)
! 		win->_y[i][0] = (win->_y[i][endx] = vert);
  	if (!win->_scroll && (win->_flags&_SCROLLWIN))
  		fp[0] = fp[endx] = lp[0] = lp[endx] = ' ';
  	touchwin(win);
--- 55,64 ----
  	fp = win->_y[0];
  	lp = win->_y[endy];
  	for (i = 0; i < endx; i++)
! 		fp[i] = lp[i] = (unsigned char) hor;
  	endx--;
  	for (i = 0; i <= endy; i++)
! 		win->_y[i][0] = (win->_y[i][endx] = (unsigned char) vert);
  	if (!win->_scroll && (win->_flags&_SCROLLWIN))
  		fp[0] = fp[endx] = lp[0] = lp[endx] = ' ';
  	touchwin(win);
*** insch.c.pl1	Fri Jan  8 16:11:22 1993
--- insch.c	Fri Jan  8 18:28:48 1993
***************
*** 44,50 ****
   */
  winsch(win, c)
  reg WINDOW	*win;
! chtype          c; {
  
  	reg chtype      *temp1, *temp2;
  	reg chtype      *end;
--- 44,50 ----
   */
  winsch(win, c)
  reg WINDOW	*win;
! char c; {
  
  	reg chtype      *temp1, *temp2;
  	reg chtype      *end;
***************
*** 54,60 ****
  	temp2 = temp1 - 1;
  	while (temp1 > end)
  		*temp1-- = *temp2--;
! 	*temp1 = c;
  	touchline(win, win->_cury, win->_curx, win->_maxx - 1);
  	if (win->_cury == LINES - 1 && win->_y[LINES-1][COLS-1] != ' ')
  		if (win->_scroll) {
--- 54,60 ----
  	temp2 = temp1 - 1;
  	while (temp1 > end)
  		*temp1-- = *temp2--;
! 	*temp1 = (unsigned char) c;
  	touchline(win, win->_cury, win->_curx, win->_maxx - 1);
  	if (win->_cury == LINES - 1 && win->_y[LINES-1][COLS-1] != ' ')
  		if (win->_scroll) {
-- 
In-This-Life:  Andrew A. Chernov    |  "Hay mas dicha, mas contento
Internet:      ache@astral.msk.su   |  "Que adorar una hermosura
Organization:  The RELCOM Corp.,    |  "Brujuleada entre los lejos
               Moscow, Russia       |  "De lo imposible?!"  (Calderon)

Newsgroups: comp.unix.bsd