X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Ftest_add_wchstr.c;h=a7ada59ec9c9b9f55e9e9d916fa0ac708698401c;hp=5f78aeb18f6f03ee45245375d8d51a4da1df35a1;hb=b661daf1160a873609d70843999cd46eff25d1f0;hpb=e2e9c09c48b19b24979cafb2d4864f538b5ddd1c diff --git a/test/test_add_wchstr.c b/test/test_add_wchstr.c index 5f78aeb1..a7ada59e 100644 --- a/test/test_add_wchstr.c +++ b/test/test_add_wchstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010-2014,2016 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2009-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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_add_wchstr.c,v 1.22 2016/09/10 21:28:40 tom Exp $ + * $Id: test_add_wchstr.c,v 1.28 2021/03/27 23:41:34 tom Exp $ * * Demonstrate the waddwchstr() and wadd_wch functions. * Thomas Dickey - 2009/9/12 @@ -48,18 +49,24 @@ #define WIDE_LINEDATA #include +#undef AddCh #undef MvAddCh #undef MvAddStr #undef MvWAddCh +#undef MvWAddChStr #undef MvWAddStr +#undef WAddCh -/* definitions to make it simpler to compare with test_addstr.c */ +/* + * redefinitions to simplify comparison between test_*str programs + */ #define AddNStr add_wchnstr #define AddStr add_wchstr #define MvAddNStr (void) mvadd_wchnstr #define MvAddStr (void) mvadd_wchstr #define MvWAddNStr (void) mvwadd_wchnstr #define MvWAddStr (void) mvwadd_wchstr +#define MvWAddChStr(w,y,x,s) (void) mvwadd_wchstr((w),(y),(x),(s)) #define WAddNStr wadd_wchnstr #define WAddStr wadd_wchstr @@ -125,9 +132,10 @@ ChWLen(const wchar_t *source) if (!pass_ctls) { size_t adjust = 0; size_t n; - const char *s; for (n = 0; n < result; ++n) { + const char *s; + if (source[n] < 256 && (s = unctrl((chtype) source[n])) != 0) { adjust += (strlen(s) - 1); } @@ -291,7 +299,7 @@ AddCh(chtype ch) #define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n))) static void -test_add_wchstr(int level) +recursive_test(int level) { static bool first = TRUE; @@ -306,8 +314,12 @@ test_add_wchstr(int level) WINDOW *work = 0; WINDOW *show = 0; int margin = (2 * MY_TABSIZE) - 1; - Options option = ((m_opt ? oMove : oDefault) - | ((w_opt || (level > 0)) ? oWindow : oDefault)); + Options option = (Options) ((unsigned) (m_opt + ? oMove + : oDefault) + | (unsigned) ((w_opt || (level > 0)) + ? oWindow + : oDefault)); if (first) { static char cmd[80]; @@ -352,8 +364,8 @@ test_add_wchstr(int level) MvWVLine(work, row, margin + 1, ACS_VLINE, limit - 2); limit /= 2; - (void) mvwadd_wchstr(work, 1, 2, ChStr("String")); - (void) mvwadd_wchstr(work, limit + 1, 2, ChStr("Chars")); + MvWAddChStr(work, 1, 2, ChStr("String")); + MvWAddChStr(work, limit + 1, 2, ChStr("Chars")); wnoutrefresh(work); buffer[length = 0] = '\0'; @@ -370,7 +382,7 @@ test_add_wchstr(int level) wmove(work, row, margin + 1); switch (ch) { case key_RECUR: - test_add_wchstr(level + 1); + recursive_test(level + 1); if (look) touchwin(look); @@ -583,8 +595,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (optind < argc) usage(); - test_add_wchstr(0); + recursive_test(0); endwin(); +#if NO_LEAKS + free(temp_buffer); +#endif ExitProgram(EXIT_SUCCESS); } #else