Mercurial > hg > octave-nkf > gnulib-hg
changeset 16934:aac870b341ad
grantpt: Relax requirement regarding invalid file descriptors.
* lib/grantpt.c: Don't include <fcntl.h>.
(grantpt): Don't verify the validity of the file descriptor.
* modules/grantpt (Depends-on): Remove fcntl-h.
* tests/test-grantpt.c (main): Allow grantpt to succeed for invalid
file descriptors.
* doc/posix-functions/grantpt.texi: Document more platforms on which
grantpt succeeds for invalid file descriptors.
Reported by Rich Felker <dalias@aerifal.cx>.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Fri, 22 Jun 2012 12:36:47 +0200 |
parents | d86f5b7cd392 |
children | 498a2211d839 |
files | ChangeLog doc/posix-functions/grantpt.texi lib/grantpt.c modules/grantpt tests/test-grantpt.c |
diffstat | 5 files changed, 38 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-06-22 Bruno Haible <bruno@clisp.org> + + grantpt: Relax requirement regarding invalid file descriptors. + * lib/grantpt.c: Don't include <fcntl.h>. + (grantpt): Don't verify the validity of the file descriptor. + * modules/grantpt (Depends-on): Remove fcntl-h. + * tests/test-grantpt.c (main): Allow grantpt to succeed for invalid + file descriptors. + * doc/posix-functions/grantpt.texi: Document more platforms on which + grantpt succeeds for invalid file descriptors. + Reported by Rich Felker <dalias@aerifal.cx>. + 2012-06-22 Bruno Haible <bruno@clisp.org> fbufmode test: Don't test unportable behaviour.
--- a/doc/posix-functions/grantpt.texi +++ b/doc/posix-functions/grantpt.texi @@ -20,5 +20,5 @@ IRIX 5.3. @item This function reports success for invalid file descriptors on some platforms: -Cygwin 1.7.9. +OpenBSD, Cygwin 1.7.9, musl libc. @end itemize
--- a/lib/grantpt.c +++ b/lib/grantpt.c @@ -21,7 +21,6 @@ #include <assert.h> #include <errno.h> -#include <fcntl.h> #include <string.h> #include <sys/wait.h> #include <unistd.h> @@ -50,8 +49,6 @@ #if defined __OpenBSD__ /* On OpenBSD, master and slave of a pseudo-terminal are allocated together, through an ioctl on /dev/ptm. There is no need for grantpt(). */ - if (fcntl (fd, F_GETFD) < 0) - return -1; return 0; #else /* This function is most often called from a process without 'root'
--- a/modules/grantpt +++ b/modules/grantpt @@ -9,7 +9,6 @@ Depends-on: stdlib extensions -fcntl-h [test $HAVE_GRANTPT = 0] pt_chown [test $HAVE_GRANTPT = 0] waitpid [test $HAVE_GRANTPT = 0] configmake [test $HAVE_GRANTPT = 0]
--- a/tests/test-grantpt.c +++ b/tests/test-grantpt.c @@ -28,22 +28,36 @@ int main (void) { - /* Test behaviour for invalid file descriptors. */ + /* Test behaviour for invalid file descriptors. + These calls don't fail on OpenBSD (with gnulib's replacement) and on + musl libc. */ { + int ret; + errno = 0; - ASSERT (grantpt (-1) == -1); - ASSERT (errno == EBADF - || errno == EINVAL /* seen on FreeBSD 6.4 */ - || errno == 0 /* seen on Solaris 8 */ - ); + ret = grantpt (-1); + if (ret != 0) + { + ASSERT (ret == -1); + ASSERT (errno == EBADF + || errno == EINVAL /* seen on FreeBSD 6.4 */ + || errno == 0 /* seen on Solaris 8 */ + ); + } } { + int ret; + errno = 0; - ASSERT (grantpt (99) == -1); - ASSERT (errno == EBADF - || errno == EINVAL /* seen on FreeBSD 6.4 */ - || errno == 0 /* seen on Solaris 8 */ - ); + ret = grantpt (99); + if (ret != 0) + { + ASSERT (ret == -1); + ASSERT (errno == EBADF + || errno == EINVAL /* seen on FreeBSD 6.4 */ + || errno == 0 /* seen on Solaris 8 */ + ); + } } return 0;