From: Dae San Hwang Date: 2008-12-04T13:40:39+09:00 Subject: [ruby-core:20291] Re: [Bug #805] Ruby 1.9.1 preview 2 : build failure on OpenSolaris I traced back header inclusions: "ruby-trunk/ext/curses/curses.c" conditionally includes "" "/usr/include/curses.h" includes "" "/usr/include/widec.h" includes "" "/usr/include/euc.h" includes "" "/usr/include/sys/euc.h" defines "#define ISPRINT(c, wp) (wp._multibyte && !ISASCII(c) || isprint(c))" Then "ruby-trunk/ext/curses/curses.c" defines function "curses_getch" which uses ISPRINT macro. (In Ruby 1.9.1 Preview 1, "curses_getch" didn't use ISPRINT macro.) On Dec 4, 2008, at 12:39 PM, Nobuyoshi Nakada wrote: > Hi, > > At Thu, 4 Dec 2008 12:15:03 +0900, > Dae San Hwang wrote in [ruby-core:20284]: >> I've checked system header files and found following macro >> definitions >> of ISPRINT. >> >> >> /* in "/usr/include/readline/chardefs.h" */ >> >> #define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) >> >> >> /* in "/usr/include/sys/euc.h" */ >> >> #define ISPRINT(c, wp) (wp._multibyte && !ISASCII(c) || isprint(c)) > > Hmmm, they obviously conflict. > > >> I guess the second definition of ISPRINT macro clashes with ruby? > > I guess so. Could you tell how/from where those headers are > included? > > -- > Nobu Nakada >