diff --git a/ChangeLog b/ChangeLog index 1912919132..12c78bc072 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +1999-08-02 Thorsten Kukuk + + * nis/nis_callback.c (internal_nis_do_callback) use poll() + instead of select(). + +1999-08-02 Ulrich Drepper + + * sysdeps/generic/s_nextafter.c: Define __nexttoward and + nexttoward so something else so that aliasing works. + +1999-08-02 Thorsten Kukuk + + * sysdeps/generic/math_ldbl.h: Fix typo. + * sysdeps/generic/strtold.c: Remove unbalanced #endif. + * sysdeps/alpha/fpu/e_sqrt.c: Use new path for e_sqrt.c. + +1999-08-02 Ulrich Drepper + + * elf/resolvfail.c: Include stdio.h. Also test dlerror. + 1999-08-01 Ulrich Drepper * elf/Makefile (tests): Add resolvfail. Add rules to build the diff --git a/FAQ b/FAQ index d412f8e0b8..5dcc1bcf19 100644 --- a/FAQ +++ b/FAQ @@ -1048,14 +1048,12 @@ files. You don't necessarily need to recompile the GNU C library since the only place where OPEN_MAX and FD_SETSIZE is really needed in the library itself is the size of fd_set which is used by select. -The GNU C library is now (nearly) select free. This means it internally has -no limits imposed by the `fd_set' type. Instead almost all places where the +The GNU C library is now select free. This means it internally has no +limits imposed by the `fd_set' type. Instead all places where the functionality is needed the `poll' function is used. If you increase the number of file descriptors in the kernel you don't need -to recompile the C library. The remaining select calls are in the RPC code. -If your RPC daemons don't need more than FD_SETSIZE file descriptors, you -don't need to change anything at all. +to recompile the C library. {UD} You can always get the maximum number of file descriptors a process is allowed to have open at any time using diff --git a/elf/resolvfail.c b/elf/resolvfail.c index 9dd5cbe3d0..ebd635d153 100644 --- a/elf/resolvfail.c +++ b/elf/resolvfail.c @@ -1,4 +1,5 @@ #include +#include static const char obj[] = "testobj1.so"; @@ -20,6 +21,11 @@ main (void) puts ("dlsym() did not fail"); return 1; } + else if (dlerror () == NULL) + { + puts ("dlerror() didn't return a string"); + return 1; + } return 0; } diff --git a/nis/nis_callback.c b/nis/nis_callback.c index 57a15e5162..eb5464479d 100644 --- a/nis/nis_callback.c +++ b/nis/nis_callback.c @@ -1,6 +1,6 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Thorsten Kukuk , 1997. + Contributed by Thorsten Kukuk , 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -195,29 +196,29 @@ static nis_error internal_nis_do_callback (struct dir_binding *bptr, netobj *cookie, struct nis_cb *cb) { - /* Default timeout can be changed using clnt_control() */ - static struct timeval TIMEOUT = {25, 0}; -#ifdef FD_SETSIZE - fd_set readfds; -#else - int readfds; -#endif /* def FD_SETSIZE */ - struct timeval tv; + struct timeval TIMEOUT = {25, 0}; bool_t cb_is_running = FALSE; data = cb; for (;;) { -#ifdef FD_SETSIZE - readfds = svc_fdset; -#else - readfds = svc_fds; -#endif /* def FD_SETSIZE */ - tv.tv_sec = 25; - tv.tv_usec = 0; - switch (select (_rpc_dtablesize (), &readfds, NULL, NULL, &tv)) - { + struct pollfd *my_pollfd; + int i; + + if (svc_max_pollfd == 0 && svc_pollfd == NULL) + return NIS_CBERROR; + + my_pollfd = malloc (sizeof (struct pollfd) * svc_max_pollfd); + for (i = 0; i < svc_max_pollfd; ++i) + { + my_pollfd[i].fd = svc_pollfd[i].fd; + my_pollfd[i].events = svc_pollfd[i].events; + my_pollfd[i].revents = 0; + } + + switch (i = __poll (my_pollfd, svc_max_pollfd, 25*1000)) + { case -1: if (errno == EINTR) continue; @@ -237,7 +238,7 @@ internal_nis_do_callback (struct dir_binding *bptr, netobj *cookie, } break; default: - svc_getreqset (&readfds); + svc_getreq_poll (my_pollfd, i); if (data->nomore) return data->result; } diff --git a/sysdeps/alpha/fpu/e_sqrt.c b/sysdeps/alpha/fpu/e_sqrt.c index 7b4e596664..295a1c3692 100644 --- a/sysdeps/alpha/fpu/e_sqrt.c +++ b/sysdeps/alpha/fpu/e_sqrt.c @@ -162,4 +162,4 @@ static double __full_ieee754_sqrt(double) __attribute__((unused)); #endif /* _IEEE_FP_INEXACT */ -#include +#include diff --git a/sysdeps/generic/math_ldbl.h b/sysdeps/generic/math_ldbl.h index 83684e61c4..f0b97ef8f9 100644 --- a/sysdeps/generic/math_ldbl.h +++ b/sysdeps/generic/math_ldbl.h @@ -1,4 +1,4 @@ -#ifndef _MATH_PRIVATE_H +#ifndef _MATH_PRIVATE_H_ #error "Never use directly; include instead." #endif diff --git a/sysdeps/generic/s_nextafter.c b/sysdeps/generic/s_nextafter.c index 8b81e563d9..996b5ceca3 100644 --- a/sysdeps/generic/s_nextafter.c +++ b/sysdeps/generic/s_nextafter.c @@ -21,6 +21,10 @@ static char rcsid[] = "$NetBSD: s_nextafter.c,v 1.8 1995/05/10 20:47:58 jtc Exp * Special cases: */ +/* Ugly hack so that the aliasing works. */ +#define __nexttoward __internal___nexttoward +#define nexttoward __internal_nexttoward + #include "math.h" #include "math_private.h" diff --git a/sysdeps/generic/strtold.c b/sysdeps/generic/strtold.c index 86b2f7f2f4..f6f6eb9103 100644 --- a/sysdeps/generic/strtold.c +++ b/sysdeps/generic/strtold.c @@ -30,4 +30,3 @@ strtold (const char *nptr, char **endptr) { return __strtod_internal (nptr, endptr, 0); } -#endif