summaryrefslogtreecommitdiff
path: root/m4/ftello.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/ftello.m4')
-rw-r--r--m4/ftello.m415
1 files changed, 13 insertions, 2 deletions
diff --git a/m4/ftello.m4 b/m4/ftello.m4
index 4901b16835..e13fcd93d2 100644
--- a/m4/ftello.m4
+++ b/m4/ftello.m4
@@ -1,4 +1,4 @@
-# ftello.m4 serial 14
+# ftello.m4 serial 15
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -37,13 +37,24 @@ AC_DEFUN([gl_FUNC_FTELLO],
if test $gl_cv_var_stdin_large_offset = no; then
REPLACE_FTELLO=1
fi
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ if test $REPLACE_FTELLO = 0; then
+ dnl On native Windows, in some circumstances, ftell(), ftello(),
+ dnl fgetpos(), lseek(), _lseeki64() all succeed on devices of type
+ dnl FILE_TYPE_PIPE. However, to match POSIX behaviour, we want
+ dnl ftell(), ftello(), fgetpos(), lseek() to fail when the argument fd
+ dnl designates a pipe. See also
+ dnl https://github.com/python/cpython/issues/78961#issuecomment-1093800325
+ case "$host_os" in
+ mingw*) REPLACE_FTELLO=1 ;;
+ esac
+ fi
if test $REPLACE_FTELLO = 0; then
dnl Detect bug on Solaris.
dnl ftell and ftello produce incorrect results after putc that followed a
dnl getc call that reached EOF on Solaris. This is because the _IOREAD
dnl flag does not get cleared in this case, even though _IOWRT gets set,
dnl and ftell and ftello look whether the _IOREAD flag is set.
- AC_REQUIRE([AC_CANONICAL_HOST])
AC_CACHE_CHECK([whether ftello works],
[gl_cv_func_ftello_works],
[