[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug in the alternate character set output
From: |
Alexei Malinin |
Subject: |
bug in the alternate character set output |
Date: |
Fri, 09 Sep 2011 11:29:41 +0400 |
User-agent: |
Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.6) Gecko/20070819 SeaMonkey/1.1.4 |
Nicholas Marriott wrote:
> I get the same results on Linux and OpenBSD so if this is a problem I
> suspect it is ncurses rather than OpenBSD.
>
> You can take this to ncurses-dev or I will have a dig around when I have
> time, it'd help if you can come up with a simpler example (perhaps where
> you only change the x member of acsc).
>
>
> On Mon, Jul 18, 2011 at 04:28:41PM +0400, address@hidden wrote:
>
>> Synopsis: bug in the alternate character set output
>> Category: system
>> Environment:
>> System: OpenBSD 4.2 & 4.9
>> Architecture: OpenBSD.i386
>> Machine: i386
>> Description:
>> curses and the like applications display curses ACS_VLINE
>> characters incorrectly if the ACS_VLINE character is set
>> to "|"
>> How-To-Repeat:
>> let's prepare test terminfo entry, where curses ACS_VLINE
>> character is set to "|" (i. e. acsc must have "x|"
>> somewhere in a terminfo description):
>>
>> # cd
>> # vi xterm0.ti
>> # cat xterm0.ti
>>
>> # ACS test
>> xterm0|xterm with simple ASCII pseudographics,
>> acsc=+>\,<-\^.v0#`+a\:f\\h#j+k+l+m+n+o~p-q-r-s_t+u+v+w+|!}#~ox|,
>> use=xterm,
>>
>> # cat xterm0.ti >> /usr/src/share/termtypes/termtypes.master
>> # cd /usr/src/share/termtypes
>> # make obj
>> # make cleandir
>> # make depend
>> # make
>> # make install
>>
>> after that let's prepare test curses program:
>>
>> # cd
>> # vi test.c
>> # cat test.c
>>
>> #include <stdlib.h>
>> #include <curses.h>
>>
>> void ERROR(char *diag) {
>> printf("%s\n", diag);
>> exit(1);
>> }
>>
>> int main() {
>> if (initscr() == NULL)
>> ERROR("initscr() error!");
>> if (cbreak() != OK)
>> ERROR("cbreak() error!");
>> if (noecho() != OK)
>> ERROR("noecho() error!");
>> if (nonl() != OK)
>> ERROR("nonl() error!");
>> if (intrflush(stdscr, FALSE) != OK)
>> ERROR("intrflush(stdscr, FALSE) error!");
>> if (keypad(stdscr, TRUE) != OK)
>> ERROR("keypad(stdscr, TRUE) error!");
>> if (border(0, 0, 0, 0, 0, 0, 0, 0) != OK)
>> ERROR("border(0, 0, 0, 0, 0, 0, 0, 0) error!");
>> if (refresh() != OK)
>> ERROR("refresh() error!");
>> if (getch() == ERR)
>> ERROR("getch() error!");
>> if (endwin() != OK)
>> ERROR("endwin() error!");
>> return (0);
>> }
>>
>> # rm -f test ; cc -lcurses -o test test.c ; echo $?
>> 0
>>
>> at console with TERM set to "xterm0" or in an xterm
>> window (which was started as "xterm -tn xterm0 &")
>> let's run our test program:
>>
>> # ./test
>>
>> this test shows us that curses ACS_VLINE characters
>> are displayed incorrectly (i. e. not as "|")
>>
>> Fix:
>> workaround is dumb - change "|" to "!" and curses
>> ACS_VLINE characters will be displayed correctly
>> (as "!"); but this does not fix the problem!
>>
>>
>> --
>> Alexei Malinin
>>
- bug in the alternate character set output,
Alexei Malinin <=