summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2019-11-21 11:23:18 -0500
committerMatt Turner <mattst88@gmail.com>2019-11-22 15:24:27 -0500
commit88f12aa74bf4fea25d5b8d8002b3088432feb405 (patch)
treec5f52e11bcb0e473d55dfb3db8d0bd858320234a
parent0e60139064b84b856c59e5a456e26c60710b1b69 (diff)
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 <jcristau@debian.org> Signed-off-by: Matt Turner <mattst88@gmail.com> (cherry picked from commit e6ab7f9f342f463092c45226f3294074351fdd5e)
-rw-r--r--configure.ac2
-rw-r--r--hw/xfree86/os-support/shared/sigio.c5
-rw-r--r--include/dix-config.h.in3
-rw-r--r--include/meson.build1
4 files changed, 8 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 42950ff19..6033cb404 100644
--- a/configure.ac
+++ b/configure.ac
@@ -159,7 +159,7 @@ dnl Checks for library functions.
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])
+ walkcontext setitimer poll epoll_create1 mkostemp memfd_create 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 a9c0bf7fb..c18f62370 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -515,4 +515,7 @@
/* Have epoll_create1() */
#undef HAVE_EPOLL_CREATE1
+/* Have isastream */
+#undef HAVE_ISASTREAM
+
#endif /* _DIX_CONFIG_H_ */
diff --git a/include/meson.build b/include/meson.build
index 536e01647..64c6c81ce 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -114,6 +114,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'))