]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/ncurses.c
ncurses 6.1 - patch 20181201
[ncurses.git] / test / ncurses.c
index ab842ff58d11fa716252ed16de4b398c68b88f49..259daf47dd242ef2cf31606d926142d5f73db5f9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2017,2018 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            *
@@ -40,7 +40,7 @@ AUTHOR
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
            Thomas E. Dickey (beginning revision 1.27 in 1996).
 
-$Id: ncurses.c,v 1.502 2017/11/02 20:46:06 tom Exp $
+$Id: ncurses.c,v 1.510 2018/12/02 01:11:05 tom Exp $
 
 ***************************************************************************/
 
@@ -355,6 +355,7 @@ wGet_wchar(WINDOW *win, wint_t *result)
 #define Get_wchar(result) wGet_wchar(stdscr, result)
 
 /* replaces wgetn_wstr(), since we want to be able to edit values */
+#if USE_SOFTKEYS
 static void
 wGet_wstring(WINDOW *win, wchar_t *buffer, int limit)
 {
@@ -460,8 +461,9 @@ wGet_wstring(WINDOW *win, wchar_t *buffer, int limit)
     wmove(win, y0, x0);
     noecho();
 }
+#endif /* USE_SOFTKEYS */
 
-#endif
+#endif /* USE_WIDEC_SUPPORT */
 
 static void
 Pause(void)
@@ -486,7 +488,7 @@ ShellOut(bool message)
        addstr("Shelling out...");
     def_prog_mode();
     endwin();
-#ifdef __MINGW32__
+#ifdef _WIN32
     system("cmd.exe");
 #else
     IGNORE_RC(system("sh"));
@@ -4365,7 +4367,10 @@ x_acs_test(bool recur GCC_UNUSED)
     void (*last_show_wacs) (int, attr_t, NCURSES_PAIRS_T) = 0;
     W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)];
     unsigned my_size = init_w_attr_list(my_list, term_attrs());
+    char at_page[5];
+    bool pending_code = FALSE;
 
+    at_page[0] = '\0';
     do {
        switch (c) {
        case CTRL('L'):
@@ -4397,15 +4402,39 @@ x_acs_test(bool recur GCC_UNUSED)
        case 'u':
            ToggleAcs(last_show_wacs, show_utf8_chars);
            break;
+       case '@':
+           pending_code = !pending_code;
+           if (pending_code) {
+               sprintf(at_page, "%02x", digit);
+           } else if (at_page[0] != '\0') {
+               sscanf(at_page, "%x", &digit);
+           }
+           break;
        default:
-           if (c < 256 && isdigit(c)) {
+           if (pending_code && isxdigit(c)) {
+               size_t len = strlen(at_page);
+               if (len && at_page[0] == '0') {
+                   memmove(at_page, at_page + 1, len--);
+               }
+               if (len < sizeof(at_page) - 1) {
+                   at_page[len++] = (char) c;
+                   at_page[len] = '\0';
+               }
+           } else if (pending_code
+                      && (c == '\b' || c == KEY_BACKSPACE || c == KEY_DC)) {
+               size_t len = strlen(at_page);
+               if (len)
+                   at_page[--len] = '\0';
+           } else if (c < 256 && isdigit(c)) {
                digit = (c - '0');
                last_show_wacs = 0;
            } else if (c == '+') {
                ++digit;
+               sprintf(at_page, "%02x", digit);
                last_show_wacs = 0;
            } else if (c == '-' && digit > 0) {
                --digit;
+               sprintf(at_page, "%02x", digit);
                last_show_wacs = 0;
            } else if (c == '>' && repeat < (COLS / 4)) {
                ++repeat;
@@ -4433,7 +4462,11 @@ x_acs_test(bool recur GCC_UNUSED)
        }
 
        MvPrintw(LINES - 4, 0,
-                "Select: a/d/t WACS, w=all x=box, u UTF-8, ^L repaint");
+                "Select: a/d/t WACS, w=%d/page, @",
+                pagesize);
+       printw("%s",
+              pending_code ? at_page : "page");
+       addstr(", x=box, u UTF-8, ^L repaint");
        MvPrintw(LINES - 3, 2,
                 "0-9,+/- non-ASCII, </> repeat, _ space, ESC=quit");
        if (UseColors) {
@@ -7168,9 +7201,12 @@ overlap_test(bool recur GCC_UNUSED)
     int shift = 0, last_refresh = -1;
     int state, flavor[OVERLAP_FLAVORS];
 
-    if ((win1 = make_overlap(0)) == 0
-       || (win2 = make_overlap(1)) == 0)
+    if ((win1 = make_overlap(0)) == 0) {
+       return ERR;
+    } else if ((win2 = make_overlap(1)) == 0) {
+       delwin(win1);
        return ERR;
+    }
 
     curs_set(0);
     raw();
@@ -7365,9 +7401,12 @@ x_overlap_test(bool recur GCC_UNUSED)
     int shift = 0, last_refresh = -1;
     int state, flavor[OVERLAP_FLAVORS];
 
-    if ((win1 = make_overlap(0)) == 0
-       || (win2 = make_overlap(1)) == 0)
+    if ((win1 = make_overlap(0)) == 0) {
+       return ERR;
+    } else if ((win2 = make_overlap(1)) == 0) {
+       delwin(win1);
        return ERR;
+    }
 
     curs_set(0);
     raw();
@@ -7611,7 +7650,7 @@ usage(void)
 #if USE_LIBPANEL
        ,"  -s msec  specify nominal time for panel-demo (default: 1, to hold)"
 #endif
-#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(__MINGW32__)
+#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_WIN32)
        ,"  -T       call use_tioctl(TRUE) to allow SIGWINCH to override environment"
 #endif
 #ifdef TRACE
@@ -7714,7 +7753,7 @@ main_menu(bool top)
 #if USE_LIBMENU
        CMDS(TRUE, ONLY(menu_test),     'm', "exercise menu library"),
 #endif
-#if USE_LIBMENU
+#if USE_LIBPANEL
        CMDS(TRUE, BOTH(panel_test),    'o', "exercise panel library"),
 #endif
 #if HAVE_NEWPAD
@@ -7767,6 +7806,10 @@ main_menu(bool top)
            if (read(fileno(stdin), &ch, (size_t) 1) <= 0) {
                if (command == 0)
                    command = 'q';
+               if (errno == EINTR) {
+                   clearerr(stdin);
+                   continue;
+               }
                break;
            } else if (command == 0 && !isspace(UChar(ch))) {
                command = ch;
@@ -7900,7 +7943,7 @@ main(int argc, char *argv[])
            nap_msec = (int) atol(optarg);
            break;
 #endif
-#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(__MINGW32__)
+#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_WIN32)
        case 'T':
            use_tioctl(TRUE);
            break;