X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fview.c;h=e759a9b24ab2393335a70c688c3a16f54cc3e52f;hp=9f2d72f64f0a46e2550963ce48efbf7563817d5f;hb=cf94c7485f7b40ff7870b5bf9a65e7ab87481a76;hpb=a7d99bb6b29485693a21c0cc70d7925f2211769c;ds=sidebyside diff --git a/test/view.c b/test/view.c index 9f2d72f6..e759a9b2 100644 --- a/test/view.c +++ b/test/view.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -50,7 +50,7 @@ * scroll operation worked, and the refresh() code only had to do a * partial repaint. * - * $Id: view.c,v 1.69 2008/09/06 22:10:50 tom Exp $ + * $Id: view.c,v 1.77 2010/01/09 16:34:06 tom Exp $ */ #include @@ -62,8 +62,10 @@ #if HAVE_TERMIOS_H # include #else +#if !defined(__MINGW32__) # include #endif +#endif #if !defined(sun) || !HAVE_TERMIOS_H # if HAVE_SYS_IOCTL_H @@ -81,7 +83,7 @@ #if USE_WIDEC_SUPPORT #if HAVE_MBTOWC && HAVE_MBLEN -#define reset_mbytes(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0) +#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) #define count_mbytes(buffer,length,state) mblen(buffer,length) #define check_mbytes(wch,buffer,length,state) \ (int) mbtowc(&wch, buffer, length) @@ -149,11 +151,19 @@ ch_len(NCURSES_CH_T * src) { int result = 0; #if USE_WIDEC_SUPPORT + int count; #endif #if USE_WIDEC_SUPPORT - while (getcchar(src++, NULL, NULL, NULL, NULL) > 0) - result++; + for (;;) { + TEST_CCHAR(src, count, { + ++result; + ++src; + } + , { + break; + }) + } #else while (*src++) result++; @@ -281,7 +291,7 @@ main(int argc, char *argv[]) if (optind + 1 != argc) usage(); - if ((vec_lines = typeMalloc(NCURSES_CH_T *, MAXLINES + 2)) == 0) + if ((vec_lines = typeCalloc(NCURSES_CH_T *, MAXLINES + 2)) == 0) usage(); fname = argv[optind]; @@ -490,12 +500,11 @@ finish(int sig) #if CAN_RESIZE /* - * This uses functions that are "unsafe", but it seems to work on SunOS and - * Linux. Usually: the "unsafe" refers to the functions that POSIX lists - * which may be called from a signal handler. Those do not include buffered - * I/O, which is used for instance in wrefresh(). To be really portable, you - * should use the KEY_RESIZE return (which relies on ncurses' sigwinch - * handler). + * This uses functions that are "unsafe", but it seems to work on SunOS. + * Usually: the "unsafe" refers to the functions that POSIX lists which may be + * called from a signal handler. Those do not include buffered I/O, which is + * used for instance in wrefresh(). To be really portable, you should use the + * KEY_RESIZE return (which relies on ncurses' sigwinch handler). * * The 'wrefresh(curscr)' is needed to force the refresh to start from the top * of the screen -- some xterms mangle the bitmap while resizing. @@ -508,7 +517,7 @@ adjust(int sig) if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) { resize_term(size.ws_row, size.ws_col); - wrefresh(curscr); /* Linux needs this */ + wrefresh(curscr); show_all(sig ? "SIGWINCH" : "interrupt"); } interrupted = FALSE;