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