X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;ds=sidebyside;f=ncurses%2Fbase%2Flib_screen.c;fp=ncurses%2Fbase%2Flib_screen.c;h=c11df4bb6966a7abaa6841ea7e97fc0e1820de0e;hb=0819b56c3096ed77dd36312b0c4e8f37e7d46c88;hp=f7fc7badf8f1df076c6b9019241af051dd897db3;hpb=808858ace09b9bf60f7154e33cb6572f49347101;p=ncurses.git diff --git a/ncurses/base/lib_screen.c b/ncurses/base/lib_screen.c index f7fc7bad..c11df4bb 100644 --- a/ncurses/base/lib_screen.c +++ b/ncurses/base/lib_screen.c @@ -41,7 +41,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_screen.c,v 1.74 2015/04/04 14:00:34 tom Exp $") +MODULE_ID("$Id: lib_screen.c,v 1.75 2015/04/18 21:58:03 tom Exp $") #define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */ @@ -735,7 +735,7 @@ encode_cell(char *target, CARG_CH_T source, CARG_CH_T previous) target += strlen(target); *target++ = MARKER; if (ch < 32 || ch >= 127) { - sprintf(target, "%03o", ch); + sprintf(target, "%03o", UChar(ch)); } else { switch (ch) { case ' ': @@ -746,7 +746,7 @@ encode_cell(char *target, CARG_CH_T source, CARG_CH_T previous) *target = '\0'; break; default: - sprintf(--target, "%c", ch); + sprintf(--target, "%c", UChar(ch)); break; } } @@ -843,12 +843,18 @@ putwin(WINDOW *win, FILE *filep) || ferror(filep)) returnCode(code); for (x = 0; x <= win->_maxx; x++) { +#if NCURSES_WIDECHAR int len = wcwidth(data[x].chars[0]); encode_cell(buffer, CHREF(data[x]), CHREF(last_cell)); last_cell = data[x]; PUTS(buffer); if (len > 1) x += (len - 1); +#else + encode_cell(buffer, CHREF(data[x]), CHREF(last_cell)); + last_cell = data[x]; + PUTS(buffer); +#endif } PUTS("\n"); }