1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00
* 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

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