isatty.c.patch   [plain text]


--- isatty.c.orig	2009-11-07 14:51:38.000000000 -0800
+++ isatty.c	2009-11-07 14:51:40.000000000 -0800
@@ -35,14 +35,22 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/isa
 
 #include <termios.h>
 #include <unistd.h>
+#include <sys/filio.h>
+#include <sys/conf.h>
+#include <sys/ioctl.h>
+#include <errno.h>
 
 int
 isatty(fd)
 	int fd;
 {
-	int retval;
+	int retval, type;
 	struct termios t;
 
-	retval = (tcgetattr(fd, &t) != -1);
+	if(ioctl(fd, FIODTYPE, &type) != -1) {
+	    if((retval = (type == D_TTY)) == 0)
+		errno = ENOTTY;
+	} else
+	    retval = (tcgetattr(fd, &t) != -1);
 	return(retval);
 }