Add a workaround for file.ftell() to raise IOError for ttys.
ftell(3) on BSD doesn't set errno even for ttys and returns useless
values.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 259a423..1de520b 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -482,6 +482,13 @@
 static Py_off_t
 _portable_ftell(FILE* fp)
 {
+#ifdef HAVE_BROKEN_FTELL
+	/* ftell doesn't fail for tty fds on FreeBSD and some others */
+	if (isatty(fileno(fp))) {
+		errno = ESPIPE;
+		return -1;
+	}
+#endif
 #if !defined(HAVE_LARGEFILE_SUPPORT)
 	return ftell(fp);
 #elif defined(HAVE_FTELLO) && SIZEOF_OFF_T >= 8