You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-misc/screen/files/screen-4.9.0-configure-impl...

748 lines
16 KiB

https://bugs.gentoo.org/869371
Upstream variant: https://lists.gnu.org/archive/html/screen-devel/2022-08/msg00000.html
--- a/configure.ac
+++ b/configure.ac
@@ -157,10 +157,11 @@ if test -n "$ULTRIX"; then
fi
AC_CHECKING(for POSIX.1)
AC_EGREP_CPP(YES_IS_DEFINED,
[#include <sys/types.h>
#include <unistd.h>
+int
main () {
#ifdef _POSIX_VERSION
YES_IS_DEFINED;
#endif
], AC_NOTE(- you have a POSIX system) AC_DEFINE(POSIX) posix=1)
@@ -231,10 +232,11 @@ dnl
AC_CHECKING(BSD job jontrol)
AC_TRY_LINK(
[#include <sys/types.h>
#include <sys/ioctl.h>
+#include <unistd.h>
], [
#ifdef POSIX
tcsetpgrp(0, 0);
#else
int x = TIOCSPGRP;
@@ -248,48 +250,64 @@ int y = TIOCNOTTY;
dnl
dnl **** setresuid(), setreuid(), seteuid() ****
dnl
AC_CHECKING(setresuid)
-AC_TRY_LINK(,[
+AC_TRY_LINK(
+[#include <unistd.h>
+], [
setresuid(0, 0, 0);
], AC_DEFINE(HAVE_SETRESUID))
AC_CHECKING(setreuid)
-AC_TRY_LINK(,[
+AC_TRY_LINK(
+[#include <unistd.h>
+], [
setreuid(0, 0);
], AC_DEFINE(HAVE_SETREUID))
dnl
dnl seteuid() check:
dnl linux seteuid was broken before V1.1.11
dnl NeXT, AUX, ISC, and ultrix are still broken (no saved uid support)
dnl Solaris seteuid doesn't change the saved uid, bad for
dnl multiuser screen sessions
AC_CHECKING(seteuid)
-AC_TRY_LINK(,[
+AC_TRY_LINK(
+[#include <unistd.h>
+],[
#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) || defined(ultrix) || (defined(sun) && defined(SVR4)) || defined(ISC) || defined(sony_news)
-seteuid_is_broken(0);
+int seteuid_is_broken(int); seteuid_is_broken(0);
#else
seteuid(0);
#endif
], AC_DEFINE(HAVE_SETEUID))
dnl execvpe
AC_CHECKING(execvpe)
-AC_TRY_LINK(,[
+AC_TRY_LINK(
+[#include <unistd.h>
+],[
execvpe(0, 0, 0);
], AC_DEFINE(HAVE_EXECVPE)
CFLAGS="$CFLAGS -D_GNU_SOURCE")
dnl
dnl **** select() ****
dnl
AC_CHECKING(select)
-AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],,
+AC_TRY_LINK(
+[#include <sys/select.h>
+],[
+ select(0, 0, 0, 0, 0);
+],,
LIBS="$LIBS -lnet -lnsl"
AC_CHECKING(select with $LIBS)
-AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],,
+AC_TRY_LINK(
+[#include <sys/select.h>
+],[
+ select(0, 0, 0, 0, 0);
+],,
AC_MSG_ERROR(!!! no select - no screen))
)
dnl
dnl **** FIFO tests ****
dnl
@@ -314,11 +332,11 @@ AC_TRY_RUN([
#define S_IFIFO 0010000
#endif
char *fin = "/tmp/conftest$$";
-main()
+int main()
{
struct stat stb;
fd_set f;
(void)alarm(5);
@@ -326,40 +344,40 @@ main()
#ifdef POSIX
if (mkfifo(fin, 0777))
#else
if (mknod(fin, S_IFIFO|0777, 0))
#endif
- exit(1);
+ return 1;
if (stat(fin, &stb) || (stb.st_mode & S_IFIFO) != S_IFIFO)
- exit(1);
+ return 1;
close(0);
#ifdef __386BSD__
/*
* The next test fails under 386BSD, but screen works using fifos.
* Fifos in O_RDWR mode are only used for the BROKEN_PIPE case and for
* the select() configuration test.
*/
- exit(0);
+ return 0;
#endif
if (open(fin, O_RDONLY | O_NONBLOCK))
- exit(1);
+ return 1;
if (fork() == 0)
{
close(0);
if (open(fin, O_WRONLY | O_NONBLOCK))
- exit(1);
+ return 1;
close(0);
if (open(fin, O_WRONLY | O_NONBLOCK))
- exit(1);
+ return 1;
if (write(0, "TEST", 4) == -1)
- exit(1);
- exit(0);
+ return 1;
+ return 0;
}
FD_SET(0, &f);
if (select(1, &f, 0, 0, 0) == -1)
- exit(1);
- exit(0);
+ return 1;
+ return 0;
}
], AC_NOTE(- your fifos are usable) fifo=1,
AC_NOTE(- your fifos are not usable),
AC_NOTE(- skipping check because we are cross compiling; assuming fifos are usable) fifo=1)
rm -f /tmp/conftest*
@@ -385,30 +403,31 @@ AC_TRY_RUN([
#define S_IFIFO 0010000
#endif
char *fin = "/tmp/conftest$$";
+int
main()
{
struct timeval tv;
fd_set f;
#ifdef POSIX
if (mkfifo(fin, 0600))
#else
if (mknod(fin, S_IFIFO|0600, 0))
#endif
- exit(1);
+ return 1;
close(0);
if (open(fin, O_RDONLY|O_NONBLOCK))
- exit(1);
+ return 1;
FD_SET(0, &f);
tv.tv_sec = 1;
tv.tv_usec = 0;
if (select(1, &f, 0, 0, &tv))
- exit(1);
- exit(0);
+ return 1;
+ return 0;
}
], AC_NOTE(- your implementation is ok),
AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1,
AC_NOTE(- skipping check because we are cross compiling; assuming fifo implementation is ok))
rm -f /tmp/conftest*
@@ -432,46 +455,48 @@ AC_TRY_RUN([
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/un.h>
+#include <signal.h>
char *son = "/tmp/conftest$$";
+int
main()
{
int s1, s2, l;
struct sockaddr_un a;
fd_set f;
(void)alarm(5);
if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
- exit(1);
+ return 1;
a.sun_family = AF_UNIX;
strcpy(a.sun_path, son);
(void) unlink(son);
if (bind(s1, (struct sockaddr *) &a, strlen(son)+2) == -1)
- exit(1);
+ return 1;
if (listen(s1, 2))
- exit(1);
+ return 1;
if (fork() == 0)
{
if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
kill(getppid(), 3);
(void)connect(s2, (struct sockaddr *)&a, strlen(son) + 2);
if (write(s2, "HELLO", 5) == -1)
kill(getppid(), 3);
- exit(0);
+ return 0;
}
l = sizeof(a);
close(0);
if (accept(s1, &a, &l))
- exit(1);
+ return 1;
FD_SET(0, &f);
if (select(1, &f, 0, 0, 0) == -1)
- exit(1);
- exit(0);
+ return 1;
+ return 0;
}
], AC_NOTE(- your sockets are usable) sock=1,
AC_NOTE(- your sockets are not usable),
AC_NOTE(- skipping check because we are cross compiling; assuming sockets are usable) sock=1)
rm -f /tmp/conftest*
@@ -491,26 +516,27 @@ AC_TRY_RUN([
#include <sys/socket.h>
#include <sys/un.h>
char *son = "/tmp/conftest$$";
+int
main()
{
int s;
struct stat stb;
struct sockaddr_un a;
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
- exit(0);
+ return 0;
a.sun_family = AF_UNIX;
strcpy(a.sun_path, son);
(void) unlink(son);
if (bind(s, (struct sockaddr *) &a, strlen(son)+2) == -1)
- exit(0);
+ return 0;
if (stat(son, &stb))
- exit(1);
+ return 1;
close(s);
- exit(0);
+ return 0;
}
],AC_NOTE(- you are normal),
AC_NOTE(- unix domain sockets are not kept in the filesystem)
AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1,
AC_NOTE(- skipping check because we are cross compiling; assuming sockets are normal))
@@ -545,122 +571,167 @@ char *nam = "/tmp/conftest$$";
#endif
#ifndef S_IFIFO
#define S_IFIFO 0010000
#endif
+int
main()
{
fd_set f;
#ifdef __FreeBSD__
/* From Andrew A. Chernov (ache@astral.msk.su):
* opening RDWR fifo fails in BSD 4.4, but select return values are
* right.
*/
- exit(0);
+ return 0;
#endif
(void)alarm(5);
#ifdef POSIX
if (mkfifo(nam, 0777))
#else
if (mknod(nam, S_IFIFO|0777, 0))
#endif
- exit(1);
+ return 1;
close(0);
if (open(nam, O_RDWR | O_NONBLOCK))
- exit(1);
+ return 1;
if (write(0, "TEST", 4) == -1)
- exit(1);
+ return 1;
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
+#include <signal.h>
+int
main()
{
int s1, s2, l;
struct sockaddr_un a;
fd_set f;
(void)alarm(5);
if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
- exit(1);
+ return 1;
a.sun_family = AF_UNIX;
strcpy(a.sun_path, nam);
(void) unlink(nam);
if (bind(s1, (struct sockaddr *) &a, strlen(nam)+2) == -1)
- exit(1);
+ return 1;
if (listen(s1, 2))
- exit(1);
+ return 1;
if (fork() == 0)
{
if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
kill(getppid(), 3);
(void)connect(s2, (struct sockaddr *)&a, strlen(nam) + 2);
if (write(s2, "HELLO", 5) == -1)
kill(getppid(), 3);
- exit(0);
+ return 0;
}
l = sizeof(a);
close(0);
if (accept(s1, (struct sockaddr *)&a, &l))
- exit(1);
+ return 1;
#endif
FD_SET(0, &f);
if (select(1, &f, 0, 0, 0) == -1)
- exit(1);
+ return 1;
if (select(1, &f, &f, 0, 0) != 2)
- exit(1);
- exit(0);
+ return 1;
+ return 0;
}
],AC_NOTE(- select is ok),
AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN),
AC_NOTE(- skipping check because we are cross compiling; assuming select is ok))
dnl
dnl **** termcap or terminfo ****
dnl
AC_CHECKING(for tgetent)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK([
+ #include <curses.h>
+ #include <term.h>
+], [
+ tgetent((char *)0, (char *)0);
+],,
olibs="$LIBS"
LIBS="-lcurses $olibs"
AC_CHECKING(libcurses)
-AC_TRY_LINK(,[
+AC_TRY_LINK([#include <curses.h>
+ #include <term.h>
+],[
#ifdef __hpux
__sorry_hpux_libcurses_is_totally_broken_in_10_10();
#else
tgetent((char *)0, (char *)0);
#endif
],,
LIBS="-ltermcap $olibs"
AC_CHECKING(libtermcap)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK(
+[#include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
LIBS="-ltermlib $olibs"
AC_CHECKING(libtermlib)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK(
+[#include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
LIBS="-lncursesw $olibs"
AC_CHECKING(libncursesw)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK(
+[#include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
LIBS="-ltinfow $olibs"
AC_CHECKING(libtinfow)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK(
+[#include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
LIBS="-lncurses $olibs"
AC_CHECKING(libncurses)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK(
+[#include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
LIBS="-ltinfo $olibs"
AC_CHECKING(libtinfo)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_TRY_LINK(
+[#include <curses.h>
+ #include <term.h>
+],[
+ tgetent((char *)0, (char *)0);
+],,
AC_MSG_ERROR(!!! no tgetent - no screen)))))))))
AC_TRY_RUN([
+#include <curses.h>
+#include <string.h>
+#include <term.h>
+
+int
main()
{
- exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
+ return(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
}], AC_NOTE(- you use the termcap database),
AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO),
AC_NOTE(- skipping check because we are cross compiling; assuming terminfo database is used) AC_DEFINE(TERMINFO))
AC_CHECKING(ospeed)
AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
@@ -677,11 +748,15 @@ fi
if test "$cross_compiling" = no ; then
AC_CHECKING(for SVR4 ptys)
sysvr4ptys=
if test -c /dev/ptmx ; then
-AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
+AC_TRY_LINK([
+ #include <stdlib.h>
+], [
+ ptsname(0);grantpt(0);unlockpt(0);
+],[AC_DEFINE(HAVE_SVR4_PTYS)
sysvr4ptys=1])
fi
fi
AC_CHECK_FUNCS(getpt)
@@ -733,33 +808,36 @@ AC_CHECKING(default tty permissions/group)
rm -f conftest_grp
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+int
main()
{
struct stat sb;
char *x,*ttyname();
int om, m;
FILE *fp;
- if (!(x = ttyname(0))) exit(1);
- if (stat(x, &sb)) exit(1);
+ if (!(x = ttyname(0))) return 1;
+ if (stat(x, &sb)) return 1;
om = sb.st_mode;
- if (om & 002) exit(0);
+ if (om & 002) return 0;
m = system("mesg y");
- if (m == -1 || m == 127) exit(1);
- if (stat(x, &sb)) exit(1);
+ if (m == -1 || m == 127) return 1;
+ if (stat(x, &sb)) return 1;
m = sb.st_mode;
- if (chmod(x, om)) exit(1);
- if (m & 002) exit(0);
- if (sb.st_gid == getgid()) exit(1);
+ if (chmod(x, om)) return 1;
+ if (m & 002) return 0;
+ if (sb.st_gid == getgid()) return 1;
if (!(fp=fopen("conftest_grp", "w")))
- exit(1);
+ return 1;
fprintf(fp, "%d\n", sb.st_gid);
fclose(fp);
- exit(0);
+ return 0;
}
],[
if test -f conftest_grp; then
ptygrp=`cat conftest_grp`
AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
@@ -869,17 +942,25 @@ AC_CHECKING(for libutil(s))
test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils"
test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil"
fi
AC_CHECKING(getloadavg)
-AC_TRY_LINK(,[getloadavg((double *)0, 0);],
+AC_TRY_LINK(
+[
+ #include <stdlib.h>
+],[
+ getloadavg((double *)0, 0);],
AC_DEFINE(LOADAV_GETLOADAVG) load=1,
if test "$cross_compiling" = no && test -f /usr/lib/libkvm.a ; then
olibs="$LIBS"
LIBS="$LIBS -lkvm"
AC_CHECKING(getloadavg with -lkvm)
-AC_TRY_LINK(,[getloadavg((double *)0, 0);],
+AC_TRY_LINK(
+[
+ #include <stdlib.h>
+],[
+ getloadavg((double *)0, 0);],
AC_DEFINE(LOADAV_GETLOADAVG) load=1, LIBS="$olibs")
fi
)
if test -z "$load" ; then
@@ -931,10 +1012,11 @@ else
$nlist64
struct nlist nl[2];
+int
main()
{
#if !defined(_AUX_SOURCE) && !defined(AUX)
# ifdef NLIST_NAME_UNION
nl[0].n_un.n_name = "$av";
@@ -944,12 +1026,12 @@ main()
#else
strncpy(nl[0].n_name, "$av", sizeof(nl[0].n_name));
#endif
nlist(LOADAV_UNIX, nl);
if (nl[0].n_value == 0)
- exit(1);
- exit(0);
+ return 1;
+ return 0;
}
],avensym=$av;break)
if test "$av" = _Loadavg; then
nlist64='#define nlist nlist64'
fi
@@ -1068,21 +1150,22 @@ void
hand()
{
got++;
}
+int
main()
{
/* on hpux we use sigvec to get bsd signals */
#ifdef __hpux
(void)signal(SIGCLD, hand);
kill(getpid(), SIGCLD);
kill(getpid(), SIGCLD);
if (got < 2)
- exit(1);
+ return 1;
#endif
- exit(0);
+ return 0;
}
],,AC_DEFINE(SYSVSIGS),:)
fi
@@ -1107,14 +1190,22 @@ oldlibs="$LIBS"
LIBS="$LIBS -lsun"
AC_CHECKING(IRIX sun library)
AC_TRY_LINK(,,,LIBS="$oldlibs")
AC_CHECKING(syslog)
-AC_TRY_LINK(,[closelog();], , [oldlibs="$LIBS"
+AC_TRY_LINK(
+[#include <syslog.h>
+], [
+ closelog();
+], , [oldlibs="$LIBS"
LIBS="$LIBS -lbsd"
AC_CHECKING(syslog in libbsd.a)
-AC_TRY_LINK(, [closelog();], AC_NOTE(- found.), [LIBS="$oldlibs"
+AC_TRY_LINK(
+[#include <syslog.h>
+], [
+ closelog();
+], AC_NOTE(- found.), [LIBS="$oldlibs"
AC_NOTE(- bad news: syslog missing.) AC_DEFINE(NOSYSLOG)])])
AC_EGREP_CPP(YES_IS_DEFINED,
[#ifdef M_UNIX
YES_IS_DEFINED;
@@ -1147,66 +1238,87 @@ fi
dnl AC_CHECK_HEADER(shadow.h, AC_DEFINE(SHADOWPW))
AC_CHECKING(getspnam)
AC_TRY_LINK([#include <shadow.h>], [getspnam("x");],AC_DEFINE(SHADOWPW))
AC_CHECKING(getttyent)
-AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
+AC_TRY_LINK(
+[
+ #include <ttyent.h>
+],[
+ getttyent();
+], AC_DEFINE(GETTTYENT))
AC_CHECKING(fdwalk)
AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
AC_TRY_RUN([
+#include <string.h>
+
+int
main() {
char buf[10];
strcpy(buf, "abcdefghi");
bcopy(buf, buf + 2, 3);
if (strncmp(buf, "ababcf", 6))
- exit(1);
+ return 1;
strcpy(buf, "abcdefghi");
bcopy(buf + 2, buf, 3);
if (strncmp(buf, "cdedef", 6))
- exit(1);
- exit(0); /* libc version works properly. */
+ return 1;
+ return 0; /* libc version works properly. */
}], AC_DEFINE(USEBCOPY),,:)
AC_TRY_RUN([
+#include <string.h>
+
#define bcopy(s,d,l) memmove(d,s,l)
+int
main() {
char buf[10];
strcpy(buf, "abcdefghi");
bcopy(buf, buf + 2, 3);
if (strncmp(buf, "ababcf", 6))
- exit(1);
+ return 1;
strcpy(buf, "abcdefghi");
bcopy(buf + 2, buf, 3);
if (strncmp(buf, "cdedef", 6))
- exit(1);
- exit(0); /* libc version works properly. */
+ return 1;
+ return 0; /* libc version works properly. */
}], AC_DEFINE(USEMEMMOVE),,
AC_NOTE(- skipping check because we are cross compiling; use memmove) AC_DEFINE(USEMEMMOVE))
AC_TRY_RUN([
+#include <string.h>
+
#define bcopy(s,d,l) memcpy(d,s,l)
+int
main() {
char buf[10];
strcpy(buf, "abcdefghi");
bcopy(buf, buf + 2, 3);
if (strncmp(buf, "ababcf", 6))
- exit(1);
+ return 1;
strcpy(buf, "abcdefghi");
bcopy(buf + 2, buf, 3);
if (strncmp(buf, "cdedef", 6))
- exit(1);
- exit(0); /* libc version works properly. */
+ return 1;
+ return 0; /* libc version works properly. */
}], AC_DEFINE(USEMEMCPY),,:)
AC_SYS_LONG_FILE_NAMES
AC_MSG_CHECKING(for vsprintf)
-AC_TRY_LINK([#include <stdarg.h>],[va_list valist; vsprintf(0,0,valist);], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), AC_MSG_RESULT(no))
+AC_TRY_LINK(
+[
+ #include <stdarg.h>
+ #include <stdio.h>
+],
+[
+ va_list valist; vsprintf(0,0,valist);
+], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), AC_MSG_RESULT(no))
AC_HEADER_DIRENT
AC_MSG_CHECKING(for setenv)
if test -z "$ac_setenv_args"; then