+2023-04-26 Bruno Haible <bruno@clisp.org>
+
+ fclose: Make last change more maintainable.
+ * m4/fclose.m4 (gl_FUNC_FCLOSE): Define through AC_DEFUN_ONCE. Don't
+ modify REPLACE_FOPEN.
+ * modules/fclose (Depends-on): Add comment.
+ (configure.ac): Don't modify REPLACE_FOPEN. Don't duplicate actions of
+ module 'fopen'.
+ * m4/fopen.m4 (gl_FUNC_FOPEN_ITSELF): Renamed from gl_FUNC_FOPEN.
+ (gl_FUNC_FOPEN): New macro.
+ * modules/fopen (Files): Add m4/fclose.m4, m4/fflush.m4.
+ * m4/close.m4 (gl_FUNC_CLOSE): Define through AC_DEFUN_ONCE.
+
2023-04-26 Po Lu <luangruo@yahoo.com> (tiny change)
Bruno Haible <bruno@clisp.org>
-# close.m4 serial 9
+# close.m4 serial 10
dnl Copyright (C) 2008-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,
dnl with or without modifications, as long as this notice is preserved.
-AC_DEFUN([gl_FUNC_CLOSE],
+AC_DEFUN_ONCE([gl_FUNC_CLOSE],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
m4_ifdef([gl_MSVC_INVAL], [
-# fclose.m4 serial 10
+# fclose.m4 serial 11
dnl Copyright (C) 2008-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,
dnl with or without modifications, as long as this notice is preserved.
-AC_DEFUN([gl_FUNC_FCLOSE],
+AC_DEFUN_ONCE([gl_FUNC_FCLOSE],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
*) REPLACE_FCLOSE=1 ;;
esac
fi
-
- if test $REPLACE_FCLOSE = 1; then
- REPLACE_FOPEN=1
- fi
])
dnl Determine whether fclose works on input streams.
-# fopen.m4 serial 14
+# fopen.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,
dnl with or without modifications, as long as this notice is preserved.
-AC_DEFUN([gl_FUNC_FOPEN],
+AC_DEFUN([gl_FUNC_FOPEN_ITSELF],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
esac
])
+AC_DEFUN([gl_FUNC_FOPEN],
+[
+ AC_REQUIRE([gl_FUNC_FOPEN_ITSELF])
+ AC_REQUIRE([gl_FUNC_FCLOSE])
+ if test $REPLACE_FCLOSE = 1; then
+ REPLACE_FOPEN=1
+ fi
+])
+
AC_DEFUN([gl_FUNC_FOPEN_GNU],
[
AC_REQUIRE([gl_FUNC_FOPEN])
stdio
close [test $REPLACE_FCLOSE = 1]
fflush [test $REPLACE_FCLOSE = 1]
-fopen [test $REPLACE_FCLOSE = 1]
freading [test $REPLACE_FCLOSE = 1]
lseek [test $REPLACE_FCLOSE = 1]
msvc-inval [test $REPLACE_FCLOSE = 1]
+# The code of fclose does not need to call fopen. But when gcc's '-fanalyzer'
+# option is in use and stdio.h does '#define fclose rpl_fclose', stdio.h also
+# needs to do '#define fopen rpl_fopen', otherwise a warning may result.
+fopen [test $REPLACE_FCLOSE = 1]
configure.ac:
gl_FUNC_FCLOSE
-if test $REPLACE_FCLOSE = 1; then
- REPLACE_FOPEN=1
- AC_LIBOBJ([fopen])
- gl_PREREQ_FOPEN
-fi
gl_CONDITIONAL([GL_COND_OBJ_FCLOSE], [test $REPLACE_FCLOSE = 1])
gl_STDIO_MODULE_INDICATOR([fclose])
Files:
lib/fopen.c
m4/fopen.m4
+m4/fclose.m4
+m4/fflush.m4
Depends-on:
stdio