diff options
author | phk <phk@FreeBSD.org> | 2003-06-21 08:16:12 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-06-21 08:16:12 +0000 |
commit | d6a3dc0a5923a623809d7bf9f60513fcfcbe0111 (patch) | |
tree | f9670d7e6200ea5700b9d1ab1b38c6f5aca56ef2 /lib | |
parent | ed79b4d6257cb411589c447a07a268c99e8b345d (diff) | |
download | FreeBSD-src-d6a3dc0a5923a623809d7bf9f60513fcfcbe0111.zip FreeBSD-src-d6a3dc0a5923a623809d7bf9f60513fcfcbe0111.tar.gz |
ttyname(3) must return absolute pathnames.
Noticed by: kris
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/ttyname.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/libc/gen/ttyname.c b/lib/libc/gen/ttyname.c index 0def640..22f7488 100644 --- a/lib/libc/gen/ttyname.c +++ b/lib/libc/gen/ttyname.c @@ -93,7 +93,10 @@ ttyname_r(int fd, char *buf, size_t len) if (len <= sizeof(_PATH_DEV)) return (rval); - return(devname_r(sb.st_rdev, S_IFCHR, buf, sizeof(buf))); + strcpy(buf, _PATH_DEV); + devname_r(sb.st_rdev, S_IFCHR, + buf + strlen(buf), sizeof(buf) - strlen(buf)); + return (buf); } static char * @@ -140,5 +143,8 @@ ttyname_unthreaded(int fd) if (_fstat(fd, &sb) || !S_ISCHR(sb.st_mode)) return (NULL); - return(devname_r(sb.st_rdev, S_IFCHR, buf, sizeof(buf))); + strcpy(buf, _PATH_DEV); + devname_r(sb.st_rdev, S_IFCHR, + buf + strlen(buf), sizeof(buf) - strlen(buf)); + return (buf); } |