From e1be0bc5657984906bb6885623d348914e135223 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 29 Jun 2004 00:33:10 +0000 Subject: * inet/bug-if1.c: Include . 2004-06-19 Roland McGrath * sysdeps/posix/waitid.c (do_waitid) [DO_WAITID]: Define function under this macro name instead. [NO_DO_WAITID]: Don't define it at all. (do_waitid) [WNOWAIT, WEXITED]: If these POSIX.1 waitid flag bits are defined, then return ENOTSUP for combinations of selection bits other than WEXITED and WEXITED|WSTOPPED, which this version cannot support. * posix/tst-waitid.c: New file. * posix/Makefile (tests): Add it. 2004-06-28 Jakub Jelinek --- ChangeLog | 16 ++++++++++++++++ inet/bug-if1.c | 1 + sysdeps/posix/waitid.c | 28 ++++++++++++++++++++++++++-- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9040fe4d2..2ac5019368 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2004-06-28 Jakub Jelinek + + * inet/bug-if1.c: Include . + +2004-06-19 Roland McGrath + + * sysdeps/posix/waitid.c (do_waitid) [DO_WAITID]: Define function + under this macro name instead. + [NO_DO_WAITID]: Don't define it at all. + (do_waitid) [WNOWAIT, WEXITED]: If these POSIX.1 waitid flag bits are + defined, then return ENOTSUP for combinations of selection bits other + than WEXITED and WEXITED|WSTOPPED, which this version cannot support. + + * posix/tst-waitid.c: New file. + * posix/Makefile (tests): Add it. + 2004-06-28 Jakub Jelinek * sysdeps/unix/alpha/sysdep.h (inline_syscall6): Fix a typo. diff --git a/inet/bug-if1.c b/inet/bug-if1.c index ddf49aff5b..aa9925d6a7 100644 --- a/inet/bug-if1.c +++ b/inet/bug-if1.c @@ -20,6 +20,7 @@ #include #include #include +#include #include diff --git a/sysdeps/posix/waitid.c b/sysdeps/posix/waitid.c index e388d173f4..76a3b1d660 100644 --- a/sysdeps/posix/waitid.c +++ b/sysdeps/posix/waitid.c @@ -1,5 +1,5 @@ /* Pseudo implementation of waitid. - Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1997. @@ -28,8 +28,15 @@ #include +#ifdef DO_WAITID +# define OUR_WAITID DO_WAITID +#elif !defined NO_DO_WAITID +# define OUR_WAITID do_waitid +#endif + +#ifdef OUR_WAITID static int -do_waitid (idtype_t idtype, id_t id, siginfo_t *infop, int options) +OUR_WAITID (idtype_t idtype, id_t id, siginfo_t *infop, int options) { pid_t pid, child; int status; @@ -66,6 +73,22 @@ do_waitid (idtype_t idtype, id_t id, siginfo_t *infop, int options) return -1; } + /* This emulation using waitpid cannot support the waitid modes in which + we do not reap the child, or match only stopped and not dead children. */ + if (0 +#ifdef WNOWAIT + || (options & WNOWAIT) +#endif +#ifdef WEXITED + || ((options & (WEXITED|WSTOPPED|WCONTINUED)) + != (WEXITED | (options & WUNTRACED))) +#endif + ) + { + __set_errno (ENOTSUP); + return -1; + } + /* Note the waitid() is a cancellation point. But since we call waitpid() which itself is a cancellation point we do not have to do anything here. */ @@ -118,6 +141,7 @@ do_waitid (idtype_t idtype, id_t id, siginfo_t *infop, int options) return 0; } +#endif int -- cgit v1.2.3