From: J William Piggott <elseifthen@gmx.com>
To: Sami Kerola <kerolasa@iki.fi>, util-linux@vger.kernel.org
Subject: Re: [PATCH] build-sys: remove libtermcap support
Date: Sun, 17 Jan 2016 12:12:34 -0500 [thread overview]
Message-ID: <569BCB82.1040503@gmx.com> (raw)
In-Reply-To: <1452986584-14013-1-git-send-email-kerolasa@iki.fi>
On 01/16/2016 06:23 PM, Sami Kerola wrote:
> It is unlikely anyone is going to build this project on system where
> libtermcap is available. Fedora project obsoleted libtermcap 2007-12-12 in
> favour of ncurses. Debian made same move 2005.
I don't know what impact it has on this proposal, but my system has
both.
ls *term*
libtermcap.a libtermcap.so@ terminfo@
ls *curses*
libcurses.a@ libncurses++.a libncurses.so@ libncursesw.so@
libcurses.so@ libncurses++w.a libncurses.so.5@ libncursesw.so.5@
libcursesw.so@ libncurses.a libncursesw.a
>
> Reference: https://fedoraproject.org/wiki/Deprecated_packages
> Reference: https://www.debian.org/doc/manuals/debian-faq/ch-compat.en.html#s-termcap
> Signed-off-by: Sami Kerola <kerolasa@iki.fi>
> ---
> configure.ac | 11 -----
> misc-utils/Makemodule.am | 3 --
> misc-utils/cal.c | 59 +++++--------------------
> text-utils/Makemodule.am | 4 --
> text-utils/more.c | 110 ++++++++++-------------------------------------
> 5 files changed, 34 insertions(+), 153 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 83b76ae..ba3597e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -579,17 +579,6 @@ AS_IF([test "x$with_util" = xno], [
> ])
>
>
> -AC_ARG_WITH([termcap], AS_HELP_STRING([--without-termcap], [compile without libtermcap]),
> - [], [with_termcap=auto]
> -)
> -AS_IF([test "x$with_termcap" = xno], [
> - AM_CONDITIONAL([HAVE_TERMCAP], [false])
> - have_termcap=no
> -], [
> - UL_CHECK_LIB([termcap], [tgetnum])
> -])
> -
> -
> AC_CHECK_TYPES([union semun], [], [], [[
> #include <sys/sem.h>
> ]])
> diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am
> index f2aa881..5ea27e1 100644
> --- a/misc-utils/Makemodule.am
> +++ b/misc-utils/Makemodule.am
> @@ -12,9 +12,6 @@ endif
>
> cal_CFLAGS = $(AM_CFLAGS) $(NCURSES_CFLAGS)
> cal_LDADD = $(LDADD) libcommon.la libtcolors.la $(NCURSES_LIBS)
> -if HAVE_TERMCAP
> -cal_LDADD += -ltermcap
> -endif
> endif # BUILD_CAL
>
>
> diff --git a/misc-utils/cal.c b/misc-utils/cal.c
> index 62c5818..b7f3827 100644
> --- a/misc-utils/cal.c
> +++ b/misc-utils/cal.c
> @@ -85,78 +85,42 @@ static const char *Senter = "", *Sexit = ""; /* enter and exit standout mode */
> # include <ncurses/ncurses.h>
> # endif
> # include <term.h>
> +#endif
>
> static int setup_terminal(char *term)
> {
> +#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
> int ret;
>
> if (setupterm(term, STDOUT_FILENO, &ret) != OK || ret != 1)
> return -1;
> +#endif
> return 0;
> }
>
> static void my_putstring(char *s)
> {
> +#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
> if (has_term)
> putp(s);
> else
> +#endif
> fputs(s, stdout);
> }
>
> -static const char *my_tgetstr(char *s __attribute__((__unused__)), char *ss)
> +static const char *my_tgetstr(char *s __attribute__ ((__unused__)), char *ss)
> {
> const char *ret = NULL;
>
> +#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
> if (has_term)
> ret = tigetstr(ss);
> +#endif
> if (!ret || ret == (char *)-1)
> return "";
> return ret;
> }
>
> -#elif defined(HAVE_LIBTERMCAP)
> -# include <termcap.h>
> -
> -static char termbuffer[4096];
> -static char tcbuffer[4096];
> -static char *strbuf = termbuffer;
> -
> -static int setup_terminal(char *term)
> -{
> - if (tgetent(tcbuffer, term) < 0)
> - return -1;
> - return 0;
> -}
> -
> -static void my_putstring(char *s)
> -{
> - if (has_term)
> - tputs(s, 1, putchar);
> - else
> - fputs(s, stdout);
> -}
> -
> -static const char *my_tgetstr(char *s, char *ss __attribute__((__unused__)))
> -{
> - const char *ret = NULL;
> -
> - if (has_term)
> - ret = tgetstr(s, &strbuf);
> - if (!ret)
> - return "";
> - return ret;
> -}
> -
> -#else /* ! (HAVE_LIBTERMCAP || HAVE_LIBNCURSES || HAVE_LIBNCURSESW) */
> -
> -static void my_putstring(char *s)
> -{
> - fputs(s, stdout);
> -}
> -
> -#endif /* end of LIBTERMCAP / NCURSES */
> -
> -
> #include "widechar.h"
>
> enum {
> @@ -318,15 +282,14 @@ int main(int argc, char **argv)
> textdomain(PACKAGE);
> atexit(close_stdout);
>
> -#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW) || defined(HAVE_LIBTERMCAP)
> +#if defined(HAVE_LIBNCURSES) || defined(HAVE_LIBNCURSESW)
> {
> char *term = getenv("TERM");
> -
> if (term) {
> has_term = setup_terminal(term) == 0;
> if (has_term) {
> - Senter = my_tgetstr("so","smso");
> - Sexit = my_tgetstr("se","rmso");
> + Senter = my_tgetstr("so", "smso");
> + Sexit = my_tgetstr("se", "rmso");
> }
> }
> }
> diff --git a/text-utils/Makemodule.am b/text-utils/Makemodule.am
> index 94c8c7e..957c143 100644
> --- a/text-utils/Makemodule.am
> +++ b/text-utils/Makemodule.am
> @@ -95,10 +95,6 @@ more_CFLAGS += $(NCURSES_CFLAGS)
> more_LDADD += $(NCURSES_LIBS)
> endif
>
> -if HAVE_TERMCAP
> -more_LDADD += -ltermcap
> -endif
> -
> check_PROGRAMS += test_more
> test_more_SOURCES = $(more_SOURCES)
> test_more_CFLAGS = -DTEST_PROGRAM
> diff --git a/text-utils/more.c b/text-utils/more.c
> index 2ac7439..dc7414f 100644
> --- a/text-utils/more.c
> +++ b/text-utils/more.c
> @@ -195,31 +195,29 @@ extern char PC; /* pad character */
> #elif defined(HAVE_NCURSES_NCURSES_H)
> # include <ncurses/ncurses.h>
> #endif
> -
> -#if defined(HAVE_NCURSES_H) || defined(HAVE_NCURSES_NCURSES_H)
> -# include <term.h> /* include after <curses.h> */
> -
> -# define TERM_AUTO_RIGHT_MARGIN "am"
> -# define TERM_CEOL "xhp"
> -# define TERM_CLEAR "clear"
> -# define TERM_CLEAR_TO_LINE_END "el"
> -# define TERM_CLEAR_TO_SCREEN_END "ed"
> -# define TERM_COLS "cols"
> -# define TERM_CURSOR_ADDRESS "cup"
> -# define TERM_EAT_NEW_LINE "xenl"
> -# define TERM_ENTER_UNDERLINE "smul"
> -# define TERM_EXIT_STANDARD_MODE "rmso"
> -# define TERM_EXIT_UNDERLINE "rmul"
> -# define TERM_HARD_COPY "hc"
> -# define TERM_HOME "home"
> -# define TERM_LINE_DOWN "cud1"
> -# define TERM_LINES "lines"
> -# define TERM_OVER_STRIKE "os"
> -# define TERM_PAD_CHAR "pad"
> -# define TERM_STANDARD_MODE "smso"
> -# define TERM_STD_MODE_GLITCH "xmc"
> -# define TERM_UNDERLINE_CHAR "uc"
> -# define TERM_UNDERLINE "ul"
> +#include <term.h> /* include after <curses.h> */
> +
> +#define TERM_AUTO_RIGHT_MARGIN "am"
> +#define TERM_CEOL "xhp"
> +#define TERM_CLEAR "clear"
> +#define TERM_CLEAR_TO_LINE_END "el"
> +#define TERM_CLEAR_TO_SCREEN_END "ed"
> +#define TERM_COLS "cols"
> +#define TERM_CURSOR_ADDRESS "cup"
> +#define TERM_EAT_NEW_LINE "xenl"
> +#define TERM_ENTER_UNDERLINE "smul"
> +#define TERM_EXIT_STANDARD_MODE "rmso"
> +#define TERM_EXIT_UNDERLINE "rmul"
> +#define TERM_HARD_COPY "hc"
> +#define TERM_HOME "home"
> +#define TERM_LINE_DOWN "cud1"
> +#define TERM_LINES "lines"
> +#define TERM_OVER_STRIKE "os"
> +#define TERM_PAD_CHAR "pad"
> +#define TERM_STANDARD_MODE "smso"
> +#define TERM_STD_MODE_GLITCH "xmc"
> +#define TERM_UNDERLINE_CHAR "uc"
> +#define TERM_UNDERLINE "ul"
>
> static void my_putstring(char *s)
> {
> @@ -251,68 +249,6 @@ static char *my_tgoto(char *cap, int col, int row)
> return tparm(cap, col, row);
> }
>
> -#elif defined(HAVE_LIBTERMCAP) /* ncurses not found */
> -
> -# include <termcap.h>
> -
> -# define TERM_AUTO_RIGHT_MARGIN "am"
> -# define TERM_CEOL "xs"
> -# define TERM_CLEAR "cl"
> -# define TERM_CLEAR_TO_LINE_END "ce"
> -# define TERM_CLEAR_TO_SCREEN_END "cd"
> -# define TERM_COLS "co"
> -# define TERM_CURSOR_ADDRESS "cm"
> -# define TERM_EAT_NEW_LINE "xn"
> -# define TERM_ENTER_UNDERLINE "us"
> -# define TERM_EXIT_STANDARD_MODE "se"
> -# define TERM_EXIT_UNDERLINE "ue"
> -# define TERM_HARD_COPY "hc"
> -# define TERM_HOME "ho"
> -# define TERM_LINE_DOWN "le"
> -# define TERM_LINES "li"
> -# define TERM_OVER_STRIKE "os"
> -# define TERM_PAD_CHAR "pc"
> -# define TERM_STANDARD_MODE "so"
> -# define TERM_STD_MODE_GLITCH "sg"
> -# define TERM_UNDERLINE_CHAR "uc"
> -# define TERM_UNDERLINE "ul"
> -
> -char termbuffer[TERMINAL_BUF];
> -char tcbuffer[TERMINAL_BUF];
> -char *strbuf = termbuffer;
> -
> -static void my_putstring(char *s)
> -{
> - tputs(s, fileno(stdout), putchar);
> -}
> -
> -static void my_setupterm(char *term, int fildes __attribute__((__unused__)), int *errret)
> -{
> - *errret = tgetent(tcbuffer, term);
> -}
> -
> -static int my_tgetnum(char *s)
> -{
> - return tgetnum(s);
> -}
> -
> -static int my_tgetflag(char *s)
> -{
> - return tgetflag(s);
> -}
> -
> -static char *my_tgetstr(char *s)
> -{
> - return tgetstr(s, &strbuf);
> -}
> -
> -static char *my_tgoto(char *cap, int col, int row)
> -{
> - return tgoto(cap, col, row);
> -}
> -
> -#endif /* HAVE_LIBTERMCAP */
> -
> static void __attribute__((__noreturn__)) usage(FILE *out)
> {
> fputs(USAGE_HEADER, out);
>
next prev parent reply other threads:[~2016-01-17 17:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-16 23:23 [PATCH] build-sys: remove libtermcap support Sami Kerola
2016-01-17 17:12 ` J William Piggott [this message]
2016-01-26 10:54 ` Karel Zak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=569BCB82.1040503@gmx.com \
--to=elseifthen@gmx.com \
--cc=kerolasa@iki.fi \
--cc=util-linux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.