summaryrefslogtreecommitdiffstats
path: root/Objects/fileobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/fileobject.c')
-rw-r--r--Objects/fileobject.c7
1 files changed, 7 insertions, 0 deletions
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 @@ _portable_fseek(FILE *fp, Py_off_t offset, int whence)
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