1 /****************************************************************************
2 * Copyright (c) 2007-2010,2017 Free Software Foundation, Inc. *
4 * Permission is hereby granted, free of charge, to any person obtaining a *
5 * copy of this software and associated documentation files (the *
6 * "Software"), to deal in the Software without restriction, including *
7 * without limitation the rights to use, copy, modify, merge, publish, *
8 * distribute, distribute with modifications, sublicense, and/or sell *
9 * copies of the Software, and to permit persons to whom the Software is *
10 * furnished to do so, subject to the following conditions: *
12 * The above copyright notice and this permission notice shall be included *
13 * in all copies or substantial portions of the Software. *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
18 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
21 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
23 * Except as contained in this notice, the name(s) of the above copyright *
24 * holders shall not be used in advertising or otherwise to promote the *
25 * sale, use or other dealings in this Software without prior written *
27 ****************************************************************************/
29 * $Id: test_arrays.c,v 1.8 2017/10/07 23:55:21 tom Exp $
31 * Author: Thomas E Dickey
33 * Demonstrate the public arrays from the terminfo library.
35 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];
36 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];
37 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];
38 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];
39 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];
40 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];
41 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];
42 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];
43 extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];
48 #include <test.priv.h>
51 #if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
60 #define PLAIN(opts, name) if (opts) dump_array(#name, name)
63 dump_array(const char *name, NCURSES_CONST char *const *list)
67 printf("%s:\n", name);
68 for (n = 0; list[n] != 0; ++n) {
69 printf("%5d:%s\n", n, list[n]);
76 PLAIN(opt_T && opt_n, boolnames);
77 PLAIN(opt_C && opt_c, boolcodes);
78 PLAIN(opt_T && opt_f, boolfnames);
80 PLAIN(opt_T && opt_n, numnames);
81 PLAIN(opt_C && opt_c, numcodes);
82 PLAIN(opt_T && opt_f, numfnames);
84 PLAIN(opt_T && opt_n, strnames);
85 PLAIN(opt_C && opt_c, strcodes);
86 PLAIN(opt_T && opt_f, strfnames);
89 #define STRING(opts, name) if (opts) { printf("%s\"%s\"", c++ ? "," : "", name); }
90 #define NUMBER(opts, value) if (opts) { printf("%s%d", c++ ? "," : "", value); }
98 STRING(opt_t, "Index");
99 STRING(opt_t, "Type");
100 STRING(opt_n, "Name");
101 STRING(opt_c, "Code");
102 STRING(opt_f, "FName");
105 for (r = 0; boolnames[r]; ++r) {
108 STRING(opt_t, "bool");
109 STRING(opt_T && opt_n, boolnames[r]);
110 STRING(opt_C && opt_c, boolcodes[r]);
111 STRING(opt_T && opt_f, boolfnames[r]);
115 for (r = 0; numnames[r]; ++r) {
118 STRING(opt_t, "num");
119 STRING(opt_T && opt_n, numnames[r]);
120 STRING(opt_C && opt_c, numcodes[r]);
121 STRING(opt_T && opt_f, numfnames[r]);
125 for (r = 0; strnames[r]; ++r) {
128 STRING(opt_t, "str");
129 STRING(opt_T && opt_n, strnames[r]);
130 STRING(opt_C && opt_c, strcodes[r]);
131 STRING(opt_T && opt_f, strfnames[r]);
139 static const char *msg[] =
141 "Usage: test_arrays [options]",
143 "If no options are given, print all (boolean, numeric, string)",
144 "capability names showing their index within the tables.",
147 " -C print termcap names",
148 " -T print terminfo names",
149 " -c print termcap names",
150 " -f print full terminfo names",
151 " -n print short terminfo names",
152 " -t print the result as CSV table",
155 for (n = 0; n < SIZEOF(msg); ++n) {
156 fprintf(stderr, "%s\n", msg[n]);
158 ExitProgram(EXIT_FAILURE);
162 main(int argc, char *argv[])
166 while ((n = getopt(argc, argv, "CTcfnt")) != -1) {
194 if (!(opt_T || opt_C)) {
195 opt_T = opt_C = TRUE;
197 if (!(opt_c || opt_f || opt_n)) {
198 opt_c = opt_f = opt_n = TRUE;
207 ExitProgram(EXIT_SUCCESS);
212 main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
214 printf("This program requires the terminfo arrays\n");
215 ExitProgram(EXIT_FAILURE);
218 #else /* !HAVE_TIGETSTR */
220 main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
222 printf("This program requires the terminfo functions such as tigetstr\n");
223 ExitProgram(EXIT_FAILURE);
225 #endif /* HAVE_TIGETSTR */