Return to BSD News archive
Received: by minnie.vk1xwt.ampr.org with NNTP
id AA6226 ; Wed, 06 Jan 93 04:13:10 EST
Path: sserve!manuel.anu.edu.au!munnari.oz.au!sgiblab!darwin.sura.net!haven.umd.edu!uunet!mcsun!fuug!kiae!demos!newsserv
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
Message-ID: <YI4CQJh8l6@astral.msk.su>
Sender: news-service@newcom.kiae.su
Reply-To: ache@astral.msk.su
Lines: 116
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)