From b77cfc8d2b4d0c894793efaf106b37c17d29d2d0 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 28 Apr 2023 06:44:40 +0100 Subject: [PATCH 2/4] Use ncurses' new tparm_s function (added in 6.4-20230424) instead of tparm so it does not object to string arguments in capabilities it doesn't already know. --- configure.ac | 4 ++++ tty-term.c | 48 +++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index 2b8b3b11ac..3c3c187393 100644 --- a/configure.ac +++ b/configure.ac @@ -344,6 +344,10 @@ else AC_MSG_ERROR("curses not found") fi fi +AC_CHECK_FUNCS([ \ + tiparm \ + tiparm_s \ +]) # Look for utempter. AC_ARG_ENABLE( diff --git a/tty-term.c b/tty-term.c index 32dd849ac7..18b174208d 100644 --- a/tty-term.c +++ b/tty-term.c @@ -764,7 +764,13 @@ tty_term_string_i(struct tty_term *term, enum tty_code_code code, int a) { const char *x = tty_term_string(term, code), *s; - s = tparm((char *)x, a); +#if defined(HAVE_TIPARM_S) + s = tiparm_s(1, 0, x, a); +#elif defined(HAVE_TIPARM) + s = tiparm(x, a); +#else + s = tparm((char *)x, a, 0, 0, 0, 0, 0, 0, 0, 0); +#endif if (s == NULL) fatalx("could not expand %s", tty_term_codes[code].name); return (s); @@ -775,19 +781,31 @@ tty_term_string_ii(struct tty_term *term, enum tty_code_code code, int a, int b) { const char *x = tty_term_string(term, code), *s; - s = tparm((char *)x, a, b); +#if defined(HAVE_TIPARM_S) + s = tiparm_s(2, 0, x, a, b); +#elif defined(HAVE_TIPARM) + s = tiparm(x, a, b); +#else + s = tparm((char *)x, a, b, 0, 0, 0, 0, 0, 0, 0); +#endif if (s == NULL) fatalx("could not expand %s", tty_term_codes[code].name); return (s); } const char * -tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a, int b, - int c) +tty_term_string_iii(struct tty_term *term, enum tty_code_code code, int a, + int b, int c) { const char *x = tty_term_string(term, code), *s; - s = tparm((char *)x, a, b, c); +#if defined(HAVE_TIPARM_S) + s = tiparm_s(3, 0, x, a, b, c); +#elif defined(HAVE_TIPARM) + s = tiparm(x, a, b, c); +#else + s = tparm((char *)x, a, b, c, 0, 0, 0, 0, 0, 0); +#endif if (s == NULL) fatalx("could not expand %s", tty_term_codes[code].name); return (s); @@ -798,19 +816,31 @@ tty_term_string_s(struct tty_term *term, enum tty_code_code code, const char *a) { const char *x = tty_term_string(term, code), *s; - s = tparm((char *)x, (long)a); +#if defined(HAVE_TIPARM_S) + s = tiparm_s(1, 1, x, a); +#elif defined(HAVE_TIPARM) + s = tiparm(x, a); +#else + s = tparm((char *)x, (long)a, 0, 0, 0, 0, 0, 0, 0, 0); +#endif if (s == NULL) fatalx("could not expand %s", tty_term_codes[code].name); return (s); } const char * -tty_term_string_ss(struct tty_term *term, enum tty_code_code code, const char *a, - const char *b) +tty_term_string_ss(struct tty_term *term, enum tty_code_code code, + const char *a, const char *b) { const char *x = tty_term_string(term, code), *s; - s = tparm((char *)x, (long)a, (long)b); +#if defined(HAVE_TIPARM_S) + s = tiparm_s(2, 3, x, a, b); +#elif defined(HAVE_TIPARM) + s = tiparm(x, a, b); +#else + s = tparm((char *)x, (long)a, b, 0, 0, 0, 0, 0, 0, 0); +#endif if (s == NULL) fatalx("could not expand %s", tty_term_codes[code].name); return (s); -- 2.39.2