* sysdeps/unix/bsd/bsd4.4/isatty.c: New file.

* sysdeps/unix/bsd/isatty.c (__isatty): Don't save and restore errno.
	* sysdeps/unix/bsd/ptsname.c (__ptsname_r): Return errno value from
	isatty unmodified.  Reported by Bruno Haible <bruno@clisp.org>.
This commit is contained in:
Roland McGrath 2002-09-20 20:18:24 +00:00
parent fcdc67f963
commit dab9837091
4 changed files with 18 additions and 16 deletions

View File

@ -1,3 +1,11 @@
2002-09-20 Roland McGrath <roland@redhat.com>
* sysdeps/unix/bsd/bsd4.4/isatty.c: New file.
* sysdeps/unix/bsd/isatty.c (__isatty): Don't save and restore errno.
* sysdeps/unix/bsd/ptsname.c (__ptsname_r): Return errno value from
isatty unmodified. Reported by Bruno Haible <bruno@clisp.org>.
2002-09-20 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/bits/setjmp.h [__WORDSIZE]: Add 64-bit jmpbuf.

View File

@ -0,0 +1,3 @@
/* In a 4.4-derived world, tcgetattr is just one ioctl. */
#include <sysdeps/posix/isatty.c>

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1991,95,96,97,2002 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
@ -25,15 +25,8 @@ int
__isatty (fd)
int fd;
{
int save;
int is_tty;
struct sgttyb term;
save = errno;
is_tty = __ioctl (fd, TIOCGETP, &term) == 0;
__set_errno (save);
return is_tty;
return __ioctl (fd, TIOCGETP, &term) == 0;
}
weak_alias (__isatty, isatty)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998 Free Software Foundation, Inc.
/* Copyright (C) 1998,2002 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
@ -53,22 +53,20 @@ __ptsname_r (int fd, char *buf, size_t buflen)
}
if (!__isatty (fd))
{
__set_errno (ENOTTY);
return ENOTTY;
}
/* We rely on isatty to set errno properly (i.e. EBADF or ENOTTY). */
return errno;
if (buflen < strlen (_PATH_TTY) + 3)
{
__set_errno (ERANGE);
return ERANGE;
}
if (__ttyname_r (fd, buf, buflen) != 0)
return errno;
buf[sizeof (_PATH_DEV) - 1] = 't';
if (__stat (buf, &st) < 0)
return errno;