/****************************************************************************
- * Copyright (c) 2017 Free Software Foundation, Inc. *
+ * Copyright 2019-2022,2023 Thomas E. Dickey *
+ * Copyright 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 *
****************************************************************************/
/*
- * $Id: sp_tinfo.c,v 1.19 2017/05/13 23:19:04 tom Exp $
+ * $Id: sp_tinfo.c,v 1.29 2023/06/24 14:14:56 tom Exp $
*
* TOTO: add option for non-sp-funcs interface
*/
tgetent_sp(result->sp, temp, name);
free(temp);
} else {
- setupterm(name, fileno(output), &error);
+ setupterm((NCURSES_CONST char *) name, fileno(output), &error);
}
result->term = cur_term;
}
}
+#define TC_PARMS data->sp, (NCURSES_CONST char *)tc
+#define TI_PARMS data->sp, (NCURSES_CONST char *)ti
+
static void
show_cap_flag(MYDATA * data, const char *ti, const char *tc)
{
const char *name = (opt_t ? tc : ti);
show_flag(data, name, (opt_t
- ? tgetflag_sp(data->sp, tc)
- : tigetflag_sp(data->sp, ti)));
+ ? tgetflag_sp(TC_PARMS)
+ : tigetflag_sp(TI_PARMS)));
}
static void
{
const char *name = (opt_t ? tc : ti);
show_number(data, name, (opt_t
- ? tgetnum_sp(data->sp, tc)
- : tigetnum_sp(data->sp, ti)));
+ ? tgetnum_sp(TC_PARMS)
+ : tigetnum_sp(TI_PARMS)));
}
static void
char tcapjunk[1024];
char *tcap_ptr = tcapjunk;
show_string(data, name, (opt_t
- ? tgetstr_sp(data->sp, tc, &tcap_ptr)
- : tigetstr_sp(data->sp, ti)));
+ ? tgetstr_sp(TC_PARMS, &tcap_ptr)
+ : tigetstr_sp(TI_PARMS)));
}
static void
static void
do_stuff(MYDATA * data)
{
- char *s;
SCREEN *sp = data->sp;
+#if NCURSES_EXT_FUNCS
+ char *s;
int my_code = 1234;
const char *my_text = "\033[?m";
+#endif
set_curterm_sp(sp, data->term);
show_string(data, "unctrl", unctrl_sp(sp, 033));
fflush(data->fp);
+#if NCURSES_EXT_FUNCS
define_key_sp(sp, my_text, my_code);
has_key_sp(sp, 0);
key_defined_sp(sp, my_text);
if ((s = keybound_sp(sp, my_code, 0)) != 0)
free(s);
+#endif
keyname_sp(sp, '?');
+#if NCURSES_EXT_FUNCS
keyok_sp(sp, my_code, FALSE);
keyok_sp(sp, my_code, TRUE);
+#endif
savetty_sp(sp);
/*
* These functions are low-level settings for ncurses.
*/
+#if NCURSES_EXT_FUNCS
set_tabsize_sp(sp, 5); /* waddch */
+#endif
typeahead_sp(sp, FALSE); /* waddch */
use_env_sp(sp, FALSE); /* newterm */
use_tioctl_sp(sp, FALSE); /* newterm */
{
set_curterm(data->term);
del_curterm(data->term);
-#if !NO_LEAKS
- free(data->sp); /* cannot use delscreen in tinfo */
-#endif
free(data);
}
static void
-usage(void)
+usage(int ok)
{
static const char *tbl[] =
{
- "Usage: sp_tinfo [output] [error]",
- "",
- "Options:",
- " -n suppress call to new_prescr()",
- " -t use termcap functions rather than terminfo",
- NULL
+ "Usage: sp_tinfo [output] [error]"
+ ,""
+ ,USAGE_COMMON
+ ,"Options:"
+ ," -n suppress call to new_prescr()"
+ ," -t use termcap functions rather than terminfo"
};
size_t n;
for (n = 0; n < SIZEOF(tbl); ++n) {
fprintf(stderr, "%s\n", tbl[n]);
}
- ExitProgram(EXIT_FAILURE);
+ ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
int
main(int argc, char *argv[])
{
MYDATA *my_out;
MYDATA *my_err;
- int n;
+ int ch;
- while ((n = getopt(argc, argv, "nt")) != -1) {
- switch (n) {
+ while ((ch = getopt(argc, argv, OPTS_COMMON "nt")) != -1) {
+ switch (ch) {
case 'n':
opt_n = TRUE;
break;
case 't':
opt_t = TRUE;
break;
+ case OPTS_VERSION:
+ show_version(argv);
+ ExitProgram(EXIT_SUCCESS);
default:
- usage();
+ usage(ch == OPTS_USAGE);
/* NOTREACHED */
}
}
argc -= (optind - 1);
if (argc > 3)
- usage();
+ usage(FALSE);
my_out = initialize((argc > 1) ? argv[1] : "vt100", stdout);
my_err = initialize((argc > 2) ? argv[2] : "ansi", stderr);
do_stuff(my_out);
do_stuff(my_err);
- cleanup(my_out);
- cleanup(my_err);
+ if (my_out != my_err) {
+ cleanup(my_out);
+ cleanup(my_err);
+ } else {
+ cleanup(my_out);
+ }
ExitProgram(EXIT_SUCCESS);
}
#else
int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(void)
{
fprintf(stderr,
"This program requires the low-level ncurses sp-funcs tputs_sp\n");