2 ===================================================================
3 RCS file: /cvs/root/Libc/gen/FreeBSD/ttyname.c,v
4 retrieving revision 1.3
5 diff -u -d -b -w -p -u -r1.3 ttyname.c
6 --- ttyname.c 2004/11/25 19:38:02 1.3
7 +++ ttyname.c 2004/12/12 03:51:44
8 @@ -48,10 +48,14 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/tty
14 +#endif /* __DARWIN_UNIX03 */
15 #include "un-namespace.h"
17 #include "libc_private.h"
19 +#ifndef BUILDING_VARIANT
20 static char buf[sizeof(_PATH_DEV) + MAXNAMLEN];
21 static char *ttyname_threaded(int fd);
22 static char *ttyname_unthreaded(int fd);
23 @@ -71,31 +75,54 @@ ttyname(int fd)
24 ret = ttyname_threaded(fd);
27 +#endif /* !BUILDING_VARIANT */
31 +#else /* !__DARWIN_UNIX03 */
33 -ttyname_r(int fd, char *buf, size_t len)
34 +#endif /* __DARWIN_UNIX03 */
35 +ttyname_r(int fd, char *thrbuf, size_t len)
43 + if (_fstat(fd, &sb) < 0)
45 /* Must be a terminal. */
49 /* Must be a character device. */
50 + if (!S_ISCHR(sb.st_mode))
52 + /* Must have enough room */
53 + if (len <= sizeof(_PATH_DEV))
55 +#else /* !__DARWIN_UNIX03 */
56 + /* Must be a terminal. */
59 + /* Must be a character device. */
60 if (_fstat(fd, &sb) || !S_ISCHR(sb.st_mode))
63 /* Must have enough room */
64 if (len <= sizeof(_PATH_DEV))
67 +#endif /* __DARWIN_UNIX03 */
69 - strcpy(buf, _PATH_DEV);
70 - devname_r(sb.st_rdev, S_IFCHR,
71 - buf + strlen(buf), sizeof(buf) - strlen(buf));
73 + strcpy(thrbuf, _PATH_DEV);
74 + if (devname_r(sb.st_rdev, S_IFCHR,
75 + thrbuf + strlen(thrbuf), len - strlen(thrbuf)) == NULL)
79 +#else /* !__DARWIN_UNIX03 */
82 +#endif /* __DARWIN_UNIX03 */
85 +#ifndef BUILDING_VARIANT
87 ttyname_threaded(int fd)
89 @@ -124,7 +151,11 @@ ttyname_threaded(int fd)
94 + return (ttyname_r(fd, buf, sizeof(_PATH_DEV) + MAXNAMLEN) == 0 ? buf : NULL);
95 +#else /* !__DARWIN_UNIX03 */
96 return (ttyname_r(fd, buf, sizeof(_PATH_DEV) + MAXNAMLEN));
97 +#endif /* __DARWIN_UNIX03 */
101 @@ -141,7 +172,9 @@ ttyname_unthreaded(int fd)
104 strcpy(buf, _PATH_DEV);
105 - devname_r(sb.st_rdev, S_IFCHR,
106 - buf + strlen(buf), sizeof(buf) - strlen(buf));
107 + if (devname_r(sb.st_rdev, S_IFCHR,
108 + buf + strlen(buf), sizeof(buf) - strlen(buf)) == NULL)
112 +#endif /* !BUILDING_VARIANT */