X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fsp_tinfo.c;h=72b20cfb0c1da7d018101329acab146b6d98457d;hb=2bcad5fdfc4aa83a1479bd1d21dadc32dad8c2a8;hp=fdc6425714d25e6d3ebf9d35f6bd619c5f1bd2de;hpb=5e1e572b71ae31a6071daa24e2460a68a6f1003c;p=ncurses.git diff --git a/test/sp_tinfo.c b/test/sp_tinfo.c index fdc64257..72b20cfb 100644 --- a/test/sp_tinfo.c +++ b/test/sp_tinfo.c @@ -1,5 +1,6 @@ /**************************************************************************** - * 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /* - * $Id: sp_tinfo.c,v 1.18 2017/04/13 21:35:31 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 */ @@ -74,14 +75,14 @@ initialize(const char *name, FILE *output) result->fp = output; result->name = name; result->outc = (fileno(output) == 1) ? my_outc : my_errc; - result->sp = opt_n ? 0 : new_prescr(); + result->sp = opt_n ? NULL : new_prescr(); if (opt_t) { char *temp = strdup(name); 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; @@ -100,13 +101,16 @@ show_flag(MYDATA * data, const char *name, int value) } } +#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 @@ -126,8 +130,8 @@ show_cap_number(MYDATA * data, const char *ti, const char *tc) { 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 @@ -162,8 +166,8 @@ show_cap_string(MYDATA * data, const char *ti, const char *tc) 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 @@ -182,10 +186,12 @@ show_char(MYDATA * data, const char *name, int value) 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); @@ -208,14 +214,18 @@ do_stuff(MYDATA * data) 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); @@ -224,7 +234,9 @@ do_stuff(MYDATA * data) /* * 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 */ @@ -267,48 +279,51 @@ cleanup(MYDATA * data) { 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 */ } } @@ -316,7 +331,7 @@ main(int argc, char *argv[]) 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); @@ -324,14 +339,18 @@ main(int argc, char *argv[]) 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");