Update to ncurses-6.0

Change-Id: I98ab2ea8a5e13cca9f8b7cf6277b9b14a4da4299
diff --git a/test/redraw.c b/test/redraw.c
new file mode 100644
index 0000000..9cb0de9
--- /dev/null
+++ b/test/redraw.c
@@ -0,0 +1,171 @@
+/****************************************************************************
+ * Copyright (c) 2006-2011,2012 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+/*
+ * $Id: redraw.c,v 1.8 2012/12/08 20:46:02 tom Exp $
+ *
+ * Demonstrate the redrawwin() and wredrawln() functions.
+ * Thomas Dickey - 2006/11/4
+ */
+
+#include <test.priv.h>
+
+static void
+trash(int beg_x, int max_x, int cur_x)
+{
+    int x;
+
+    for (x = cur_x; x > beg_x; --x) {
+	putchar('\b');
+    }
+    for (x = beg_x; x < max_x; ++x) {
+	if (x < cur_x)
+	    putchar('<');
+	else if (x == cur_x)
+	    putchar('=');
+	else if (x > cur_x)
+	    putchar('>');
+    }
+    for (x = max_x; x > cur_x; --x) {
+	putchar('\b');
+    }
+}
+
+static void
+test_redraw(WINDOW *win)
+{
+    WINDOW *win1;
+    WINDOW *win2;
+    bool done = FALSE;
+    int ch, y, x;
+    int max_y, max_x;
+    int beg_y, beg_x;
+
+    assert(win != 0);
+
+    scrollok(win, TRUE);
+    keypad(win, TRUE);
+    getmaxyx(win, max_y, max_x);
+    getbegyx(win, beg_y, beg_x);
+    while (!done) {
+	ch = wgetch(win);
+	getyx(win, y, x);
+	switch (ch) {
+	case 'q':
+	    /* FALLTHRU */
+	case ESCAPE:
+	    done = TRUE;
+	    break;
+	case 'w':
+	    win1 = newwin(max_y, max_x,
+			  beg_y, beg_x);
+	    win2 = newwin(max_y - 2, max_x - 2,
+			  beg_y + 1, beg_x + 1);
+	    box(win1, 0, 0);
+	    wrefresh(win1);
+
+	    test_redraw(win2);
+
+	    delwin(win2);
+	    delwin(win1);
+
+	    touchwin(win);
+	    break;
+
+	case '!':
+	    /*
+	     * redrawwin() and wredrawln() do not take into account the
+	     * possibility that the cursor may have moved.  That makes them
+	     * cumbersome for using with a shell command.  So we simply
+	     * trash the current line of the window using backspace/overwrite.
+	     */
+	    trash(beg_x, max_x, x + beg_x);
+	    break;
+
+#ifdef NCURSES_VERSION
+	case '@':
+	    /*
+	     * For a shell command, we can work around the problem noted above
+	     * using mvcur().  It is ifdef'd for NCURSES, since X/Open does
+	     * not define the case where the old location is unknown. 
+	     */
+	    IGNORE_RC(system("date"));
+	    mvcur(-1, -1, y, x);
+	    break;
+#endif
+
+	case CTRL('W'):
+	    redrawwin(win);
+	    break;
+
+	case CTRL('L'):
+	    wredrawln(win, y, 1);
+	    break;
+
+	case KEY_UP:
+	    if (y > 0)
+		wmove(win, y - 1, x);
+	    break;
+
+	case KEY_DOWN:
+	    if (y < max_y)
+		wmove(win, y + 1, x);
+	    break;
+
+	case KEY_LEFT:
+	    if (x > 0)
+		wmove(win, y, x - 1);
+	    break;
+
+	case KEY_RIGHT:
+	    if (x < max_x)
+		wmove(win, y, x + 1);
+	    break;
+
+	default:
+	    if (ch > KEY_MIN) {
+		waddstr(win, keyname(ch));
+	    } else {
+		waddstr(win, unctrl(UChar(ch)));
+	    }
+	    break;
+	}
+	wnoutrefresh(win);
+	doupdate();
+    }
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+    initscr();
+    raw();
+    noecho();
+    test_redraw(stdscr);
+    endwin();
+    ExitProgram(EXIT_SUCCESS);
+}