aboutsummaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
Diffstat (limited to 'posix')
-rw-r--r--posix/Makefile3
-rw-r--r--posix/Versions6
-rw-r--r--posix/streams-compat.c101
3 files changed, 109 insertions, 1 deletions
diff --git a/posix/Makefile b/posix/Makefile
index 93c3a290d7..8ac6743ad7 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -64,7 +64,8 @@ routines := \
spawnattr_getsigmask spawnattr_getschedpolicy spawnattr_getschedparam \
spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam \
posix_madvise \
- get_child_max sched_cpucount sched_cpualloc sched_cpufree
+ get_child_max sched_cpucount sched_cpualloc sched_cpufree \
+ streams-compat
aux := init-posix environ
tests := test-errno tstgetopt testfnm runtests runptests \
diff --git a/posix/Versions b/posix/Versions
index ad693ae9a7..7d06a6d0c0 100644
--- a/posix/Versions
+++ b/posix/Versions
@@ -80,6 +80,10 @@ libc {
# w*
waitid; wordexp; wordfree;
}
+ GLIBC_2.1 {
+ # Compat symbols for the obsolete, unimplemented XSI streams extension.
+ fattach; fdetach; getmsg; getpmsg; isastream; putmsg; putpmsg;
+ }
GLIBC_2.1.2 {
# functions used in other libraries
__vfork;
@@ -141,6 +145,8 @@ libc {
posix_spawn_file_actions_addchdir_np;
posix_spawn_file_actions_addfchdir_np;
}
+ GLIBC_2.30 {
+ }
GLIBC_PRIVATE {
__libc_fork; __libc_pread; __libc_pwrite;
__nanosleep_nocancel; __pause_nocancel;
diff --git a/posix/streams-compat.c b/posix/streams-compat.c
new file mode 100644
index 0000000000..30e9b5743a
--- /dev/null
+++ b/posix/streams-compat.c
@@ -0,0 +1,101 @@
+/* Compatibility symbols for the unimplemented XSI STREAMS extension.
+ Copyright (C) 1998-2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <shlib-compat.h>
+
+#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_30)
+
+# include <errno.h>
+# include <fcntl.h>
+
+struct strbuf;
+
+int
+attribute_compat_text_section
+fattach (int fildes, const char *path)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+compat_symbol (libc, fattach, fattach, GLIBC_2_1);
+
+int
+attribute_compat_text_section
+fdetach (const char *path)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+compat_symbol (libc, fdetach, fdetach, GLIBC_2_1);
+
+
+int
+attribute_compat_text_section
+getmsg (int fildes, struct strbuf *ctlptr, struct strbuf *dataptr, int *flagsp)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+compat_symbol (libc, getmsg, getmsg, GLIBC_2_1);
+
+int
+attribute_compat_text_section
+getpmsg (int fildes, struct strbuf *ctlptr, struct strbuf *dataptr, int *bandp,
+ int *flagsp)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+compat_symbol (libc, getpmsg, getpmsg, GLIBC_2_1);
+
+int
+attribute_compat_text_section
+isastream (int fildes)
+{
+ /* In general we do not have a STREAMS implementation and therefore
+ return 0. But for invalid file descriptors we have to return an
+ error. */
+ if (__fcntl (fildes, F_GETFD) < 0)
+ return -1;
+
+ /* No STREAM. */
+ return 0;
+}
+compat_symbol (libc, isastream, isastream, GLIBC_2_1);
+
+int
+attribute_compat_text_section
+putmsg (int fildes, const struct strbuf *ctlptr, const struct strbuf *dataptr,
+ int flags)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+compat_symbol (libc, putmsg, putmsg, GLIBC_2_1);
+
+int
+attribute_compat_text_section
+putpmsg (int fildes, const struct strbuf *ctlptr, const struct strbuf *dataptr,
+ int band, int flags)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+compat_symbol (libc, putpmsg, putpmsg, GLIBC_2_1);
+
+#endif /* SHLIB_COMPAT */