glibc/posix/streams-compat.c
Florian Weimer a0a0dc8317 Remove obsolete, never-implemented XSI STREAMS declarations
The stub implementations are turned into compat symbols.

Linux actually has two reserved system call numbers (for getpmsg
and putpmsg), but these system calls have never been implemented,
and there are no plans to implement them, so this patch replaces
the wrappers with the generic stubs.

According to <https://bugzilla.redhat.com/show_bug.cgi?id=436349>,
the presence of the XSI STREAMS declarations is a minor portability
hazard because they are not actually implemented.

This commit does not change the TIRPC support code in
sunrpc/rpc_svcout.c.  It uses additional XTI functionality and
therefore never worked with glibc.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-03-14 15:44:15 +01:00

102 lines
2.5 KiB
C

/* 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 */