/****************************************************************************
- * Copyright 2020,2022 Thomas E. Dickey *
+ * Copyright 2020-2022,2023 Thomas E. Dickey *
* Copyright 2015,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
/*
* Author: Thomas E. Dickey
*
- * $Id: test_setupterm.c,v 1.12 2022/05/15 16:36:00 tom Exp $
+ * $Id: test_setupterm.c,v 1.17 2023/06/24 14:19:52 tom Exp $
*
* A simple demo of setupterm/restartterm.
*/
static size_t num_saved;
static size_t max_saved;
+static void
+failed(const char *msg)
+{
+ perror(msg);
+ ExitProgram(EXIT_FAILURE);
+}
+
static void
finish(int code)
{
if (num_saved + 1 >= max_saved) {
max_saved += 100;
saved_terminals = typeRealloc(TERMINAL *, max_saved, saved_terminals);
+ if (saved_terminals == NULL)
+ failed("realloc");
}
saved_terminals[num_saved++] = cur_term;
}
}
static void
-usage(void)
+usage(int ok)
{
static const char *msg[] =
{
- "Usage: test_setupterm [options] [terminal]",
- "",
- "Demonstrate error-checking for setupterm and restartterm.",
- "",
- "Options:",
- " -a automatic test for each success/error code",
- " -f treat errors as fatal",
- " -n set environment to disable terminfo database, assuming",
- " the compiled-in paths for database also fail",
+ "Usage: test_setupterm [options] [terminal]"
+ ,""
+ ,USAGE_COMMON
+ ,"Demonstrate error-checking for setupterm and restartterm."
+ ,""
+ ,"Options:"
+ ," -a automatic test for each success/error code"
+ ," -f treat errors as fatal"
+ ," -n set environment to disable terminfo database, assuming"
+ ," the compiled-in paths for database also fail"
#if HAVE_RESTARTTERM
- " -r test restartterm rather than setupterm",
+ ," -r test restartterm rather than setupterm"
#endif
};
unsigned n;
for (n = 0; n < SIZEOF(msg); ++n) {
fprintf(stderr, "%s\n", msg[n]);
}
- finish(EXIT_FAILURE);
+ finish(ok ? EXIT_SUCCESS : EXIT_FAILURE);
}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
int
main(int argc, char *argv[])
{
+ int ch;
int n;
- while ((n = getopt(argc, argv, "afnr")) != -1) {
- switch (n) {
+ while ((ch = getopt(argc, argv, OPTS_COMMON "afnr")) != -1) {
+ switch (ch) {
case 'a':
a_opt = TRUE;
break;
r_opt = TRUE;
break;
#endif
+ case OPTS_VERSION:
+ show_version(argv);
+ ExitProgram(EXIT_SUCCESS);
default:
- usage();
- break;
+ usage(ch == OPTS_USAGE);
+ /* NOTREACHED */
}
}
static char predef[][9] =
{"vt100", "dumb", "lpr", "unknown", "none-such"};
if (optind < argc) {
- usage();
+ usage(FALSE);
}
for (n = 0; n < 4; ++n) {
test_setupterm(predef[n]);
#else /* !HAVE_TIGETSTR */
int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(void)
{
printf("This program requires the terminfo functions such as tigetstr\n");
ExitProgram(EXIT_FAILURE);