Subject: bug#43195: [PATCH] Remove definitions of UP, BC and PC which should be provided by terminfo

From: Eli Zaretskii <[email-masked]>
Date: Sat, 12 Sep 2020 10:19:48 +0300

> Date: Fri, 4 Sep 2020 08:38:03 -0700
> From: Fangrui Song <[email-masked]>
> Cc: [email-masked]
> 
> >diff --git a/src/terminfo.c b/src/terminfo.c
> >index 51fd32e..0765996 100644
> >--- a/src/terminfo.c
> >+++ b/src/terminfo.c
> >@@ -23,9 +23,12 @@
> >
> > /* Define these variables that serve as global parameters to termcap,
> >    so that we do not need to conditionalize the places in Emacs
> >-   that set them.  */
> >+   that set them.  But don't do that for terminfo, as that could
> >+   cause link errors when using -fno-common.  */
> >
> >+#if !TERMINFO
> > char *UP, *BC, PC;
> >+#endif
> >
> > /* Interface to curses/terminfo library.
> >    Turns out that all of the terminfo-level routines look
> >
> 
> Looks great! Thanks!

Thanks, installed for Emacs 27.2.

> One nit, 
>    #if !TERMINFO
> probably should be 
>    #ifndef TERMINFO

That's the same thing with modern compilers.

> I don't know whether it is worth mentioning that -fcommon/-fno-common does not
> cause a linker error when libtinfo.so is linked (a common/regular definition
> preempts a shared definition).
> 
> -fno-common + libtinfo.a => multiple definition error

OK, but the change works even in these other cases, right?