* sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remember
	whether /dev/pts is available.
	* sysdeps/unix/sysv/linux/ttyname.c (ttyname): Fix handling of
	dev_pts_available.
This commit is contained in:
Ulrich Drepper 1999-03-05 18:52:41 +00:00
parent c277d2e55a
commit aad20af475
3 changed files with 36 additions and 21 deletions

View File

@ -1,5 +1,10 @@
1999-03-05 Ulrich Drepper <drepper@cygnus.com> 1999-03-05 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Remember
whether /dev/pts is available.
* sysdeps/unix/sysv/linux/ttyname.c (ttyname): Fix handling of
dev_pts_available.
* posix/globtest.sh: Make common_objpfx path absolute and and db2 * posix/globtest.sh: Make common_objpfx path absolute and and db2
and hesiod directory to library path [PR libc/1007]. and hesiod directory to library path [PR libc/1007].

View File

@ -111,7 +111,7 @@ ttyname (fd)
char procname[30]; char procname[30];
struct stat st, st1; struct stat st, st1;
int dostat = 0; int dostat = 0;
char *name; char *name = NULL;
int save = errno; int save = errno;
if (!__isatty (fd)) if (!__isatty (fd))
@ -139,20 +139,21 @@ ttyname (fd)
if (__fxstat (_STAT_VER, fd, &st) < 0) if (__fxstat (_STAT_VER, fd, &st) < 0)
return NULL; return NULL;
if (dev_pts_available if (dev_pts_available)
&& __xstat (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
{ {
if (__xstat (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
{
#ifdef _STATBUF_ST_RDEV #ifdef _STATBUF_ST_RDEV
name = getttyname ("/dev/pts", st.st_rdev, st.st_ino, save, &dostat); name = getttyname ("/dev/pts", st.st_rdev, st.st_ino, save, &dostat);
#else #else
name = getttyname ("/dev/pts", st.st_dev, st.st_ino, save, &dostat); name = getttyname ("/dev/pts", st.st_dev, st.st_ino, save, &dostat);
#endif #endif
} }
else else
{ {
__set_errno (save); __set_errno (save);
name = NULL; dev_pts_available = 0;
dev_pts_available = 1; }
} }
if (!name && dostat != -1) if (!name && dostat != -1)

View File

@ -103,6 +103,7 @@ __ttyname_r (fd, buf, buflen)
char *buf; char *buf;
size_t buflen; size_t buflen;
{ {
static int dev_pts_available = 1;
char procname[30]; char procname[30];
struct stat st, st1; struct stat st, st1;
int dostat = 0; int dostat = 0;
@ -148,20 +149,28 @@ __ttyname_r (fd, buf, buflen)
memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/")); memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
buflen -= sizeof ("/dev/pts/") - 1; buflen -= sizeof ("/dev/pts/") - 1;
if (__xstat (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode)) if (dev_pts_available)
{ {
if (__xstat (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode))
{
#ifdef _STATBUF_ST_RDEV #ifdef _STATBUF_ST_RDEV
ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save, ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save,
&dostat); &dostat);
#else #else
ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, save, ret = getttyname_r (buf, buflen, st.st_dev, st.st_ino, save,
&dostat); &dostat);
#endif #endif
} }
else else
{ {
__set_errno (save); __set_errno (save);
ret = ENOENT; ret = ENOENT;
}
else
{
__set_errno (save);
dev_pts_available = 0;
}
} }
if (ret && dostat != -1) if (ret && dostat != -1)