From e6ab7f9f342f463092c45226f3294074351fdd5e Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 21 Nov 2019 11:23:18 -0500 Subject: [PATCH] xfree86: Test presence of isastream() isastream() was never more than a stub in glibc, and was removed in glibc-2.30 by commit a0a0dc83173c ("Remove obsolete, never-implemented XSI STREAMS declarations"). Bug: https://bugs.gentoo.org/700838 Reviewed-by: Julien Cristau Signed-off-by: Matt Turner --- configure.ac | 2 +- hw/xfree86/os-support/shared/sigio.c | 5 +++-- include/dix-config.h.in | 3 +++ include/meson.build | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 268c82fda..56f1164d8 100644 --- a/configure.ac +++ b/configure.ac @@ -160,7 +160,7 @@ AC_CHECK_FUNCS([backtrace geteuid getuid issetugid getresuid \ getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \ mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \ walkcontext setitimer poll epoll_create1 mkostemp memfd_create \ - sigprocmask]) + sigprocmask isastream]) AC_CONFIG_LIBOBJ_DIR([os]) AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup\ timingsafe_memcmp]) diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c index 884a71c61..247bec708 100644 --- a/hw/xfree86/os-support/shared/sigio.c +++ b/hw/xfree86/os-support/shared/sigio.c @@ -208,7 +208,8 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) } } #endif -#ifdef I_SETSIG /* System V Streams - used on Solaris for input devices */ +#if defined(I_SETSIG) && defined(HAVE_ISASTREAM) + /* System V Streams - used on Solaris for input devices */ if (!installed && isastream(fd)) { if (ioctl(fd, I_SETSIG, S_INPUT | S_ERROR | S_HANGUP) == -1) { xf86Msg(X_WARNING, "fcntl(%d, I_SETSIG): %s\n", @@ -279,7 +280,7 @@ xf86RemoveSIGIOHandler(int fd) #ifdef O_ASYNC fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_ASYNC); #endif -#ifdef I_SETSIG +#if defined(I_SETSIG) && defined(HAVE_ISASTREAM) if (isastream(fd)) { if (ioctl(fd, I_SETSIG, 0) == -1) { xf86Msg(X_WARNING, "fcntl(%d, I_SETSIG, 0): %s\n", diff --git a/include/dix-config.h.in b/include/dix-config.h.in index b463a17f3..1f91d2709 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -515,4 +515,7 @@ /* Have sigprocmask */ #undef HAVE_SIGPROCMASK +/* Have isastream */ +#undef HAVE_ISASTREAM + #endif /* _DIX_CONFIG_H_ */ diff --git a/include/meson.build b/include/meson.build index ddac43473..070178473 100644 --- a/include/meson.build +++ b/include/meson.build @@ -136,6 +136,7 @@ conf_data.set('HAVE_CBRT', cc.has_function('cbrt')) conf_data.set('HAVE_EPOLL_CREATE1', cc.has_function('epoll_create1')) conf_data.set('HAVE_GETUID', cc.has_function('getuid')) conf_data.set('HAVE_GETEUID', cc.has_function('geteuid')) +conf_data.set('HAVE_ISASTREAM', cc.has_function('isastream')) conf_data.set('HAVE_ISSETUGID', cc.has_function('issetugid')) conf_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs')) conf_data.set('HAVE_GETPEEREID', cc.has_function('getpeereid'))