1
2006-11-20 Eric Blake <ebb9@byu.net>
5
* configure.ac (AC_INIT): Bump version number.
6
* NEWS: Describe changes since 1.4.7.
8
2006-11-16 Eric Blake <ebb9@byu.net>
10
* doc/m4.texinfo (Include, Search Path, Diversions, Divert):
11
Minor tweaks noticed while porting to head.
13
2006-11-14 Eric Blake <ebb9@byu.net>
15
* src/output.c (cleanup_tmpfile, freeze_diversions): Clean up
17
(m4_tmpname): Avoid memory leak.
19
2006-11-13 Eric Blake <ebb9@byu.net>
21
* src/output.c (cleanup_tmpfile): Avoid double error message when
23
(m4_tmpname, m4_tmpopen, m4_tmpclose, m4_tmpremove): New
25
(m4_tmpfile): Add parameter, move cloexec action here.
26
(make_room_for): Adjust caller. Don't keep too many files open.
27
(insert_diversion_helper): Unlink emptied temp files.
28
(make_diversion): Don't keep too many files open.
29
* doc/m4.texinfo (Diversions): Tweak wording, now that open file
30
descriptors are no longer a limiting factor.
31
* NEWS: Document this change.
33
Backport sparse diversion handling from head.
34
* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
36
* src/output.c (struct m4_diversion): Rename from struct
37
diversion, and update members. All users changed.
38
(diversion_table): Change to an ordered set, instead of an array.
39
(div0): New storage for diversion 0.
40
(diversions): No longer needed.
41
(free_list): New list to allow recycling diversion storage.
42
(diversion_storage): New storage to reduce malloc overhead.
43
(cmp_diversion_CB, threshold_diversion_CB): New callbacks.
44
(output_init, output_exit, cleanup_tmpfile, make_room_for)
45
(make_diversion): Handle new diversion storage scheme.
46
(insert_diversion_helper): New function.
47
(insert_diversion, undivert_all, freeze_diversions): Use it.
48
* doc/m4.texinfo (Divert, Diversions): Move hidden test of memory
49
exhaustion to visible test of large diversion numbers.
50
* NEWS: Document this fix.
52
2006-11-11 Eric Blake <ebb9@byu.net>
54
* src/builtin.c (m4_translit): Slight optimization.
56
* src/m4.h (to_uchar): Depend on HAVE_INLINE.
58
* src/builtin.c: Remove unnecessary casts.
59
(expand_ranges): Make 8-bit clean.
60
* doc/m4.texinfo (Translit): Add tests and wording.
61
* NEWS: Document this fix.
63
2006-11-07 Eric Blake <ebb9@byu.net>
65
* src/m4.h (output_exit): New prototype.
66
* src/m4.c (main): Use it.
67
* src/output.c (cleanup_tmpfile): Close files before removing
69
(insert_diversion): Check for failure.
70
(output_exit): Avoid memory leak.
71
* doc/m4.texinfo (Diversions): Test this bug.
73
* doc/m4.texinfo (Esyscmd, Errprint): Minor touchups.
75
2006-11-01 Eric Blake <ebb9@byu.net>
77
Allow C++ compilation on Linux, as a safety measure in type
79
* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
81
* src/m4.h (hack_symbol, hack_all_symbols): Use full prototype.
82
(boolean): Kill this, and use stdbool.h instead.
83
* src/debug.c, src/eval.c, src/input.c, src/macro.c, src/m4.c:
84
* src/output.c, src/symtab.c: All users changed.
85
* src/symtab.c (hack_all_symbols): Update prototype.
86
* src/builtin.c (dump_symbol, set_trace): Update signature.
87
(m4_dumpdef, m4_traceon, m4_traceoff): Update callers.
88
(mkstemp_helper, m4_m4wrap, expand_ranges, m4_translit): Allow
90
* src/debug.c (trace_flush): Likewise.
91
* src/freeze.c (reload_frozen_state): Likewise.
92
* src/input.c (push_file, push_string_finish, push_wrapup):
93
(token_bottom, next_token): Likewise.
94
* src/m4.c (main): Likewise.
96
* doc/m4.texinfo (Invoking m4): Update according to POSIX 200x
98
* src/m4.h (m4_path_search): Tweak signature.
99
* src/path.c (m4_path_search): Likewise.
100
* src/builtin.c (include): Update caller.
101
* src/m4.c (main): Allow -D, -U, -t, and -s to be interspersed
102
with file names. Don't write to **argv.
103
(process_file): New helper method.
104
* NEWS: Document this fix.
106
2006-10-31 Eric Blake <ebb9@byu.net>
108
* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import strstr'.
109
* doc/m4.texinfo (Translit): Improve the documentation.
110
* src/builtin.c (m4_translit): Optimize to O(n) instead of O(n^2)
112
(m4_index): Simplify, and speed up slightly.
113
* NEWS: Document this fix.
115
2006-10-28 Eric Blake <ebb9@byu.net>
117
* src/input.c (set_quotes): Don't allow empty end-quote with
118
non-empty start-quote.
119
(set_comment): Likewise for end-comment.
120
* src/builtin.c (m4_changecom): Adjust caller.
121
* doc/m4.texinfo (Changequote, Changecom): Update documentation to
123
(Incompatibilities): Document another POSIX bug.
124
* NEWS: Mention this change.
126
2006-10-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
128
* examples/Makefile.am (EXTRA_DIST): Distribute recently-added
131
2006-10-26 Eric Blake <ebb9@byu.net>
133
Silence -Wwrite-strings -Wpointer-arith warnings.
134
* src/builtin.c (define_user_macro): Allow NULL argument.
135
(m4_builtin, m4_indir): Cast away const of "".
136
* src/format.c (format): Likewise.
137
* src/macro.c (collect_arguments): Likewise.
138
(expand_macro): Avoid math on void*.
139
* src/m4.c (main): Adjust caller.
140
* src/output.c (freeze_diversions): Detect off_t overflow.
142
* src/input.c (pop_input): Remove unnecessary code.
144
2006-10-25 Eric Blake <ebb9@byu.net>
146
* src/symtab.c (symtab_init): Avoid size_t overflow.
147
* src/output.c (make_diversion): Avoid size_t overflow.
148
* doc/m4.texinfo (Diversions): Test this fix.
149
* src/input.c (input_block): Remove unused member. Reduce size
151
(push_file, pop_input): Avoid useless assignment.
152
* NEWS: Document the bug fix.
154
Redo location tracking. Instead of having just files track the
155
line to return to when popping input, now all input blocks track
157
* src/input.c (INPUT_STRING_WRAP, INPUT_FILE_INIT): No longer
159
(input_block): Have line and file storage for all input types, and
161
(input_change): New global flag.
162
(push_file, push_macro, push_string_init, push_wrapup): Store
164
(push_string_finish, pop_input, pop_wrapup): Notice changes in
166
(peek_input): Adjust to new member names.
167
(next_char, next_char1): Adjust location if needed.
168
(skip_line): Simplify restoring location.
169
* doc/m4.texinfo (Location): Augment the test to catch line
170
location of expansion of multi-line arguments.
171
Reported by Stepan Kasal.
173
2006-10-23 Eric Blake <ebb9@byu.net>
175
* doc/m4.texinfo (Macro Arguments): Document that leading space
176
in argument collection stops at macro expansion.
177
(Incompatibilities): Document POSIX whitespace wording issue.
179
2006-10-20 Eric Blake <ebb9@byu.net>
181
* doc/m4.texinfo: Trailing '@comment' doesn't format nicely in
182
TeX, so recognize '@w{ }' instead. Likewise, @code{_name} at the
183
end of a TeX line splits incorrectly.
184
(Foreach, Improved foreach): Write these sections, borrowing ideas
185
from CVS head and from m4sugar.
186
* checks/get-them: Accomodate new way to show trailing space in
188
* examples/foreach.m4: Make usable in documentation.
189
* examples/foreachq.m4: New file.
190
* examples/foreachq2.m4: New file.
191
* examples/foreach2.m4: New file.
192
* NEWS: Document the documentation updates.
194
2006-10-19 Eric Blake <ebb9@byu.net>
196
* src/builtin.c (mkstemp_helper, m4_mkstemp): New functions.
197
(m4_maketemp): Provide traditional behavior.
198
* doc/m4.texinfo (Mkstemp): Rename from Maketemp. Document the
199
new `mkstemp' macro and the flaws of the old `maketemp'.
200
(Incompatibilities): Move maketemp discussion to...
201
(Extensions): ...here, since -G now supresses the GNU extension.
202
* NEWS: Document this.
204
* examples/forloop.m4: Simplify.
205
* examples/forloop2.m4: New file.
206
* examples/quote.m4: New file.
207
* doc/m4.texinfo (Loops): Rename to...
208
(Shift): ...this node.
209
(Forloop, Foreach, Improved forloop, Improved foreach): New
212
2006-10-17 Eric Blake <ebb9@byu.net>
214
* m4/gnulib-cache.m4: Update with 'gnulib-tool --import
216
* configure.ac (AC_CONFIG_HEADERS): Create config.h alongside
217
gnulib headers, rather than in top directory.
218
* src/Makefile.am (AUTOMAKE_OPTIONS): Add nostdinc, to reduce make
221
2006-10-16 Eric Blake <ebb9@byu.net>
223
* doc/m4.texinfo: Backport some minor cleanups from head.
224
(Cleardivert): Rename from cleardiv.
226
* doc/m4.texinfo (Invoking m4): Promote to a chapter, instead of
227
a section of Preliminaries.
228
(Operation modes, Preprocessor features, Limits control)
229
(Frozen state, Debugging options, Command line files): Subdivide
231
(Input processing, Quoting Arguments, Define, Arguments)
232
(Cleardiv, Format, M4exit): Fix grammar of references.
233
(Inhibiting Invocation, Macro Arguments, Builtin, Trace)
234
(Debug Levels, Debug Output, Include, Search Path, Divert)
235
(Platform macros, Syscmd, Location, Extensions): Point to new
237
(Top, Loops, Include, Undivert, Location, Incompatibilities):
238
Improve file references.
240
2006-10-14 Eric Blake <ebb9@byu.net>
242
* m4/input.c (file_clean): Don't close stdin twice, POSIX says it
244
Reported by Ralf Wildenhues.
246
* src/builtin.c (m4_undivert): Check for read error.
248
2006-10-13 Eric Blake <ebb9@byu.net>
250
* src/m4.h (UNIX, W32_NATIVE, OS2): Move platform checks after
251
header files are included, since <unistd.h> can affect the tests.
253
Reported by Martin Koeppe.
255
Backport head's usage of clean-temp module, as it is cleaner than
257
* m4/gnulib-cache.m4: Augment with 'gnulib-tool --import
258
clean-temp closeout', and remove tmpfile-safer.
259
* src/m4.h (includes): Adjust.
260
(m4_path_search): Rename from path_search, to avoid collision
262
* src/m4.c (main): Install closeout handler. Adjust caller.
263
(usage): Now done by closeout module.
264
* src/builtin.c (m4_m4exit): Likewise.
265
(m4_undivert, include): Adjust callers.
266
* src/freeze.c (reload_frozen_state): Likewise.
267
* src/path.c (m4_path_search): Rename from path_search.
268
* src/output.c (output_temp_dir): New variable.
269
(cleanup_tmpfile, m4_tmpfile): New functions, from head.
270
(insert_diversion, make_room_for): Use them.
271
* doc/m4.texinfo (Diversions): Document this, and add a test.
272
(Improved fatal_error): Fix typo.
273
(Maketemp): Port test to mingw, and no longer hide from
275
* NEWS: Document the change in TMPDIR behavior.
277
* configure.ac (m4_pattern_forbid): Narrow the range of forbidden
278
macros, to work with recent gnulib-tool update.
280
* src/builtin.c (m4_builtin, m4_indir): Allow transparent
281
handling of defn results.
282
* doc/m4.texinfo (Builtin, Indir): Add test cases.
283
* NEWS: Document this.
285
2006-10-12 Eric Blake <ebb9@byu.net>
287
* doc/m4.texinfo (Location): Fix typo in previous commit.
288
(Changeword): Catch one more case.
289
* src/input.c (skip_line): Fix case when outer file used macro to
292
2006-10-11 Eric Blake <ebb9@byu.net>
294
* src/input.c (enum input_type): Add additional types, to shave
295
time off the common case.
296
(push_wrapup): Wrapped strings remember location.
297
(push_string_finish): Normal strings carry no location.
298
(push_file): Start new files uninitialized.
299
(peek_input, next_char_1): Optimize common cases by updating
300
location only on new input types.
301
(pop_input): Update to honor new input types.
302
(skip_line, push_string_finish): Fix regression in previous patch
303
when dnl is not followed by newline in included file.
304
(push_string_init): Initialize all fields of INPUT_STRING sooner.
305
(peek_token): Simplify.
306
(peek_input): Don't pop input files on peek, so that __file__ and
307
__line__ as last token of include file work correctly.
308
* doc/m4.texinfo (History): Mention 1.4.8.
309
(Answers): Split into sections, one per answer.
310
(Improved exch, Improved cleardivert, Improved fatal_error): New
312
(Dnl, M4wrap, Location, M4exit, Improved fatal_error): Update to
313
new m4wrap location semantics.
314
(Changeword): Add test that caught the regression.
315
* NEWS: Document this.
317
* src/macro.c (expand_macro): In macro expansion errors, report
318
line number at open parenthesis.
319
* src/input.c (next_token): Fix off-by-one bug in reporting end
320
of file in unterminated comment and string.
321
(file_names): New obstack, necessary since expand_macro now hangs
322
on to file names longer than the files remain open.
323
(input_init): Initialize new obstack.
324
(push_file): Use new obstack. Delay updates to current_file
325
until after expand_macro has restored state.
326
(peek_input, next_char_1): Update current_file if necessary.
327
(pop_wrapup): Release memory.
328
* doc/m4.texinfo (Macro Arguments, Changequote, Changecom): Catch
330
(Dnl): Update to the new location reporting rules.
331
* NEWS: Document these changes.
333
2006-10-10 Eric Blake <ebb9@byu.net>
335
* src/macro.c (argc_stack, argv_stack): New variables for sharing
336
obstacks across multiple macro calls.
337
(expand_input): Initialize and tear down stack once per input
338
file, instead of once per macro.
339
(expand_macro): Reuse existing stacks when possible.
340
(collect_arguments): Simplify slightly.
342
* src/path.c (include_env_init): Fix botched patch application.
343
Reported by Ralf Wildenhues.
345
2006-10-09 Eric Blake <ebb9@byu.net>
347
* src/m4.c (usage, main): Detect write failures to stderr.
348
* src/builtin.c (m4_m4exit): Likewise.
349
* NEWS: Document this.
351
* src/macro.c (expand_macro): Allow --nesting-limit=0 to remove
353
* NEWS: Document this.
354
* doc/m4.texinfo (Invoking m4): Likewise.
356
2006-10-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
358
* src/path.c (include_env_init): Copy the string returned
359
by getenv before overwriting it; POSIX disallows this.
361
2006-10-09 Eric Blake <ebb9@byu.net>
363
* src/m4.c (main): Defer debugfile until after --help.
364
* configure.ac (AC_INIT): Bump version number.
365
* NEWS: Start changes of 1.4.7a.
1
367
2006-09-25 Eric Blake <ebb9@byu.net>