2020-04-10 Arnold D. Robbins * field.c (save_FPAT): New global variable. (get_field): Check if using FPAT or not in order to pass in the right variables to parse_field function. Fixes bug in delayed field parsing when using FPAT. Thanks to luciole75w for the bug report. (set_FPAT): Use global save_FPAT instead of local save_fpat. Unrelated: * awkgram.c, command.c: Rebuild with Bison 3.5.4. * NEWS: Updated. Unrelated: * awk.h (do_lint_extensions): Define to zero if NO_LINT. 2020-04-02 Arnold D. Robbins * field.c (re_parse_field): If default parsing and trailing whitespace, don't set a null field at the end. Thanks to Ed Morton for the report. 2020-03-18 Arnold D. Robbins * TODO: Add more stuff. 2020-03-15 Arnold D. Robbins * Makefile.am (zos-diffout): New target. * awkgram.y, command.y: Upgrade to Bison 3.5.3. * NEWS: Updated. 2020-03-11 Arnold D. Robbins * main.c: Further message update. Thanks again to Roland Illig . 2020-03-09 Andrew J. Schorr * array.c (sort_up_value_string): If either arg is not a Node_val, call out to sort_up_value_type instead. If cmp_strings returns zero, fall back to sort_up_index_string as a tie-breaker. (sort_up_value_number): If either arg is not a Node_val, call out to sort_up_value_type instead. If cmp_strings returns zero, fall back to sort_up_index_string as a tie-breaker. (do_sort_up_value_type): Renamed from sort_up_value_type with one change: if both arguments have type Node_var, we compare the var_value NODEs instead. (sort_up_value_type): New wrapper function around do_sort_up_value_type to fall back to sort_up_index_string as a tie-breaker. 2020-03-09 Arnold D. Robbins * array.c, awk.h, awkgram.y, builtin.c, command.y, debug.c, ext.c, int_array.c, io.c, main.c, symbol.c: Messages refined based on suggestions from Roland Illig . 2020-03-06 Jannick * Makefile.am: Replace AM_MAKEFLAGS with AM_CFLAGS and AM_LDFLAGS. Put pc/Makefile.tst into BUILT_SOURCES, instead of in dist-hook. Add $(srcdir) to rules for the yacc files. Use AM_LDFLAGS in the efence rule. * configure.ac: Use GAWK_CANONICAL_HOST instead of AC_CANONICAL_HOST; this supplies MSYS2 support. Remove use of EXEEXT. 2020-03-04 Arnold D. Robbins * NEWS: Updated. 2020-02-13 John E. Malmberg * custom.h: OpenVMS needs _REGEX_INCLUDE_LIMITS_H defined. 2020-02-09 Arnold D. Robbins * awkgram.y: Add lint check for assignment in condition to if and for statements. Thanks to Jannick for the suggestion. * debug.c (do_eval): Remove @eval from the symbol table if there was a syntax error in the statement being evaluated. Thanks again to Jannick, for the report. 2020-02-04 John E. Malmberg * custom.h: Fix OpenVMS SIZE_MAX value. 2020-02-01 Arnold D. Robbins * awk.h, dfa.c: Move include of mbsupport.h to ... * custom.h: ... here. * configure.ac: Add check for isblank. 2020-01-27 Arnold D. Robbins * custom.h: Fix non-VMS compilation. 2020-01-26 John E. Malmberg * custom.h: Additional OpenVMS typedefs needed. * getext.h: Fix macro for implementations without gettext to not force the result to be a const char *. 2020-01-26 Andrew J. Schorr * array.c (sort_up_value_type): Small efficiency tweak. Only run through the list of other types if both values are not scalars. 2020-01-24 Arnold D. Robbins * array.c, profile.c, cint_array.c, builtin.c, interpret.h, main.c: Update copyright years. 2020-01-23 Arnold D. Robbins * array.c (sort_up_value_type): Handle other types of nodes, in case someone applies PROCINFO["sorted_in"] to SYMTAB or FUNCTAB. This threw an assertion error if assertions were enabled. Thanks to John Namam for the report. (asort_actual): Disallow SYMTAB and FUNCTAB as first arguments. * TODO: Note that we should should eventually allow SYMTAB/FUNCTAB passed to asort/asaorti if a destination array is provided. (The current code breaks right now.) 2020-01-19 Arnold D. Robbins * profile.c (pp_top): New macro. (pprint): Be smarter for print[f] with redirection that was parenthesized, to not print `printf(("hello\n")) > "..."'. Unrelated: * compile, config.guess, config.rpath, config.sub, depcomp: Updated from GNULIB. 2020-01-14 Andrew J. Schorr * cint_array.c (cint_array_init): Fix off-by-one error in array bounds overflow check for an NHAT value set in the environment. Thanks to Michael Builov for the report. 2020-01-08 Arnold D. Robbins Fix a number of subtle memory leaks. Thanks to the combination of MEMDEBUG and valgrind for finding them. * builtin.c (do_print): Unref tmp if force_string_ofmt returned something different. (call_sub, call_match, call_split_func): Free any created regexp. * debug.c (do_eval): Free the node holding the @eval function when done with it. * field.c (init_fields): Create fields_arr[0] and Nnull_field in a rational fashion. * interpret.h (Op_assign_concat): Handle newly created node better. Unrelated: * interpret.h (Op_subscript): When retrieving from SYMTAB, check for Node_var_new; variables can exist but have not been assigned a value. Thanks to Denis Shirokov for the report. Unrelated: * builtin.c (do_typeof): Handle Node_array_ref also. Thanks to Denis Shirokov for the report. 2019-12-22 Arnold D. Robbins * config.guess: Updated from GNULIB. 2019-12-22 Jannick * configure.ac: Hardcode the shared object extension to dll on Windows platforms, i.e.whenever EXEEXT is '.exe'. 2019-12-22 Arnold D. Robbins * gettext.h: Update from gettext 0.20.1. * NEWS: Updated. 2019-12-18 Paul Eggert Fix memcpy issue found by -fsanitize=undefined * field.c (set_record): Don't memcpy (databuf, NULL, 0), as the C standard says the resulting behavior is undefined. 2019-12-16 Arnold D. Robbins * awkgram.y, command.y: Upgrade to Bison 3.5. * NEWS: Updated. 2019-11-21 Arnold D. Robbins * config.rpath: Update from GNULIB. 2019-11-10 Arnold D. Robbins * compile, config.rpath: Update from GNULIB. Adds msys support. 2019-11-03 Arnold D. Robbins * field.c (get_field): Remove special case code for fpat_parse_field. Fixes a bug reported by Ed Morton . 2019-10-19 Arnold D. Robbins * compile, depcomp: Update from GNULIB. 2019-10-13 Arnold D. Robbins Fix handling of assigning @/.../ to FS and RS. Thanks to Stephane Chazelas for the report. * field.c (set_FS): Check for REGEX in the flags. * io.c (set_RS): Ditto. 2019-10-04 Arnold D. Robbins * config.guess, config.sub, install-sh: Updated from GNULIB. 2019-09-30 John E. Malmberg * custom.h: OpenVMS does not provide ULLONG_MAX 2019-09-20 Florian Weimer * configure.ac (PRINTF_HAS_F_FORMAT): Include for strcmp. (PRINTF_HAS_A_FORMAT): Likewise. * configure: Regenerate. 2019-09-17 Arnold D. Robbins * awkgram.y, commands.y: Upgrade to Bison 3.4.2. * NEWS: Updated. 2019-09-10 Andrew J. Schorr * awk.h (block_header): Remove cnt field and replace it with highwater. If MEMDEBUG is defined, add active counter. * node.c (r_getblock): The cnt field was replaced by active. Update highwater as appropriate. (r_freeblock): Decrement the active counter (renamed from cnt). (more_blocks): Bump the highwater counter (renamed from cnt). * builtin.c (do_typeof): When providing PROCINFO debug memory stats, replace count_ with _active and _highwater. When MEMDEBUG is not set, we calculate the active value by subtracting the number of elements in the free list from the highwater value. 2019-09-01 Arnold D. Robbins * profile.c (pp_list, pp_concat): Fix use-after-free errors in both routines. Thanks to valgrind and Andy's MEMDEBUG code. 2019-09-01 Andrew J. Schorr * awk.h (block_header): Add cnt field even when MEMDEBUG is not defined, and add a name field. * node.c (nextfree): Initialize new name field. (more_blocks): Bump nextfree[id].cnt by BLOCKCHUNK. * builtin.c (do_typeof): When the 1st argument is PROCINFO and the 2nd arg is provided, return new "count_" fields containing the memory allocation accounts of the various block types. 2019-08-30 Andrew J. Schorr * configure.ac (.developing): Add -DMEMDEBUG to CFLAGS. * awk.h (block_header): If MEMDEBUG is defined, add cnt field to track the number of allocations. (getblock, freeblock): When MEMDEBUG is defined, replace these macros with calls to new functions r_getblock and r_freeblock. * node.c (r_getblock, r_freeblock): New functions that simply use malloc and free when MEMDEBUG is defined. 2019-08-30 Andrew J. Schorr * interpret.h (r_interpret): For Op_match_rec, unref if a dynamic regexp. Fixes another memory issue. See the thread starting at https://lists.gnu.org/archive/html/bug-gawk/2019-08/msg00023.html. 2019-08-29 Arnold D. Robbins Restore a modified version of the change of 2016-05-03, which used realloc to shrink the buffer. * builtin.c (format_tree): Reduce INITIAL_OUT_SIZE to 64. At the end, call realloc only if there is more than (2 * INITIAL_OUT_SIZE) bytes to give back. 2019-08-23 Arnold D. Robbins * main.c (main): Fix whitespace issues. * re.c (re_update): Small code cleanup in handling t->re_cnt. Thanks to Andrew Schorr. 2019-08-21 Arnold D. Robbins * config.guess: Updated from GNULIB. 2019-08-15 Arnold D. Robbins Revert a6df7afc605079df7d85318846a522ef64aaa44d, change of 2016-05-03, which used realloc to shrink the buffer, in an attempt to save memory. In actuality, it could cause increased memory usage, even though there was no memory leak. See https://lists.gnu.org/archive/html/bug-gawk/2019-08/msg00003.html and the rest of thread for more detail. * builtin.c (format_tree): Don't use realloc, just call make_str_node with the original buffer. Remove `olen_final' variable and its use. 2019-08-15 Andrew J. Schorr Reduce memory usage by only compiling the IGNORECASE version of regexp when it's actually needed. * awkgram.y (make_regnode): Only compile the regular version. * re.c (re_cache_get): New function. (re_update): Use it as appropriate. 2019-07-23 Koichi Murase * builtin.c (do_xor): Remove unneeded local variable `i'. Simplify the loop's computation. (do_and): Improve the initial value for the result. 2019-07-23 Andrew J. Schorr Fix reporting of negative arguments for and(), or() and xor(). Thanks to Koichi Murase for the report. * builtin.c (do_and): Use nargs instead of i in the loop to check for non-numeric and negative arguments. (do_or): Ditto. (do_xor): Ditto. 2019-07-23 Arnold D. Robbins * Checklist: Updated. 2019-07-21 Arnold D. Robbins * command.y, custom.h, eval.c, ext.c, field.c, io.c, msg.c, node.c, nonposix.h, re.c: Update copyright year. * NEWS: Updated. * README: Updated. 2019-07-16 Arnold D. Robbins * TODO: Updated. * awkgram.y [GRAMMAR]: Change some lint warnings to use lintwarn. (yylex): Ditto. * field.c (choose_fs_function): Ditto. * main.c (main): Ditto. * node.c (parse_escape): Ditto. 2019-07-09 Arnold D. Robbins * gawkapi.h: Update copyright year, fix some spelling errors. 2019-07-08 Andrew J. Schorr 2019-07-08 Andrew J. Schorr * gawkapi.h (gawk_api_major_version): Bump from 2 to 3 because the namespace changes altered the function signatures in gawk_api_t. And add a comment at the top of the structure with a reminder that the version number should be bumped whenever the struct is altered in any way. 2019-06-30 Arnold D. Robbins * interpret.h (r_interpret): Fix two more cases of warning about gawk extensions. * awkgram.y [GRAMMAR]: And two more cases here. Thanks to Mark Krauze for making me look for them. Unrelated: * config.sub: Updated from GNULIB. 2019-06-26 Arnold D. Robbins * symbol.c (install): Strip off any leading `awk::' before installing a symbol. Thanks to Andrew Schorr for the report. 2019-06-21 Arnold D. Robbins * config.guess, config.sub: Updated from GNULIB. * awkgram.y (get_src_buf): Set buffers to zero to avoid possible issues with accessing uninitialized memory. Thanks to valgrind, as pointed out by Nadezhda Vyukova . * NEWS, README.git: Fix some typos. 2019-06-19 Arnold D. Robbins * re.c (make_regexp): If do_posix, have {} in ok_to_escape. Thanks to Ed Morton for the report. 2019-06-18 Arnold D. Robbins * 5.0.1: Release tar ball made. 2019-06-06 Arnold D. Robbins * main.c (usage): Update comment for translators. 2019-06-02 Arnold D. Robbins * awkgram.c, command.c: Update to Bison 3.4. * NEWS: Updated. 2019-05-22 Arnold D. Robbins Add --lint=no-ext. Suggest by Mark Krauze . * NEWS: Updated. * awk.h (DO_LINT_EXTENSIONS): New enum. (do_lint_extensions): New macro. * awkgram.y (yylex, snode): Use do_lint_extensions instead of do_lint where appropriate. * builtin.c (do_length): Ditto. * eval.c (set_IGNORECASE, set_BINMODE): Ditto. (set_LINT): Revise logic. * field.c (do_split, set_FIELDWIDTHS, chose_fs_function, set_FPAT): Ditto. * io.c (set_RS): Ditto. * main.c (usage): Updated. (parse_args): Revise the code to handle --lint=no-ext. 2019-05-10 Arnold D. Robbins * NEWS: Updated. 2019-05-06 Arnold D. Robbins In sandbox mode, disallow assigning filenames that weren't there initially. Thanks to Nolan Woods for pointing out the gap. * awk.h (init_argv_array): Add declaration. * cint_array.c (argv_store): New vtable for ARGV. (argv_shadow_array): New file static variable (argv_store, init_argv_array): New functions. * main.c (init_args): If in sandbox mode, build shadow array of initial argv values. Call init_argv_array. 2019-05-05 Arnold D. Robbins * ext.c (load_ext): Fix the message in the version for when extensions are not available. 2019-04-24 Arnold D. Robbins * msg.c (msg): Use %ld for the line number value. Thanks to Michal Jaegermann for the report. 2019-04-23 Arnold D. Robbins * config.sub: Updated from GNULIB. 2019-02-21 Andrew J. Schorr * interpert.h (Op_store_field): Move call to force_string to here from unfield. Speeds up work with fields that are numeric only. Thanks to Tom Gray for the report. 2019-04-21 Arnold D. Robbins * POSIX.STD: Updated. * field.c (get_field): If NF == -1, check parse high water to set in_middle correctly. Thanks to for the report. 2019-04-18 Arnold D. Robbins * msg.c (msg): Add an undocumented feature. "Use the Source, Luke." * Makefile.am (EXTRA_DIST): Add ChangeLog.1 to the list. Ooops. * CheckList: Updated. Fix core dump reported by Steve Kemp : * awk.h (errcount): Declare. * awkgram.y (errcount): No longer static. * command.y (dbg_errcount): Renamed from errcount. * main.c (catchsig, catchsegv): If errcount > 0, just exit, don't abort. 2019-04-12 Arnold D. Robbins * configure.ac: Update version to 5.0.0. * configure: Regenerated. * ChangeLog.1: Rotated ChangeLog into this file. * ChangeLog: Created anew for gawk 5.0.0 and on. * README: Bump version to 5.0.0. * 5.0.0: Release tar ball made.