Gnulib made an incompatible change. (Yes, this happens occasionally.)
m4 needs the attached patch in order to avoid compilation errors:
CC macro.o
CC output.o
output.c: In function 'm4_tmpfile':
output.c:228:10: error: too few arguments to function 'fopen_temp'
file = fopen_temp (name, O_BINARY ? "wb+" : "w+");
^
In file included from m4.h:39:0,
from output.c:22:
../lib/clean-temp.h:125:15: note: declared here
extern FILE * fopen_temp (const char *file_name, const char *mode,
^
output.c: In function 'm4_tmpopen':
output.c:270:10: error: too few arguments to function 'fopen_temp'
file = fopen_temp (name, O_BINARY ? "rb+" : "r+");
^
In file included from m4.h:39:0,
from output.c:22:
../lib/clean-temp.h:125:15: note: declared here
extern FILE * fopen_temp (const char *file_name, const char *mode,
^
Makefile:1863: recipe for target 'output.o' failed
make[2]: *** [output.o] Error 1
>From 04b761f0e3c282852dd07619ba5d1fad03fb89e6 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Sat, 4 Jul 2020 10:29:44 +0200
Subject: [PATCH] Update after gnulib changed.
* src/output.c (m4_tmpfile, m4_tmpopen): Update fopen_temp invocations.
---
src/output.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/output.c b/src/output.c
index a4ad527..f5dee7c 100644
--- a/src/output.c
+++ b/src/output.c
@@ -1,6 +1,6 @@
/* GNU m4 -- A simple macro processor
- Copyright (C) 1989-1994, 2004-2014, 2016-2017 Free Software
+ Copyright (C) 1989-1994, 2004-2014, 2016-2017, 2020 Free Software
Foundation, Inc.
This file is part of GNU M4.
@@ -225,7 +225,7 @@ m4_tmpfile (int divnum)
}
name = m4_tmpname (divnum);
register_temp_file (output_temp_dir, name);
- file = fopen_temp (name, O_BINARY ? "wb+" : "w+");
+ file = fopen_temp (name, O_BINARY ? "wb+" : "w+", false);
if (file == NULL)
{
unregister_temp_file (output_temp_dir, name);
@@ -267,7 +267,7 @@ m4_tmpopen (int divnum, bool reread)
}
name = m4_tmpname (divnum);
/* We need update mode, to avoid truncation. */
- file = fopen_temp (name, O_BINARY ? "rb+" : "r+");
+ file = fopen_temp (name, O_BINARY ? "rb+" : "r+", false);
if (file == NULL)
M4ERROR ((EXIT_FAILURE, errno,
"cannot create temporary file for diversion"));
--
2.7.4