summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-03-21 03:46:05 +0100
committerBruno Haible <bruno@clisp.org>2021-03-21 03:46:05 +0100
commita646e362fce5952d55073792799cdc8fa29ab253 (patch)
treef9a4b74f458850f4ae06cd003e0ef683d136ae6d /m4
parentcfe9452d1dd3cf16e6c518b970bcdca70e8c872c (diff)
downloadgnulib-a646e362fce5952d55073792799cdc8fa29ab253.tar.gz
ftello: Work around bug in macOS >= 10.15.
Reported by Martin Storsjö <martin@martin.st> in <https://lists.gnu.org/archive/html/bug-gnulib/2020-12/msg00002.html>. * m4/ungetc.m4 (gl_FUNC_UNGETC_WORKS): On macOS, don't define FUNC_UNGETC_BROKEN. Instead, set gl_ftello_broken_after_ungetc to yes. * m4/ftello.m4 (gl_FUNC_FTELLO): Invoke gl_FUNC_UNGETC_WORKS, and arrange to provide the workaround if ftello is broken after ungetc. * lib/ftello.c: Include <errno.h>, intprops.h. (ftello) [FTELLO_BROKEN_AFTER_UNGETC]: Implement from scratch. * modules/ftello (Files): Add m4/ungetc.m4. (Depends-on): Add intprops. * doc/posix-functions/ftello.texi: Mention the macOS bug.
Diffstat (limited to 'm4')
-rw-r--r--m4/ftello.m411
-rw-r--r--m4/ungetc.m414
2 files changed, 21 insertions, 4 deletions
diff --git a/m4/ftello.m4 b/m4/ftello.m4
index 1a0f7bcb64..65bec39690 100644
--- a/m4/ftello.m4
+++ b/m4/ftello.m4
@@ -1,4 +1,4 @@
-# ftello.m4 serial 13
+# ftello.m4 serial 14
dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -130,6 +130,15 @@ main (void)
;;
esac
fi
+ if test $REPLACE_FTELLO = 0; then
+ dnl Detect bug on macOS >= 10.15.
+ gl_FUNC_UNGETC_WORKS
+ if test $gl_ftello_broken_after_ungetc = yes; then
+ REPLACE_FTELLO=1
+ AC_DEFINE([FTELLO_BROKEN_AFTER_UNGETC], [1],
+ [Define to 1 if the system's ftello function has the macOS bug.])
+ fi
+ fi
fi
])
diff --git a/m4/ungetc.m4 b/m4/ungetc.m4
index b648fea37c..dd5d1ddc89 100644
--- a/m4/ungetc.m4
+++ b/m4/ungetc.m4
@@ -1,4 +1,4 @@
-# ungetc.m4 serial 9
+# ungetc.m4 serial 10
dnl Copyright (C) 2009-2021 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -55,11 +55,19 @@ AC_DEFUN_ONCE([gl_FUNC_UNGETC_WORKS],
esac
])
])
+ gl_ftello_broken_after_ungetc=no
case "$gl_cv_func_ungetc_works" in
*yes) ;;
*)
- AC_DEFINE([FUNC_UNGETC_BROKEN], [1],
- [Define to 1 if ungetc is broken when used on arbitrary bytes.])
+ dnl On macOS >= 10.15, where the above program fails with exit code 6,
+ dnl we fix it through an ftello override.
+ case "$host_os" in
+ darwin*) gl_ftello_broken_after_ungetc=yes ;;
+ *)
+ AC_DEFINE([FUNC_UNGETC_BROKEN], [1],
+ [Define to 1 if ungetc is broken when used on arbitrary bytes.])
+ ;;
+ esac
;;
esac
])