diff options
author | Bruno Haible <bruno@clisp.org> | 2021-03-21 03:46:05 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2021-03-21 03:46:05 +0100 |
commit | a646e362fce5952d55073792799cdc8fa29ab253 (patch) | |
tree | f9a4b74f458850f4ae06cd003e0ef683d136ae6d /m4 | |
parent | cfe9452d1dd3cf16e6c518b970bcdca70e8c872c (diff) | |
download | gnulib-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.m4 | 11 | ||||
-rw-r--r-- | m4/ungetc.m4 | 14 |
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 ]) |