diff --git a/.gitignore b/.gitignore index 2a97a86c..0a01a749 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/build-aux/missing b/build-aux/missing deleted file mode 120000 index 9b777ed3..00000000 --- a/build-aux/missing +++ /dev/null @@ -1 +0,0 @@ -../gnulib/build-aux/missing \ No newline at end of file diff --git a/checks/Makefile.in b/checks/Makefile.in index 965099d4..b968d193 100644 --- a/checks/Makefile.in +++ b/checks/Makefile.in @@ -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: diff --git a/configure.ac b/configure.ac index a7dcd25b..6c559832 100644 --- a/configure.ac +++ b/configure.ac @@ -17,13 +17,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -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], diff --git a/doc/Makefile.am b/doc/Makefile.am index 7eaa5a9c..8edd0f38 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -20,7 +20,7 @@ ## ## This file written by Eric Blake -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 diff --git a/doc/m4.texinfo b/doc/m4.texi similarity index 99% rename from doc/m4.texinfo rename to doc/m4.texi index 91b8e007..e4c676cc 100644 --- a/doc/m4.texinfo +++ b/doc/m4.texi @@ -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 diff --git a/examples/null.err b/examples/null.err index dbe52bc8..675b2a3b 100644 Binary files a/examples/null.err and b/examples/null.err differ diff --git a/gnulib b/gnulib index 3e38c274..3773db65 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 3e38c274dbac15d2288577a4b9da6e2f4a83ab5b +Subproject commit 3773db653242ab7165cd300295c27405e4f9cc79 diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index 86c0dc98..3808e9ed 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -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 . +# +# 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([]) diff --git a/src/builtin.c b/src/builtin.c index bc0cde21..034016ce 100644 --- a/src/builtin.c +++ b/src/builtin.c @@ -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); } } diff --git a/src/debug.c b/src/debug.c index 75e55584..2aa42c7b 100644 --- a/src/debug.c +++ b/src/debug.c @@ -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 diff --git a/src/input.c b/src/input.c index 04f09910..02ca6950 100644 --- a/src/input.c +++ b/src/input.c @@ -1845,7 +1845,7 @@ next_token (token_data *td, int *line, struct obstack *obs, bool allow_argv, obstack_object_size (&token_stack), 0, ®s) != (regoff_t) obstack_object_size (&token_stack)) { - obstack_blank (&token_stack, -1); + obstack_blank_fast (&token_stack, -1); break; } next_char (false, false); diff --git a/src/m4.h b/src/m4.h index d333c244..c771eaa0 100644 --- a/src/m4.h +++ b/src/m4.h @@ -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" diff --git a/src/output.c b/src/output.c index c7bc38ca..d3b69ca5 100644 --- a/src/output.c +++ b/src/output.c @@ -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")); diff --git a/src/symtab.c b/src/symtab.c index f7807077..ea4640e8 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -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);