ncurses 6.2 - patch 20200321
[ncurses.git] / test / clip_printw.c
index d40bf014202f472203d27528ad05d486a341f6c1..f068457619833ddecdfb44e0c96ca23c3b011a15 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 2008-2012,2014 Free Software Foundation, Inc.              *
+ * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2008-2016,2017 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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  * authorization.                                                           *
  ****************************************************************************/
 /*
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: clip_printw.c,v 1.10 2014/08/02 23:13:29 tom Exp $
+ * $Id: clip_printw.c,v 1.17 2020/02/02 23:34:34 tom Exp $
  *
  * demonstrate how to use printw without wrapping.
  */
 
 #include <test.priv.h>
  *
  * demonstrate how to use printw without wrapping.
  */
 
 #include <test.priv.h>
+#include <popup_msg.h>
 
 #ifdef HAVE_VW_PRINTW
 
 
 #ifdef HAVE_VW_PRINTW
 
@@ -55,7 +57,7 @@ typedef struct {
 } STATUS;
 
 static int
 } STATUS;
 
 static int
-clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt,...)
+clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt, ...)
 {
     int y0, x0, y1, x1, width;
     WINDOW *sub;
 {
     int y0, x0, y1, x1, width;
     WINDOW *sub;
@@ -102,10 +104,11 @@ color_params(unsigned state, int *pair)
     };
     /* *INDENT-ON* */
 
     };
     /* *INDENT-ON* */
 
-    static bool first = TRUE;
     const char *result = 0;
 
     if (has_colors()) {
     const char *result = 0;
 
     if (has_colors()) {
+       static bool first = TRUE;
+
        if (first) {
            unsigned n;
 
        if (first) {
            unsigned n;
 
@@ -132,11 +135,11 @@ video_params(unsigned state, attr_t *attr)
        attr_t attr;
        const char *msg;
     } table[] = {
        attr_t attr;
        const char *msg;
     } table[] = {
-       { A_NORMAL,     "normal" },
-       { A_BOLD,       "bold" },
-       { A_REVERSE,    "reverse" },
-       { A_UNDERLINE,  "underline" },
-       { A_BLINK,      "blink" },
+       { WA_NORMAL,    "normal" },
+       { WA_BOLD,      "bold" },
+       { WA_REVERSE,   "reverse" },
+       { WA_UNDERLINE, "underline" },
+       { WA_BLINK,     "blink" },
     };
     /* *INDENT-ON* */
 
     };
     /* *INDENT-ON* */
 
@@ -231,7 +234,7 @@ init_status(WINDOW *win, STATUS * sp)
 static void
 show_help(WINDOW *win)
 {
 static void
 show_help(WINDOW *win)
 {
-    static const char *table[] =
+    static const char *msgs[] =
     {
        "Basic commands:"
        ,"Use h/j/k/l or arrow keys to move the cursor."
     {
        "Basic commands:"
        ,"Use h/j/k/l or arrow keys to move the cursor."
@@ -240,21 +243,13 @@ show_help(WINDOW *win)
        ,"Other commands:"
        ,"space toggles through the set of video attributes and colors."
        ,"t     touches (forces repaint) of the current line."
        ,"Other commands:"
        ,"space toggles through the set of video attributes and colors."
        ,"t     touches (forces repaint) of the current line."
-       ,".     calls clip_wprintw at the current position with the given count."
+       ,".     calls vw_printw at the current position with the given count."
        ,"=     resets count to zero."
        ,"?     shows this help-window"
        ,"=     resets count to zero."
        ,"?     shows this help-window"
-       ,""
+       ,0
     };
 
     };
 
-    int y_max, x_max;
-    int row;
-
-    getmaxyx(win, y_max, x_max);
-    for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) {
-       MvWPrintw(win, row, 0, "%.*s", x_max, table[row]);
-    }
-    while (wgetch(win) != 'q')
-       beep();
+    popup_msg(win, msgs);
 }
 
 static void
 }
 
 static void
@@ -304,8 +299,8 @@ update_status(WINDOW *win, STATUS * sp)
        sp->count = 0;
        show_status(win, sp);
        break;
        sp->count = 0;
        show_status(win, sp);
        break;
-    case '?':
-       do_subwindow(win, sp, show_help);
+    case HELP_KEY_1:
+       show_help(win);
        break;
     default:
        if (isdigit(sp->ch)) {
        break;
     default:
        if (isdigit(sp->ch)) {
@@ -334,10 +329,10 @@ test_clipping(WINDOW *win)
            (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr));
            if (st.count > 0) {
                need = (unsigned) st.count + 1;
            (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr));
            if (st.count > 0) {
                need = (unsigned) st.count + 1;
-               sprintf(fmt, "%%c%%%ds%%c", st.count);
+               _nc_SPRINTF(fmt, _nc_SLIMIT(sizeof(fmt)) "%%c%%%ds%%c", st.count);
            } else {
                need = (unsigned) getmaxx(win) - 1;
            } else {
                need = (unsigned) getmaxx(win) - 1;
-               strcpy(fmt, "%c%s%c");
+               _nc_STRCPY(fmt, "%c%s%c", sizeof(fmt));
            }
            if ((buffer = typeMalloc(char, need + 1)) != 0) {
                for (j = 0; j < need; ++j) {
            }
            if ((buffer = typeMalloc(char, need + 1)) != 0) {
                for (j = 0; j < need; ++j) {