build: update to latest gnulib

Rather than trying to cherry-pick all gnulib changes on branch-1.4,
this just updates to the latest (see commit 2f445aef) then fixes ALL
of the fallout, as learned by referencing a number of other commits.
Done this way since it is otherwise impossible to build this branch,
in an effort to revive it.  With this in place, it should be easier to
do more targetted forward ports of other commits.

* gnulib: Update to latest.
* m4/gnulib-cache.m4: Regenerate.  Change pipe to spawn-pipe.
* .gitignore: Cater to changes in build-aux.
* build-aux/missing: Drop; newer automake doesn't need it.
* doc/m4.texinfo: Rename to doc/m4.texi, and re-encode in UTF-8.
Cater to quotearg changing `' to '' in messages throughout
(@setcontentsaftertitlepage): Drop.
* examples/null.err: Cater to quotearg changes.
* doc/Makefile.am (info_TEXINFOS): Track rename.
* checks/Makefile.in (stamp-checks): Likewise.
* configure.ac (AC_PREREQ, AM_INIT_AUTOMAKE): Bump to newer baseline.
(AC_TYPE_SIGNAL): Drop deprecated macro.
* src/builtin.c (m4_syscmd, m4_esyscmd): Track execute and
create_pipe_in changes.
(mkstemp_helper): Track obstack changes.
* src/debug.c (trace_flush): Likewise.
* src/input.c (next_token): Likewise.
* src/m4.h (includes): Drop obsolete "verror.h".
* src/output.c (m4_tmpfile, m4_tmpopen): Track fopen_temp changes.
* src/symtab.c (lookup_symbol): Track hash_delete changes.
This commit is contained in:
Eric Blake 2025-04-05 16:27:32 -05:00
parent ea03ca2db7
commit 012cff0125
15 changed files with 175 additions and 82 deletions

15
.gitignore vendored
View File

@ -9,12 +9,21 @@
*.tar.gz
*.tar.lzma
*.tar.xz
\#*
.#*
.deps
/.tarball-version
/.version
/aclocal.m4
/autom4te.cache
/build-aux/.gitignore
/build-aux/*
!/build-aux/compile
!/build-aux/config.guess
!/build-aux/config.sub
!/build-aux/depcomp
!/build-aux/install-sh
!/build-aux/mdate-sh
!/build-aux/texinfo.tex
/checks/[0-9][0-9].*
/checks/[0-9][0-9][0-9].*
/checks/stamp-checks
@ -39,7 +48,6 @@
/doc/stamp-vti
/doc/version.texi
/gendocs.sh
/GNUmakefile
/gnupload
/install-sh
/lib/*
@ -48,7 +56,6 @@
/m4-*
/m4/.gitignore
/m4/gnulib-comp.m4
/maint.mk
Makefile.in
Makefile
/missing
@ -58,3 +65,5 @@ Makefile
/stamp-h.in
/tests/*
!/tests/Makefile.am
/GNUmakefile
/maint.mk

View File

@ -1 +0,0 @@
../gnulib/build-aux/missing

View File

@ -42,9 +42,9 @@ DISTFILES = $(srcdir)/get-them $(srcdir)/check-them $(srcdir)/stamp-checks
all: $(srcdir)/stamp-checks
$(srcdir)/stamp-checks: $(srcdir)/get-them $(srcdir)/../doc/m4.texinfo
$(srcdir)/stamp-checks: $(srcdir)/get-them $(srcdir)/../doc/m4.texi
rm -f $(CHECKS)
cd $(srcdir) && AWK=$(AWK) ./get-them ../doc/m4.texinfo
cd $(srcdir) && AWK=$(AWK) ./get-them ../doc/m4.texi
touch $(srcdir)/stamp-checks
install:

View File

@ -17,13 +17,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ([2.62])
AC_PREREQ([2.64])
AC_INIT([GNU M4], m4_esyscmd([build-aux/git-version-gen .tarball-version]),
[bug-m4@gnu.org])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.11.1 dist-bzip2 dist-xz color-tests parallel-tests
silent-rules gnu])
AM_INIT_AUTOMAKE([1.11.6 dist-bzip2 dist-xz color-tests parallel-tests
silent-rules subdir-objects gnu])
m4_pattern_forbid([^M4_[A-Z]])
@ -51,8 +51,6 @@ AC_CHECK_MEMBERS([stack_t.ss_sp], [], [],
#endif
]])
AC_TYPE_SIGNAL
AC_CHECK_FUNCS_ONCE([sigaction sigaltstack sigstack sigvec strerror])
AC_ARG_ENABLE([gcc-warnings],

View File

@ -20,7 +20,7 @@
##
## This file written by Eric Blake <ebb9@byu.net>
info_TEXINFOS = m4.texinfo
info_TEXINFOS = m4.texi
m4_TEXINFOS = fdl-1.3.texi gpl-3.0.texi
man_MANS = $(srcdir)/m4.1
EXTRA_DIST = $(man_MANS) gendocs_template

View File

@ -4,10 +4,8 @@
@setfilename m4.info
@include version.texi
@settitle GNU M4 @value{VERSION} macro processor
@documentencoding UTF-8
@setchapternewpage odd
@ifnothtml
@setcontentsaftertitlepage
@end ifnothtml
@finalout
@c @tabchar{}
@ -612,7 +610,7 @@ a warning.
@example
$ @kbd{m4}
defn(`oops')
@error{}m4:stdin:1: warning: defn: undefined macro `oops'
@error{}m4:stdin:1: warning: defn: undefined macro 'oops'
@result{}
^D
@end example
@ -642,7 +640,7 @@ $ @kbd{echo $?}
@example
$ @kbd{m4 -E -d}
defn(`oops')
@error{}m4:stdin:1: warning: defn: undefined macro `oops'
@error{}m4:stdin:1: warning: defn: undefined macro 'oops'
@result{}
^D
@end example
@ -1145,7 +1143,7 @@ define(`m4exit')include(`null.m4')dnl
@example
include(`null.m4')
@result{}# This file tests m4 behavior on NUL bytes.
@error{}m4:examples/null.m4:5: warning: m4exit: non-numeric argument `2\0002'
@error{}m4:examples/null.m4:5: warning: m4exit: non-numeric argument '2\0002'
@end example
@end ignore
@ -2109,8 +2107,8 @@ will still be possible to restore older behavior in M4 2.0.
@example
$ @kbd{m4 --warn-macro-sequence}
define(`foo', `$001 $@{1@} $1')
@error{}m4:stdin:1: warning: definition of `foo' contains sequence `$001'
@error{}m4:stdin:1: warning: definition of `foo' contains sequence `$@{1@}'
@error{}m4:stdin:1: warning: definition of 'foo' contains sequence '$001'
@error{}m4:stdin:1: warning: definition of 'foo' contains sequence '$@{1@}'
@result{}
foo(`bar')
@result{}bar $@{1@} bar
@ -2354,7 +2352,7 @@ m4}).
@example
$ @kbd{m4}
undefine(`a')
@error{}m4:stdin:1: warning: undefine: undefined macro `a'
@error{}m4:stdin:1: warning: undefine: undefined macro 'a'
@result{}
debugmode(`-d')
@result{}
@ -2554,7 +2552,7 @@ GNU M4 may lift this restriction.
@example
$ @kbd{m4 -d}
defn(`foo')
@error{}m4:stdin:1: warning: defn: undefined macro `foo'
@error{}m4:stdin:1: warning: defn: undefined macro 'foo'
@result{}
debugmode(`-d')
@result{}
@ -2705,7 +2703,7 @@ define(`a', `1')
popdef
@result{}popdef
popdef(`a', `a')
@error{}m4:stdin:3: warning: popdef: undefined macro `a'
@error{}m4:stdin:3: warning: popdef: undefined macro 'a'
@result{}
debugmode(`-d')
@result{}
@ -2763,7 +2761,7 @@ f(define(`f', `2'))
indir(`f', define(`f', `3'))
@result{}3
indir(`f', undefine(`f'))
@error{}m4:stdin:4: warning: indir: undefined macro `f'
@error{}m4:stdin:4: warning: indir: undefined macro 'f'
@result{}
debugmode(`-d')
@result{}
@ -2867,10 +2865,10 @@ $ @kbd{m4 -P}
m4_builtin(`divnum')
@result{}0
m4_builtin(`m4_divnum')
@error{}m4:stdin:2: warning: m4_builtin: undefined builtin `m4_divnum'
@error{}m4:stdin:2: warning: m4_builtin: undefined builtin 'm4_divnum'
@result{}
m4_indir(`divnum')
@error{}m4:stdin:3: warning: m4_indir: undefined macro `divnum'
@error{}m4:stdin:3: warning: m4_indir: undefined macro 'divnum'
@result{}
m4_indir(`m4_divnum')
@result{}0
@ -2888,17 +2886,17 @@ recognized; but it will provoke a warning, and result in a void expansion.
builtin
@result{}builtin
builtin()
@error{}m4:stdin:2: warning: builtin: undefined builtin `'
@error{}m4:stdin:2: warning: builtin: undefined builtin ''
@result{}
builtin(`builtin')
@error{}m4:stdin:3: warning: builtin: too few arguments: 0 < 1
@result{}
builtin(`builtin',)
@error{}m4:stdin:4: warning: builtin: undefined builtin `'
@error{}m4:stdin:4: warning: builtin: undefined builtin ''
@result{}
builtin(`builtin', ``'
')
@error{}m4:stdin:5: warning: builtin: undefined builtin ``\'\n'
@error{}m4:stdin:5: warning: builtin: undefined builtin '`\'\n'
@result{}
indir(`index')
@error{}m4:stdin:7: warning: index: too few arguments: 0 < 2
@ -4120,7 +4118,7 @@ f(popdef(`f')dumpdef(`f'))
@error{}f:@tabchar{}``$0'1'
@result{}f2
f(popdef(`f')dumpdef(`f'))
@error{}m4:stdin:3: warning: dumpdef: undefined macro `f'
@error{}m4:stdin:3: warning: dumpdef: undefined macro 'f'
@result{}f1
debugmode(`-d')
@result{}
@ -4213,17 +4211,17 @@ traceon(`foo')
foo
@result{}foo
defn(`foo')
@error{}m4:stdin:4: warning: defn: undefined macro `foo'
@error{}m4:stdin:4: warning: defn: undefined macro 'foo'
@result{}
undefine(`foo')
@error{}m4:stdin:5: warning: undefine: undefined macro `foo'
@error{}m4:stdin:5: warning: undefine: undefined macro 'foo'
@result{}
pushdef(`foo')
@result{}
popdef(`foo')
@result{}
popdef(`foo')
@error{}m4:stdin:8: warning: popdef: undefined macro `foo'
@error{}m4:stdin:8: warning: popdef: undefined macro 'foo'
@result{}
define(`foo', `bar')
@result{}
@ -4235,7 +4233,7 @@ undefine(`foo')
ifdef(`foo', `yes', `no')
@result{}no
indir(`foo')
@error{}m4:stdin:13: warning: indir: undefined macro `foo'
@error{}m4:stdin:13: warning: indir: undefined macro 'foo'
@result{}
define(`foo', `blah')
@result{}
@ -4522,10 +4520,10 @@ to macro tracing.
@comment options: -dip
@example
$ @kbd{m4 -dip -I examples}
@error{}m4debug: input read from `stdin'
@error{}m4debug: input read from 'stdin'
include(`foo')dnl
@error{}m4debug: path search for `foo' found `examples/foo'
@error{}m4debug: input read from `examples/foo'
@error{}m4debug: path search for 'foo' found 'examples/foo'
@error{}m4debug: input read from 'examples/foo'
@result{}bar
@error{}m4debug: input reverted to stdin, line 1
^D
@ -4720,11 +4718,11 @@ The quotation strings can safely contain eight-bit characters.
@example
define(`a', `b')
@result{}
«a»
@result{}«b»
changequote(`«', `»')
«a»
@result{}«b»
changequote(`«', `»')
@result{}
«a»
«a»
@result{}a
@end example
@end ignore
@ -4999,12 +4997,12 @@ The comment strings can safely contain eight-bit characters.
@example
define(`a', `b')
@result{}
«a»
@result{}«b»
changecom(`«', `»')
«a»
@result{}«b»
changecom(`«', `»')
@result{}
«a»
@result{}«a»
«a»
@result{}«a»
@end example
@end ignore
If no single character is appropriate, @var{start} and @var{end} can be
@ -5552,10 +5550,10 @@ parameters.
@comment status: 1
@example
include(`n')
@error{}m4:stdin:1: include: cannot open `n': No such file or directory
@error{}m4:stdin:1: include: cannot open 'n': No such file or directory
@result{}
include()
@error{}m4:stdin:2: include: cannot open `': No such file or directory
@error{}m4:stdin:2: include: cannot open '': No such file or directory
@result{}
sinclude(`n')
@result{}
@ -6622,7 +6620,7 @@ resulting @samp{b} is not further remapped to @samp{g}; the @samp{d} and
@comment rendering right in both info and dvi.
@example
translit(`«abc~', `~-»')
translit(`«abc~', `~-»')
@result{}abc
@end example
@ -6891,14 +6889,14 @@ Likewise, escape sequences are not yet recognized.
@example
format(`%p', `0')
@error{}m4:stdin:1: warning: format: unrecognized specifier in `%p'
@error{}m4:stdin:1: warning: format: unrecognized specifier in '%p'
@result{}p
format(`%*d', `')
@error{}m4:stdin:2: warning: format: empty string treated as 0
@error{}m4:stdin:2: warning: format: too few arguments: 2 < 3
@result{}0
format(`%.1f', `2a')
@error{}m4:stdin:3: warning: format: non-numeric argument `2a'
@error{}m4:stdin:3: warning: format: non-numeric argument '2a'
@result{}2.0
@end example
@ -7029,10 +7027,10 @@ eval(`2 = 2')
@error{}m4:stdin:1: warning: eval: recommend ==, not =, for equality
@result{}1
eval(`++0')
@error{}m4:stdin:2: warning: eval: invalid operator: `++0'
@error{}m4:stdin:2: warning: eval: invalid operator: '++0'
@result{}
eval(`0 |= 1')
@error{}m4:stdin:3: warning: eval: invalid operator: `0 |= 1'
@error{}m4:stdin:3: warning: eval: invalid operator: '0 |= 1'
@result{}
@end example
@ -7075,12 +7073,12 @@ eval(`+ + - ~ ! ~ 0')
eval(`2 || 1 / 0')
@result{}1
eval(`0 || 1 / 0')
@error{}m4:stdin:9: warning: eval: divide by zero: `0 || 1 / 0'
@error{}m4:stdin:9: warning: eval: divide by zero: '0 || 1 / 0'
@result{}
eval(`0 && 1 % 0')
@result{}0
eval(`2 && 1 % 0')
@error{}m4:stdin:11: warning: eval: modulo by zero: `2 && 1 % 0'
@error{}m4:stdin:11: warning: eval: modulo by zero: '2 && 1 % 0'
@result{}
@end example
@ -7102,9 +7100,9 @@ eval(`2 ** 0')
@result{}1
eval(`0 ** 0')
@result{}
@error{}m4:stdin:5: warning: eval: divide by zero: `0 ** 0'
@error{}m4:stdin:5: warning: eval: divide by zero: '0 ** 0'
eval(`4 ** -2')
@error{}m4:stdin:6: warning: eval: negative exponent: `4 ** -2'
@error{}m4:stdin:6: warning: eval: negative exponent: '4 ** -2'
@result{}
eval(`0 ? 2 : 3')
@result{}3
@ -7155,7 +7153,7 @@ square(square(`5')` + 1')
define(`foo', `666')
@result{}
eval(`foo / 6')
@error{}m4:stdin:11: warning: eval: bad expression: `foo / 6'
@error{}m4:stdin:11: warning: eval: bad expression: 'foo / 6'
@result{}
eval(foo / 6)
@result{}111
@ -8082,7 +8080,7 @@ ifdef(`__unix__', ,
changequote(`[', `]')dnl
syscmd([printf '#bogus\nV1\nF3,4\nlenlen\0\n' > in.m4f \
&& ']__program__[' -R in.m4f])sysval
@error{}m4:in.m4f:4: ill-formed frozen file, invalid builtin `len\0' encountered
@error{}m4:in.m4f:4: ill-formed frozen file, invalid builtin 'len\0' encountered
@result{}1
syscmd([rm -f in.m4f])sysval
@result{}0
@ -8638,7 +8636,7 @@ forloop(`', `1', `2', ` odd iterator name')
forloop(`i', `5 + 5', `0xc', ` 0x`'eval(i, `16')')
@result{} 0xa 0xb 0xc
forloop(`i', `a', `b', `non-numeric bounds')
@error{}m4:stdin:6: warning: eval: bad input: `(a) <= (b)'
@error{}m4:stdin:6: warning: eval: bad input: '(a) <= (b)'
@result{}
@end example
@ -9614,7 +9612,7 @@ macro is introduced the first time.
@bye
@c Local Variables:
@c coding: iso-8859-1
@c coding: utf-8
@c fill-column: 72
@c ispell-local-dictionary: "american"
@c indent-tabs-mode: nil

Binary file not shown.

2
gnulib

@ -1 +1 @@
Subproject commit 3e38c274dbac15d2288577a4b9da6e2f4a83ab5b
Subproject commit 3773db653242ab7165cd300295c27405e4f9cc79

View File

@ -1,21 +1,110 @@
# Copyright (C) 2002-2010 Free Software Foundation, Inc.
# Copyright (C) 2002-2025 Free Software Foundation, Inc.
#
# This file is free software, distributed under the terms of the GNU
# General Public License. As a special exception to the GNU General
# Public License, this file may be distributed as part of a program
# that contains a configuration script generated by Autoconf, under
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License,
# this file may be distributed as part of a program that
# contains a configuration script generated by Autoconf, under
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
#
# This file represents the specification of how gnulib-tool is used.
# It acts as a cache: It is written and read by gnulib-tool.
# In projects using CVS, this file is meant to be stored in CVS,
# like the configure.ac and various Makefile.am files.
# In projects that use version control, this file is meant to be put under
# version control, like the configure.ac and various Makefile.am files.
# Specification in the form of a command-line invocation:
# gnulib-tool --import --dir=. --local-dir=local --lib=libm4 --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --with-tests --with-c++-tests --makefile-name=gnulib.mk --no-libtool --macro-prefix=M4 announce-gen assert autobuild avltree-oset binary-io bitrotate clean-temp cloexec close-stream closein config-h dirname error execute fdl-1.3 fflush filenamecat flexmember fopen fopen-safer freadptr freadseek fseeko gendocs getopt-gnu git-version-gen gnu-web-doc-update gnumakefile gnupload gpl-3.0 hash ignore-value intprops maintainer-makefile manywarnings memchr2 memcmp2 memmem mkstemp obstack obstack-printf-posix pipe progname quote regex rename snprintf-posix stdbool stdint stdlib-safer strtod strtol unlocked-io update-copyright vasnprintf-posix verror version-etc version-etc-fsf wait-process xalloc xmemdup0 xoset xprintf xvasprintf-posix
# gnulib-tool --import \
# --local-dir=local \
# --lib=libm4 \
# --source-base=lib \
# --m4-base=m4 \
# --doc-base=doc \
# --tests-base=tests \
# --aux-dir=build-aux \
# --with-tests \
# --with-c++-tests \
# --makefile-name=gnulib.mk \
# --no-conditional-dependencies \
# --no-libtool \
# --macro-prefix=M4 \
# announce-gen \
# assert \
# autobuild \
# avltree-oset \
# binary-io \
# bitrotate \
# clean-temp \
# cloexec \
# close-stream \
# closein \
# config-h \
# dirname \
# error \
# execute \
# fdl-1.3 \
# fflush \
# filenamecat \
# flexmember \
# fopen \
# fopen-safer \
# freadptr \
# freadseek \
# fseeko \
# gendocs \
# getopt-gnu \
# git-version-gen \
# gnu-web-doc-update \
# gnumakefile \
# gnupload \
# gpl-3.0 \
# hash \
# ignore-value \
# intprops \
# maintainer-makefile \
# manywarnings \
# memchr2 \
# memcmp2 \
# memmem \
# mkstemp \
# obstack \
# obstack-printf-posix \
# progname \
# quote \
# regex \
# rename \
# snprintf-posix \
# spawn-pipe \
# stdbool \
# stdint \
# stdlib-safer \
# strtod \
# strtol \
# unlocked-io \
# update-copyright \
# vasnprintf-posix \
# verror \
# version-etc \
# version-etc-fsf \
# wait-process \
# xalloc \
# xmemdup0 \
# xoset \
# xprintf \
# xvasprintf-posix
# Specification in the form of a few gnulib-tool.m4 macro invocations:
gl_LOCAL_DIR([local])
@ -61,12 +150,12 @@ gl_MODULES([
mkstemp
obstack
obstack-printf-posix
pipe
progname
quote
regex
rename
snprintf-posix
spawn-pipe
stdbool
stdint
stdlib-safer
@ -97,3 +186,4 @@ gl_LIB([libm4])
gl_MAKEFILE_NAME([gnulib.mk])
gl_MACRO_PREFIX([M4])
gl_PO_DOMAIN([])
gl_WITNESS_C_MACRO([])

View File

@ -27,8 +27,8 @@
#include "execute.h"
#include "memchr2.h"
#include "memcmp2.h"
#include "pipe.h"
#include "regex.h"
#include "spawn-pipe.h"
#include "wait-process.h"
/* Initialization of builtin and predefined macros. The table
@ -1082,7 +1082,7 @@ m4_syscmd (struct obstack *obs M4_GNUC_UNUSED, int argc, macro_arguments *argv)
prog_args[2] = cmd;
caller = quotearg_style_mem (locale_quoting_style, me->name, me->name_len);
errno = 0;
status = execute (caller, SYSCMD_SHELL, (char **) prog_args, false,
status = execute (caller, SYSCMD_SHELL, prog_args, NULL, NULL, false,
false, false, false, true, false, &sig_status);
if (sig_status)
{
@ -1133,7 +1133,7 @@ m4_esyscmd (struct obstack *obs, int argc, macro_arguments *argv)
prog_args[2] = cmd;
caller = quotearg_style_mem (locale_quoting_style, me->name, me->name_len);
errno = 0;
child = create_pipe_in (caller, SYSCMD_SHELL, (char **) prog_args,
child = create_pipe_in (caller, SYSCMD_SHELL, prog_args, NULL, NULL,
NULL, false, true, false, &fd);
if (child == -1)
{
@ -1536,7 +1536,7 @@ mkstemp_helper (struct obstack *obs, const call_info *me, const char *pattern,
{
close (fd);
/* Remove NUL, then finish quote. */
obstack_blank (obs, -1);
obstack_blank_fast (obs, -1);
obstack_grow (obs, curr_quote.str2, curr_quote.len2);
}
}

View File

@ -300,7 +300,7 @@ trace_flush (unsigned int start)
xfwrite (&base[start], 1, len - start, debug);
fputc ('\n', debug);
}
obstack_blank (&trace, start - len);
obstack_blank_fast (&trace, start - len);
}
/* Do pre-argument-collection tracing for the macro call described in

View File

@ -1845,7 +1845,7 @@ next_token (token_data *td, int *line, struct obstack *obs, bool allow_argv,
obstack_object_size (&token_stack), 0, &regs)
!= (regoff_t) obstack_object_size (&token_stack))
{
obstack_blank (&token_stack, -1);
obstack_blank_fast (&token_stack, -1);
break;
}
next_char (false, false);

View File

@ -52,7 +52,6 @@
#include "stdlib--.h"
#include "unistd--.h"
#include "vasnprintf.h"
#include "verror.h"
#include "xalloc.h"
#include "xmemdup0.h"
#include "xprintf.h"

View File

@ -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);
@ -266,7 +266,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)
m4_error (EXIT_FAILURE, errno, NULL,
_("cannot create temporary file for diversion"));

View File

@ -257,7 +257,7 @@ lookup_symbol (const char *name, size_t len, symbol_lookup mode)
if (old == entry)
{
old = (symbol *) hash_delete (symtab, entry);
old = (symbol *) hash_remove (symtab, entry);
assert (entry == old);
sym->stack = sym;
entry = (symbol *) hash_insert (symtab, sym);
@ -347,7 +347,7 @@ lookup_symbol (const char *name, size_t len, symbol_lookup mode)
old->stack = NULL;
free_symbol (old);
}
sym = (symbol *) hash_delete (symtab, entry);
sym = (symbol *) hash_remove (symtab, entry);
assert (sym == entry);
sym->stack = NULL;
free_symbol (sym);