"Fossies" - the Fresh Open Source Software Archive

Member "gawk-5.1.0/ChangeLog.1" (6 Feb 2020, 336667 Bytes) of package /linux/misc/gawk-5.1.0.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "ChangeLog.1": 5.0.1_vs_5.1.0.

    1 2019-04-12         Arnold D. Robbins     <arnold@skeeve.com>
    2 
    3 	* README: Updated in preparation for a release.
    4 
    5 2019-04-07         Arnold D. Robbins     <arnold@skeeve.com>
    6 
    7 	* config.sub: Updated from GNULIB.
    8 
    9 2019-04-05         Arnold D. Robbins     <arnold@skeeve.com>
   10 
   11 	* eval.c (load_casetable): Always use the locale's settings.
   12 	(set_IGNORECASE): Don't call load_casetable.
   13 	* main.c (main): Call load_casetable if in a single-byte locale.
   14 
   15 2019-03-22         Arnold D. Robbins     <arnold@skeeve.com>
   16 
   17 	* config.guess: Updated from GNULIB.
   18 
   19 2019-03-17         Arnold D. Robbins     <arnold@skeeve.com>
   20 
   21 	* configure.ac: Fix test for ZOS_FAIL.
   22 
   23 2019-03-15         Arnold D. Robbins     <arnold@skeeve.com>
   24 
   25 	* Makefile.am (pc/Makefile.tst): Yet another fix for out-
   26 	of-tree builds. Thanks to `make distcheck'.
   27 	* configure.ac: Update version for next tar ball.
   28 
   29 2019-03-03         Arnold D. Robbins     <arnold@skeeve.com>
   30 
   31 	* main.c (usage): Fix help message.
   32 
   33 2019-03-01         Arnold D. Robbins     <arnold@skeeve.com>
   34 
   35 	* Makefile.am (pc/Makefile.tst): Make sure pc/ directory exists
   36 	first. Needed for `make distcheck'. Not sure what changed such
   37 	that this is only showing up now.
   38 	* configure.ac: Update version for next test tarball.
   39 
   40 2019-02-28         Arnold D. Robbins     <arnold@skeeve.com>
   41 
   42 	* README.cvs: Removed. Six years is long enough.
   43 
   44 2019-02-25         Arnold D. Robbins     <arnold@skeeve.com>
   45 
   46 	* config.guess: Updated from GNULIB.
   47 
   48 2019-02-25         Arnold D. Robbins     <arnold@skeeve.com>
   49 
   50 	* NEWS: Updated.
   51 
   52 2019-02-25         Arnold D. Robbins     <arnold@skeeve.com>
   53 
   54 	Small profiling improvements. Suggested by mukti
   55 	<ferida.cicatriz@gmail.com>.
   56 
   57 	* main.c (parse_args): Add warnings that --profile overrides
   58 	--pretty-print.
   59 	(main): Move setuid warning to after all the warnings for conflicting
   60 	arguments.
   61 	* profile.c (pprint): Don't print extra trailing space after return
   62 	and exit if no value associated with the statement.
   63 
   64 2019-02-25         Arnold D. Robbins     <arnold@skeeve.com>
   65 
   66 	* configure.ac: Set ZOS_FAIL if on ZOS to improve test suite on that
   67 	platform.
   68 	* awk.h (is_valid_identifier): Move declaration outside ifdef DYNAMIC.
   69 	* command.y: Fix test for EBCDIC to use USE_EBCDIC.
   70 	* custom.h: Remove definitions of __builtin_expect.
   71 	* eval.c (update_ERRNO_string): Add untested and disabled code for z/OS
   72 	to remove leading IBM error codes.  This might one day make more of the
   73 	tests pass on z/OS.
   74 
   75 2019-02-20         Arnold D. Robbins     <arnold@skeeve.com>
   76 
   77 	* awk.h (is_valid_identifier): Move declaration outside of
   78 	`#if DYNAMIC'.  Thanks to Daniel Richard G.
   79 	* custom.h (builtin_expect): Remove definitions, now
   80 	handled by support/cdefs.h.
   81 
   82 2019-02-17         Arnold D. Robbins     <arnold@skeeve.com>
   83 
   84 	Fix debugger eval command so that return from a called
   85 	user-defined function works. Thanks to Lothar Langer
   86 	<lotharla@gmail.com> for the report.
   87 
   88 	* awk.h (Op_K_return_from_eval): New opcode.
   89 	(parse_program): Add boolean second parameter, `from_eval'.
   90 	* awkgram.y (called_from_eval): New variable
   91 	(Grammar): Check it for return statements. If true, change the
   92 	opcode to Op_K_return_from_eval.
   93 	(parse_program): Set called_from_eval to value of from_eval parameter.
   94 	* debug.c (pre_execute_code): Change test for Op_K_return to test
   95 	for Op_K_return_from_eval.
   96 	(do_eval): Call parse_program with second parameter true.
   97 	* eval.c (optypetab): Add entry for Op_K_return_from_eval.
   98 	* interpret.h (r_interpret): Ditto: can't-happen error.
   99 	* main.c (main): Call parse_program with second parameter false.
  100 	* NEWS: Updated.
  101 
  102 2019-02-15         Arnold D. Robbins     <arnold@skeeve.com>
  103 
  104 	* awkgram.y: If profiling, correctly turn `print' into `print $0'.
  105 	Thanks to Hermann Peifer for the bug report.
  106 	* TODO: Updated.
  107 
  108 2019-02-11         Arnold D. Robbins     <arnold@skeeve.com>
  109 
  110 	* configure.ac: Update version for next test tarball.
  111 
  112 2019-02-07         Arnold D. Robbins     <arnold@skeeve.com>
  113 
  114 	* NEWS: Updated.
  115 	* config.guess, config.rpath, config.sub: Updated from GNULIB.
  116 
  117 2019-02-05         Arnold D. Robbins     <arnold@skeeve.com>
  118 
  119 	* Makefile.am (EXTRA_DIST): Add NEWS.1.
  120 
  121 2019-02-04         Arnold D. Robbins     <arnold@skeeve.com>
  122 
  123 	* NEWS.1: Rotated in from NEWS.
  124 	* NEWS: Shortened to start over again with 5.0 changes.
  125 	* ext.c (is_valid_identifier): Move outside of ifdefs so that
  126 	DJGPP (and other code) can find it.
  127 
  128 2019-02-03         Arnold D. Robbins     <arnold@skeeve.com>
  129 
  130 	* awkgram.y (snode): Disallow @/.../ as second param of index, also.
  131 	* TODO: Updated.
  132 
  133 2019-02-02         Arnold D. Robbins     <arnold@skeeve.com>
  134 
  135 	* awkgram.c, command.c: Regenerated with Bison 3.3.
  136 	* NEWS: Updated.
  137 
  138 2019-02-02  Eli Zaretskii  <eliz@gnu.org>
  139 
  140 	* debug.c (execvp) [__MINGW32__]: Redirect to w32_execvp.
  141 	(restart): No need for MinGW-specific code anymore.
  142 
  143 	* nonposix.h: If setlocale is already a defined macro, #undef it
  144 	before redefining.  This avoids compilation warnings if someone
  145 	tries to compile Gawk with Gettext's libintl.h, which redirects
  146 	setlocale to its own function.
  147 	Reported by Budi <budikusasi@gmail.com>.
  148 
  149 	* debug.c [__MINGW32__]: Prototype for w32_execvp.
  150 	(restart) [__MINGW32__]: Call w32_execvp instead of execvp.  Don't
  151 	type-cast d_argv anymore.
  152 
  153 2019-01-27         Arnold D. Robbins     <arnold@skeeve.com>
  154 
  155 	* awkgram.y (qualify_name): Return duplicated strings.
  156 	(yylex): Qualify names before returning either NAME or FUNC_CALL.
  157 	(Grammar): Replace qualified_name non-token with NAME, remove
  158 	`qualified_name' production.
  159 
  160 2019-01-27         Arnold D. Robbins     <arnold@skeeve.com>
  161 
  162 	* Makefile.am, NEWS, awkgram.y, cint_array.c, custom.h, debug.c,
  163 	eval.c, ext.c, gawkapi.c, int_array.c, interpret.h, nonposix.h,
  164 	profile.c, re.c, replace.c, str_array.c, symbol.c: Update
  165 	copyright year.
  166 
  167 2019-01-26         Arnold D. Robbins     <arnold@skeeve.com>
  168 
  169 	* Makefile.am (pc/Makefile.tst): Fix to work for out of tree builds.
  170 
  171 2019-01-25         Arnold D. Robbins     <arnold@skeeve.com>
  172 
  173 	* main.c (UPDATE_YEAR): Bump to 2019.
  174 	(usage): Revise help message a little bit.
  175 	* configure.ac: Bump version to start a release spiral.
  176 	* NEWS: Updated.
  177 
  178 2019-01-24         Arnold D. Robbins     <arnold@skeeve.com>
  179 
  180 	* awkgram.y (Grammar): Add new production `qualified_name' which
  181 	is NAME + qualification call. Use it everywhere that NAME was
  182 	used, except for function parameters.
  183 
  184 2019-01-23         Arnold D. Robbins     <arnold@skeeve.com>
  185 
  186 	* profile.c (adjust_namespace): Check for all upper case
  187 	identifiers so we don't get things like awk::NF.
  188 
  189 2019-01-23         Arnold D. Robbins     <arnold@skeeve.com>
  190 
  191 	* symbol.c (lookup): Remove second `do_qualify' parameter.
  192 	Remove calls to `fix_up_namespace'.  If name starts with
  193 	"awk::" just lookup the compnent name.
  194 	Adjust all calls to `lookup' in other files.
  195 	(install): Don't use `fix_up_namespace'.
  196 	(fix_up_namespace): Remove function.
  197 	* awk.h (lookup): Adjust declaration.
  198 
  199 2019-01-23         Arnold D. Robbins     <arnold@skeeve.com>
  200 
  201 	* awkgram.y (qualify_name): Don't qualify a name if it's
  202 	a parameter.
  203 
  204 2019-01-21         Arnold D. Robbins     <arnold@skeeve.com>
  205 
  206 	* awkgram.y (Grammar): Use qualify_name for array subscript
  207 	expressions. Fixes the last leak in the test suite.
  208 	* awk.h (is_all_upper): Declare.
  209 	* symbol.c (is_all_upper): Remove static.
  210 	* awkgram.y (is_all_upper): Remove.
  211 	(Grammar): Clean up `#if 0' code.
  212 
  213 2019-01-20         Arnold D. Robbins     <arnold@skeeve.com>
  214 
  215 	Restore functionality.
  216 
  217 	* awkgram.y (qualify_name): Remove `is_var' param, always check
  218 	for all upper case. Adjust all calls.
  219 	(Grammar): Do qualify_name for function calls also.
  220 
  221 2019-01-19         Arnold D. Robbins     <arnold@skeeve.com>
  222 
  223 	Continue fixing memory leaks.
  224 
  225 	* awk.h (set_current_namespace): Declare function.
  226 	* awkgram.y: Change all assignments of current_namespace to calls
  227 	to set_current_namespace.
  228 	(is_all_upper, qualify_name): New functions.
  229 	(in_function): Change type to bool, and fix usages.
  230 	(Grammar): Use qualify_name on variables and function names.
  231 	* main.c: Change all assignments of current_namespace to calls
  232 	to set_current_namespace.
  233 	(set_current_namespace): New function.
  234 	* profile.c (pp_namespace): Don't free old current_namespace. Add
  235 	comment explaining why.
  236 
  237 2019-01-18         Arnold D. Robbins     <arnold@skeeve.com>
  238 
  239 	Start fixing memory leaks related to namespaces.
  240 
  241 	* awkgram.y (Grammar): At simple_variable -> NAME, qualify names
  242 	before lookup/install.
  243 	(next_sourcefile): Check if need to free current_namespace before
  244 	assigning to it.
  245 	(yylex): Fix length of string to be dup'ed before returning
  246 	NAME or FUNC_CALL.
  247 	(set_namespace): Always free ns->lextok, adjust memory allocations
  248 	appropriately.
  249 	* main.c (main): Check if need to free current_namespace before
  250 	assigning to it.
  251 	* profile.c (pp_namespace): Ditto. (This may not be necessary.)
  252 
  253 2019-01-18         Arnold D. Robbins     <arnold@skeeve.com>
  254 
  255 	* debug.c (do_set_var): Add comments before calls to assoc_set.
  256 	* interpret.h (r_interpret): For Op_sub_array, deref the subscript
  257 	appropriately. Thanks to Andy Schorr for the catch.
  258 
  259 2019-01-15         Arnold D. Robbins     <arnold@skeeve.com>
  260 
  261 	* array.c (asort_actual): Use assoc_set in 2 places.
  262 	* awk.h (assoc_set): Improve leading comment.
  263 	* debug.c (do_set_var): Use assoc_set in 2 places.
  264 	* field.c (set_element, update_PROCINFO_str, update_PROCINFO_num):
  265 	Use assoc_set in each.
  266 	* gawkapi.c (api_set_array_element): Use assoc_set.
  267 	* interpret.h (r_interpret): Use assoc_set.
  268 	* main.c (init_args, load_environ, load_procinfo_argv):
  269 	Use assoc_set in each.
  270 	* mpfr.c (do_mpfr_intdiv): Use assoc_set in 2 places.
  271 	* str_array.c (str_lookup): Fix leading comment.
  272 	* symbol.c (install): Use assoc_set.
  273 
  274 2019-01-15         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  275 
  276 	* builtin.c (do_match, do_intdiv): Remove unused `sub' and `lhs'
  277 	variables, since assoc_set is now doing all of the work.
  278 
  279 2019-01-15         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  280 
  281 	* awk.h (assoc_set): Move the definition lower down because it
  282 	needs to be after unref is declared.
  283 	* builtin.c (do_match): Use assoc_set in 3 places.
  284 	(do_intdiv): Use assoc_set in 2 places.
  285 	(do_typeof): Use assoc_set in 2 places.
  286 
  287 2019-01-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  288 
  289 	* awk.h (assoc_set): Add new inline function to set an array element
  290 	to eliminate code duplication and reduce the chance of memory leaks.
  291 
  292 2019-01-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  293 
  294 	* builtin.c (do_typeof): Fix memory leak when populating the
  295 	optional array, and make sure to call the astore method.
  296 
  297 2019-01-14         Arnold D. Robbins     <arnold@skeeve.com>
  298 
  299 	* builtin.c (do_intdiv): Add unref of subscripts.
  300 	* mpfr.c (do_mpfr_intdiv): Ditto.
  301 	Thanks to Andy Schorr for noticing.
  302 
  303 2019-01-09         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  304 
  305 	* awkgram.y (tokentab): Indicate that typeof may take 2 arguments.
  306 	(snode): Add support for typeof's optional 2nd array argument.
  307 	* builtin.c (do_typeof): Add support for optional 2nd array arg,
  308 	returning flag info for scalars and backend array type for arrays.
  309 
  310 2019-01-09         John E. Malmberg      <wb8tyw@qsl.net>
  311 
  312 	* awk.h: For non GCC, have __attribute__ definition match
  313 	support/regex_internal.h exactly.
  314 
  315 2019-01-08         Arnold D. Robbins     <arnold@skeeve.com>
  316 
  317 	* interpret.h (r_interpret): For a translatable string, only copy
  318 	the gettext return value if it's different from the original.
  319 	Otherwise, use the original.
  320 
  321 2019-01-07         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  322 
  323 	Use a struct instead of an array to contain the array methods
  324 	for improved code clarity and flexibility.
  325 
  326 	* awk.h (array_funcs_t): Define new struct to contain the array
  327 	methods.
  328 	(NODE): Change type of array_funcs (sub.nodep.l.lp) from `afunc_t *'
  329 	to `const array_funcs_t *' (from a pointer to an array of function
  330 	methods to a pointer to a struct containing the methods).
  331 	(a*_ind): Remove obsolete method array index defines.
  332 	(a*): Redefine array methods to use struct members instead of 
  333 	array elements.
  334 	(str_array_func, cint_array_func, int_array_func): Change type
  335 	from array of afunc_t to 'const array_funcs_t'.
  336 	(register_array_func): Remove global declaration, since this function
  337 	is called only inside array.c.
  338 	* array.c (null_array_func): Change from array of methods to a struct.
  339 	(array_types): Now an array of pointers to array_funcs_t.
  340 	(AFUNC): Remove obsolete macro.
  341 	(register_array_func): Change scope to static, and change argument
  342 	to a pointer to array_funcs_t instead of a pointer to an array of
  343 	methods.
  344 	(array_init): Modify calls to register_array_func to pass the address
  345 	of the new array method structs.
  346 	(make_array): Set array_funcs to & null_array_func.
  347 	(null_lookup): Modify to use new array method structs.
  348 	(assoc_list): Update cint check to use & cint_array_func.
  349 	* str_array.c (str_array_func, env_array_func): Change from array of
  350 	methods to an array_funcs_t struct.
  351 	(env_clear, init_env_array): Set array_funcs to & env_array_func.
  352 	* int_array.c (int_array_func): Change from array of methods to an
  353 	array_funcs_t struct.
  354 	* cint_array.c (cint_array_func): Ditto.
  355 	(cint_lookup): When setting xn->array_funcs, must now use &.
  356 	(cint_dump): Compare xn->array_funcs to & int_array_func.
  357 
  358 2019-01-06         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  359 
  360 	* array.c (do_delete): If the array is now empty, reset it to the
  361 	null implementation to avoid being locked into the backend
  362 	optimization previously selected.
  363 
  364 2019-01-06         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  365 
  366 	Remove pointless alength macro/method that uses a needless
  367 	function call indirection to access the table_size value.
  368 
  369 	* awk.h (alength, alength_ind): Remove these defines, and also renumber
  370 	the array_funcs items after that, and use the <blah>_ind define to
  371 	define <blah> instead of repeating the hardcoded numeric value.
  372 	(NUM_AFUNCS): Remove unused define.
  373 	(assoc_length): Redefine to access table_size directly.
  374 	(null_length): Remove prototype.
  375 	* array.c (null_array_func): Remove null_length entry.
  376 	(null_length): Remove obsolete function.
  377 	* cint_array.c (cint_array_func): Remove null_length entry.
  378 	* int_array.c (int_array_func): Remove null_length entry.
  379 	* str_array.c (str_array_func, env_array_func): Remove null_length
  380 	entry.
  381 	* gawkapi.c (api_flatten_array_typed): Use the assoc_empty macro to
  382 	check for an empty array instead of comparing table_size to 0.
  383 	* symbol.c (lookup, check_param_names): Ditto.
  384 
  385 2018-12-31         Arnold D. Robbins     <arnold@skeeve.com>
  386 
  387 	Clean up namespace handling for the profiler.
  388 
  389 	* awkgram.y (make_pp_namespace): Remove function, not needed.
  390 	(set_namespace): Use estrdup to save the current namespace.
  391 	* main.c (main): Before dumping the program, set current_namespace
  392 	to awk_namespace.
  393 	* profile.c (pprint): Use "awk" for comparison, not "awk::".
  394 	(pp_namespace): Just print the name in the @namespace line.
  395 	(adjust_namespace): Adjust for the fact that namespaces no longer
  396 	have the trailing "::".
  397 
  398 2018-12-30         Arnold D. Robbins     <arnold@skeeve.com>
  399 
  400 	* awk.h (check_qualified_name): Remove declaration.
  401 	* awkgram.y (check_qualified_special): Renamed from
  402 	check_qualified_name and made static.
  403 	* profile.c (pprint): Improve comment on namespace list.
  404 
  405 2018-12-21         Arnold D. Robbins     <arnold@skeeve.com>
  406 
  407 	* configure.ac: Remove -O only if .developing has 'debug' in it.
  408 
  409 2018-12-18         Arnold D. Robbins     <arnold@skeeve.com>
  410 
  411 	* Makefile.am (distclean-local): Remove .deps directory.
  412 
  413 2018-12-14         Arnold D. Robbins     <arnold@skeeve.com>
  414 
  415 	* config.guess: Updated from GNULIB.
  416 
  417 2018-12-12         Arnold D. Robbins     <arnold@skeeve.com>
  418 
  419 	* TODO: Updated.
  420 
  421 2018-12-12         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  422 
  423 	* configure.ac (AC_CHECK_FUNCS): Check for timegm.
  424 	* builtin.c (mktime_tz): Remove function; we will use timegm instead.
  425 	(do_mktime): Replace 'mktime_tz(& then, "UTC+0")' with 'timegm(& then)'.
  426 	* protos.h (timegm): Add timegm proto on systems lacking it.
  427 	* replace.c (timegm): Include missing_d/timegm.c if needed.
  428 
  429 2018-12-12         Arnold D. Robbins     <arnold@skeeve.com>
  430 
  431 	* NEWS: Updated some.
  432 
  433 2018-12-12         Arnold D. Robbins     <arnold@skeeve.com>
  434 
  435 	* awk.h: Add new Op_K_namespace opcode for pretty printing.
  436 	* awkgram.y (namespace_chain): New variable, list of successive
  437 	@namespace directives seen, for the pretty printer.
  438 	(namespace_comment): Removed.
  439 	(set_namespace): Takes comment as second argument, builds the chain.
  440 	(mk_function, append_rule): Adjust to store the chain.
  441 	* debug.c (print_ns_list): New function.
  442 	(print_instruction): Adjust Op_rule and Op_func to use print_ns_list.
  443 	Add case for Op_K_namespace.
  444 	* eval.c (optable): Add entry for Op_K_namespace.
  445 	(opcode2str, op2str): Edit / add leading comments, respectively.
  446 	* profile.c (pp_namespace_list): New function.
  447 	(pprint): Adjust code to call pp_namespace_list.
  448 
  449 2018-12-06         Arnold D. Robbins     <arnold@skeeve.com>
  450 
  451 	* configure.ac: Add -ggdb3 to CFLAGS if developing and remove
  452 	-O2 from Makefile, extension/Makefile, and support/Makefile.
  453 	* config.guess, config.sub: Updated from GNULIB.
  454 
  455 2018-12-06         Arnold D. Robbins     <arnold@skeeve.com>
  456 
  457 	* awkgram.y (namespace_comment): New variable.
  458 	(Grammar): Handle comments after @namespace statements.
  459 	(mk_function): Add any comment onto the saved namespace.
  460 	(append_rule): Ditto.
  461 	* profile.c (pp_namespace): Add second argument for a comment.
  462 	Adjust all calls.
  463 
  464 2018-12-02         Arnold D. Robbins     <arnold@skeeve.com>
  465 
  466 	* awkgram.y (mk_program): Add in leading and trailing comments
  467 	when program block is empty.
  468 
  469 2018-11-29         Arnold D. Robbins     <arnold@skeeve.com>
  470 
  471 	* awkgram.y (first_rule, func_first): Remove unused variables.
  472 	(Grammar): Simplify rule for range pattern.
  473 
  474 2018-11-28         Arnold D. Robbins     <arnold@skeeve.com>
  475 
  476 	* awkgram.y (debug_print_comment): New macro and function.
  477 	(load_library): Rework to not try to open the file if pretty printing.
  478 	(append_rule): Adjust handling of interblock_comment.
  479 
  480 2018-11-27         Arnold D. Robbins     <arnold@skeeve.com>
  481 
  482 	* awkgram.y (Grammar): In rule for function, set interblock_comment.
  483 	(mk_function): Hook interblock_comment onto fi->comment, merge it
  484 	with the existing one first, if any. Append trailing_comment.
  485 
  486 2018-11-26         Arnold D. Robbins     <arnold@skeeve.com>
  487 
  488 	* main.c (platform_name): Add os390. Treat Cygwin and Mac OS X
  489 	as POSIX, per discussion with the dev team.
  490 
  491 	Unrelated:
  492 
  493 	* profile.c (print_comment): Indent for chained comment.
  494 	* awkgram.y (load_library): Return early if just pretty printing.
  495 	(yylex): Fix handling of ?: and allow_newline etc.
  496 
  497 2018-11-25         Arnold D. Robbins     <arnold@skeeve.com>
  498 
  499 	* main.c (platform_name): New function returning platform name.
  500 	(load_procinfo): Use `platform_name()' to add "platform" element.
  501 	Thanks to Eli Zaretskii for the suggestion.
  502 	* NEWS: Updated with info about PROCINFO["platform"].
  503 
  504 2018-11-25         Arnold D. Robbins     <arnold@skeeve.com>
  505 
  506 	* config.sub: Updated from GNULIB.
  507 
  508 2018-11-24         Arnold D. Robbins     <arnold@skeeve.com>
  509 
  510 	* awkgram.y (interblock_comment, pending_comment): New variables.
  511 	(Grammar, mk_program, add_rule): Adjust to use them. Changes
  512 	handle comments at the outermost level, between blocks and functions.
  513 
  514 2018-11-24         Arnold D. Robbins     <arnold@skeeve.com>
  515 
  516 	* main.c (arg_assign): Allow assigning strongly typed regexp
  517 	constants to variables on the command line and with -v.
  518 	Thanks to Peng Yu <pengyu.ut@gmail.com> for the report.
  519 
  520 2018-11-17         Arnold D. Robbins     <arnold@skeeve.com>
  521 
  522 	* awkgram.c, command.c: Updated to Bison 3.2.1.
  523 	* NEWS: Updated.
  524 	* Makefile.am (pc/Makefile.tst): Make it work for out-of-tree
  525 	builds.  Thanks to `make distcheck' for the report.
  526 
  527 2018-11-17         Arnold D. Robbins     <arnold@skeeve.com>
  528 
  529 	* config.guess: Updated from GNULIB.
  530 
  531 2018-11-11         Arnold D. Robbins     <arnold@skeeve.com>
  532 
  533 	* main.c (usage): Improve output for -Z in the help.
  534 2018-11-11         Arnold D. Robbins     <arnold@skeeve.com>
  535 
  536 	* awkgram.y (outer_comment): New variable.
  537 	(Grammar): More changes. We now get the simple case of leading
  538 	and trailing comments, but not all the cases.
  539 
  540 2018-11-11         Arnold D. Robbins     <arnold@skeeve.com>
  541 
  542 	* awkgram.y (trailing_comment): New variable.
  543 	(Grammar): For `action', append both trailing comments. This may
  544 	change. For `statements', append the value of `trailing_comment'
  545 	if set. At `statement := l_brace statements rbrace' save
  546 	trailing_comment from r_brace.
  547 	(make_braced_statements): Don't append the comment from r_brace
  548 	to the statement list.
  549 
  550 2018-10-30         Arnold D. Robbins     <arnold@skeeve.com>
  551 
  552 	* awk.h (NODE): New field: sub.nodep.x.cmnt, holds comment for
  553 	expressions being pretty-printed.
  554 	* awkgram.y (Grammar): For expression lists, save any comment
  555 	that came after a comma in the list.
  556 	* profile.c (pp_push): Accept a fourth argument which is any
  557 	comment associated with the expression. Either it's there or
  558 	it's NULL. Save it in the pp_comment field of the node being pushed.
  559 	(tabs, tabs_len, check_indent_level): Made into static globals.
  560 	(pprint): Adjust all calls to pp_push(). Fix parenthesization
  561 	for casts in string lengthes when indenting.
  562 	(pp_list): If a popped item has a comment, include it and the
  563 	following indentation in the formatted result.
  564 
  565 2018-10-28         Arnold D. Robbins     <arnold@skeeve.com>
  566 
  567 	* awkgram.y (include_source): Add second parameter to return
  568 	SRCFILE pointer.
  569 	(Grammar): For @include, save the comment for later dumping
  570 	along with the list of include files.
  571 	(make_include_comment): Removed. No longer used.
  572 	* profile.c: Update copyright year.
  573 	(print_include_list): New function.
  574 	(dump_prog): Call it.
  575 
  576 2018-10-24         Arnold D. Robbins     <arnold@skeeve.com>
  577 
  578 	* main.c (usage): Improve output for -Y and add -Z in the help.
  579 
  580 2018-10-23         Arnold D. Robbins     <arnold@skeeve.com>
  581 
  582 	* config.sub: Updated from GNULIB.
  583 
  584 2018-10-20         Arnold D. Robbins     <arnold@skeeve.com>
  585 
  586 	* awk.h (SRCFILE): Add comment field for comments on @load statements.
  587 	* awkgram.y (include_source): Type change to boolean.
  588 	(load_library): Type change to boolean, additiona parameter to
  589 	bring the SRCFILE struct up to where we can add the comment into it.
  590 	(make_include_comment): New function. Not used yet.
  591 	(Grammar): Add comment for @load statements. Start on preserving
  592 	@include statements and their comments for eventual inclusion
  593 	into the pretty-printed code.
  594 	* profile.c (print_lib_list): Made a little smarter about printing
  595 	the header and indentation. Print the comment if there is one.
  596 
  597 2018-10-17         Arnold D. Robbins     <arnold@skeeve.com>
  598 
  599 	* awk.h (commenttype): Add FOR_COMMENT.
  600 	* awkgram.y (Grammar): Handle all the opt_nls cases in
  601 	regular for statements.
  602 	* debug.c (print_instruction): Print the comments in Op_K_for.
  603 	* profile.c (pprint): Handle printing comments.
  604 
  605 2018-10-17         Arnold D. Robbins     <arnold@skeeve.com>
  606 
  607 	* NEWS: Updated.
  608 	* awkgram.y (Grammar): Distinguish `print' and `print $0' in
  609 	what gets profiled / pretty-printed.
  610 	* profile.c (pprint): For case and default, add final newline
  611 	if there is no comment to print.
  612 
  613 2018-10-16         Arnold D. Robbins     <arnold@skeeve.com>
  614 
  615 	* awkgram.y (Grammar): Improve comment handling for many plain
  616 	statements. Improve handling for case and default.
  617 	Handle comments in `for (iggy in foo)' loops.
  618 	(yylex): After a colon, only allow newline if was part of ?:.
  619 	(merge_comments): Improve coding so we don't get two newlines
  620 	at the end of a merged comment.
  621 	* debug.c (print_instruction): Handle comments for case and default.
  622 	Simplify printing of comments.
  623 	* profile.c (pprint): Handle comments for case and default.
  624 	Remove compiler warning in Op_and/Op_or handling.
  625 
  626 2018-10-14         Arnold D. Robbins     <arnold@skeeve.com>
  627 
  628 	* awkgram.y (Grammar): Add comment handling for do...while.
  629 	Regularize comments about `else ...'.
  630 	* debug.c (print_instruction): Improve handling of comments for
  631 	do-while and switch, and in general.
  632 	* profile.c (pprint): Revise for do...while.
  633 
  634 2018-10-10         Arnold D. Robbins     <arnold@skeeve.com>
  635 
  636 	* awkgram.y (make_braced_statements): New function.
  637 	(Grammar): Use it in the right places instead of inline code.
  638 	* debug.c (print_instruction): For Op_comment, fix type string.
  639 	* profile.c (pprint): Move tabs and tabs_len to top of function.
  640 	For Op_and and Op_or, handle comments.  Use new check_indent_level
  641 	for Op_and, Op_or and Op_cond_exp.
  642 
  643 2018-10-10         Arnold D. Robbins     <arnold@skeeve.com>
  644 
  645 	* debug.c (print_instruction): For Op_comment, use print_func
  646 	instead of fprintf to print the comment type.
  647 
  648 2018-10-10         Arnold D. Robbins     <arnold@skeeve.com>
  649 
  650 	* awkgram.y (Grammar): For statement -> { statements }, fix comment
  651 	handling.  For `if' statement add comment support.
  652 	* profile.c (pp_print): Print comments associated with `if' and `else'.
  653 
  654 2018-10-09         Arnold D. Robbins     <arnold@skeeve.com>
  655 
  656 	* awkgram.y (Grammar): Fix handling of empty statement (just a semi-
  657 	colon).
  658 	(merge_comments): If no chained comment and no second comment,
  659 	just return early.
  660 
  661 2018-10-09         Arnold D. Robbins     <arnold@skeeve.com>
  662 
  663 	* awk.h (enum commenttype): New enum.
  664 	(NODE): Add it to sub.val.
  665 	(EOL_COMMENT, FULL_COMMENT): Replaced with above enum values.
  666 	* awkgram.y (Grammar): Finish up handling comments in function headers
  667 	and bodies. Get trailing comments at end of program
  668 	(get_comment): When doing comments, if we got EOF, push it back so that
  669 	multiple comments get merged together.
  670 	(merge_comments): Allow second parameter to be NULL.
  671 	* profile.c (pp_print): Change to use above enum everywhere. For
  672 	Op_K_print_rec produce plain `print' instead of `print $0'. Handle
  673 	comments in ?:. Handle printing function comments.
  674 	(print_comment): Simplify `after_newline' assignment.  Add assertion
  675 	that chaining is only two deep.
  676 
  677 2018-10-06         Arnold D. Robbins     <arnold@skeeve.com>
  678 
  679 	* awkgram.y (action): Improve handling of comments attached
  680 	to braces. Helps with function bodies.
  681 
  682 2018-10-04         Arnold D. Robbins     <arnold@skeeve.com>
  683 
  684 	* awkgram.y (merge_comments): Change return type to void. Adjust calls.
  685 	(Grammar): For action, pull comments out of braces and stick
  686 	into the list. For function_prologue, get comments from parameters
  687 	and ending newline, merge, and save.  Wherever nls and opt_nls
  688 	are used, be sure to pass their values up via $$. For various
  689 	cases that can be empty, explicitly set $$ = NULL.
  690 	* profile.c (pprint): Get switch working.  Get ?: working.
  691 	(print_comment): Print any chained comment.
  692 	(pp_func): Start revising.
  693 
  694 2018-10-03         Arnold D. Robbins     <arnold@skeeve.com>
  695 
  696 	* awkgram.y: Range expressions, enable comment stuff.
  697 	Switch statement: start on comment handling.
  698 
  699 2018-10-01         Nelson H.F. Beebe     <beebe@math.utah.edu>
  700 
  701 	* custom.h (__builtin_expect): Define for non-GNU compilers.
  702 
  703 2018-09-27         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  704 
  705 	* mpfr.c (force_mpnum): Check that base is 10 also before
  706 	computing MPG integer.  Found based on bug report from
  707 	Luu Vinh Phuc <phuclv90@gmail.com>.
  708 
  709 2018-09-26         Arnold D. Robbins     <arnold@skeeve.com>
  710 
  711 	Add more lint checks.
  712 
  713 	* awk.h (POP_ARRAY): Add boolean parameter to check for untyped
  714 	value and include lint warning.
  715 	* interpret.h (r_interpret): Adjust all calls to POP_ARRAY.
  716 	* field.c (do_split): Improve lint warning text for empty
  717 	third argument.
  718 	* re.c (make_regexp): Add lint check for '\0' in contents of
  719 	regexp to be matched (dynamic or otherwise).
  720 
  721 2018-09-23         Steven Packard        <spackard1@bloomberg.net>
  722 
  723 	* awk.h: Add `#if !defined(__SUNPRO_C)' around check for non-ANSI
  724 	compilers.  Needed for some Solaris systems.
  725 
  726 2018-09-21         Arnold D. Robbins     <arnold@skeeve.com>
  727 
  728 	* awk.h (INSTRUCTION): Add comment field to carry
  729 	comment around during parsing.
  730 	* awkgram.y (merge_comments): New function.
  731 	(split_comment, check_comment, comment, prior_comment,
  732 	comment_to_save, program_comment, function_comment,
  733 	block_comment): Removed.
  734 	(grammar): Remove old code and start passing the comment
  735 	up via yylval and the newlines in the grammar.
  736 
  737 2018-09-21         Arnold D. Robbins     <arnold@skeeve.com>
  738 
  739 	* awkgram.y: Undo change of 2016-11-28 to make switch
  740 	head a separate production, in preparation for revamping
  741 	comment handling.
  742 
  743 2018-09-21         Arnold D. Robbins     <arnold@skeeve.com>
  744 
  745 	* re.c (make_regexp): Handle backslash at end of
  746 	input string. Thanks to Anatoly Trosinenko
  747 	<anatoly.trosinenko@gmail.com> for the report.
  748 	Also, improve the error message when compilation of
  749 	the regexp fails.
  750 
  751 2018-09-21         Arnold D. Robbins     <arnold@skeeve.com>
  752 
  753 	* io.c (fork_and_open_slave_pty): Move an errant close brace
  754 	inside the #endif so that gawk will compile on AIX. Thanks to
  755 	Fredrik Laurin <fredrik_laurin@yahoo.se> for the report.
  756 
  757 2018-09-18         Arnold D. Robbins     <arnold@skeeve.com>
  758 
  759 	* NEWS: Fix typo in gettext version.
  760 
  761 	Unrelated:
  762 
  763 	* field.c (get_field): Move lint check for field access in an
  764 	END rule to top level, make wording more general.
  765 	* builtin.c (do_print_rec): Restore check before calling get_field()
  766 	and add do_lint to the condition.
  767 
  768 	Unrelated:
  769 
  770 	* field.c (set_NF): Add lint warning if decrementing NF, which
  771 	doesn't work on older Unix awks.
  772 
  773 	Unrelated:
  774 
  775 	* config.rpath: Sync to GNULIB.
  776 
  777 2018-09-16  gettextize  <bug-gnu-gettext@gnu.org>
  778 
  779 	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.8.
  780 	* ABOUT-NLS, config.rpath: Updated by gettext 0.19.8.1.
  781 
  782 2018-09-16         Arnold D. Robbins     <arnold@skeeve.com>
  783 
  784 	* field.c (get_field): Add lint check if accessing $0 inside
  785 	an END rule, print a "may not be portable" warning.
  786 	* builtin.c (do_print_rec): Call get_field() unconditionally
  787 	in order to do lint check.
  788 
  789 	Unrelated:
  790 
  791 	* awkgram.c, command.c: Updated to Bison 3.1.
  792 	* NEWS: Updated.
  793 
  794 	Unrelated:
  795 
  796 	* Makefile.in, aclocal.m4, configure: Regenerated, using
  797 	Automake 1.16.1.
  798 
  799 	Unrelated:
  800 
  801 	* gettext.h: Synced with that from Gettext 0.19.8.1.
  802 
  803 2018-09-14         Adrian Bunk           <bunk@debian.org>
  804 
  805 	* awk.h (init_debug, debug_prog): Move prototypes to here from ...
  806 	* main.c: ... here.
  807 	Thanks to Michael Tautschnig for noticing the type mismatch.
  808 
  809 2018-09-07         Arnold D. Robbins     <arnold@skeeve.com>
  810 
  811 	* awkgram.y, debug.c, ext.c, gawkapi.c, gawkapi.h,
  812 	io.c: Remove unneeded \n in calls to warning(), fatal(),
  813 	and lintwarn().
  814 	* config.guess, config.sub: Updated from GNULIB.
  815 
  816 2018-08-24         Arnold D. Robbins     <arnold@skeeve.com>
  817 
  818 	* NEWS: Updated w.r.t. GNULIB regex routines.
  819 	* config.sub: Updated from GNULIB.
  820 
  821 2018-08-17         Arnold D. Robbins     <arnold@skeeve.com>
  822 
  823 	* config.sub: Updated from GNULIB.
  824 
  825 2018-08-10         Arnold D. Robbins     <arnold@skeeve.com>
  826 
  827 	* config.guess, config.sub: Updated from GNULIB.
  828 
  829 2018-08-05         John E. Malmberg      <wb8tyw@qsl.net>
  830 
  831 	* custom.h: Define macros needed for building with gnu regex.
  832 
  833 2018-08-02         Arnold D. Robbins     <arnold@skeeve.com>
  834 
  835 	* awkgram.y (yylex): Add lint warning upon encountering escaped
  836 	physical newlines in a string.
  837 	* node.c (make_str_node): Ditto.
  838 
  839 2018-08-01         John E. Malmberg      <wb8tyw@qsl.net>
  840 
  841 	* custom.h: Include fp.h on OpenVMS.
  842 	Workaround for bug in math.h missing some declarations.
  843 
  844 2018-07-31         Arnold D. Robbins     <arnold@skeeve.com>
  845 
  846 	* interpret.h (unfield): Add a call to force_string() on
  847 	new value. See test/assignnumfield.awk. Thanks to
  848 	Ralph Corderoy <ralph@inputplus.co.uk> for the bug report.
  849 
  850 2018-07-31         Arnold D. Robbins     <arnold@skeeve.com>
  851 
  852 	Handle newlines in -v and fix \-<newline>. Thanks to
  853 	Samy Mahmoudi <samy.mahmoudi@gmail.com> for the report.
  854 
  855 	* awk.h [ELIDE_BACK_NL]: New constant.
  856 	* awkgram.y (yylex): Disallow any physical newlines in a string
  857 	even if escaped, in POSIX mode.
  858 	* main.c (arg_assign): In POSIX mode disallow physical newline
  859 	in a -v value.  Otherwise call make_str_node() with ELIDE_BACK_NL.
  860 	* node.c (make_str_node): Handle ELIDE_BACK_NL.
  861 
  862 2018-07-31         Arnold D. Robbins     <arnold@skeeve.com>
  863 
  864 	* array.c (cmp_strings): Preserve value of lmin so it can be passed
  865 	to memcmp() if IGNORECASE comparison failed. Thanks to
  866 	M. Rashid Zamani <rashid.z@gmail.com> for the report.
  867 
  868 2018-07-27         Arnold D. Robbins     <arnold@skeeve.com>
  869 
  870 	* re.c (make_regexp): Add warnings for unknown escape sequences,
  871 	similar to what we already do for strings.
  872 	* awkgram.y: Add lint warning about concatenation as target
  873 	of `>' redirection.  Always use Op_parens so that
  874 	print "foo" > ("foo" 1) does not warn.
  875 
  876 2018-07-26         Arnold D. Robbins     <arnold@skeeve.com>
  877 
  878 	* awk.h (_GNU_SOURCE): Don't define it here, it's already
  879 	done in config.h.
  880 
  881 2018-07-13         Arnold D. Robbins     <arnold@skeeve.com>
  882 
  883 	* builtin.c (format_nan_inf): New function to generate +nan, -nan,
  884 	+inf, -inf, so that gawk output for NaN and INF always has a sign.
  885 	Handles regular and MPFR.
  886 	(out_of_range): New function to check if a value is out of range,
  887 	both regular and MPFR.
  888 	(format_tree): Use them in out of range calculation.  Check for out
  889 	of range in floating point formats also. Allow new *undocumented*
  890 	'P' flag to not do out of range formantting. Used mainly for
  891 	the test program.
  892 	* awk.h (out_of_range, format_nan_inf): Declare functions.
  893 	* mpfr.c (mpg_format_val): Check for out of range and format the
  894 	the result appropriately if so.
  895 	* node.c (r_format_val): Ditto.
  896 
  897 2018-06-27         Arnold D. Robbins     <arnold@skeeve.com>
  898 
  899 	* config.guess, config.sub: Updated from GNULIB.
  900 
  901 2018-06-22         Andrew J. Schorr      <aschorr@telemetry-investments.com>
  902 
  903 	* node.c (r_force_number): If strtod returns ERANGE, accept the
  904 	value as being numeric instead of forcing it to zero. The impact
  905 	is that huge string values that overflow IEEE 754 limits will now
  906 	be converted to inf or -inf instead of 0. Thanks to Daniel
  907 	Pettet for reporting this issue.
  908 
  909 2018-06-17         Arnold D. Robbins     <arnold@skeeve.com>
  910 
  911 	Fix a corner case with EPIPE to stdout/stderr.
  912 	Thanks to Peng Yu for the report.
  913 
  914 	* io.c (close_io): Add new parameter for indicating EPIPE happened,
  915 	update the code to set it if so.
  916 	* awk.h (close_io): Revise declaration.
  917 	* debug.c (close_all): Change call to close_io().
  918 	* interpret.h (interpret): For Op_atexit, if got an EPIPE, call
  919 	die_via_sigpipe().
  920 
  921 2018-05-24         Arnold D. Robbins     <arnold@skeeve.com>
  922 
  923 	* awkgram.y (add_lint): For no-effect case, also check for
  924 	Op_push_i.  Makes statements consisting of a single constant
  925 	trigger the warning.
  926 
  927 2018-05-23         Arnold D. Robbins     <arnold@skeeve.com>
  928 
  929 	* config.guess, config.sub: Updated from GNULIB.
  930 
  931 2018-05-14         Arnold D. Robbins     <arnold@skeeve.com>
  932 
  933 	* NEWS: Minor edits.
  934 
  935 2018-05-13         Arnold D. Robbins     <arnold@skeeve.com>
  936 
  937 	* config.sub: Update from GNULIB.
  938 
  939 2018-05-03         Arnold D. Robbins     <arnold@skeeve.com>
  940 
  941 	* Makefile.am (pc/Makefile.tst): New target.
  942 	(dist-hook): Now depends upon pc/Makefile.tst.
  943 
  944 2018-04-30         Arnold D. Robbins     <arnold@skeeve.com>
  945 
  946 	* gawkapi.h [dl_load_func]: Minor improvement in version mismatch
  947 	message as suggested by Manuel Collado
  948 	<m-collado@users.sourceforge.net>.
  949 
  950 2018-04-18         Arnold D. Robbins     <arnold@skeeve.com>
  951 
  952 	* config.sub: Updated from GNULIB.
  953 
  954 2018-04-14         Manuel Collado       <m-collado@users.sourceforge.net>
  955 
  956 	* field.c (reset_record): Disable fieldwidth from API
  957 	get_record() if $0 is explicitly assigned a new value.
  958 
  959 2018-04-02         Arnold D. Robbins     <arnold@skeeve.com>
  960 
  961 	* config.guess, config.sub, install-sh: Updated from GNULIB.
  962 
  963 2018-04-01         Arnold D. Robbins     <arnold@skeeve.com>
  964 
  965 	Fix a nasty MPFR bug in r_dupnode. If the value being copied
  966 	is MPFN / MPFR, copy those bits over too. Thanks to
  967 	Noah Dean <N.Dean@gaminglabs.com> for the report.
  968 
  969 	* node.c (r_dupnode): Check for MPFN / MPFR and copy the bits
  970 	over as needed.
  971 
  972 	Unrelated:
  973 
  974 	* interpret.h (UNFIELD): Turn into an inline function and
  975 	let UNFIELD macro call it, allows stepping in with a debugger.
  976 	(unfield): Function holding former body of UNFIELD macro.
  977 
  978 2018-03-26         Arnold D. Robbins     <arnold@skeeve.com>
  979 
  980 	Remove the tail recursion optimization. It's fundamentally
  981 	broken, in the case where a local var becomes a parameter.
  982 	Thanks to Denis Shirokov <cosmogen@gmail.com> for the report.
  983 	See test/tailrecurse.awk.
  984 
  985 	* awk.h [num_tail_calls, tail_call]: Remove definitions.
  986 	* awkgram.y (grammar, mk_function): Remove code related to
  987 	the tail recursion optimization.
  988 	* eval.c (dump_fcall_stack): Adjust dumping code since no longer
  989 	looping through tail call recursion.
  990 	(setup_frame): Remove code related to the tail recursion optimization.
  991 	(init_interpret): Ditto.
  992 
  993 2018-03-22         Arnold D. Robbins     <arnold@skeeve.com>
  994 
  995 	* configure.ac: Check for %a support in system printf.
  996 	* builtin.c (format_tree): Add support for %a and %A, including
  997 	a lint warning.
  998 	* NEWS: Add a note about %a support.
  999 
 1000 2018-03-13         Arnold D. Robbins     <arnold@skeeve.com>
 1001 
 1002 	* debug.c, nonposix.h: Update copyright year.
 1003 
 1004 2018-03-11         Arnold D. Robbins     <arnold@skeeve.com>
 1005 
 1006 	* compile, config.guess, config.sub, configure.ac, depcomp,
 1007 	install-sh, mkinstalldirs: Updated.
 1008 
 1009 2018-03-05         Arnold D. Robbins     <arnold@skeeve.com>
 1010 
 1011 	* awk.h [PUSH_BINDING, POP_BINDING]: Moved to ...
 1012 	* debug.c: here.
 1013 	* awkgram.y (yylex): Make do_etoa_init into a boolean.
 1014 	* io.c (rs1scan): Make found into a boolean.
 1015 
 1016 2018-02-25         Arnold D. Robbins     <arnold@skeeve.com>
 1017 
 1018 	* 4.2.1: Release tar ball made.
 1019 
 1020 2018-02-25         Arnold D. Robbins     <arnold@skeeve.com>
 1021 
 1022 	* config.guess, config.sub: Updated.
 1023 
 1024 2018-02-23         Arnold D. Robbins     <arnold@skeeve.com>
 1025 
 1026 	* configure.ac: Restore checking for PPC Macintosh before
 1027 	checking for MPFR. See README_d/README.macosx for info.
 1028 
 1029 2018-02-21         Arnold D. Robbins     <arnold@skeeve.com>
 1030 
 1031 	* configure.ac: Remove checking for PPC Macintosh before
 1032 	checking for MPFR. Installing a newer compiler on that
 1033 	system allows things to work.
 1034 
 1035 2018-02-19         Arnold D. Robbins     <arnold@skeeve.com>
 1036 
 1037 	* gawkapi.h, io.c, msg.c: Update copyright year.
 1038 
 1039 2018-02-10         Arnold D. Robbins     <arnold@skeeve.com>
 1040 
 1041 	* main.c, msg.c: Add a call to fflush(NULL) before each call
 1042 	to abort(), since GLIBC 2.27 doesn't necessarily flush before
 1043 	aborting.  Thanks to Nelson H.F. Beebe for the report.
 1044 
 1045 2018-02-09         Arnold D. Robbins     <arnold@skeeve.com>
 1046 
 1047 	* io.c (socketopen): Rearrange assigning the flags to use
 1048 	AI_ADDRCONFIG only if family is AF_UNSPEC. Thanks to
 1049 	Houder <houder@xs4all.nl> for the report and initial
 1050 	code suggestion.
 1051 
 1052 2018-02-07         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1053 
 1054 	Print +"01" should print "1", not "01".
 1055 	* interpret.h (Op_unary_plus): Need to make a new number node that does
 1056 	not contain the original string representation. The logic is copied
 1057 	from Op_unary_minus.
 1058 	* mpfr.c (mpg_interpret): Add new case for Op_unary_plus based on
 1059 	the Op_unary_minus logic. We need a fresh number node that does not
 1060 	contain the string.
 1061 
 1062 2018-01-28         Arnold D. Robbins     <arnold@skeeve.com>
 1063 
 1064 	* config.guess, config.sub: Updated.
 1065 
 1066 2018-01-25         Arnold D. Robbins     <arnold@skeeve.com>
 1067 
 1068 	* main.c (main): Add explanatory comment about O_APPEND stuff.
 1069 	* NEWS: Updated.
 1070 
 1071 2018-01-22         Arnold D. Robbins     <arnold@skeeve.com>
 1072 
 1073 	Fix the inplace tests on *BSD systems.
 1074 
 1075 	* main.c (main): Add O_APPEND flag to fileno(stderr).
 1076 
 1077 2018-01-17         Arnold D. Robbins     <arnold@skeeve.com>
 1078 
 1079 	* builtin.c (do_isarray): Check that tmp is Node_var
 1080 	before calling DEREF. Thanks to Denis Shirokov
 1081 	<cosmogen@gmail.com> for the report.
 1082 
 1083 2018-01-15         Arnold D. Robbins     <arnold@skeeve.com>
 1084 
 1085 	* NEWS: Small typo fix.
 1086 	* config.sub: Updated.
 1087 	* io.c (fork_and_open_slave_pty): Rationalize down to one
 1088 	function with two bodies.
 1089 	(set_slave_pty_attributes, push_pty_line_disciplines): Move
 1090 	into #ifdef for TERMIOS_H. Helps out with VMS compiling.
 1091 
 1092 2018-01-12         Arnold D. Robbins     <arnold@skeeve.com>
 1093 
 1094 	* gawkapi.h: Remove extraneous '*' on parameters of
 1095 	type awk_ext_id. Thanks to Andrew Schorr for the report.
 1096 
 1097 2018-01-11         Arnold D. Robbins     <arnold@skeeve.com>
 1098 
 1099 	* compile, config.guess, config.rpath, config.sub,
 1100 	depcomp: Updated from GNULIB.
 1101 
 1102 2018-01-08         John E. Malmberg      <wb8tyw@qsl.net>
 1103 
 1104 	* io.c (set_slave_pty_attributes): Currently no termios on VMS.
 1105 	(set_slave_pty_attributes): No fork on VMS.
 1106 
 1107 2018-01-04         Arnold D. Robbins     <arnold@skeeve.com>
 1108 
 1109 	Refactor handling of slave pty. On AIX and HP-UX open
 1110 	slave in the child. Otherwise open slave in the parent
 1111 	before forking (restoring code mostly from 4.1.3). Thanks
 1112 	to Andrew Schorr for the bug report.
 1113 
 1114 	* io.c (fork_and_open_slave_pty): New routine. Two versions.
 1115 	(set_slave_pty_attributes): New routine. Common code used by
 1116 	both versions of fork_and_open_slave_pty.
 1117 	(push_pty_line_disciplines): New routine. Common code used by
 1118 	both versions of fork_and_open_slave_pty.
 1119 	(two_way_open): Call fork_and_open_slave_pty instead of
 1120 	doing it inline.
 1121 
 1122 2018-01-03         Arnold D. Robbins     <arnold@skeeve.com>
 1123 
 1124 	* main.c (UPDATE_YEAR): Move to 2018. Revise copyright year.
 1125 	* NEWS: Bring up to date.
 1126 
 1127 2018-01-02         Arnold D. Robbins     <arnold@skeeve.com>
 1128 
 1129 	If ROUNDMODE changes, cause cached string conversions
 1130 	to become invalid. Thanks to Nethox <nethox@gmail.com>
 1131 	for the report. Day 1 bug from 4.1.0 release.
 1132 
 1133 	In all the below files, bump copyright year, too.
 1134 
 1135 	* array.c (value_info): Include strndmode in the output.
 1136 	* awk.h (NODE): New member, strndmode.
 1137 	(MPFR_round_mode): Add extern declaration.
 1138 	(force_string_fmt): Check s->strnmode against MPFR_round_mode.
 1139 	* awkgram.y (set_profile_text): Set n->strndmode to MPFR_round_mode.
 1140 	* builtin.c (do_print): Remove tests and just call force_string_fmt.
 1141 	* field.c (set_record): Set n->strndmode to MPFR_round_mode.
 1142 	* gawkapi.c (api_sym_update_scalar): Set r->strndmode to
 1143 	MPFR_round_mode.
 1144 	* interpret.h (r_interpret): For Op_assign_concat, set t1->strndmode
 1145 	to MPFR_round_mode.
 1146 	* mpfr.c (MPFR_round_mode): Define and initialize.
 1147 	(mpfr_format_val): Set s->strndmode to MPFR_round_mode.
 1148 	(set_ROUNDMODE): Update MPFR_round_mode when ROUNDMODE changes
 1149 	successfully.
 1150 	* node.c (r_format_val): Set s->strndmode to MPFR_round_mode.
 1151 	(make_str_node): Set r->strndmode to MPFR_round_mode.
 1152 	* str_array.c (str_kilobytes): Update a comment.
 1153 	* symbol.c (check_param_names): Set n.strndmode to MPFR_round_mode.
 1154 
 1155 2017-12-24         Arnold D. Robbins     <arnold@skeeve.com>
 1156 
 1157 	Avoid some compiler warnings. Thanks to Michal Jaegermann
 1158 	<michal.jnn@gmail.com> for the report.
 1159 
 1160 	* builtin.c (do_strftime): Initialize save.
 1161 	(do_dcgetttext): Initialize save and save2.
 1162 	(do_dcngettext): Ditto.
 1163 	(do_bindtextdomain): Initialize save and save1.
 1164 
 1165 	Unrelated:
 1166 
 1167 	* main.c (optlist): Make 'L' option's argument optional, to
 1168 	match --lint. Thanks to Manuel Collado <mcollado2011@gmail.com>
 1169 	for the report.
 1170 
 1171 2017-12-22         Arnold D. Robbins     <arnold@skeeve.com>
 1172 
 1173 	* config.guess, config.sub, depcomp, install-sh: Updated
 1174 	from GNULIB.
 1175 
 1176 2017-12-20         Arnold D. Robbins     <arnold@skeeve.com>
 1177 
 1178 	* configure.ac: Add --enable-versioned-dir option for a
 1179 	directory with API version in it to hold extensions.
 1180 
 1181 2017-12-19         Arnold D. Robbins     <arnold@skeeve.com>
 1182 
 1183 	* configure.ac: Remove x's from `test "x$something" = "xyes"
 1184 	kinds of things. With correct quoting, the x isn't needed.
 1185 	(DYNAMIC): Remove use of -Wl,-export-dynamic on Linux
 1186 	and FreeBSD. It was needed for old-style extensions, which are
 1187 	no longer supported.
 1188 
 1189 2017-12-10         Arnold D. Robbins     <arnold@skeeve.com>
 1190 
 1191 	* awkgram.y: For '!' optimization on a string constant, don't
 1192 	apply the optimization if it's a translatable string. Thanks
 1193 	to Jeremy Feusi <jeremy@feusi.co> for the report.
 1194 
 1195 2017-11-25         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1196 
 1197 	* debug.c (do_set_var): As in interpret.h (Op_store_field), we should
 1198 	call the assign function before unref to give it a chance to copy
 1199 	any non-malloced $n string values before freeing $0.
 1200 
 1201 2017-11-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1202 
 1203 	* mpfr.c (get_rnd_mode): Fix MPFR_RNDA comment.
 1204 
 1205 2017-11-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1206 
 1207 	Fix corruption when $0 is reassigned while other NODEs have open
 1208 	references to $n. Thanks to Eric Pruitt <eric.pruitt@gmail.com> for
 1209 	the bug report.
 1210 
 1211 	* field.c (purge_record): For each $n field variable, if valref > 1
 1212 	and it has not already been malloced, make a copy of the string, since
 1213 	$0 is about to be reset.
 1214 	* interpret.h (Op_store_field): We must call the assign function
 1215 	before unref, since we must copy any non-malloced $n string values
 1216 	before freeing $0.
 1217 
 1218 2017-11-09         Arnold D. Robbins     <arnold@skeeve.com>
 1219 
 1220 	* main.c (usage): Add a note to not post bugs in comp.lang.awk.
 1221 	So there.
 1222 
 1223 2017-11-08         Arnold D. Robbins     <arnold@skeeve.com>
 1224 
 1225 	* gawkapi.h (AWK_NUMBER_TYPE): Move this enum out to the
 1226 	top level so that it works correctly with C++.
 1227 
 1228 2017-10-24         Arnold D. Robbins     <arnold@skeeve.com>
 1229 
 1230 	* NEWS: Updated with info about OS/2.
 1231 
 1232 2017-10-21         Arnold D. Robbins     <arnold@skeeve.com>
 1233 
 1234 	* awkgram.y: For string concatenation, don't fold constants
 1235 	if one or the other is translatable. Thanks to Harald van Dijk
 1236 	<harald@gigawatt.nl> for the report.
 1237 
 1238 2017-10-21  KO Myung-Hun <komh78@gmail.com>
 1239 
 1240 	* nonposix.h [__KLIBC__]: Include dlfcn.h, declare os2_dlsym, and
 1241 	redirect dlsym to os2_dlsym. Declare os2_fixdllname.  Declare
 1242 	os2_dlopen and redirect dlopen to os2_dlopen.
 1243 	* io.h (find_source) [__EMX__]: Truncate extension file basename
 1244 	to 8 characters.
 1245 
 1246 2017-10-19         Arnold D. Robbins     <arnold@skeeve.com>
 1247 
 1248 	* 4.2.0: Release tar ball made.
 1249 
 1250 2017-10-17         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1251 
 1252 	* NEWS: Actually, isarray is not deprecated in this release.
 1253 	* builtin.c (do_isarray): Remove lint warning deprecating isarray.
 1254 
 1255 2017-10-14         Arnold D. Robbins     <arnold@skeeve.com>
 1256 
 1257 	* field.c (do_split): Simplify the lint warnings.
 1258 	Based on suggested code by Eric Pruitt <eric.pruitt@gmail.com>.
 1259 
 1260 	Unrelated:
 1261 
 1262 	* awkgram.y (check_funcs): Remove the REALLYMEAN ifdef and
 1263 	simplify the lint checking code for function defined but not
 1264 	called or called but not defined.
 1265 
 1266 2017-10-13         Arnold D. Robbins     <arnold@skeeve.com>
 1267 
 1268 	Assume a more C99 environment:
 1269 
 1270 	* awk.h: Assume we have limits.h, stdarg.h and stdbool.h.
 1271 	* configure.ac: Remove checks for limits.h and stdarg.h.
 1272 
 1273 2017-10-10         Arnold D. Robbins     <arnold@skeeve.com>
 1274 
 1275 	* configure.ac: Remove --with-whiny-user-strftime option.
 1276 	* NEWS: Updated.
 1277 	* ChangeLog.0: Fix a typo. :-)
 1278 
 1279 2017-10-08         Arnold D. Robbins     <arnold@skeeve.com>
 1280 
 1281 	* command.y: Fix the FSF's address.
 1282 
 1283 2017-10-08         Arnold D. Robbins     <arnold@skeeve.com>
 1284 
 1285 	* NEWS: Rationalized with respect to stuff on the API.
 1286 	Also rationalized with respect to the pretty printer changes.
 1287 
 1288 2017-10-04         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1289 
 1290 	* README: Fix grammar by removing a stray word.
 1291 
 1292 2017-10-04         Arnold D. Robbins     <arnold@skeeve.com>
 1293 
 1294 	* NEWS: Add a note about OS/2 not working.
 1295 
 1296 2017-10-02         Arnold D. Robbins     <arnold@skeeve.com>
 1297 
 1298 	Undo change of 2014-09-07:
 1299 
 1300 	* configure.ac: Remove the undocumented option to enable locale
 1301 	letters in identifiers.
 1302 	* awkgram.y (is_alpha): Remove related code.
 1303 
 1304 2017-10-02         Arnold D. Robbins     <arnold@skeeve.com>
 1305 
 1306 	* config.guess, config.sub: Updated.
 1307 
 1308 2017-09-28         Arnold D. Robbins     <arnold@skeeve.com>
 1309 
 1310 	* io.c (devopen): Move declaration of `cp' to where it's first used.
 1311 
 1312 2017-09-18         Arnold D. Robbins     <arnold@skeeve.com>
 1313 
 1314 	* README: Update required version of texinfo.tex.
 1315 	* compile, config.guess, config.sub, depcomp: Updated.
 1316 
 1317 2017-09-17         Arnold D. Robbins     <arnold@skeeve.com>
 1318 
 1319 	* gawkapi.h: Small changes to make it usable with C++.
 1320 
 1321 2017-09-13         Arnold D. Robbins     <arnold@skeeve.com>
 1322 
 1323 	* Makefile.am (command.c): Don't need the dependency on awkgram.c
 1324 	anymore.
 1325 	* bisonfix.awk: Removed.
 1326 	* README: Revised to describe use of Bison exclusively.
 1327 
 1328 2017-09-13         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1329 
 1330 	* Makefile.am (awkgram.c): Use -o option to bison. Get rid of
 1331 	messing with y.tab.h, that was obsolete.
 1332 	(EXTRA_DIST): Don't need bisonfix.awk anymore.
 1333 
 1334 2017-09-12         Petr Ovtchenkov       <ptr@void-ptr.info>
 1335 		   Andrew J. Schorr      <aschorr@telemetry-investments.com>
 1336 
 1337 	* Makefile.am (command.c): Make dependant on awkgram.c so
 1338 	that bison is run serially with make -j.  Use -o option so
 1339 	that we no longer need bisonfix.awk in this rule.
 1340 
 1341 2017-08-28         Arnold D. Robbins     <arnold@skeeve.com>
 1342 
 1343 	* interpret.h (r_interpret): Add some casts to avoid warning
 1344 	messages in printf statements.
 1345 
 1346 	Unrelated:
 1347 
 1348 	* configure.ac: Add check for gai_strerror.
 1349 	* io.c (socketopen): Use gai_strerror to add more information
 1350 	if getaddrinfo fails.
 1351 
 1352 2017-08-25         Pat Rankin            <r.pat.rankin@gmail.com>
 1353 
 1354 	* builtin.c (TYPE_MINIMUM): Use type uintmax_t for the calculation,
 1355 	deferring the cast to the target type until the final result.
 1356 
 1357 2017-08-27         Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 1358 
 1359 	* mbsupport.h [__DJGPP_]: Provide multi-byte specific declarations
 1360 	and definitions for DJGPP.
 1361 
 1362 2017-08-23         Arnold D. Robbins     <arnold@skeeve.com>
 1363 
 1364 	* README.git: Minor edits to make build steps clearer.
 1365 
 1366 2017-08-21         Daniel Richard G.     <skunk@iSKUNK.ORG>
 1367 
 1368 	* awk.h (c_func): Renamed to c_function to avoid conflict.
 1369 	with z/OS headers.
 1370 	* ext.c, interpret.h: Ditto.
 1371 	* configure: Regenerated after update to m4/arch.m4.
 1372 
 1373 2017-08-18         Arnold D. Robbins     <arnold@skeeve.com>
 1374 
 1375 	* debug.c (do_set_var): Fix typos in error messages.
 1376 	Thanks to Jean-Philippe Guerard
 1377 	<jean-philippe.guerard@xn--tigreray-i1a.org> for the report.
 1378 
 1379 2017-08-17         Arnold D. Robbins     <arnold@skeeve.com>
 1380 
 1381 	* field.c (rebuild_record): Set new fields valref to 1 if
 1382 	original field's valref was > 1. Update the comment. Found
 1383 	by running chem.
 1384 	* mpfr.c (do_mpfr_compl): Fix typo in warning message.
 1385 	Thanks to Jean-Philippe Guerard
 1386 	<jean-philippe.guerard@xn--tigreray-i1a.org> for the report.
 1387 	* NEWS: Mention the Italian translation of the manual.
 1388 
 1389 2017-08-16         Arnold D. Robbins     <arnold@skeeve.com>
 1390 
 1391 	* gawkapi.c (assign_number): Clean up the code a bit.
 1392 	(api_get_mpfr, api_get_mpz): Add return NULL in non-MPFR case
 1393 	to avoid compiler warnings.
 1394 
 1395 2017-08-16         Arnold D. Robbins     <arnold@skeeve.com>
 1396 
 1397 	* config.guess: Update from GNULIB.
 1398 	* NEWS, README: Updated in preparation for release.
 1399 
 1400 2017-08-16         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1401 
 1402 	* gawkapi.c (assign_number): Add 'ifdef HAVE_MPFR' tests to get this
 1403 	to build in the absence of MPFR.
 1404 
 1405 2017-08-13         Arnold D. Robbins     <arnold@skeeve.com>
 1406 
 1407 	* gawkapi.h (gawk_api_major_version): Reset to 2 after merging
 1408 	in feature/api-mpfr branch.
 1409 	* NEWS: `intdiv' is not built-in; remove the entry for up and update
 1410 	numbering. Add note about API supporting GMP and MPFR values.
 1411 
 1412 2017-08-09         Arnold D. Robbins     <arnold@skeeve.com>
 1413 
 1414 	* gawkapi.h (check_mpfr_versions): Define differently based on if
 1415 	MPFR version macro is defined. Enhance body to use do/while(0).
 1416 	(dl_load): Call check_mpfr_versions unconditionally.
 1417 
 1418 2017-08-09         Arnold D. Robbins     <arnold@skeeve.com>
 1419 
 1420 	* main.c (usage): Add URL for Bug reporting info to the help message.
 1421 
 1422 	Unrelated:
 1423 
 1424 	* str_array.c (str_lookup): Make a copy of the string if it
 1425 	came from Nnull_string or a null field.  Thanks to
 1426 	Daniel Pettet for the report.
 1427 
 1428 2017-08-04         Arnold D. Robbins     <arnold@skeeve.com>
 1429 
 1430 	* array.c, awk.h, awkgram.y, builtin.c, cint_array.c,
 1431 	cmd.h, debug.c, eval.c, ext.c, field.c, gawkapi.c, gawkmisc.c,
 1432 	gettext.h, int_array.c, main.c, mpfr.c, msg.c, node.c, profile.c,
 1433 	re.c, str_array.c, symbol.c: Update copyright years.
 1434 
 1435 2017-08-04         Arnold D. Robbins     <arnold@skeeve.com>
 1436 
 1437 	* config.guess, mkinstalldirs: Updated from GNULIB.
 1438 
 1439 2017-08-01         Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 1440 
 1441 	Bring DJGPP support up to speed.
 1442 
 1443 	* awk.h: Add DJGPP in #if for include of nonposix.h
 1444 	* nonposix.h (btowc, putwc): Add declarations for DJGPP.
 1445 
 1446 2017-07-26         Arnold D. Robbins     <arnold@skeeve.com>
 1447 
 1448 	* awk.h (validate_qualified_name): Return type back to bool.
 1449 	* awkgram.y (validate_qualified_name): Return type back to bool.
 1450 	(lookup_builtin): Make allowances for `awk::' prefix on name.
 1451 	* interpret.h (r_interpret): For indirect call, always pass true
 1452 	for do_qualify argument of lookup.
 1453 	* main.c (main): Make note of errors in -v values, use this
 1454 	to exit failure if any happen.  Only change current_namespace
 1455 	to 'awk::' if doing pretty printing.
 1456 	(arg_assign): If validate_qualified name returns false, error out.
 1457 
 1458 2017-07-26         Arnold D. Robbins     <arnold@skeeve.com>
 1459 
 1460 	* awkgram.y (set_namespace): Change return type void, adjust
 1461 	all return statements.
 1462 	[@namespace]: Don't YYABORT on bad namespace so that we can check
 1463 	the rest of the program.
 1464 	(validate_qualified_name): Check traditional / posix first. Return
 1465 	after printing an error message; we don't want to print multiple
 1466 	messages for the same identifer.
 1467 	* interpret.h (r_interpret): For indirect call, set do_qualify
 1468 	parameter of lookup based on presence of a colon.
 1469 
 1470 2017-07-20         Arnold D. Robbins     <arnold@skeeve.com>
 1471 
 1472 	Make qualified names work with -v and command-line assignments.
 1473 
 1474 	* awk.h (validate_qualified_name, check_qualified_name): Declare.
 1475 	* awkgram.y (validate_qualified_name): No longer static.
 1476 	(check_qualified_name): Ditto.
 1477 	* main.c (arg_assign): Allow colons in identifiers. If not a
 1478 	bad identifier, call validate_qualified_name and instead of
 1479 	check_special use check_qualified_name.
 1480 
 1481 2017-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 1482 
 1483 	Allow identifiers that are gawk extensions to be used as plain
 1484 	identifiers outside the "awk" namespace. Make the real
 1485 	builtins available via awk::builtin_name(). Standard awk reserved
 1486 	words and builtin functions remain reserved.
 1487 
 1488 	* awk.h (getfname): Add boolean parameter to prepend namespace
 1489 	or not.
 1490 	* awkgram.y (check_qualified_name): New function. Enforces that
 1491 	standard awk reserved words and functions aren't allowed, and
 1492 	allows awk::gawk_extension from non-"awk" namespace.
 1493 	[direct_func_call]: Always convert name to fully qualified.
 1494 	(getfname): Add boolean parameter to prepend namespace
 1495 	or not. Adjust code.
 1496 	(yylex): Separate out validation code from code building the
 1497 	NAME token.  Use check_qualified_name to decide if token is
 1498 	special instead of check_special.
 1499 	(validate_qualified_name): Just checks the form of the fully
 1500 	qualified name.
 1501 	* debug.c (print_instruction): Update call to getfname.
 1502 	* profile.c (pprint): Update call to getfname.
 1503 
 1504 2017-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 1505 
 1506 	* awkgram.y [direct_func_call]: Save full variable name for
 1507 	indirect calls too.
 1508 
 1509 2017-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 1510 
 1511 	* awkgram.y [non_post_simp_exp]: Merge LEX_BUILTIN and
 1512 	LEX_LENGTH expansions.
 1513 	(lookup_builtin): Move MPFR test to after test for sub builtin.
 1514 
 1515 	* awkgram.y [non_post_simp_exp]: Unmerge LEX_BUILTIN and
 1516 	LEX_LENGTH expansions. This introduced a reduce/reduce
 1517 	conflict, and those are bad.  I don't know why I didn't
 1518 	notice this earlier. Sigh.
 1519 
 1520 2017-07-15         Arnold D. Robbins     <arnold@skeeve.com>
 1521 
 1522 	Revert change of 2016-07-24 that always runs the dfa
 1523 	matcher. Based on a bug report from Alexandre Oliva
 1524 	<lxoliva@fsfla.org>, DFA can cause gawk to hang, even
 1525 	in the C locale.
 1526 
 1527 	* re.c (research): Don't use dfa if need_start is true.
 1528 
 1529 2017-07-13         Arnold D. Robbins     <arnold@skeeve.com>
 1530 
 1531 	More rationalization of the namespace code.
 1532 
 1533 	* awk.h (is_valid_identifier): Declare.
 1534 	* awkgram.y (grammar: direct_func_call): Store the fully qualified
 1535 	name in the op code.
 1536 	(yylex): Disallow reserved words and functions as namespace name.
 1537 	(check_params): Small code edit
 1538 	(validate_qualified_name): Use is_lsetter.
 1539 	(set_namespace): Check for NULL pointer first! Use is_valid_identifier
 1540 	instead of inline code.  Disallow using reserved words as namespace
 1541 	names.
 1542 	* ext.c (is_valid_identifier): No longer static.
 1543 	(make_builtin): Check name and namespace against reserved words and
 1544 	fatal error if found.
 1545 	* gawkapi.c (ns_lookup): New function to look for variables
 1546 	in namespaces.
 1547 	(api_sym_lookup): Check namespace for validity and use ns_lookup.
 1548 	(api_sym_update): Ditto.
 1549 	* profile.c (pp_print): Correctly print full function name
 1550 	in a function call.
 1551 
 1552 2017-07-11         Arnold D. Robbins     <arnold@skeeve.com>
 1553 
 1554 	Continue adding namespace support to the extension API.
 1555 
 1556 	* awk.h (make_builtin): Add leading name_space parameter.
 1557 	* ext.c (make_builtin): Add leading name_space parameter.
 1558 	Do the appropriate checking and building of a name before
 1559 	installing in the symbol table.
 1560 	* gawkapi.c (add_ext_func): Use name_space, not namespace.
 1561 	Check that the parameter isn't NULL.
 1562 	(api_sym_lookup, api_sym_update): Use name_space, not namespace.
 1563 	* gawkapi.h: Use name_space, not namespace, everywhere.
 1564 
 1565 2017-07-11         Arnold D. Robbins     <arnold@skeeve.com>
 1566 
 1567 	* awk.h (is_letter): Add declaration.
 1568 	* ext.c (is_valid_identifier): New function.
 1569 	(make_builtin): Use is_valid_identifier instead of inline code.
 1570 	(is_letter): Moved from here ...
 1571 	* awkgram.y (is_letter): ... to here.
 1572 	(yylex): Use is_letter instead of a test.
 1573 	* command.y (yylex): Ditto.
 1574 	* main.c (arg_assign): Ditto.
 1575 
 1576 2017-07-07         Arnold D. Robbins     <arnold@skeeve.com>
 1577 
 1578 	Remove warnings from GCC 7.1 compilation.
 1579 
 1580 	* awk.h (fatal_tag_valid): Change type to int.
 1581 	* awkgram.y (yylex): Set did_newline to true instead of using ++.
 1582 	* builtin.c (format_tree): Set lj to true instead of using ++.
 1583 	* cmd.h (pager_quit_tag_valid): Change type to int.
 1584 	* debug.c (pager_quit_tag_valid): Change type to int.
 1585 	(do_clear): Make bp_found an int, change uses.
 1586 	(do_run): Treat fatal_tag_valid as an int.
 1587 	* msg.c (fatal_tag_valid): Change type to int.
 1588 
 1589 2017-07-07         Arnold D. Robbins     <arnold@skeeve.com>
 1590 
 1591 	* awkgram.y (yyerror): Produce better diagnostics for source
 1592 	files that are not whole syntactic units.
 1593 
 1594 	* gawkapi.c (api_sym_lookup, api_sym_update): Add namespace parameter.
 1595 	Currently unused.
 1596 	* gawkapi.h (api_sym_lookup, api_sym_update): Add namespace parameter.
 1597 	(api_sym_lookup_ns, api_sym_update_ns): New macros.
 1598 	(api_sym_lookup, api_sym_update): Adjust macro bodies.
 1599 
 1600 2017-07-07         Arnold D. Robbins     <arnold@skeeve.com>
 1601 
 1602 	* gawapi.h: Bring descriptive comments up to date, minor edits.
 1603 	* io.c: Add some initial comments to functions where they were missing.
 1604 
 1605 2017-07-03         Arnold D. Robbins     <arnold@skeeve.com>
 1606 
 1607 	* gawkapi.h, gawkapi.c: Typo fixes in comments.
 1608 
 1609 2017-07-01         Arnold D. Robbins     <arnold@skeeve.com>
 1610 
 1611 	* symbol.c (install): Don't call fix_up_namespace if
 1612 	installing parameters.
 1613 	* profile.c (remove_namespace): Renamed to
 1614 	(adjust_namespace): Make smarter and add boolean parameter for
 1615 	if return was mallc'ed. Adjust calls.
 1616 
 1617 2017-06-30         Arnold D. Robbins     <arnold@skeeve.com>
 1618 
 1619 	Add namespace info into Op_Rule and Op_Func.
 1620 	Fix memory management problem.
 1621 	The changes temporarily break the test suite.
 1622 
 1623 	* awk.h (MAX_INSTRUCTION_ALLOC): Increase to 4.
 1624 	(Op_K_namespace): Remove, not needed.
 1625 	* eval.c (optypetab): Remove Op_K_namespace.
 1626 	* awkgram.y (make_pp_namespace): New function.
 1627 	(yylex): For BEGIN etc, allocate 4 in the instruction.
 1628 	(install_func): Save namespace name for Op_rule.
 1629 	(append_rule): Save namespace name for Op_rule.
 1630 	* debug.c (print_instruction): Print namespace for Op_rule, Op_func.
 1631 	Remove Op_K_namespace.
 1632 	* profile.c (pp_namespace, remove_namespace): New functions.
 1633 	(pprint): Call `pp_namespace'. Use `remove_namespace' on variable
 1634 	names.
 1635 	(pp_func): Ditto on both.
 1636 	* symbol.c (lookup): Initialize `malloced' to false.
 1637 	(install): Ditto.
 1638 
 1639 	Unbreak the test suite:
 1640 
 1641 	* awk.h (namespace_changed): Declare new boolean variable.
 1642 	* awkgram.y (namespace_changed): Define new boolean variable.
 1643 	(set_namespace): Set it to true when the namespace is changed.
 1644 	* main.c (main): Set current_namespace to "awk::" for the pretty
 1645 	printer.
 1646 	* profile.c (pp_namespace): If namespace_changed is false, return.
 1647 
 1648 2017-06-28         Arnold D. Robbins     <arnold@skeeve.com>
 1649 
 1650 	* awk.h [ns_name]: Add macro in preparation for use.
 1651 	* debug.c (print_instruction): Add case for Op_K_namespace.
 1652 	Not really used yet.
 1653 	* symbol.c (fix_up_namespace): Bug fix to always allocate
 1654 	memory for a full name. Add boolean parameter to indicate
 1655 	if memory was malloc'ed or not.
 1656 	(lookup): Adjust call to fix_up_namespace and use make_str_node
 1657 	if the string was malloced.
 1658 	(install): Ditto.
 1659 
 1660 2017-06-26         Arnold D. Robbins     <arnold@skeeve.com>
 1661 
 1662 	* configure.ac: Turn a tab into a space in AC_DEFINE(SUPPLY_INTDIV).
 1663 
 1664 2017-06-25         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1665 
 1666 	* gawkmisc.c (xmalloc): Remove function now in support/xalloc.h.
 1667 
 1668 2017-06-22         Arnold D. Robbins     <arnold@skeeve.com>
 1669 
 1670 	Make pretty-printing include parentheses that were explicitly
 1671 	in the source code. Thanks to Hermann Peifer for the bug report.
 1672 
 1673 	* awk.h (OPCODE): Add Op_parens.
 1674 	* awkgram.y [Grammar]: If pretty-printing, add Op_parens ot end of
 1675 	list for parenthesized expression.
 1676 	* eval.c (optypetab): Add Op_parens.
 1677 	* interpret.h (r_interpret): Ditto.
 1678 	* profile.c (pprint): Ditto.  For ?:, don't parenthesize it.
 1679 	(pp_parenthesize): If string starts with left paren, return early.
 1680 	(parenthesize): Don't call div_on_left_mul_on_right.
 1681 	(div_on_left_mul_on_right): Remove function.
 1682 	(pp_concat): Don't add parentheses if expressions already have them.
 1683 	* NEWS: Updated.
 1684 
 1685 2017-06-21         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1686 
 1687 	Replace malloc/memset combinations with calloc by using the new ezalloc
 1688 	macro.
 1689 	* awkgram.y (yyerror, do_add_srcfile, funcuse): Replace emalloc+memset
 1690 	with ezalloc.
 1691 	* cint_array.c (cint_lookup, cint_copy, tree_lookup, tree_copy,
 1692 	leaf_lookup, leaf_copy): Ditto.
 1693 	* command.y (mk_cmdarg): Ditto.
 1694 	* debug.c (add_item): Ditto.
 1695 	* eval.c (setup_frame): Ditto.
 1696 	* field.c (set_record): Ditto.
 1697 	* gawkapi.c (api_flatten_array_typed): Ditto.
 1698 	* int_array.c (int_copy, grow_int_table): Ditto.
 1699 	* io.c (init_awkpath, iop_alloc): Ditto.
 1700 	* node.c (str2wstr): Ditto.
 1701 	* re.c (make_regexp): Ditto.
 1702 	* str_array.c (str_copy, grow_table): Ditto.
 1703 	* symbol.c (make_params, new_context): Ditto.
 1704 
 1705 2017-06-19         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1706 
 1707 	* awk.h (ezalloc): Add new macro to allocate memory initialized to zero.
 1708 	(ezalloc_real): New inline function to call calloc.
 1709 	* gawkapi.h (ezalloc): Add new API macro to allocate memory initialized
 1710 	to zero.
 1711 
 1712 2017-06-18         Arnold D. Robbins     <arnold@skeeve.com>
 1713 
 1714 	* builtin.c (mbc_char_count): Fix code to correctly traverse
 1715 	the string. Thanks to Hermann Peifer for the bug report.
 1716 	* config.guess, config.sub: Update to latest from GNULIB.
 1717 	* gettext.h: Pull in a few nice changes from GNULIB version.
 1718 
 1719 2017-06-16         Arnold D. Robbins     <arnold@skeeve.com>
 1720 
 1721 	* awk.h (lookup): Add second parameter.
 1722 	* array.c (assoc_list): Adjust call to lookup.
 1723 	* awkgram.y (grammar, parms_shadow, install_function, variable):
 1724 	Ditto.
 1725 	* command.y [Grammar]: Ditto.
 1726 	* debug.c (find_symbol): Ditto.
 1727 	* ext.c (make_builtin): Ditto.
 1728 	* gawkapi.c (api_sym_lookup, api_sym_update): Ditto.
 1729 	* interpret.h (r_interpret): Ditto.
 1730 	* main.c (arg_assign): Ditto.
 1731 	(main): Reset current_namespace after parsing.
 1732 	* symbol.c (lookup): New second parameter, do_qualify. Use it
 1733 	to qualify names or not.
 1734 	(install): Call fix_up_namespace.
 1735 	(is_all_upper): New helper routine.
 1736 	(fix_up_namespace): New function.
 1737 
 1738 2017-06-13         Arnold D. Robbins     <arnold@skeeve.com>
 1739 
 1740 	* awk.h (awk_namespace, current_namespace): Move to const char.
 1741 	(SRCFILE): Add namespace element.
 1742 	* awkgram.y (awk_namespace, current_namespace): Move to const char.
 1743 	(set_namespace): New function.
 1744 	[Grammer]: Call it.
 1745 	(tokentab): Add "namespace" entry.
 1746 	(include_source): Push the current namespace.
 1747 	(next_sourcefile): Pop the current namespace.
 1748 	(yylex): Add lint warning if a reserved word is used as a namespace
 1749 	name.
 1750 	(validate_qualified_name): Make it an error to use a reserved
 1751 	word as the second part of a fully qualified name.
 1752 
 1753 2017-06-11         Arnold D. Robbins     <arnold@skeeve.com>
 1754 
 1755 	* awk.h (awk_namespace, current_namespace): Declare.
 1756 	(opcodeval): Add Op_K_namespace.
 1757 	* awkgram.y (awk_namespace, current_namespace): Define.
 1758 	(LEX_NAMESPACE): Add lexing and parsing of `@namespace directive'.
 1759 	(tokentab): Add "namespace" entry.
 1760 	(yylex): Check if first part of qualified identifier is
 1761 	a reserved word or function.
 1762 	* eval.c (optypetab): Add Op_K_namespace.
 1763 
 1764 2017-06-06         Arnold D. Robbins     <arnold@skeeve.com>
 1765 
 1766 	* awkgram.y (yylex): Allow :: in identifiers (the "NAME" token).
 1767 	Use validate_qualified_name to check it.
 1768 	(validate_qualified_name): New function.
 1769 
 1770 2017-05-30         Arnold D. Robbins     <arnold@skeeve.com>
 1771 
 1772 	* awkgram.y (nextc): Force -e chunks to be syntactic units.
 1773 	Needed for namespaces to work correctly.
 1774 
 1775 2017-05-30         Arnold D. Robbins     <arnold@skeeve.com>
 1776 
 1777 	* NEWS: Mention PROCINFO["argv"].
 1778 
 1779 2017-05-24         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1780 
 1781 	* field.c (set_FIELDWIDTHS): Add check to protect against blank
 1782 	characters after a `:' skip separator. 
 1783 	Fix field number in error message, thanks to a bug report
 1784 	from Michal Jaegermann.
 1785 
 1786 2017-05-23         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1787 
 1788 	* field.c (set_FIELDWIDTHS): Simplify the logic and consistentify
 1789 	use of UINT_MAX.  Make sure that negative value after : is caught.
 1790 
 1791 2017-05-23         Arnold D. Robbins     <arnold@skeeve.com>
 1792 
 1793 	* field.c (fw_parse_field): Stop upon hitting the end of the
 1794 	record; this enables correct counting of the number of fields.
 1795 	(set_FIELDWIDTHS): Add `*' at end as meaning ``all the rest
 1796 	of the data on the line.'' Allow skip:* as well.
 1797 	* NEWS: Update information about FIELDWIDTHS.
 1798 
 1799 2017-05-20         Arnold D. Robbins     <arnold@skeeve.com>
 1800 
 1801 	* awkgram.y (add_lint): Make ``no effect'' check smarter about
 1802 	reporting line numbers.
 1803 
 1804 2017-05-01         Arnold D. Robbins     <arnold@skeeve.com>
 1805 
 1806 	* awkgram.y (nextc): Fix to change of 2017-04-24 such that
 1807 	@include works in multibyte locales. Thanks to Hermann
 1808 	Peifer for the bug report.
 1809 
 1810 2017-04-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1811 
 1812 	* awkgram.y (make_regnode): Fix bug -- we should not set valref to 1
 1813 	when creating a node of type Node_regex, since valref is appropriate
 1814 	only for Node_val nodes. This fixes a bug introduced in commit
 1815 	687e6594. Also, add an assert to make it clear that this function
 1816 	supports only Node_regex and Node_dynregex.
 1817 	* awk.h (NODE): Restore sref to the `val' subportion, since it is not
 1818 	really needed for Node_regex, now that the bug in make_regnode has
 1819 	been fixed.
 1820 	(valref): Restore macro definition.
 1821 
 1822 2017-04-24         Arnold D. Robbins     <arnold@skeeve.com>
 1823 
 1824 	* awk.h (NODE): Additional cleanups. Removed `aq' and `param_list'
 1825 	elements from various unions and removed 'nextp' and
 1826 	`a_opaque' defines. None of these were in use.
 1827 	Rework the comment for valref, per suggestion from
 1828 	Andrew Schorr.
 1829 
 1830 2017-04-23         Arnold D. Robbins     <arnold@skeeve.com>
 1831 
 1832 	* awkgram.y (nextc): Adjust so that 3.1.x behavior is restored
 1833 	whereby --source arguments are concatenated. Thanks to
 1834 	"Neil R. Ormos" <ormos-gnulists17@ormos.org> for the report.
 1835 
 1836 2017-04-21         Arnold D. Robbins     <arnold@skeeve.com>
 1837 
 1838 	* awk.h (NODE): Put the `val' subportion back the way it
 1839 	was and move valref (formerly sref) out of the unions
 1840 	entirely. This was the real problem. Rework the corresponding
 1841 	commentary.
 1842 	[valref]: Removed the macro definition.
 1843 
 1844 2017-04-20         Arnold D. Robbins     <arnold@skeeve.com>
 1845 
 1846 	* configure.ac: Make letter case usage in the various
 1847 	AC_ARG_ENABLE messages consistent with the rest of configure
 1848 	output.
 1849 	(--disable-mpfr): Add this option to make it easier
 1850 	to check compiles without MPFR. Motivated by:
 1851 	* awk.h (NODE): Rearrange the layout of the 'val' subportion
 1852 	of the union to fix alignment problems when compiling without
 1853 	MPFR.  The problem only happened on 64-bit compiles, not
 1854 	32-bit compiles.
 1855 
 1856 2017-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 1857 
 1858 	Rename intdiv it intdiv0 and require enabling at configure time.
 1859 
 1860 	* awkgram.y (tokentab): Bracket intdiv0 in #ifdef SUPPLY_INTDIV.
 1861 	(snode): Similar.
 1862 	* builtin.c (do_intdiv): Bracket in #ifdef SUPPLY_INTDIV.
 1863 	* mpfr.c (do_mpfr_intdiv): Bracket in #ifdef SUPPLY_INTDIV.
 1864 	* configure.ac: Add --enable-builtin-intdiv0 option. If enabled,
 1865 	also revise doc/gawktexi.in.
 1866 
 1867 2017-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 1868 
 1869 	* builtin.c (do_intdiv): Use DEREF on the arguments.
 1870 	Thanks to Andrew Schorr for finding the problem.
 1871 	* mpfr.c (do_mpfr_intdiv): Return -1 if numerator or denominator
 1872 	are not valid numbers.  Unref various bits first.
 1873 
 1874 2017-04-13         Arnold D. Robbins     <arnold@skeeve.com>
 1875 
 1876 	* awk.h (make_number_node): Simplify.
 1877 	* mpfr.c (mpg_node): Change parameter name to `flags'.
 1878 
 1879 2017-04-12         Arnold D. Robbins     <arnold@skeeve.com>
 1880 
 1881 	* mpfr.c (mpg_format_val): Set STRCUR flag when we're done.
 1882 	Fixes a memory leak. Thanks to valgrind for the report.
 1883 
 1884 	* builtin.c (do_dcgettext): Move declaration of reslen to
 1885 	outside the ifdefs. Thanks to Hermann Peifer for the report.
 1886 
 1887 	* gawkapi.c (awk_value_to_node): Initialize ext_ret_val to NULL
 1888 	to avoid compiler warnings.
 1889 
 1890 2017-04-12         Manuel Collado        <m-collado@users.sourceforge.net>
 1891 
 1892 	Fix the FPAT bug reported by Ed Morton in the gawk-bug mailing list.
 1893 
 1894 	* awk.h (Regexp): Remove the non_empty flag.
 1895 	* field.c (fpat_parse_field): Restructure the code to reduce complexity
 1896 	and document the new structure.
 1897 
 1898 	* field.c (fpat_parse_field): Further restructuring to avoid
 1899 	invalid reads as reported by valgrind.
 1900 
 1901 2017-04-10         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1902 
 1903 	* awk.h (enum opcodeval): For the avoidance of doubt, specify that
 1904 	Op_illegal must equal zero.
 1905 	* symbol.c (bcfree): Improve clarity by setting opcode to Op_illegal
 1906 	instead of 0.
 1907 	(free_bc_mempool): Improve clarity by comparing opcode to Op_illegal
 1908 	instead of to 0.
 1909 
 1910 	* field.c (set_FIELDWIDTHS): Set use_chars to awk_true, since its
 1911 	type is awk_bool_t.
 1912 
 1913 2017-04-10         Arnold D. Robbins     <arnold@skeeve.com>
 1914 
 1915 	* symbol.c (free_bc_mempool): Change `first' from int to bool.
 1916 
 1917 2017-04-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1918 
 1919 	* field.c (fw_parse_field): Edit comment about resetting shift state.
 1920 	* gawkapi.h (awk_fieldwidth_info_t): Make white space more uniform.
 1921 
 1922 2017-04-08  Eli Zaretskii  <eliz@gnu.org>
 1923 
 1924 	* main.c (usage, copyleft) [__MINGW32__]:
 1925 	* io.c (non_fatal_flush_std_file, close_io) [__MINGW32__]: Call
 1926 	w32_maybe_set_errno to correctly set errno to EPIPE when appropriate.
 1927 
 1928 	* awk.h (die_via_sigpipe) [__MINGW32__]: MinGW-specific definition.
 1929 
 1930 2017-04-07         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1931 
 1932 	* awk.h (INSTRUCTION_POOL): Redefine as an array of structures so we
 1933 	can track allocated blocks.
 1934 	* symbol.c (pools): Make it a pointer to avoid copying.
 1935 	(struct instruction_block): Define structure to hold a block of
 1936 	allocated instructions.
 1937 	(bcfree): Update to use new INSTRUCTION_POOL definition.
 1938 	(bcalloc): Allocate an instruction by searching first on the free
 1939 	list, second for free space in the current block, or third by
 1940 	allocating a new block.
 1941 	(set_context): Update to reflect that pools is now a pointer.
 1942 	(free_bc_mempool): New helper function to free a pool of a certain size.
 1943 	(fre_bcpool): Call free_bc_mempool for each pool.
 1944 
 1945 2017-04-04         Arnold D. Robbins     <arnold@skeeve.com>
 1946 
 1947 	* awk.h (INSTRUCTION): Add pool_size member.
 1948 	[MAX_INSTRUCTION_ALLOC]: New macro.
 1949 	(INSTRUCTION_POOL): New type.
 1950 	(struct context): Use INSTRUCTION_POOL.
 1951 	* array.c (assoc_list): Reorg the code a bit to make sure
 1952 	to always free the INSTRUCTIONs allocated for calling a
 1953 	user-supplied sorting function. Based on code by
 1954 	Andrew Schorr.
 1955 	* symbol.c (free_bcpool): Rework to use an INSTRUCTION_POOL.
 1956 	(bcfree, bcalloc): Rework to use separate chains in
 1957 	the instruction pool.
 1958 	(set_context): Update appropriately.
 1959 
 1960 2017-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 1961 
 1962 	* field.c (parse_field_func_t): New typedef. Used as needed.
 1963 	(fw_parse_field): Edit comment about resetting shift state.
 1964 	(set_parser): Fix leading comment's style and type of argument.
 1965 	(set_FIELDWIDTHS): Improve the fatal error message.
 1966 	* gawkapi.h: Minor edits in some comments.
 1967 
 1968 2017-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 1969 
 1970 	Cause EPIPE errors to stdout to generate a real SIGPIPE.
 1971 
 1972 	* awk.h (die_via_sigpipe): New macro.
 1973 	* builtin.c (efwrite): Use it.
 1974 	* io.c (non_fatal_flush_std_file): Ditto.
 1975 	* main.c (usage): Ditto.
 1976 
 1977 2017-03-25         Arnold D. Robbins     <arnold@skeeve.com>
 1978 
 1979 	* io.c (flush_io): Use r_fatal and r_warning for messagefunc
 1980 	in the loop.
 1981 
 1982 2017-03-24         Arnold D. Robbins     <arnold@skeeve.com>
 1983 
 1984 	* builtin.c (efwrite): Exit successfully upon EPIPE, as SIGPIPE
 1985 	done. Improve error messages upon failure to write.
 1986 	(do_fflush): Update ERRNO for non-fatal flush failures.
 1987 	* io.c (non_fatal_flush_std_file): Update ERRNO when flush is
 1988 	non-fatal.
 1989 	(flush_io): If a redirect is marked non-fatal, only warning,
 1990 	not fatal message.
 1991 
 1992 2017-03-23         Arnold D. Robbins     <arnold@skeeve.com>
 1993 
 1994 	* config.sub: Updated again.
 1995 
 1996 2017-03-22         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 1997 
 1998 	* NEWS: Document new PROCINFO["FS"] value of "API".
 1999 
 2000 2017-03-22         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2001 
 2002 	* NEWS: Document new FIELDWIDTHS skip capability and API input parser
 2003 	field parsing enhancement.
 2004 
 2005 2017-03-22         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2006 
 2007 	* gawkapi.h (awk_input_buf_t): Update get_record comment regarding the
 2008 	new field_width argument.
 2009 
 2010 2017-03-21         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2011 
 2012 	* gawkapi.h (awk_fieldwidth_info_t): Define new structure to contain
 2013 	API field parsing info, replacing the previous awk_input_field_info_t
 2014 	array.
 2015 	(awk_fieldwidth_info_size): Define macro to calculate size of the
 2016 	variable-length awk_fieldwidth_info_t structure.
 2017 	(awk_input_buf_t): Update get_record prototype to update the type
 2018 	of the final field_width argument from 'const awk_input_field_info_t **'
 2019 	to 'const awk_fieldwidth_info_t **'.
 2020 	* awk.h (set_record): Change 3rd argument from
 2021 	'const awk_input_field_info_t *' to 'const awk_fieldwidth_info_t *'.
 2022 	* io.c (inrec, do_getline_redir, do_getline): Change field_width type
 2023 	from 'const awk_input_field_info_t *' to
 2024 	'const awk_fieldwidth_info_t *'.
 2025 	(get_a_record): Change field_width argument type from
 2026 	'const awk_input_field_info_t **' to 'const awk_fieldwidth_info_t **'.
 2027 	* field.c (api_parser_override): Define new boolean to track whether
 2028 	API parsing is currently overriding default parsing behavior.
 2029 	(api_fw): Change type from 'const awk_input_field_info_t *'
 2030 	to 'const awk_fieldwidth_info_t *'.
 2031 	(FIELDWIDTHS): Change type from 'int *' to 'awk_fieldwidth_info_t *'.
 2032 	(set_record): Use new boolean api_parser_override to track whether
 2033 	API parsing override is in effect, since we can no longer discern
 2034 	this from the value of parse_field -- FIELDWIDTHS parsing uses the
 2035 	same function.
 2036 	(calc_mbslen): New function to calculate the length of a multi-byte 
 2037 	string.
 2038 	(fw_parse_field): Enhance to support the awk_fieldwidth_info_t 
 2039 	structure instead of simply using an array of integer field widths.
 2040 	(api_parse_field): Remove function no longer needed since fw_parse_field
 2041 	now supports both FIELDWIDTHS and API parsing.
 2042 	(set_parser): Use api_parser_override instead of comparing parse_field
 2043 	to api_parse_field.
 2044 	(set_FIELDWIDTHS): Enhance to use new awk_fieldwidth_info_t structure
 2045 	and parse new skip prefix for each field.
 2046 	(current_field_sep): Use api_parser_override flag instead of comparing
 2047 	to api_parse_field.
 2048 	(current_field_sep_str): Ditto.
 2049 
 2050 2017-03-20         Arnold D. Robbins     <arnold@skeeve.com>
 2051 
 2052 	Improve handling of EPIPE. Problems reported by
 2053 	Alexandre Ferrieux <alexandre.ferrieux@orange.com>
 2054 	and David Kerns <david.t.kerns@gmail.com>.
 2055 
 2056 	* awk.h (ignore_sigpipe, set_sigpipe_to_default,
 2057 	non_fatal_flush_std): Declare new functions.
 2058 	(ignore_sigpipe, set_sigpipe_to_default,
 2059 	non_fatal_flush_std): New macros.
 2060 	* builtin.c (do_fflush): When nonfatal not in force, flush
 2061 	of stdout/stderr and EPIPE exits, simulating SIGPIPE, as
 2062 	in nawk/mawk. Flush of other redirections with EPIPE now
 2063 	also fatals.
 2064 	(do_system): Use ignore_sipipe and set_sigpipe_to_default
 2065 	instead of uglier inline ifdefed code.
 2066 	* main.c (main): Ditto.
 2067 	* io.c (redirect_string, two_way_open, gawk_popen): Ditto.
 2068 	(flush_io): Use non_fatal_flush_std for stdout and stderr.
 2069 
 2070 	Unrelated:
 2071 
 2072 	* config.guess, config.rpath, config.sub, install-sh:
 2073 	Sync with GNULIB.
 2074 
 2075 2017-03-16         Arnold D. Robbins     <arnold@skeeve.com>
 2076 
 2077 	* configure.ac: Some cleanups.
 2078 
 2079 2017-03-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2080 
 2081 	* gawkapi.h (awk_input_field_info_t): Define new structure to contain
 2082 	API field parsing info.
 2083 	(awk_input_buf_t): Update get_record prototype to use an array of
 2084 	awk_input_field_info_t instead of integers.
 2085 	* awk.h (set_record): Change 3rd argument from 'const int *' to
 2086 	'const awk_input_field_info_t *'.
 2087 	* field.c (api_fw): Now points to an array of awk_input_field_info_t
 2088 	instead of integers.
 2089 	(set_record): Change 3rd argument to point to an array of
 2090 	awk_input_field_info_t.
 2091 	(api_parse_field): Update parsing logic to use awk_input_field_info_t
 2092 	structures instead of an array of integers.
 2093 	* io.c (inrec, do_getline_redir, do_getline): Change field_width type
 2094 	from 'const int *' to 'const awk_input_field_info_t *'.
 2095 	(get_a_record): Change field_width argument type from 'const int **'
 2096 	to 'const awk_input_field_info_t **'.
 2097 
 2098 2017-03-09         Arnold D. Robbins     <arnold@skeeve.com>
 2099 
 2100 	* field.c: Minor style edits.
 2101 
 2102 2017-03-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2103 
 2104 	* field.c (normal_parse_field): Renamed from save_parse_field to reflect
 2105 	better its purpose. Added a comment to explain more clearly what's
 2106 	going on.
 2107 	(set_record, set_parser): Rename save_parse_field to normal_parse_field.
 2108 
 2109 2017-03-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2110 
 2111 	* gawkapi.h (awk_input_buf_t): Remove field_width array and instead
 2112 	add it as a 6th argument to the get_record function. This should
 2113 	not break existing code, since it's fine to ignore the additional
 2114 	argument. Document the behavior of the field_width argument.
 2115 	* io.c (inrec): Pass pointer to field_width array to get_a_record,
 2116 	and then hand it off to set_record.
 2117 	(do_getline_redir): If not reading into a variable, pass pointer to
 2118 	field_width array to get_a_record and then hand it off to set_record.
 2119 	(do_getline): Ditto.
 2120 	(get_a_record): Add a 4th field_width argument to pass through to
 2121 	the API get_record method.
 2122 
 2123 2017-03-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2124 
 2125 	* awk.h (set_record): Add a new argument containing a field-width
 2126 	array returned by an API parser.
 2127 	(field_sep_type): Add new enum value Using_API.
 2128 	(current_field_sep_str): Declare new function.
 2129 	* field.c (save_parse_field): New static variable to save the
 2130 	parse_field value in cases where it's overridden by API parsing.
 2131 	(api_fw): New static variable to hold pointer to API parser fieldwidth
 2132 	array.
 2133 	(set_record): Add new field-width array argument. If present, API
 2134 	parsing will override the default parsing mechanism.
 2135 	(api_parse_field): New field parser using field widths supplied by the
 2136 	API. This is very similar to the existing fw_parse_field function.
 2137 	(get_field): Fix typo in comment.
 2138 	(set_parser): New function to set default parser and check whether
 2139 	there's an API parser override in effect. Update PROCINFO["FS"] if
 2140 	something has changed.
 2141 	(set_FIELDWIDTHS): Use set_parser and stop updating PROCINFO["FS"].
 2142 	(set_FS): Ditto.
 2143 	(set_FPAT): Ditto.
 2144 	(current_field_sep): Return Using_API when using the API field parsing
 2145 	widths.
 2146 	(current_field_sep_str): New function to return the proper string
 2147 	value for PROCINFO["FS"].
 2148 	* gawkapi.h (awk_input_buf_t): Add field_width array to enable the
 2149 	parser get_record function to supply field widths to override the
 2150 	default gawk field parsing mechanism.
 2151 	* io.c (inrec): Pass iop->public.field_width to set_record as the
 2152 	3rd argument to enable API field parsing overrides.
 2153 	(do_getline_redir, do_getline): Ditto.
 2154 	* main.c (load_procinfo): Use new current_field_sep_str function
 2155 	instead of switching on the return value from current_field_sep.
 2156 
 2157 2017-02-23         Arnold D. Robbins     <arnold@skeeve.com>
 2158 
 2159 	* awk.h (boolval): Return bool instead of int.
 2160 	* eval.c (eval_condition): Same.
 2161 	* io.c (pty_vs_pipe): Same
 2162 	Thanks to Andrew Schorr for pointing these out.
 2163 
 2164 2017-02-21         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2165 
 2166 	* NEWS: Document that mktime now takes an optional utc-flag argument.
 2167 	* awkgram.y (tokentab): Modify mktime entry to indicate that it may
 2168 	accept two arguments.
 2169 	* builtin.c (mktime_tz): New function to run mktime in an arbitrary
 2170 	time zone. Code was copied from the Linux timegm man page.
 2171 	(do_mktime): Add support for new optional 2nd argument utc-flag by
 2172 	using the new mktime_tz function.
 2173 	(do_strftime): Change do_gmt type from int to bool.
 2174 
 2175 2017-02-17         Arnold D. Robbins     <arnold@skeeve.com>
 2176 
 2177 	* builtin.c (do_typeof): Handle arguments that have
 2178 	the NULL_FIELD flag set.
 2179 
 2180 2017-02-03         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2181 
 2182 	* awkgram.y (set_profile_text): Improve code clarity by using emalloc
 2183 	to allocate the string instead of abusing estrdup.
 2184 
 2185 2017-02-02         Arnold D. Robbins     <arnold@skeeve.com>
 2186 
 2187 	* awkgram.y (set_profile_next): Allocate an extra byte at the
 2188 	end for the NUL in case we add a sign. Thanks to Andrew Schorr
 2189 	for making me look at this code.
 2190 
 2191 	And later in the same day:
 2192 
 2193 	* awkgram.y (set_profile_next): Undo previous change, since estrdup
 2194 	handles it, but updated the comments.
 2195 
 2196 2017-02-01         Arnold D. Robbins     <arnold@skeeve.com>
 2197 
 2198 	* builtin.c (mbc_char_count): Remove spurious multiplies by
 2199 	gawk_mb_cur_max. Thanks to Andrew Schorr for making me look
 2200 	at this code.
 2201 
 2202 	Unrelated:
 2203 
 2204 	* awkgram.y (make_profile_number): Renamed to ...
 2205 	(set_profile_next): New function. All calls adjusted. Also improved
 2206 	use at MPFR number case.
 2207 
 2208 2017-01-28         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2209 
 2210 	* io.c (inetfile): Replace strncmp with memcmp in a few places, now
 2211 	that we are checking string length beforehand.
 2212 
 2213 2017-01-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2214 
 2215 	* io.c (redirect_string): Check explen positive before accessing *str.
 2216 	In lintwarn message, use explen string length. Pass length to inetfile.
 2217 	(devopen): Pass name length to inetfile.
 2218 	Stop assuming that remoteport is NUL-terminated.
 2219 	(two_way_open): Pass name length to inetfile.
 2220 	(inetfile): Stop assuming NUL string termination; add checks to avoid 
 2221 	string overrun.
 2222 
 2223 2017-01-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2224 
 2225 	* awk.h (str_terminate_f): New helper function for terminating a string
 2226 	NODE.
 2227 	(str_terminate): Macro wrapper to call str_terminate_f.
 2228 	(str_restore): New macro to restore the string.
 2229 	* builtin.c (do_strftime): Use str_terminate and str_restore.
 2230 	(do_dcgettext): Ditto, and remove saved_end flag since equivalent
 2231 	to testing (t2 != NULL). Fix overrun bug in calculating result
 2232 	length when !ENABLE_NLS.
 2233 	(do_dcngettext, do_bindtextdomain): Use str_terminate and str_restore.
 2234 	* interpret.h (Op_arrayfor_init, Op_indirect_func_call): Ditto.
 2235 	* str_array.c (env_remove): Ditto.
 2236 
 2237 2017-01-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2238 
 2239 	* interpret.h [UNFIELD]: Fix condition for assignment from
 2240 	value with valref == 1. Fixes problems introduced at gawk 4.1.2.
 2241 
 2242 2017-01-27         Arnold D. Robbins     <arnold@skeeve.com>
 2243 
 2244 	* interpret.h: Update copyright year.
 2245 	* debug.c (do_run): Rework error message to ease translation.
 2246 	Thanks to Rafael Fontenelle <rafaelff@gnome.org> and to
 2247 	Eli Zaretskii <eliz@gnu.org>.
 2248 
 2249 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2250 
 2251 	* builtin.c (do_dcgettext): First argument also needs protection
 2252 	from string overrun.
 2253 	(do_dcngettext): Need to terminate string1 and string2 also,
 2254 	and replace strlen(the_result), which could overrun.
 2255 	(do_bindtextdomain): Terminate both string args, and eliminate
 2256 	saved_end boolean which is redundant with (t2 != NULL).
 2257 
 2258 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2259 
 2260 	* interpret.h (Op_arrayfor_init): Protect against string overrun
 2261 	on sorting method.
 2262 	(Op_indirect_func_call): Terminate function name.
 2263 
 2264 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2265 
 2266 	* str_array.c (env_remove): Terminate string before calling unsetenv.
 2267 
 2268 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2269 
 2270 	* node.c (is_hex): Add a new argument pointing to the end of the string
 2271 	so we can check for string overrun.
 2272 	(r_force_number): Pass string end to is_hex.
 2273 
 2274 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2275 
 2276 	* awk.h (get_numbase): Add string length argument so we can operate
 2277 	on unterminated strings.
 2278 	* awkgram.y: Call get_numbase with string length, and fix off-by-one
 2279 	error in length passed to nondec2awknum: should be strlen(tokstart)-1
 2280 	based on surrounding code.
 2281 	* builtin.c (do_strtonum): Pass string length to get_numbase.
 2282 	(nondec2awknum): Check string length before accessing characters.
 2283 	* mpfr.c (force_mpnum): Pass string length to get_numbase.
 2284 	* node.c (r_force_number): Pass string length to get_numbase.
 2285 	(get_numbase): Add string length argument and honor it.
 2286 
 2287 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2288 
 2289 	* builtin.c (do_strftime): If format argument is passed, we need
 2290 	to terminate it in case it's a field variable.
 2291 
 2292 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2293 
 2294 	* node.c (r_format_val): Before we free s->stptr, make sure that it
 2295 	was malloced.
 2296 	(wstr2str): Add comment explaining why it's safe to free n->stptr
 2297 	without doing any checks.
 2298 	* mpfr.c (mpg_format_val): Ditto. And no need to reset the STRCUR flag
 2299 	that we just checked.
 2300 
 2301 2017-01-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2302 
 2303 	* awk.h (enum block_id): Remove BLOCK_INVALID, since it serves no
 2304 	useful purpose and seems to slow things down a bit.
 2305 	* node.c (nextfree): Remove first invalid entry.
 2306 
 2307 2017-01-25         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2308 
 2309 	* awk.h (BLOCK): Remove typedef. BLOCK was used for 2 different
 2310 	purposes: to contain a block allocation list header, and to hold
 2311 	each individual allocated item. This was confusing, because the "size"
 2312 	field was set only in the header, but not in each element.
 2313 	(struct block_header): The block header contains a pointer to the first
 2314 	element and the element size.
 2315 	(struct block_item): Represent a single allocated item. This contains
 2316 	only a pointer to the next element. This reduces the minimum allocated
 2317 	item size from 2 pointers to 1 (16 bytes to 8 bytes on x86_64).
 2318 	(nextfree): Change array item type from BLOCK to struct block_header.
 2319 	(getblock, freeblock): Change cast from 'BLOCK' to 'struct block_item'.
 2320 	* node.c (nextfree): Now an array of 'struct block_header' instead of
 2321 	BLOCK. Switch the ordering to put the next pointer before the size.
 2322 	(more_blocks): Replace 'BLOCK' with 'struct block_item', and add
 2323 	an assert to ensure that the allocation size is at least as large
 2324 	as 'struct block_item', i.e. 1 pointer.
 2325 
 2326 2017-01-22         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2327 
 2328 	* awk.h (numtype_choose): New backend macro used to implement
 2329 	various macros whose calculations depend on how a number is
 2330 	actually represented. This improves readability and should give
 2331 	a small performance improvement when not using extended precision.
 2332 	(get_number_ui, get_number_si, get_number_d, get_number_uj, iszero):
 2333 	Rewrite using new numtype_choose macro.
 2334 
 2335 2017-01-04         Arnold Robbins        <arnold@skeeve.com>
 2336 
 2337 	Trade space for time for programs that toggle IGNORECASE a lot.
 2338 	Brings 25% to 39% speedup.  NODE does not actually grow in size.
 2339 
 2340 	* awk.h (NODE::preg): Now an array of size two.
 2341 	[CASE]: Flag no longer needed, so removed.
 2342 	(IGNORECASE): Change type from int to bool.
 2343 	* awkgram.y (make_regnode): Build two copies of the compiled regexp,
 2344 	one without ignorecase, and one with.
 2345 	* io.c (RS_re): Array replacing RS_re_yes_case and RS_re_no_case.
 2346 	(set_RS): Use RS_re[IGNORECASE] as appropriate. Free and recompute
 2347 	as needed.
 2348 	* main.c (IGNORECASE): Change type from int to bool.
 2349 	* re.c (re_update): Simplify the code. No need to check CASE flag
 2350 	any longer. Recompute only if text of regexp changed.
 2351 	* symbol.c (free_bc_internal): Adjust to free both elements of
 2352 	m_re_reg.
 2353 
 2354 2017-01-18         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2355 
 2356 	* interpret.h (r_interpret): Increase robustness of the optimization
 2357 	logic in Op_assign_concat -- check that the node has MALLOC set,
 2358 	and make sure to wipe all flags other than MALLOC, STRING, STRCUR,
 2359 	and possibly WSTRCUR. Use STFMT_UNUSED define.
 2360 
 2361 2017-01-15         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2362 
 2363 	* interpret.h (r_interpret): Fix bug in Op_assign_concat reported
 2364 	on Cygwin mailing list. The string concatenation optimization was
 2365 	not updating the node correctly by setting STRING and STRCUR flags
 2366 	and setting stfmt.
 2367 
 2368 2017-01-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2369 
 2370 	Enhance API to support extended-precision arithmetic.
 2371 	* awk.h (enum block_id): Add new values BLOCK_MPFR and BLOCK_MPZ.
 2372 	(make_number_node): New inline function to reduce code duplication
 2373 	for creating numeric nodes.
 2374 	* gawkapi.h (gawk_api_major_version): Bump to 3.
 2375 	(awk_number_t): New typedef to represent numbers with varying internal
 2376 	representations.
 2377 	(awk_value_t): For numbers, replace double with awk_number_t.
 2378 	(num_value): Redefine.
 2379 	(num_type, num_ptr): New defines for awk_number_t union members.
 2380 	(gawk_api_t): Add constants for version checking: gmp_major_version,
 2381 	gmp_minor_version, mpfr_major_version, and mpfr_minor_version.
 2382 	Add functions api_get_mpfr and api_get_mpz to allocate memory for
 2383 	extended-precision numbers to hand to gawk.
 2384 	(get_mpfr_ptr, get_mpz_ptr): Helper macros to wrap api_get_mpfr and
 2385 	api_get_mpz.
 2386 	(make_number): Modify to populate awk_number_t correctly.
 2387 	(make_number_mpz, make_number_mpfr): New helper functions to create
 2388 	extended-precision numeric nodes.
 2389 	(check_mpfr_version): New macro to check GMP/MPFR version compatibility
 2390 	in extensions that want to support extended-precision math.
 2391 	* gawkapi.c (getmpfr, freempfr, getmpz, freempz): New macros to
 2392 	allocate and free memory blocks for extended-precision math.
 2393 	(awk_value_to_node): For AWK_NUMBER values, support three different
 2394 	kinds of internal numbers: double, mpz_t, and mpfr_t.
 2395 	(assign_number): New helper function to convert a numeric node to
 2396 	an awk_value_t.
 2397 	(node_to_awk_value): Use assign_number to pass numbers properly.
 2398 	(api_get_mpfr): Implement new api_get_mpfr hook.
 2399 	(api_get_mpfz): Implement new api_get_mpz hook.
 2400 	(api_impl): Add GMP & MPFR versions, api_get_mpfr, and api_get_mpz.
 2401 	* node.c (r_make_number): Use new make_number_node inline function
 2402 	to reduce code duplication.
 2403 	(nextfree): Add block allocators for mpfr_t and mpz_t.
 2404 	(more_blocks): Add an assert to protect against cases where the block
 2405 	size is too small to hold our structure.
 2406 	* mpfr.c (mpg_node): Use new make_number_node inline function
 2407 	to reduce code duplication.
 2408 
 2409 2017-01-04         Arnold Robbins        <arnold@skeeve.com>
 2410 
 2411 	* config.guess, config.sub, compile, depcomp: Sync from latest
 2412 	in GNULIB.
 2413 
 2414 2016-12-27         Juergen Kahrs         <Juergen.Kahrs@googlemail.com>
 2415 
 2416 	* CMakeLists.txt: Updated after adding support library.
 2417 
 2418 2016-12-23         Arnold D. Robbins     <arnold@skeeve.com>
 2419 
 2420 	* configure.ac (GNUPG_CHECK_MPFR): Don't call on PowerPC
 2421 	Macintosh.  C99 and the last version of MPFR that works on
 2422 	that platform don't get along. Sigh.
 2423 
 2424 2016-12-22         Arnold D. Robbins     <arnold@skeeve.com>
 2425 
 2426 	* dfa.c: Sync with GNULIB.
 2427 	* intprops.h: New file.
 2428 	* Makefile.am (base_sources): Add intprops.h.
 2429 
 2430 	Unrelated.  Import GNULIB fix for regex: fix integer-overflow
 2431 	bug in never-used code.
 2432 	Problem reported by Clément Pit–Claudel in:
 2433 	http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00654.html
 2434 	Fix by Paul Eggert  <eggert@cs.ucla.edu>:
 2435 
 2436 	* regex_internal.h: Include intprops.h.
 2437 	* regexec.c (re_search_2_stub): Use it to avoid undefined
 2438 	behavior on integer overflow.
 2439 
 2440 	Unrelated. Set up a support directory for externally obtained
 2441 	support files.
 2442 
 2443 	* Makefile.am (base_sources, EXTRA_DIST): Edit lists.
 2444 	(SUBDIRS): Get ordering right.
 2445 	(LDADD): Add support/libsupport.a.
 2446 	(DEFS): Add -I for support directory.
 2447 	* dfa.c, dfa.h, getopt.c, getopt.h, getopt1.c, getopt_int.h,
 2448 	intprops.h, localeinfo.c, localeinfo.h, random.c, random.h,
 2449 	regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h,
 2450 	regexec.c, verify.h, xalloc.h: Moved to support.
 2451 
 2452 	Unrelated: Totally break binary compatibility in the API
 2453 	after merging in API min/max changes and REGEX and STRNUM
 2454 	support in the API:
 2455 
 2456 	* gawkapi.c (valtype2str): New function.
 2457 	(node_to_awk_value): Minor simplification in a switch.
 2458 	(api_flatten_array): Removed.
 2459 	(api_flatten_array_typed): Use valtype2str in error message.
 2460 	(api_impl): Reorder functions to group related ones together again.
 2461 	* gawkapi.h (awk_valtype_t): Reorder enum values.
 2462 	(struct gawk_api): Remove api_flatten_array field.  Reorder
 2463 	functions to group related ones together again.
 2464 
 2465 2016-12-17         Arnold D. Robbins     <arnold@skeeve.com>
 2466 
 2467 	* gawkapi.h (api_add_ext_func): Add comment about point to
 2468 	awk_ext_func_t not being const but gawk doesn't use it.
 2469 	* * interpret.h (Op_ext_builtin): Simplify code, check only
 2470 	if do_lint and ! f->suppress_lint and num_args > max_expected.
 2471 
 2472 2016-12-16         Arnold D. Robbins     <arnold@skeeve.com>
 2473 
 2474 	* gawkapi.h (awk_ext_func_t): Put max back before min. Restores
 2475 	source compatibility, although there will be compile warnings
 2476 	because of the 3rd argument for the C function being missing.
 2477 	* interpret.h (Op_ext_builtin): Used size_t instead of int for
 2478 	the various variables. Add a check that max expected > 0.
 2479 
 2480 2016-12-14         Arnold D. Robbins     <arnold@skeeve.com>
 2481 
 2482 	MAJOR BREAKING API CHANGE.
 2483 
 2484 	* awk.h (INSTRUCTION): Update extension function pointer to
 2485 	take 3rd argument of pointer to struct awk_ext_func.
 2486 	* gawkapi.c (api_add_ext_func): Update third arg to not be const.
 2487 	* gawkapi.h (awk_ext_func_t): Put min before max. Add suppress_lint
 2488 	and data pointer.
 2489 	[gawk_api_major_version]: Update to 2.
 2490 	[gawk_api_minor_version]: Reset to 0.
 2491 	(api_add_ext_func): Update third arg to not be const.
 2492 	* interpret.h (Op_ext_symbol): Revise lint check.
 2493 
 2494 2016-12-12         Arnold D. Robbins     <arnold@skeeve.com>
 2495 
 2496 	* awk.h (INSTRUCTION): Replace min_required and max_expected
 2497 	with a pointer to the extension functions awk_ext_func_t struct.
 2498 	* ext.c (make_builtin): Store a pointer to the extension function
 2499 	struct into the INSTRUCTION instead of the min and max.
 2500 	* gawkapi.h (awk_ext_func): Use size_t instead of unsigned short.
 2501 	Put min second, which preserves source code compatibility.
 2502 	* interpret.h (Op_ext_builtin): Use the pointer for the info
 2503 	directly. If lint and max_expected > 0 and args > max_expected
 2504 	print a message and set max_expected to zero so we only print once
 2505 	per function. Remove special case of both min and max being zero.
 2506 	(Op_ext_func): Adjust creation of the data structures.
 2507 
 2508 2016-12-11         Arnold D. Robbins     <arnold@skeeve.com>
 2509 
 2510 	* dfa.c: Sync with GNULIB.
 2511 
 2512 2016-12-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2513 
 2514 	Add API support for strnum values.
 2515 	* gawkapi.c (awk_value_to_node): Add AWK_STRNUM.
 2516 	(assign_string): Add a type argument so we can use this for AWK_STRING
 2517 	or AWK_STRNUM.
 2518 	(node_to_awk_value): When AWK_NUMBER is requested, a regex value
 2519 	should return false, as per the header file documentation.
 2520 	Add support for AWK_STRNUM requests. When AWK_REGEX is requested,
 2521 	implement the cases properly instead of always returning true.
 2522 	Fix AWK_SCALAR logic. For AWK_UNDEFINED, rewrite using a switch
 2523 	and support AWK_STRNUM.
 2524 	(api_sym_update): Add AWK_STRNUM.
 2525 	(api_sym_update_scalar): Add optimized support for updating AWK_STRNUM.
 2526 	(valid_subscript_type): Add AWK_STRNUM.
 2527 	(api_create_value): Add AWK_STRNUM.
 2528 	* gawkapi.h (awk_valtype_t): Add AWK_STRNUM.
 2529 	(strnum_value): New macro.
 2530 	(Value fetching table): Updated.
 2531 
 2532 2016-12-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2533 
 2534 	* gawkapi.c (assign_regex): Do not call assign_string, since we
 2535 	know that a REGEX value is not an unterminated field string.
 2536 	* gawkapi.h (make_regex): Delete macro.
 2537 	(make_const_regex, make_malloced_regex): Add new macros to replace
 2538 	make_regex with necessary memory management support.
 2539 
 2540 2016-12-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2541 
 2542 	* awk.h (fixtype): Remove conditional checking if the node type
 2543 	is Node_val. This is already covered by the assert, and if it's not
 2544 	true, we have serious bugs.
 2545 	* builtin.c (do_typeof): Do not treat Node_var the same way as
 2546 	Node_val, since they are different beasts. In reality, the argument
 2547 	to this function will never have type Node_var.
 2548 
 2549 2016-12-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2550 
 2551 	* gawkapi.h (awk_element_t): Remove obsolete comment claiming that
 2552 	the index will always be a string.
 2553 	(gawk_api_t): Add new api_flatten_array_typed function and indicate
 2554 	that api_flatten_array has been superseded.
 2555 	(flatten_array_typed): New macro to call api_flatten_array_typed.
 2556 	(flatten_array): Redefine using the new flatten_array_typed macro.
 2557 	* gawkapi.c (api_flatten_array_typed): New function renamed from
 2558 	api_flatten_array to flatten an array with the types requested by the
 2559 	caller. Also update the comments and error messages.
 2560 	(api_flatten_array): Now a wrapper around api_flatten_array_typed.
 2561 	(api_impl): Add new api_flatten_array_typed hook.
 2562 
 2563 2016-12-06         Arnold D. Robbins     <arnold@skeeve.com>
 2564 
 2565 	Add minimum required and maximum expected number of arguments
 2566 	to the API.
 2567 
 2568 	* awk.h (INSTRUCTION): Add new members min_required and max_expected.
 2569 	* ext.c (make_builtin): Store values from extension function struct
 2570 	into the INSTRUCTION.
 2571 	* gawkapi.h (awk_ext_func): Add min_required args. Make both it and
 2572 	max_expected_args into unsigned short to match type in INSTRUCTION.
 2573 	* interpret.h (Op_ext_builtin): Store min_required and max_expected
 2574 	in instructions. Add checking code and lint checks.
 2575 	(Op_ext_func): Copy min_required and max_expected from function info.
 2576 
 2577 
 2578 2016-12-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2579 
 2580 	* gawkapi.h (r_make_string_type): New inline function to create strings
 2581 	of any type, currently AWK_STRING or AWK_REGEX.
 2582 	(r_make_string): Now a wrapper around r_make_string_type.
 2583 	(make_regex): Convert from an inline function to a macro that
 2584 	calls r_make_string_type.
 2585 
 2586 2016-11-30         Arnold D. Robbins     <arnold@skeeve.com>
 2587 
 2588 	* dfa.c: Sync with fixes in GNULIB.
 2589 
 2590 	Unrelated:
 2591 
 2592 	* gawkapi.h (make_regex): New function.
 2593 
 2594 2016-11-29         Arnold D. Robbins     <arnold@skeeve.com>
 2595 
 2596 	Add support for typed regex variables to the API.
 2597 
 2598 	* awk.h (make_typed_regex): Declare function.
 2599 	* awkgram.y (typed_regexp): Call make_typed_regex instead of
 2600 	using inline code.
 2601 	* gawkapi.h (AWK_REGEX): New value type.
 2602 	(regex_value): New macro.
 2603 	(Value fetching table): Updated.
 2604 	* gawkapi.c (awk_value_to_node, node_to_awk_value, api_sym_update,
 2605 	api_sym_update_scalar, valid_subscript_type, api_create_value):
 2606 	Add support for AWK_REGEX.
 2607 	(assign_regex): New function.
 2608 	(api_flatten_array): Adjust comment.
 2609 	* node.c (make_typed_regex): New function; moved code from grammar.
 2610 
 2611 2016-11-29         Arnold D. Robbins     <arnold@skeeve.com>
 2612 
 2613 	Remove redundant flag from dfa:
 2614 
 2615 	* dfa.c (dfasyntax): Use RE_ICASE instead of DFA_CASE_FOLD.
 2616 	* dfa.h (DFA_CASE_FOLD): Removed.
 2617 	* re.c (make_regexp): Use RE_ICASE for regex and dfa. Yay!
 2618 
 2619 	Unrelated: Don't have to recompute syntax stuff every time
 2620 	we compile a regexp.
 2621 
 2622 	* dfa.c (dfacopysyntax): New function.
 2623 	(dfaalloc): Zero out the newly allocated memory.
 2624 	* dfa.h (dfacopysyntax): Declare it.
 2625 	* re.c (make_regexp): Declare two static dfaregs, one for
 2626 	with and without ignorecase. Compute the syntax once for each,
 2627 	then use dfacopysyntax to copy the settings when compiling
 2628 	a regexp.
 2629 
 2630 2016-11-28         Arnold D. Robbins     <arnold@skeeve.com>
 2631 
 2632 	Make gawk compile on HP-UX 11.33.
 2633 
 2634 	* debug.c (serialize_list): Renamed from `serialize'.
 2635 	(unserialize_list): Renamed from `unserialize', for consistency.
 2636 
 2637 	Unrelated:
 2638 
 2639 	* dfa.c: Sync with GNULIB. Twice in one day.
 2640 
 2641 	Unrelated: Start improving profiling comments for switch/case.
 2642 
 2643 	* awkgram.y (switch_head): New production.
 2644 
 2645 2016-11-21         Arnold D. Robbins     <arnold@skeeve.com>
 2646 
 2647 	* dfa.c: Sync with GNULIB.
 2648 
 2649 2016-11-17         Arnold D. Robbins     <arnold@skeeve.com>
 2650 
 2651 	General cleanup for zero termination of strings.
 2652 
 2653 	* array.c (do_delete): Use %.*s.
 2654 	(value_info): Get length and use %.*s.
 2655 	(asort_actual): Save and restore character after end.
 2656 	* awkgram.y (split_comment): Use make_string, not make_str_node.
 2657 	* builtin.c (do_fflush): Use %.*s.
 2658 	(locale_category_from_argument, do_dcgettext, do_dcngettext,
 2659 	do_bindtextdomain): Save and restore character after end.
 2660 	* debug.c (do_info, print_array, print_subscript, do_print_var,
 2661 	do_set_var, display, do_watch, print_watch_item, serialize_subscript,
 2662 	do_print_f): Use %.*s.
 2663 	* eval.c (cmp_nodes, fmt_index): Save and restore character after end.
 2664 	* interpret.h (r_interpret): Fix computation for concatenation of
 2665 	wide strings.
 2666 	* io.c (is_non_fatal_redirect): Add length parameter; save and
 2667 	restore character after last. Adjust all other declarations and calls.
 2668 	(do_close): Save and restore character after end.
 2669 	* mpfr.c (ieee_fmts): Adjust table indentation.
 2670 	(do_mpfr_strtonum): Clear wide string members of the union.
 2671 	* msg.c (err): Use %.*s.
 2672 
 2673 2016-11-07         Arnold D. Robbins     <arnold@skeeve.com>
 2674 
 2675 	* awk.h [USER_INPUT]: Renamed from MAYBE_NUM.
 2676 	* builtin.c, eval.c, field.c, int_array.c, io.c, main.c,
 2677 	mpfr.c, node.c: Change all uses.
 2678 
 2679 2016-11-15         Arnold D. Robbins     <arnold@skeeve.com>
 2680 
 2681 	Finish reworking typed regexes.
 2682 
 2683 	* awk.h (typed_re): Replaces tre_reg.
 2684 	* awkgram.y (typed_regexp production): Node_val points to a regular
 2685 	Node_regex and also has string value and length.
 2686 	(make_regnode): Simplified back to its original form.
 2687 	* builtin.c (call_sub, call_match, call_split_func): For REGEX,
 2688 	get n->typed_re.
 2689 	* field.c (do_split, do_patsplit): Ditto, for separator regexp.
 2690 	* profile.c (pprint): Op_match_rec, handle REGEX correctly.
 2691 	* re.c (re_update): If REGEX, get t->typed_re->re_reg.
 2692 
 2693 2016-11-15         Arnold D. Robbins     <arnold@skeeve.com>
 2694 
 2695 	Start reworking typed regexes.
 2696 
 2697 	* awk.h (Node_typedregex): Nuked.
 2698 	[REGEX]: New flag.
 2699 	(tre_reg): New member in val part of NODE union.
 2700 	(force_string, force_number, fixtype): Remove use of Node_typedregex.
 2701 	* awkgram.y (grammar): Use REGEX flag instead of node type.
 2702 	(valinfo); Ditto.
 2703 	(make_regnode): Adjust creation based on node type.
 2704 	* builtin.c (do_length, do_print, call_sub, call_match,
 2705 	call_split_func, do_typeof): Adjust code.
 2706 	* debug.c (watchpoint_triggered, initialize_watch_item,
 2707 	print_memory): Adjust code.
 2708 	* eval.c (nodetypes): Remove Node_typedregex.
 2709 	(flags2str): Add REGEX.
 2710 	(setup_frame): Adjust code after removal of Node_typedregex.
 2711 	* interpret.h (r_interpret): Adjust code after removal
 2712 	of Node_typedregex.
 2713 	* profile.c (pp_typed_regex): Renamed from pp_strong_regex.
 2714 	(pp_string_or_strong_regex): Renamed from pp_string_or_strong_regex.
 2715 	(pprint): Adjust code after removal of Node_typedregex.
 2716 	* re.c (re_update): Adjust code after removal of Node_typedregex.
 2717 
 2718 2016-11-04  Eli Zaretskii  <eliz@gnu.org>
 2719 
 2720 	* builtin.c (efwrite) [__MINGW32__]: Call w32_maybe_set_errno if
 2721 	errno is not set or set to EINVAL.
 2722 
 2723 	* nonposix.h (w32_maybe_set_errno) [__MINGW32__]: Add prototype.
 2724 
 2725 2016-11-01         Arnold D. Robbins     <arnold@skeeve.com>
 2726 
 2727 	* eval.c (flags2str): Add NO_EXT_SET and NUMCONSTSTR.
 2728 
 2729 2016-10-31         Arnold D. Robbins     <arnold@skeeve.com>
 2730 
 2731 	Fix valgrind issues.
 2732 
 2733 	* io.c (init_awkpath): Need to allocate max_path+3 pointers.
 2734 	* awkgram.y (make_profile_number): Need to add STRCUR flag and
 2735 	set n->stfmt to STFMT_UNUSED. See the comment in the code.
 2736 
 2737 2016-10-26         Arnold D. Robbins     <arnold@skeeve.com>
 2738 
 2739 	* io.c (init_awkpath): Set max path len for leading separator.
 2740 
 2741 2016-10-25         Arnold D. Robbins     <arnold@skeeve.com>
 2742 
 2743 	* io.c (init_awkpath): Restore documented behavior whereby
 2744 	null elements represent the current directory. Sheesh.
 2745 	Bug reported by "Jun T." <takimoto-j@kba.biglobe.ne.jp>.
 2746 
 2747 	Disallow negative arguments to the bitwise functions.
 2748 
 2749 	* NEWS: Document this.
 2750 	* builtin.c (do_lshift, do_rshift, do_and, do_or, do_xor, do_compl):
 2751 	Make negative arguments a fatal error.
 2752 	* mpfr.c (do_mpfr_compl, get_intval): Ditto.
 2753 
 2754 2016-10-23         Arnold D. Robbins     <arnold@skeeve.com>
 2755 
 2756 	* General: Remove trailing whitespace from all relevant files.
 2757 	* mpfr.c: Replace Unicode sequences with ASCII.
 2758 	* cint_array.c: Ditto.
 2759 
 2760 2016-10-16         Arnold D. Robbins     <arnold@skeeve.com>
 2761 
 2762 	* awkgram.y: Typo fix in call to add_sign_to_num.
 2763 
 2764 2016-10-16         Arnold D. Robbins     <arnold@skeeve.com>
 2765 
 2766 	* awk.h (enum opcodeval): Add Op_unary_plus.
 2767 	* awkgram.y (add_sign_to_num): New routine to put in a sign on
 2768 	profiling constants.  Call it as necessary.
 2769 	In unary plus production, use new opcode, or set up a
 2770 	constant as for unary minus.
 2771 	(negate_num): Call add_sign_to_num instead of doing it directly.
 2772 	* eval.c (optypetab): Add entry for Op_unary_plus.
 2773 	* interpret.h (r_interpret): Add case for Op_unary_plus.
 2774 	* profile.c (pprint, prec_level, is_scalar): Ditto.
 2775 
 2776 2016-10-13         Arnold D. Robbins     <arnold@skeeve.com>
 2777 
 2778 	* dfa.c: Sync with GNULIB.
 2779 
 2780 2016-10-12         Arnold D. Robbins     <arnold@skeeve.com>
 2781 
 2782 	* awkgram.y (make_profile_number): Allocate an extra byte for the
 2783 	string, so there's room for a minus if necessary. Store '\0'
 2784 	in the right place.
 2785 	(negate_num): Use memmove to shift the string up and then
 2786 	insert a minus, instead of doing a fresh alloc + copy + free.
 2787 
 2788 2016-10-11         Arnold D. Robbins     <arnold@skeeve.com>
 2789 
 2790 	* awk.h (NUMCONSTSTR): New flag value.
 2791 	* awkgram.y (make_profile_number): New function. Use it
 2792 	wherever we make a number.  This calls make_number and then, if
 2793 	pretty printing, save the original string value and sets NUMCONSTSTR.
 2794 	(negate_num): If NUNCONSTSTR set, update the saved string value.
 2795 	* profile.c (pp_number): Assert NUMCONSSTR set, use that value.
 2796 	Remove previous code.
 2797 
 2798 2016-09-24  Eli Zaretskii  <eliz@gnu.org>
 2799 
 2800 	* debug.c (restart) [__MINGW32__]: Cast 2nd argument of execvp to
 2801 	avoid compiler warnings about prototype mismatch.  Reported by
 2802 	Marc de Bourget <marcdebourget@gmail.com>.
 2803 
 2804 2016-09-09         Norihiro Tanaka      <noritnk@kcn.ne.jp>
 2805 
 2806 	* awk.h (struct Regexp): Remove member has_anchor.  All uses removed.
 2807 	* re.c (make_regexp, research): Use dfa matcher for regex with anchor.
 2808 
 2809 2016-09-09         Arnold D. Robbins     <arnold@skeeve.com>
 2810 
 2811 	* dfa.c: Sync with grep.
 2812 
 2813 2016-09-08  Paul Eggert  <eggert@cs.ucla.edu>
 2814 
 2815 	* dfa.c, dfa.h: Sync with grep.
 2816 	* re.c (make_regexp): Adjust to DFA API changes.
 2817 
 2818 2016-09-08         Arnold D. Robbins     <arnold@skeeve.com>
 2819 
 2820 	* command.y: Update license text to version 3. Oops.
 2821 
 2822 2016-09-07         Arnold D. Robbins     <arnold@skeeve.com>
 2823 
 2824 	* cmd.h, debug.c: Update license text to version citing
 2825 	GPLv3+ and with correct FSF address. Thanks to
 2826 	David Kaspar <dkaspar@redhat.com> for pointing out the need.
 2827 
 2828 2016-09-02         Arnold D. Robbins     <arnold@skeeve.com>
 2829 
 2830 	* dfa.c: Sync with grep.
 2831 
 2832 2016-09-01         Arnold D. Robbins     <arnold@skeeve.com>
 2833 
 2834 	Merge grep's now thread-safe dfa. Wheee.
 2835 
 2836 	* dfa.h, dfa.c: Sync with grep.
 2837 	* localeinfo.h, localeinfo.c, verify.h: New files.
 2838 	* Makefile.am (base_sources): Adjust.
 2839 	* awk.h (using_utf8): Declare new function.
 2840 	* node.c (str2wstr): Use using_utf8 instead of now-gone dfa function.
 2841 	* re.c: Include "localeinfo.h".
 2842 	(localeinfo): New static variable.
 2843 	(make_regexp): Adjust call to dfa_syntax.
 2844 	(resetup): Call init_localeinfo on localeinfo. Remove call to
 2845 	now-gone function dfa_init.
 2846 	(using_utf8): New function.
 2847 
 2848 2016-08-29         Arnold D. Robbins     <arnold@skeeve.com>
 2849 
 2850 	* configure.ac (fwrite_unlocked): Check for it.
 2851 	* awk.h (fwrite): Define to fwrite_unlocked if we have it.
 2852 	* NEWS: Make note of speed improvement.
 2853 
 2854 2016-08-25         Arnold D. Robbins     <arnold@skeeve.com>
 2855 
 2856 	POSIX now says use strcmp for == and !=. Thanks to Chet Ramey
 2857 	for pointing me at the change.  Make it so:
 2858 
 2859 	* awk.h (cmp_nodes): New 3rd param indicating strcmp, not strcoll.
 2860 	* debug.c (cmp_val): Update call to cmp_nodes.
 2861 	* eval.c (cmp_nodes): New 3rd param indicating strcmp, not strcoll.
 2862 	Adjust code and all callers.
 2863 	(scalar_cmp_t): New enum type. Used in ...
 2864 	(cmp_scalars): ... in order to call cmp_nodes correctly.
 2865 	* interpret.h: Use the enum type in calls to cmp_scalars.
 2866 	* re.c (re_update): Adjust call to cmp_nodes.
 2867 
 2868 2016-08-25         Norihiro Tanaka      <noritnk@kcn.ne.jp>
 2869 
 2870 	* awk.h (struct Regexp): Remove dfa.  Now dfareg instead of it.  All
 2871 	referers changed.
 2872 	* re.c (research): Arrange caller of dfaexec and research.
 2873 	* (avoid_dfa): Removed.  All callers changed.
 2874 	* awk.h (avoid_dfa): Removed.
 2875 
 2876 	Other changes by Arnold Robbins:
 2877 
 2878 	* awk.h (struct Regexp): Change various boolean members to bool.
 2879 	(RE_NO_FLAGS): New #define.
 2880 	* interpret.h: Use RE_NO_FLAGS instead of zero.
 2881 	* re.c (research): Prettify the logic a little bit.
 2882 
 2883 2016-08-25         Arnold D. Robbins     <arnold@skeeve.com>
 2884 
 2885 	* dfa.c: Sync with grep.
 2886 
 2887 2016-08-25         Arnold D. Robbins     <arnold@skeeve.com>
 2888 
 2889 	* 4.1.4: Release tar ball made.
 2890 
 2891 2016-08-23         Arnold D. Robbins     <arnold@skeeve.com>
 2892 
 2893 	* dfa.h: Sync with grep. API changes.
 2894 	* dfa.c: Sync with grep.
 2895 	* re.c (make_regexp): Adjust for API changes, move call to dfasyntax
 2896 	into stanza that compiles the regex.
 2897 	(resetup): Call dfa_init.
 2898 	* node.c (str2wstr): using_utf8 is now called dfa_using_utf8.
 2899 
 2900 	Unrelated:
 2901 
 2902 	* Makefile.am: Quote all uses of $(srcdir) and $(distdir).
 2903 	(spell): New target.
 2904 
 2905 2016-08-18         Arnold D. Robbins     <arnold@skeeve.com>
 2906 
 2907 	* dfa.c: Sync with grep.
 2908 
 2909 2016-08-15         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2910 
 2911 	* int_array.c (is_integer): Fix merge of stable changes to remove
 2912 	obsolete string formatting check that has been superseded by
 2913 	the new standard_integer_string check.
 2914 
 2915 2016-08-14         Arnold D. Robbins     <arnold@skeeve.com>
 2916 
 2917 	* re.c (make_regexp): Only call dfasyntax if actually using
 2918 	dfa. Gives a 14% speedup on this test: https://raw.githubusercontent.com/chadbrewbaker/awka/master/benchmark/regexp.awk.
 2919 	From blathering in comp.lang.awk.
 2920 
 2921 2016-08-12         Arnold D. Robbins     <arnold@skeeve.com>
 2922 
 2923 	* dfa.c: Sync with GNU grep.
 2924 
 2925 	Unrelated:
 2926 
 2927 	* int_array.c: Minor text and formatting edits.
 2928 
 2929 2016-08-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2930 
 2931 	* awk.h: Add a comment explaining the NUMINT flag in more detail.
 2932 	* int_array.c (standard_integer_string): New function to test whether
 2933 	a string matches what would be produced by sprintf("%ld", <value>).
 2934 	(is_integer): Fix bug -- if NUMBER was set, then the function was
 2935 	accepting strnum values with nonstandard string representations. We
 2936 	now call standard_integer_string to check that the string looks OK.
 2937 	Also added ifdef'ed code to simplify the function by relying upon
 2938 	force_number to parse the string, but this is disabled due to possible
 2939 	negative performance impact.
 2940 
 2941 2016-08-03         Arnold D. Robbins     <arnold@skeeve.com>
 2942 
 2943 	Remove typed regexes until they can be done properly.
 2944 
 2945 	* NEWS: Updated.
 2946 	* awk.h (enum nodevals): Remove Node_typedregex.
 2947 	(force_string, force_number): Remove check for Node_typedregex.
 2948 	* awkgram.y (TYPED_REGEXP): Remove token.
 2949 	(grammar): Remove productions related to typed regexps. 
 2950 	(yylex): Don't find a typed regex or return it.
 2951 	(valinfo): Remove code for Node_typedregex.
 2952 	* builtin.c (do_length, do_print, call_sub, call_match,
 2953 	call_split_func, do_typeof): Remove code for Node_typedregex.
 2954 	* debug.c (watchpoint_triggered, print_memory): Remove code
 2955 	for Node_typedregex.
 2956 	* eval.c (nodetypes, setup_frame): Remove code for Node_typedregex.
 2957 	* interpret.h (r_interpret): Remove code for Node_typedregex.
 2958 	* profile.c (pprint): Remove code for Node_typedregex.
 2959 	(pp_strong_regex): Removed.
 2960 	(pp_string_or_strong_regex): Remove code for Node_typedregex.
 2961 	* re.c (re_update): Remove code for Node_typedregex.
 2962 
 2963 2016-08-01         Arnold D. Robbins     <arnold@skeeve.com>
 2964 
 2965 	* README, NEWS: Mark DJGPP port as unsupported.
 2966 
 2967 2016-08-01         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2968 
 2969 	* mpfr.c (mpg_tofloat): Always set precision to avoid hysteresis effects
 2970 	from previous calculations using the same temporary mpfr variables.
 2971 
 2972 2016-08-01         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 2973 
 2974 	* mpfr.c (default_prec): Add new static variable to show current PREC
 2975 	setting in effect.
 2976 	(init_mpfr, set_PREC): Save mpfr_set_default_prec argument in
 2977 	default_prec.
 2978 	(do_mpfr_func): If the argument's precision exceeds the default
 2979 	precision, boost the result's precision to match it. This fixes a
 2980 	bug where we used to copy the argument's precision, regardless of
 2981 	whether it was higher or lower than the PREC setting.
 2982 
 2983 2016-07-24         Norihiro Tanaka      <noritnk@kcn.ne.jp>
 2984 
 2985 	* re.c (research): Now that the dfa matcher correctly runs even
 2986 	in multibyte locales, try it if even if need_start is true.
 2987 	However, if start > 0, avoid dfa matcher, since it can't handle
 2988 	the case where the search starts in the middle of a string.
 2989 
 2990 	Unrelated:
 2991 
 2992 	* eval.c (load_casetable): Reset casetable[i] to `i' if i
 2993 	should not be mapped to upper case. Fixes inconsistencies between
 2994 	dfa and regex in some single bytes locales; notably el_GR.iso88597.
 2995 
 2996 2016-07-23         Arnold D. Robbins     <arnold@skeeve.com>
 2997 
 2998 	Make result of close on a pipe match result of system.
 2999 	Thanks to Mike Brennan for the encouragement.
 3000 
 3001 	* awk.h (sanitize_exit_status): Declare routine.
 3002 	* builtin.c (sanitize_exit_status): New routine.
 3003 	(do_system): Use it.
 3004 	* io.c (close_rp): Use it on pclose result.
 3005 	(gawk_pclose): Use it.
 3006 
 3007 2016-07-23         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3008 
 3009 	* builtin.c (do_print): Improve logic for formatting
 3010 	numeric values.
 3011 
 3012 2016-07-19         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3013 
 3014 	* eval.c (set_LINT): Simplify the code considerably.
 3015 
 3016 2016-07-19         Arnold D. Robbins     <arnold@skeeve.com>
 3017 
 3018 	* awkgram.y (shadow_funcs): Change test at end to be
 3019 	`lintfunc == r_fatal' instead of `lintfunc != warning'.
 3020 	Thank to Andrew Schorr for the suggestion.
 3021 
 3022 2016-07-18         Arnold D. Robbins     <arnold@skeeve.com>
 3023 
 3024 	* main.c (locale_dir): New variable, init to LOCALEDIR (set by
 3025 	configure).
 3026 	(set_locale_stuff): Move calls to bindtextdomain and
 3027 	textdomain to here; they must be done after calling setlocale.
 3028 	Use locale_dir instead of LOCALEDIR.
 3029 	(main): Move call to set_locale_stuff() to before parsing arguments.
 3030 	Check for GAWK_LOCALE_DIR env var and use it if there. If doing
 3031 	locale debugging, call set_locale_stuff again if arg parsing changed
 3032 	the locale.
 3033 
 3034 	Unrelated:
 3035 
 3036 	* dfa.c: Sync with GNU grep.
 3037 
 3038 	Unrelated:
 3039 
 3040 	* config.sub: Updated from GNULIB.
 3041 
 3042 2016-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 3043 
 3044 	* eval.c (set_LINT): Reset lintfunc to `warning' for LINT="invalid".
 3045 	Thanks to Andy Schorr for the report.
 3046 
 3047 2016-07-08         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3048 
 3049 	* awk.h: Restore previous comment about unterminated strings, since
 3050 	I am removing the string termination patches from field.c
 3051 	(free_api_string_copies): Declare new gawkapi function.
 3052 	* builtin.c (do_mktime, do_system): Restore temporary string
 3053 	termination to protect against unterminated field values.
 3054 	(nondec2awknum): Remove comment about unnecessary termination.
 3055 	* eval.c (posix_compare): Restore temporary string termination.
 3056 	* field.c (databuf): Remove struct, no longer needed.
 3057 	(set_field): Remove memcpy for string termination, since we will support
 3058 	unterminated field string values.
 3059 	(rebuild_record): Ditto. Also no need to allocate space for terminated
 3060 	string copies.
 3061 	(allocate_databuf): Remove function, since memory management can again
 3062 	be done inside set_record.
 3063 	(set_record): Restore inline buffer management logic.
 3064 	(reset_record): Remove calls to allocate_databuf, since we no longer
 3065 	need space for making terminated copies of field strings.
 3066 	* gawkapi.c (free_api_string_copies): New function to free strings
 3067 	that we made to provide terminated copies to API functions.
 3068 	(assign_string): New function to convert a string to an awk_value,
 3069 	making sure to copy it if we need to terminate it.
 3070 	(node_to_awk_value): Use assign_string to return string values with
 3071 	NUL termination protection.
 3072 	* int_array.c (is_integer): Restore temporary string termination.
 3073 	* interpret.h (Op_push_i): Ditto.
 3074 	(Op_ext_builtin): After external function returns, call
 3075 	free_api_string_copies to free temporary string copies.
 3076 	* mpfr.c (force_mpnum): Restore temporary string termination.
 3077 	* node.c (r_force_number, get_ieee_magic_val): Ditto.
 3078 
 3079 2016-07-08         Arnold D. Robbins     <arnold@skeeve.com>
 3080 
 3081 	* dfa.c: Sync with GNU grep.
 3082 
 3083 	Unrelated:
 3084 
 3085 	* builtin.c (do_print): Coding style change.  (This change obsoleted
 3086 	by earlier changes in the fixtype branch.)
 3087 
 3088 2016-07-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3089 
 3090 	* awk.h: Modify comments to indicate that MAYBE_NUM will now be
 3091 	left enabled to indicate strnum values by the NUMBER|MAYBE_NUM
 3092 	combination, whereas STRING|MAYBE_NUM indicates a potential strnum.
 3093 	(fixtype): Modify MAYBE_NUM test to avoid calling force_number if
 3094 	NUMCUR is already set.
 3095 	* builtin.c (do_typeof): Call fixtype to resolve argument type.
 3096 	This forces parsing of numeric strings, so there's a performance
 3097 	penalty, but we must do this to give a correct result. The meaning
 3098 	of "strnum" changes from "potential strnum" to "actual strnum".
 3099 	* eval.c (set_TEXTDOMAIN): Remove some dead code left over from last
 3100 	patch.
 3101 	* int_array.c (is_integer): When a MAYBE_NUM is converted successfully
 3102 	to a NUMBER, leave the MAYBE_NUM flag enabled.
 3103 	* mpfr.c (mpg_force_number): Ditto.
 3104 	* node.c (r_force_number): Ditto.
 3105 
 3106 2016-07-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3107 
 3108 	* awk.h: Modify stptr comment to indicate that all strings are now
 3109 	NUL-terminated.
 3110 	* builtin.c (do_mktime): Remove unnecessary logic to terminate
 3111 	the string with '\0' temporarily.
 3112 	(do_system) Ditto.
 3113 	(nondec2awknum): Add a comment about termination.
 3114 	* eval.c (posix_compare): Remove logic to terminate strings temporarily.
 3115 	(set_ORS): No need to terminate ORS, since the string node is already
 3116 	terminated. What gave us the right to modify that node anyway?
 3117 	(fmt_index): Remove code to terminate string. This seems to have been
 3118 	invalid anyway, since we don't own that memory.
 3119 	(set_TEXTDOMAIN): Do not terminate TEXTDOMAIN string, since the node
 3120 	is already terminated. We didn't have the right to modify that node
 3121 	anyway.
 3122 	* gawkapi.c (node_to_awk_value): Add assert checks to confirm that the
 3123 	string is NUL-terminated.
 3124 	* gawkapi.h: Modify awk_string comment to indicate that strings are
 3125 	always terminated with '\0'.
 3126 	* int_array.c (isinteger): Remove unnecessary logic to terminate string
 3127 	with '\0' temporarily.
 3128 	* interpret.h (Op_push_i): Ditto.
 3129 	* io.c (nextfile): Remove string termination. We didn't own that memory
 3130 	anyway.
 3131 	* mpfr.c (force_mpnum): Remove unnecessary logic to terminate the
 3132 	string with '\0' temporarily.
 3133 	* node.c (r_force_number): Remove NUL termination around strtod call,
 3134 	since we already know that there is either a white space or '\0'
 3135 	character there. Either one will stop strtod.
 3136 	(get_ieee_magic_val): Ditto.
 3137 	* profile.c (pp_number): No need to terminate string returned by
 3138 	r_format_val.
 3139 
 3140 2016-07-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3141 
 3142 	* interpret.h (Op_field_spec): Now that all $n field values are
 3143 	NUL-terminated, there is no reason to call dupnode for $n where n > 0.
 3144 	This saves malloc and copying overhead, thereby more than offsetting the
 3145 	performance hit of the additional copying and NUL-termination in the
 3146 	last patch to field.c. It also eliminates repeated parsing in cases
 3147 	where $n, for n > 1, was accessed more than once in a numeric context,
 3148 	so the new approach should be a performance win.
 3149 
 3150 2016-07-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3151 
 3152 	Make sure that all field values, and therefore all strings inside gawk,
 3153 	are terminated with a '\0' character!
 3154 
 3155 	* field.c (databuf): New static struct to hold info about our buffer to
 3156 	contain the field string values.
 3157 	(allocate_databuf): New function to make sure the databuf is large
 3158 	enough to hold $0 and copies of $1 through $NF.
 3159 	(set_field): Copy $n into free space previously allocated in databuf
 3160 	and add a '\0' at the end.
 3161 	(rebuild_record): Call allocate_databuf to ensure sufficient space
 3162 	for copying non-malloced field values. When copying field values,
 3163 	use databuf to create a NUL-terminated copy.
 3164 	(purge_record): New function extracted from reset_record to initialize
 3165 	$1 through $NF to null values.
 3166 	(set_record): Buffer management moved to new allocate_databuf function.
 3167 	Call purge_record instead of reset_record, since reset_record contains
 3168 	some extra logic not needed in this case.
 3169 	(reset_record): Call purge_record to do most of the work, and call
 3170 	allocate_databuf to make sure we have a big enough buffer to contain
 3171 	copies of the $1 through $NF.
 3172 
 3173 2016-07-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3174 
 3175 	* awk.h: Renumber flags to remove gap created when FIELD was removed.
 3176 
 3177 2016-07-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3178 
 3179 	* field.c (rebuild_record): Need to set MALLOC flag if we allocate
 3180 	memory for a residual field node with valref > 1.
 3181 
 3182 2016-07-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3183 
 3184 	* field.c (rebuild_record): Do not bother to create new field nodes
 3185 	to replace malloc'ed nodes when rebuilding $0.
 3186 
 3187 2016-07-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3188 
 3189 	* awk.h (FIELD): Remove unnecessary flag.
 3190 	(MALLOC): Move definition to join the others, and improve the comment.
 3191 	* array.c (value_info): Replace FIELD test with MALLOC test.
 3192 	* eval.c (flags2str): Remove FIELD flag.
 3193 	* field.c (init_fields): Remove FIELD bit from Null_field->flags.
 3194 	(set_field): Remove FIELD bit from flags.
 3195 	(rebuild_record): Test against MALLOC instead of FIELD. If a field
 3196 	node has valref > 1, we should make a copy, although I don't think
 3197 	it is valid for this to happen.
 3198 	(set_record): Remove FIELD bit from flags.
 3199 	* interpret.h (UNFIELD): Add comment, and test MALLOC flag instead of
 3200 	FIELD. Remove probably buggy code to disable the FIELD flag when
 3201 	valref is 1; that would have created a node where neither the FIELD
 3202 	nor MALLOC flag was set, which seems invalid.
 3203 	* node.c (r_dupnode): Remove code disabling FIELD flag.
 3204 
 3205 2016-07-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3206 
 3207 	* awk.h (force_string_fmt): New inline function to get the string
 3208 	representation in a requested format.
 3209 	(force_string): Reimplement as a macro using force_string_fmt function.
 3210 	(force_string_ofmt): New macro to get a value's OFMT representation.
 3211 	* builtin.c (do_print): Use new force_string_ofmt macro instead of
 3212 	duplicating the logic inline.
 3213 
 3214 2016-07-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3215 
 3216 	* str_array.c (str_lookup): There is no need to worry about the
 3217 	MAYBE_NUM flag, since the code has been patched to make sure to
 3218 	preserve the string value of strnum values, and the integer array
 3219 	code should no longer mistakenly claim a strnum integer with a
 3220 	nonstandard string representation.
 3221 
 3222 2016-07-03         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3223 
 3224 	* field.c (rebuild_record): Revert warning message regarding flags,
 3225 	since I'm not yet totally confident that it is invalid to have FIELD
 3226 	and MALLOC set at the same time.
 3227 
 3228 2016-07-03         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3229 
 3230 	* field.c (rebuild_record): Do not turn off the STRING flag when
 3231 	copying a FIELD node, and issue a warning if MALLOC is enabled.
 3232 
 3233 2016-07-01         Arnold D. Robbins     <arnold@skeeve.com>
 3234 
 3235 	* array.c (value_info): Print something reasonable when stfmt
 3236 	is -1.
 3237 	* mpfr.c (mpg_format_val): Don't cast index to char.
 3238 	* node.c (r_format_val): Ditto.
 3239 	Thanks to Andrew Schorr for pointing these out.
 3240 
 3241 	Unrelated:
 3242 
 3243 	* gawkapi.c (api_warning): Fix the comment header.
 3244 	(api_lintwarn): Factor out the call to va_end to after the if.
 3245 
 3246 	Unrelated:
 3247 
 3248 	* symbol.c (get_symbols): Add FUNCTAB and SYMTAB to the list
 3249 	for the -d option.
 3250 	* awkgram.y (dump_vars): Allow "-" to mean print to stdout.
 3251 	Thanks to Hermann Peifer for the reports.
 3252 
 3253 2016-06-30         Arnold D. Robbins     <arnold@skeeve.com>
 3254 
 3255 	* node.c (r_force_number): Coding style change.
 3256 
 3257 2016-06-30         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3258 
 3259 	* awk.h (STFMT_UNUSED): New define indicating that the string
 3260 	representation does not depend on CONVFMT or OFMT.
 3261 	(force_string): Use STFMT_UNUSED to improve code clarity.
 3262 	* array.c (value_info): Fix stfmt logic.
 3263 	* builtin.c (do_print): Use STFMT_UNUSED to improve code clarity.
 3264 	* field.c (set_record): Ditto.
 3265 	* gawkapi.c (api_sym_update_scalar): Ditto.
 3266 	* int_array.c (is_integer): Check stfmt equals STFMT_UNUSED before
 3267 	bothering to inspect the string.
 3268 	* mpfr.c (mpg_format_val): Use STFMT_UNUSED to improve code clarity.
 3269 	Remove buggy cast to char in stfmt assignment.
 3270 	* node.c (r_format_val): Ditto.
 3271 	* str_array.c (str_lookup): Use STFMT_UNUSED to improve code clarity.
 3272 	* symbol.c (check_param_names): Ditto.
 3273 
 3274 2016-06-29         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3275 
 3276 	* node.c (r_force_number): Optimize by trimming leading and trailing
 3277 	white space before we inspect the string contents.
 3278 	(get_ieee_magic_val): Must terminate the string with '\0' before
 3279 	calling strtod.
 3280 
 3281 2016-06-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3282 
 3283 	* gawkapi.h (awk_string): Add comment about the potential lack of
 3284 	NUL-termination.
 3285 
 3286 2016-06-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3287 
 3288 	* awk.h: Add a comment regarding the potential lack of NUL-termination
 3289 	for Node_val strings.
 3290 
 3291 2016-06-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3292 
 3293 	* node.c (r_format_val): Do not free stptr unless STRCUR is set.
 3294 	This is safer than testing for non-NULL stptr, since, for example,
 3295 	pp_number copies a node and calls r_format_val, but does not bother
 3296 	to set stptr to NULL beforehand.
 3297 
 3298 2016-06-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3299 
 3300 	* node.c (r_force_number): When checking for trailing spaces, protect
 3301 	against running off the end of the string.
 3302 	* mpfr.c (force_mpnum): Ditto.
 3303 
 3304 2016-06-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3305 
 3306 	* builtin.c (do_print): There's actually no reason to test whether a
 3307 	value is a number, since the STRCUR flag and stfmt value contain all
 3308 	the necessary info, as in awk.h:force_string.
 3309 
 3310 2016-06-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3311 
 3312 	* builtin.c (do_print): Do not use OFMT to print strnum values. We
 3313 	accomplish this by calling format_val for a NUMBER only
 3314 	if there is no string currently available, or if stfmt equals
 3315 	neither -1 nor OFMTidx.
 3316 
 3317 2016-06-26         Arnold D. Robbins     <arnold@skeeve.com>
 3318 
 3319 	* awk.h: Edit some comments. Add others. Minor coding style changes.
 3320 	* builtin.c (format_tree): Restore a comment.
 3321 	(do_mktime): Restore saving/restoring of byte after format string.
 3322 	(do_sub): Coding style. Use %.*s in warning message.
 3323 	(nondec2awknum): Restore saving/restoring of byte after string value
 3324 	being converted.
 3325 	* eval.c: Minor coding style edits.
 3326 	* int_array.c (is_integer): Fix order of checks for not
 3327 	updating string value: check length == 0 before testing values.
 3328 	Coding style edits.
 3329 	* mpfr.c (do_mpfr_strtonum): Coding style edits.
 3330 	* node.c (r_force_number): Restore saving/restoring of byte after
 3331 	string value being converted. Edit comments some.
 3332 
 3333 2016-06-26         Arnold D. Robbins     <arnold@skeeve.com>
 3334 
 3335 	Repair change of 2015-08-25 to handling of MAYBE_NUM.
 3336 	* mpfr.c (mpg_force_number): Just clear MAYBE_NUM.
 3337 	* node.c (r_force_number): Clear STRING separately after
 3338 	setting NUMBER.
 3339 
 3340 	Thanks to Andrew Schorr for reporting the problem.
 3341 	A test case will eventually be merged into master.
 3342 
 3343 	Only in stable and master.
 3344 
 3345 2016-06-20         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3346 
 3347 	* builtin.c (do_strftime): Call fixtype before checking flags for
 3348 	STRING type.
 3349 	(do_print): Call fixtype before checking whether argument is a NUMBER.
 3350 	* eval.c (set_BINMODE): Call fixtype before checking value type.
 3351 	No need to call force_number if the flags say it's a number.
 3352 	(r_get_field): Fix lint check for non-numeric argument.
 3353 	* io.c (redirect): Call fixtype before checking whether it's a string.
 3354 
 3355 2016-06-18         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3356 
 3357 	* node.c (r_force_number): Fix typo in comment.
 3358 
 3359 2016-06-16         Arnold D. Robbins     <arnold@skeeve.com>
 3360 
 3361 	* awk.h: Add comment headers for several functions.
 3362 	* builtin.c (nondec2awknum): Actually set a '\0' before
 3363 	calling to strtod() so that the save and restore do something.
 3364 
 3365 2016-06-15         Arnold D. Robbins     <arnold@skeeve.com>
 3366 
 3367 	* config.sub: Update from GNULIB.
 3368 
 3369 2016-06-14         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3370 
 3371 	* awk.h (boolval): New inline function to standardize testing whether
 3372 	a node's value is true.
 3373 	* builtin.c (do_strftime): Use boolval to handle 3rd argument.
 3374 	* eval.c (set_IGNORECASE, eval_condition): Use new boolval function.
 3375 	* io.c (pty_vs_pipe): Use new boolval function.
 3376 
 3377 2016-06-14         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3378 
 3379 	* builtin.c (do_strftime): Fix handling of 3rd argument to work
 3380 	as a standard boolean: non-null or non-zero.
 3381 
 3382 2016-06-14         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3383 
 3384 	* gawkapi.c (node_to_awk_value): When caller requests AWK_SCALAR
 3385 	or AWK_UNDEFINED, we need to call fixtype before we check the type.
 3386 
 3387 2016-06-13         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3388 
 3389 	* awkgram.y: Eliminate STRCUR tests. Must use STRING to test whether
 3390 	a scalar is a string.
 3391 
 3392 2016-06-12         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3393 	
 3394 	* awk.h: Improve comment about STRING and NUMBER type assignment.
 3395 	(nondec2awknum): Add endptr argument.
 3396 	(fixtype): New inline function to clarify a scalar's type.
 3397 	* array.c (sort_up_value_type): Call fixtype before checking the value
 3398 	types.
 3399 	* awkgram.y (yylex): Pass NULL endptr argument to nondec2awknum.
 3400 	(valinfo): Remove dead tests: either STRING or NUMBER or both
 3401 	must be set, so there's no reason to continue with checks for NUMCUR or
 3402 	STRCUR.
 3403 	* builtin.c (do_exp, do_int, do_log, do_sqrt, do_sin, do_cos, do_srand):
 3404 	Fix lint check for non-numeric argument.
 3405 	(do_string): Fix lint check for 1st and 2nd args being strings.
 3406 	(do_length): Fix assert to allow for Node_typedregex.
 3407 	Fix lint check for non-string argument.
 3408 	(format_tree): Fix type detection for '%c' arguments.
 3409 	(do_strftime): Fix lint check for non-numeric 2nd argument and
 3410 	lint check for non-string 1st argument.
 3411 	(do_mktime): Fix lint check for non-string argument. Eliminate useless
 3412 	logic to save and restore terminating NUL.
 3413 	(do_system, do_tolower, do_toupper): Fix lint check for non-string
 3414 	argument.
 3415 	(do_atan2, do_lshift, do_rshift, do_and, do_or, do_xor, do_compl,
 3416 	do_intdiv): Fix lint checks for non-numeric args.
 3417 	(do_sub): Attempt to clean up treatment of 3rd argument to gensub
 3418 	despite vague documentation of expected behavior.
 3419 	(do_strnum): Fix bug in number detection logic, and pass new endptr
 3420 	arg to nondec2awknum.
 3421 	(nondec2awknum): Add endptr argument so caller can detect how much
 3422 	of the string was consumed. Eliminate unnecessary logic to save
 3423 	and restore terminating NUL char.
 3424 	(do_typeof): Use a switch to specify which cases are supported, and
 3425 	issue a warning message when a corrupt type is detected.
 3426 	* debug.c (print_memory): At least one of NUMBER and STRING should
 3427 	be set, so no need to check for NUMCUR or STRCUR in addition.
 3428 	* eval.c (cmp_nodes): Use fixtype function to fix arg types.
 3429 	(set_IGNORECASE): Fix logic for acting on value type. Note that
 3430 	setting IGNORECASE to a string value of "0" with NUMCUR set now enables
 3431 	ignorecase, so that's a subtle change in behavior that seems to match
 3432 	the docs.
 3433 	(set_LINT): Try to clean up configuration logic based on type.
 3434 	* ext.c (get_argument): Remove unused variable pcount.
 3435 	* gawkapi.c (node_to_awk_value): Remove pointless test for NUMCUR
 3436 	after calling force_number. Similarly, no need to test for STRCUR
 3437 	after calling force_string.
 3438 	* int_array.c (is_integer): Reject cases where a string value is
 3439 	present that will not be correctly regenerated from the integer;
 3440 	in particular, this could happen where blank space padding is present,
 3441 	leading zeroes are present, or for hex or octal values.
 3442 	Also fix some bugs where a strnum was converted to a NUMBER without
 3443 	turning off the STRING bit.
 3444 	* io.c (redirect_string): Make lint warning message more accurate.
 3445 	(redirect): Change not_string test to use STRING bit, not STRCUR.
 3446 	(pty_vs_pipe): Use fixtype to correct logic for detecting whether a
 3447 	value is anumber.
 3448 	* mpfr.c (mpg_force_number): If NUMCUR is set, there's no need to
 3449 	test is_mpg_number. If it's not, the NODE is corrupt and we've got
 3450 	bigger problems. Fix flag manipulation logic. Always set NUMCUR and
 3451 	clear MAYBE_NUM, 
 3452 	(set_PREC): Fix logic using fixtype function.
 3453 	(do_mpfr_atan2, do_mpfr_intdiv): Fix lint check for non-numeric
 3454 	arguments.
 3455 	(do_mpfr_func, do_mpfr_int, do_mpfr_compl, get_intval, do_mpfr_srand):
 3456 	Fix lint check for non-numeric argument.
 3457 	(do_mpfr_strtonum): Use fixtype and stop testing for NUMCUR bit.
 3458 	* node.c (r_force_number): Eliminate pointless save and restore of
 3459 	terminating NUL char. Always set NUMCUR and clear MAYBE_NUM, and
 3460 	convert STRING to NUMBER if appropriate, fixing bugs in flag
 3461 	manipulations. For non-decimal data, need to consider whether there
 3462 	is trailing non-numeric data in deciding whether a MAYBE_NUM should
 3463 	be converted to a NUMBER, so take advantage of new endptr arg
 3464 	to nondec2awknum.
 3465 
 3466 2016-06-14         Arnold D. Robbins     <arnold@skeeve.com>
 3467 
 3468 	* builtin.c (do_sub): Fix sub for long runs of backslashes.
 3469 	Thanks to Mike Brennan for the report.
 3470 	
 3471 	Unrelated:
 3472 	* ext.c (get_argument): Remove unused variable pcount.
 3473 
 3474 2016-06-10         Arnold D. Robbins     <arnold@skeeve.com>
 3475 
 3476 	* config.guess, config.sub: Get latest from Gnulib master.
 3477 	* main.c (UPDATE_YEAR): Bump to 2016.
 3478 
 3479 2016-06-09         Arnold D. Robbins     <arnold@skeeve.com>
 3480 
 3481 	* dfa.c: Sync with GNU grep.
 3482 
 3483 	Unrelated:
 3484 
 3485 	* configure.ac: Move AM_CONDITIONAL[ENABLE_EXTENSIONS] outside
 3486 	the enclosing if. Thanks to Assaf Gordon <assafgordon@gmail.com>
 3487 	for the report.
 3488 
 3489 2016-06-08         Arnold D. Robbins     <arnold@skeeve.com>
 3490 
 3491 	* symbol.c (lookup): If got Node_val, it's a non-variable
 3492 	in SYMTAB, return NULL. Can affect watchpoints in the debugger,
 3493 	maybe other places. Thanks to Hermann Peifer for the
 3494 	test case and report.
 3495 
 3496 2016-06-05         Arnold D. Robbins     <arnold@skeeve.com>
 3497 
 3498 	* dfa.c: Sync with GNU grep.
 3499 
 3500 2016-06-01         Arnold D. Robbins     <arnold@skeeve.com>
 3501 
 3502 	* nonposix.h (getpgrp): Wrap declaration in ifdef so it doesn't
 3503 	mess things up on POSIX systems (like Solaris). Thanks to
 3504 	Nelson Beebe for the report.
 3505 	* node.c (is_hex): New function to check for 0x preceded by
 3506 	optional sign.
 3507 	(r_force_number): Use it. Thanks to Mike Brennan for the report.
 3508 
 3509 2016-05-30         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3510 
 3511 	* gawkapi.h (awk_ext_func_t): Rename num_expected_args to
 3512 	max_expected_args, and explain in the comment that it doesn't really
 3513 	matter.
 3514 	* ext.c (make_builtin): Replace num_expected_args with
 3515 	max_expected_args.
 3516 	(get_argument): Do not check whether the argument number exceeds
 3517 	the maximum expected by the function.
 3518 
 3519 2016-05-30         Arnold D. Robbins     <arnold@skeeve.com>
 3520 
 3521 	* main.c (arg_assign): Fully bracket ifdefs around call
 3522 	to force_number. Thanks to Andrew Schorr for pointing out
 3523 	that force_number was called only if LC_NUMERIC was defined.
 3524 	
 3525 	Lots of files: Update copyright date.
 3526 
 3527 	* field.c (set_FS): Handle FS = "\0" if RS = "". Thanks to
 3528 	Janis Papanagnou for the report.
 3529 
 3530 	* getopt.c, getopt.h, getopt1.c, getopt_int.h: Sync with GLIBC.
 3531 
 3532 2016-05-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3533 
 3534 	* awk.h (get_actual_argument): Remove unused "optional" argument.
 3535 	(get_scalar_argument, get_array_argument): Change macro definition to
 3536 	remove 3rd "optional" argument.
 3537 	* ext.c (get_actual_argument): Remove unused "optional" argument.
 3538 	* gawkapi.c (api_get_argument, api_set_argument): Remove unused final
 3539 	argument to get_array_argument and get_scalar_argument.
 3540 
 3541 2016-05-26         Arnold D. Robbins     <arnold@skeeve.com>
 3542 
 3543 	* awk.h [fatal]: Make parentheses and use of indirection
 3544 	consistent with warning and lintwarn. Thanks to Andrew Schorr
 3545 	for pointing this out.
 3546 	* str_array.c (str_lookup): Move test for MAYBE_NUM to where
 3547 	we duplicate the subscript. Removing it across the board is
 3548 	wrong if there are multiple references to the value. Thanks
 3549 	to Andrew Schorr for discussion and test case.
 3550 
 3551 2016-05-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3552 
 3553 	* awk.h (get_actual_argument): Add an initial argument containing 
 3554 	the (NODE *) previously returned by get_argument. This allows us to
 3555 	eliminate a call to get_argument from inside get_actual_argument.
 3556 	(get_scalar_argument, get_array_argument): Change macro definition to
 3557 	add an initial node argument to pass through to get_actual_argument.
 3558 	* ext.c (get_actual_argument): Add initial (NODE *) argument to contain
 3559 	the value previously returned by get_argument. This allows us to
 3560 	avoid repeating the call to get_argument. We can also eliminate the
 3561 	check for a NULL value, since the caller did that already.
 3562 	* gawkapi.c (api_get_argument): Pass (NODE *) returned by get_argument
 3563 	to get_array_argument and get_scalar_argument.
 3564 	(api_set_argument): Pass (NODE *) returned by get_argument to
 3565 	get_array_argument.
 3566 
 3567 2016-05-25         Manuel Collado        <mcollado2011@gmail.com>.
 3568 
 3569 	* gawkapi.c (api_nonfatal): New function.
 3570 	(api_impl): Include it.
 3571 	* gawkapi.h (struct gawk_api): Add api_nonfatal member.
 3572 	(nonfatal): New macro.
 3573 
 3574 2016-05-12         Arnold Robbins       <arnold@skeeve.com>
 3575 
 3576 	* str_array.c (str_lookup): Remove MAYBE_NUM from subscript flags.
 3577 	Bug reported by Andres Legarra <Andres.Legarra@toulouse.inra.fr>.
 3578 
 3579 	Unrelated: Fix issues with SIGPIPE. Reported by
 3580 	Ian Jackson <ijackson@chiark.greenend.org.uk>.
 3581 
 3582 	* builtin.c (do_system): Reset/restore SIGPIPE to/from default around
 3583 	call to system.
 3584 	* io.c (redirect, gawk_popen [PIPES_SIMULATED]): Same.
 3585 
 3586 2016-05-12  Eli Zaretskii  <eliz@gnu.org>
 3587 
 3588 	* nonposix.h: Add prototypes for POSIX functions emulated in pc/*
 3589 	files.
 3590 
 3591 2016-05-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3592 
 3593 	* interpret.h (r_interpret): Op_ext_builtin. No need to test whether
 3594 	op == Op_ext_builtin, since we wouldn't be here otherwise.
 3595 
 3596 2016-05-03         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3597 
 3598 	* builtin.c (format_tree): Do not waste a byte at the end of a string.
 3599 
 3600 2016-05-03         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3601 
 3602 	* builtin.c (format_tree): After the string has been rendered, use
 3603 	realloc to shrink the buffer to the needed size. Otherwise, the minimum
 3604 	buffer size of 512 bytes can result in lots of wasted memory if many
 3605 	sprintf results are stored in an array.
 3606 
 3607 2016-05-02         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 3608 
 3609 	* gawkapi.h (gawk_api_major_version, gawk_api_minor_version): Add
 3610 	CPP #define values to support conditional compilation.
 3611 
 3612 2016-05-02         Arnold D. Robbins     <arnold@skeeve.com>
 3613 
 3614 	* dfa.h, dfa.c: Sync with grep.
 3615 	* re.c (research): Adjust type of try_backref.
 3616 
 3617 2016-05-02         Arnold D. Robbins     <arnold@skeeve.com>
 3618 
 3619 	* awk.h (success_node): Declare.
 3620 	* array.c (success_node): Define.
 3621 	* cint_array.c, int_array.c, str_array.c: Use `& success_node'
 3622 	instead of `(NODE **) ! NULL' to indicate success throughout.
 3623 	Thanks to Pat Rankin for the cleanup suggestion.
 3624 
 3625 2016-04-27         Arnold D. Robbins     <arnold@skeeve.com>
 3626 
 3627 	* io.c (set_RS): Use rs1scan if do_traditional, even if length
 3628 	of RS is > 1.  Bug reported by Glauco Ciullini
 3629 	<glauco.ciullini6245@gmail.com>.
 3630 
 3631 2016-04-24         Arnold D. Robbins     <arnold@skeeve.com>
 3632 
 3633 	* dfa.c: Sync with GNU grep.
 3634 
 3635 2016-04-11         Arnold D. Robbins     <arnold@skeeve.com>
 3636 
 3637 	* regex_internal.c: Replace _GL_ATTRIBUTE_PURE with
 3638 	__attribute__.
 3639 
 3640 2016-04-11         Arnold D. Robbins     <arnold@skeeve.com>
 3641 
 3642 	* regexec.c: Stamp out last remaining use of __attribute.
 3643 	* regcomp.c: Undo change of 2016-01-24 when parsing single-byte
 3644 	ranges. Go back to treating them as bytes and not as characters.
 3645 	The change broke things on Windows in non-UTF-8 character sets.
 3646 	* mbsupport.h (mbstate_t): Define to int.
 3647 	Update copyright.
 3648 
 3649 2016-04-10         John E. Malmberg      <wb8tyw@qsl.net>
 3650 
 3651 	* regex_internal.c: Use _GL_ATTRIBUTE_PURE macro
 3652 
 3653 2016-04-07         Arnold D. Robbins     <arnold@skeeve.com>
 3654 
 3655 	* awk.h (two_way_close_type): Move here from io.c.
 3656 	(close_rp): Add declaration.
 3657 	* builtin.c (do_printf): Call close_rp before fatal message when
 3658 	attempting to write the closed write end of a two way pipe.
 3659 	(do_print): Ditto.
 3660 	(do_print_rec): Ditto.
 3661 	* io.c (do_getline_redir): Same, for reading closed read end.
 3662 	(close_rp): Make not static.
 3663 
 3664 2016-04-07  Eli Zaretskii  <eliz@gnu.org>
 3665 
 3666 	* nonposix.h (WEXITSTATUS, WIFEXITED, WIFSIGNALED, WTERMSIG)
 3667 	(WIFSTOPPED, WSTOPSIG) [__MINGW32__]: New macros to replace the
 3668 	missing header sys/wait.h.
 3669 	(w32_status_to_termsig): Add prototype.
 3670 
 3671 	* builtin.c (do_system) [__MINGW32__]: Compute the exit status of
 3672 	'system' differently under --traditional, as the low 8 bits are
 3673 	the most interesting.
 3674 
 3675 2016-04-06         Arnold D. Robbins     <arnold@skeeve.com>
 3676 
 3677 	* builtin.c (do_printf): Allow a write to the closed write-end of
 3678 	a two-way pipe to be nonfatal if NONFATAL is set for it.
 3679 	(do_print): Ditto.
 3680 	(do_print_rec): Ditto.
 3681 	* io.c (do_getline_redir): Same thing for reading from a closed
 3682 	read end of a two-way pipe. Fatal error.
 3683 
 3684 2016-04-04         Arnold D. Robbins     <arnold@skeeve.com>
 3685 
 3686 	* builtin.c (do_fflush): Add warning for flush to two-way
 3687 	pipe where write end was closed.
 3688 	* io.c (flush_io): Add some braces for the for loop.
 3689 
 3690 2016-04-02         Arnold D. Robbins     <arnold@skeeve.com>
 3691 
 3692 	* builtin.c (do_printf): If the redirection is two way but the
 3693 	fp is NULL, it means we're writing to the closed write-end of
 3694 	a two-way pipe. Issue a fatal error message.
 3695 	(do_print): Ditto.
 3696 	(do_print_rec): Ditto.
 3697 	* io.c (do_getline_redir): Same thing for reading from a closed
 3698 	read end of a two-way pipe. Fatal error.
 3699 	* NEWS: Updated.
 3700 
 3701 2016-03-27         Stephen Davies        <sdavies@sdc.com.au>
 3702 
 3703 	* awkgram.y (get_comment): Strip CRs from comment. Strip
 3704 	off trailing newlines.
 3705 
 3706 2016-03-21         Arnold D. Robbins     <arnold@skeeve.com>
 3707 
 3708 	* profile.c (pprint): Improve handling of comment after
 3709 	and if statement without an else.
 3710 
 3711 2016-03-19         Arnold D. Robbins     <arnold@skeeve.com>
 3712 
 3713 	Considerable improvements to handling of comments when pretty
 3714 	printing, particularly for end-of-line comments.
 3715 
 3716 	* awkgram.y (prior_comment, comment_to_save): New variables.
 3717 	(add_pending_comment): New function.
 3718 	(grammar): Jump through lots more hoops to capture comments.
 3719 	Due to shift-reduce parsing, there can be up to two comments
 3720 	captured and waiting to be saved; be sure to get them both and
 3721 	at the right times.  This is difficult since comments have no
 3722 	real syntactic existence. Call add_pending_comment on most of
 3723 	the simple statements.
 3724 	(get_comment): Save a pre-existing comment in prior_comment.
 3725 	(split_comment): Use comment_to_save instead of `comment'.
 3726 	* profile.c (end_line): Change to return the instruction after
 3727 	the comment that gets printed; adjust return type.
 3728 	(pprint): Add skip_comment static variable. Adjust logic for
 3729 	skipping an end-of-line comment; only do it if skip_comment is
 3730 	true. This is set to true in places where we can't use the
 3731 	return value from end_line().  Call end_line() in many more places.
 3732 	(pp_func): Handle end-of-line comments after a function header.
 3733 
 3734 2016-03-17         Arnold D. Robbins     <arnold@skeeve.com>
 3735 
 3736 	* debug.c (print_instruction): For Op_comment, improve notation as
 3737 	to whether it's a full comment or an end of line comment.
 3738 
 3739 2016-03-14         Arnold D. Robbins     <arnold@skeeve.com>
 3740 
 3741 	* io.c (socketopen): For SOCK_DGRAM, set read_len to sizeof
 3742 	remote_addr. Makes UDP more or less work again.
 3743 	Thanks to Juergen Kahrs for the fix.
 3744 
 3745 2016-03-11         Arnold D. Robbins     <arnold@skeeve.com>
 3746 
 3747 	* debug.c (print_instruction): Normalize printing of comment dump.
 3748 
 3749 2016-03-10         Arnold D. Robbins     <arnold@skeeve.com>
 3750 
 3751 	* builtin.c (do_system): Further improvements. Catch core dump
 3752 	flag.
 3753 
 3754 2016-03-11         Arnold D. Robbins     <arnold@skeeve.com>
 3755 
 3756 	* builtin.c (do_system): Improve return values of system().
 3757 
 3758 2016-03-08         Arnold D. Robbins     <arnold@skeeve.com>
 3759 
 3760 	* profile.c (print_instruction): Fix duplicate case not caught
 3761 	by TinyCC. Grrr.
 3762 
 3763 2016-03-07         Arnold D. Robbins     <arnold@skeeve.com>
 3764 
 3765 	* profile.c (print_instruction): Further improvements in
 3766 	instruction dump, especially for when pretty-printing.
 3767 	* builtin.c (do_system): Augment the logic for the return
 3768 	value so that death-by-signal info is available too.
 3769 
 3770 2016-03-03         Arnold D. Robbins     <arnold@skeeve.com>
 3771 
 3772 	* profile.c (pp_list): Unconditionally compute delimlen. Avoids
 3773 	compiler warning.
 3774 
 3775 2016-03-02         Arnold D. Robbins     <arnold@skeeve.com>
 3776 
 3777 	* debug.c (print_instruction): Improvements in instruction dump
 3778 	for if and else.
 3779 
 3780 2016-03-01         Arnold D. Robbins     <arnold@skeeve.com>
 3781 
 3782 	* debug.c (print_instruction): For Op_comment, add notation as
 3783 	to whether it's a full comment or an end of line comment.
 3784 
 3785 2016-02-29         Arnold D. Robbins     <arnold@skeeve.com>
 3786 
 3787 	* profile.c (pp_list): Handle the case of nargs equal to zero.
 3788 	Thanks to Hermann Peifer for the report.
 3789 
 3790 2016-02-28         Arnold D. Robbins     <arnold@skeeve.com>
 3791 
 3792 	* profile.c (pprint): Fix copy-paste error in else handling.
 3793 	Thanks to Michal Jaegermann for the report.
 3794 
 3795 2016-02-23         Arnold D. Robbins     <arnold@skeeve.com>
 3796 
 3797 	* config.guess, config.rpath, config.sub: Update to latest
 3798 	from GNULIB.
 3799 
 3800 2016-02-23         Arnold D. Robbins     <arnold@skeeve.com>
 3801 
 3802 	* NEWS: Update full list of infrastructure tools.
 3803 
 3804 2016-02-22        gettextize             <bug-gnu-gettext@gnu.org>
 3805 
 3806 	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.7.
 3807 
 3808 2016-02-21         Nelson H.F. Beebe     <beebe@math.utah.edu>
 3809 
 3810 	* random.c [SHUFFLE_BITS, SHUFFLE_MAX, SHUFFLE_MASK]: New macros.
 3811 	(shuffle_init, shuffle_buffer): New static variables.
 3812 	(random_old): Renamed from random.
 3813 	(random): New function wrapping random_old and providing a
 3814 	shuffle buffer to increase the period. See the literature citations
 3815 	and other notes in the code.
 3816 
 3817 2016-02-21         Arnold D. Robbins     <arnold@skeeve.com>
 3818 
 3819 	* regexec.c (prune_impossible_nodes): Remove attribute that
 3820 	keeps it from compiling with 32 bit GCC. Who the heck knows
 3821 	why or how. Sigh. Double sigh.
 3822 
 3823 2016-02-20         Arnold D. Robbins     <arnold@skeeve.com>
 3824 
 3825 	* regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h,
 3826 	regexec.c: Sync with GLIBC, mostly prototype changes.
 3827 
 3828 2016-02-18         Arnold D. Robbins     <arnold@skeeve.com>
 3829 
 3830 	Fix profile / pretty-printing to chain else-ifs.
 3831 
 3832 	* profile.c (pprint): Change third argument into a set of flags
 3833 	for in the for header or in an else if. Adjust case Op_K_else to
 3834 	make the right checks and format the code properly. In Op_K_if
 3835 	clear the flag so that any following else gets indented properly.
 3836 	Adjust all calls.
 3837 
 3838 2016-02-14         Arnold D. Robbins     <arnold@skeeve.com>
 3839 
 3840 	* README, NEWS: Updated to reflect use of Texinfo 6.1.
 3841 
 3842 	Unrelated:
 3843 
 3844 	* configure.ac: Switch to AC_PROG_CC_C99 to enable C99
 3845 	compilation and features.
 3846 	* dfa.c: Sync with GNU grep, go back to C99 style declarations
 3847 	at point of use.
 3848 
 3849 2016-02-05         Arnold D. Robbins     <arnold@skeeve.com>
 3850 
 3851 	Make optimization (constant folding and tail call recursion)
 3852 	be on by default.
 3853 
 3854 	* awkgram.y (common_exp): Only do concatenation of two strings(!)
 3855 	* main.c (do_optimize): Init to true.
 3856 	(optab): Add new -s/--no-optimize option.
 3857 	(usage): Update message to include it.
 3858 	(parse_args): Parse it. Set do_optimize to false if pretty
 3859 	printing or profiling.
 3860 	* NEWS: Updated.
 3861 
 3862 2016-01-28         Arnold D. Robbins     <arnold@skeeve.com>
 3863 
 3864 	* Makefile.am (SUBDIRS): Include extras. Otherwise dist does
 3865 	doesn't work.
 3866 
 3867 2016-01-27         Arnold D. Robbins     <arnold@skeeve.com>
 3868 
 3869 	* configure.ac (GAWK_AC_AIX_TWEAK): Remove call.
 3870 	* configure: Regenerated.
 3871 	* io.c (GAWK_AIX): Check _AIX instead.
 3872 	* custom.h (_AIX): Add define of _XOPEN_SOURCE_EXTENDED.
 3873 
 3874 	Unrelated:
 3875 
 3876 	* configure.ac: Remove old stuff for ISC Unix, no longer needed.
 3877 	* configure: Regenerated.
 3878 
 3879 2016-01-25         John E. Malmberg      <wb8tyw@qsl.net>
 3880 
 3881 	* io.c (redirect): Need to call close_one more than once after
 3882 	  running out of file handles.
 3883 
 3884 2016-01-25         Arnold D. Robbins     <arnold@skeeve.com>
 3885 
 3886 	* NEWS: Document VMS support updated.
 3887 
 3888 2016-01-24         Arnold D. Robbins     <arnold@skeeve.com>
 3889 
 3890 	Regex: treat [x] as x if x is a unibyte encoding error.
 3891 	This change removes an ifdef GAWK.
 3892 
 3893 	* regcomp.c (parse_byte) [ !_LIBC && RE_ENABLE_I18N]: New function.
 3894 	(build_range_exp) [ !_LIBC && RE_ENABLE_I18N]: Use it.
 3895 	From Paul Eggert  <eggert@cs.ucla.edu>.
 3896 
 3897 2016-01-22         Arnold D. Robbins     <arnold@skeeve.com>
 3898 
 3899 	* regexec.c (prune_impossible_nodes): Remove all attributes, on
 3900 	both declaration and definition.  Fixes a Linux Mint 17 compilation
 3901 	braino reported by Antonio Colombo.
 3902 	* regex_internal.h (test_malloc): Add cast to silence a warning
 3903 	on the same system.
 3904 	(test_realloc): Ditto.
 3905 
 3906 2016-01-20         Arnold D. Robbins     <arnold@skeeve.com>
 3907 
 3908 	* regex_internal.h [attribute_hidden]: Remove definition.
 3909 	* regcomp.c [attribute_hidden]: Remove uses. Not needed since
 3910 	the variables are static. Thanks to Paul Eggert for pointing
 3911 	this out.
 3912 
 3913 2016-01-18         Paul Eggert  <eggert@cs.ucla.edu>
 3914 
 3915 	Diagnose ERE '()|\1'
 3916 	Problem reported by Hanno Boeck in: http://bugs.gnu.org/21513
 3917 
 3918 	* lib/regcomp.c (parse_reg_exp): While parsing alternatives, keep
 3919 	track of the set of previously-completed subexpressions available
 3920 	before the first alternative, and restore this set just before
 3921 	parsing each subsequent alternative.  This lets us diagnose the
 3922 	invalid back-reference in the ERE '()|\1'.
 3923 
 3924 	Unrelated:  General minor cleanups (spelling, code) from Gnulib:
 3925 
 3926 	* regex.h, regex_internal.c, regex_internal.h, regexec.c: Minor
 3927 	cleanups.
 3928 
 3929 2016-01-14         Arnold D. Robbins     <arnold@skeeve.com>
 3930 
 3931 	* eval.c (r_get_lhs): If original array was Node_var_new,
 3932 	assign value that is dupnode of Nnull_string and not
 3933 	Nnull_string directly. Fixes core dump reported by
 3934 	ruyk <Lonely.ruyk@mail.ru>.
 3935 
 3936 	Unrelated:
 3937 
 3938 	* ChangeLog: Cleanup spurious extra whitespace.
 3939 
 3940 2016-01-03         Arnold D. Robbins     <arnold@skeeve.com>
 3941 
 3942 	* configure.ac (GAWK_AC_LINUX_ALPHA): Remove call.
 3943 	* configure: Regenerated.
 3944 	* NEWS: Document removal of support for GNU/Linux on Alpha.
 3945 
 3946 2016-01-02         Arnold D. Robbins     <arnold@skeeve.com>
 3947 
 3948 	* dfa.c (add_utf8_anychar): Minor change in declaration of
 3949 	utf8_classes to keep Tiny CC happy.  Also syncs with grep.
 3950 	* dfa.h: Sync with grep (update copyright year).
 3951 
 3952 2015-12-27         Arnold D. Robbins     <arnold@skeeve.com>
 3953 
 3954 	* awkgram.y (mk_condition): Revise to correctly handle
 3955 	empty else part for pretty printing. Bug report by
 3956 	ziyunfei <446240525@qq.com>.
 3957 
 3958 2015-12-20         Arnold D. Robbins     <arnold@skeeve.com>
 3959 
 3960 	* io.c (nonfatal): New static constant string.
 3961 	* is_non_fatal, is_non_fatal_redirect: Use it.
 3962 
 3963 2015-12-16         Arnold D. Robbins     <arnold@skeeve.com>
 3964 
 3965 	* io.c (two_way_open): Remove unneeded close of slave in the
 3966 	parent.
 3967 
 3968 2015-12-16         Arnold D. Robbins     <arnold@skeeve.com>
 3969 
 3970 	* profile.c (pp_number): Move count into ifdef for MPFR. Avoids
 3971 	an unused variable warning if not compiling for MPFR.
 3972 
 3973 	Unrelated:
 3974 
 3975 	* io.c (two_way_open): If using a pty instead of pipes, open the
 3976 	slave in the child. Fixes AIX and doesn't seem to break GNU/Linux.
 3977 
 3978 2015-11-26         Arnold D. Robbins     <arnold@skeeve.com>
 3979 
 3980 	* command.y (cmdtab): Add "exit" as synonym for "quit".
 3981 	Suggested by Joep van Delft <joepvandelft@xs4all.nl>.
 3982 	* NEWS: Document this.
 3983 
 3984 2015-11-24         Arnold D. Robbins     <arnold@skeeve.com>
 3985 
 3986 	* debug.c (debug_pre_execute): Fix to check watchpoints before
 3987 	checking breakpoints. Gives more natural behavior for the user.
 3988 	* NEWS: Document this.
 3989 	Issue reported by Joep van Delft <joepvandelft@xs4all.nl>.
 3990 
 3991 2015-10-28         Arnold D. Robbins     <arnold@skeeve.com>
 3992 
 3993 	* awkgram.y (nextc): Don't allow '\0' even if check_for_bad
 3994 	is false. Fixes a problem reported by Hanno Boeck <hanno@hboeck.de>.
 3995 
 3996 	Unrelated:
 3997 
 3998 	* dfa.c: Sync with GNU grep.
 3999 
 4000 2015-10-25         Arnold D. Robbins     <arnold@skeeve.com>
 4001 
 4002 	* awkgram.y (yylex): Fix invalid write problems.
 4003 	Reported by Hanno Boeck <hanno@hboeck.de>.
 4004 	Only appeared in master. Harumph.
 4005 
 4006 2015-10-16         Arnold D. Robbins     <arnold@skeeve.com>
 4007 
 4008 	* Makefile.am (SUBDIRS): Fix ordering so that
 4009 	make check directly after configure works properly.
 4010 	Thanks to Michal Jaegermann <michal.jnn@gmail.com>
 4011 	for the report.
 4012 
 4013 	Unrelated:
 4014 
 4015 	* dfa.c: Sync with GNU grep.
 4016 
 4017 2015-10-11         Arnold D. Robbins     <arnold@skeeve.com>
 4018 
 4019 	* awkgram.y (yylex): Fix invalid read problems.
 4020 	Reported by Hanno Boeck <hanno@hboeck.de>.
 4021 
 4022 2015-10-04         Arnold D. Robbins     <arnold@skeeve.com>
 4023 
 4024 	* configure.ac: Bump version to 4.1.3a.
 4025 
 4026 2015-09-26         Arnold D. Robbins     <arnold@skeeve.com>
 4027 
 4028 	* awkgram.y (yylex): Diagnose multidimensional arrays for
 4029 	traditional/posix (fatal) or lint. Thanks to Ed Morton
 4030 	for the bug report.
 4031 
 4032 2015-09-25         Arnold D. Robbins     <arnold@skeeve.com>
 4033 
 4034 	* config.guess, config.sub, config.rpath: Updated.
 4035 
 4036 2015-09-18         Arnold D. Robbins     <arnold@skeeve.com>
 4037 
 4038 	* field.c (fpat_parse_field): Always use rp->non_empty instead
 4039 	of only if in_middle. The latter can be true even if we've
 4040 	already parsed part of the record. Thanks to Ed Morton
 4041 	for the bug report.
 4042 
 4043 2015-09-11	Daniel Richard G.	<skunk@iSKUNK.ORG>
 4044 
 4045 	* regcomp.c: Include strings.h, wrapped in ifdef. Revise
 4046 	defines for BTOWC.
 4047 	* regex_internal.h: Remove ZOS_USS bracketing ifdefs.
 4048 
 4049 2015-09-04         Arnold D. Robbins     <arnold@skeeve.com>
 4050 
 4051 	* profile.c (pp_num): Use format_val to print integral values
 4052 	as integers. Thanks to Hermann Peifer for the report.
 4053 
 4054 2015-08-28	Daniel Richard G.	<skunk@iSKUNK.ORG>
 4055 
 4056 	* Makefile.am, configure.ac: Use an Automake conditional to
 4057 	enable/disable the "extensions" subdirectory instead of
 4058 	producing a stub Makefile therein from the configure script.
 4059 	* awk.h, custom.h, regex_internal.h: Removed z/OS-specific code
 4060 	that is no longer needed due to improvements in Gawk's general
 4061 	Autotools support.
 4062 	* awk.h: Allow <strings.h> to be #included together with
 4063 	<string.h> as this is required on some systems (z/OS).
 4064 	* io.c, configure.ac: <sys/select.h> is needed for select()
 4065 	and related bits on z/OS.
 4066 	* awk.h: Handle the redefinition of EXIT_FAILURE on z/OS in a
 4067 	more elegant/general way.
 4068 	* awkgram.y, command.y, configure.ac, eval.c,
 4069 	helpers/testdfa.c: Define and use the USE_EBCDIC cpp symbol
 4070 	instead of checking the value of 'a' whenever we want to know
 4071 	if we're on an EBCDIC system. Also, don't assume that z/OS
 4072 	necessarily means EBCDIC, as the compiler does have an ASCII
 4073 	mode (-qascii).
 4074 	* awkgram.y, command.y, configure.ac: On EBCDIC systems,
 4075 	convert singleton EBCDIC characters in the input stream to
 4076 	ASCII on the fly so that the generated awkgram.c/command.c in
 4077 	the distributed sources can be used, i.e. we don't have to
 4078 	require the user to build Bison and re-generate those files
 4079 	themselves. This implementation uses a z/OS-specific function
 4080 	(__etoa_l()) to do the conversion, but support for other
 4081 	systems can be added in the future as necessary.
 4082 	* io.c: No need to protect this block of "#if
 4083 	defined(HAVE_TERMIOS_H)" code from z/OS; it works just fine
 4084 	there.
 4085 	* configure.ac: Check for the "struct passwd.pw_passwd" and
 4086 	"struct group.gr_passwd" fields and conditionalize their use,
 4087 	as they don't exist on z/OS.  Needed for doc/gawktexi.in.
 4088 
 4089 2015-08-25         Arnold D. Robbins     <arnold@skeeve.com>
 4090 
 4091 	* node.c (str2wstr): Upon finding an invalid character, if
 4092 	using UTF-8, use the replacement character instead of skipping
 4093 	it. Helps match() and other functions work better in the face
 4094 	of unexpected data.  Make the lint warning an unconditional
 4095 	warning.
 4096 
 4097 	Unrelated:
 4098 
 4099 	* awk.h: Add explanatory comment on the flags related to
 4100 	types and values.
 4101 	* mpfr.c (mpg_force_number): If setting NUMBER, clear STRING also
 4102 	when clearing MAYBE_NUM.
 4103 	(set_PREC): Check STRCUR instead of STRING.
 4104 	* node.c (r_force_number): If setting NUMBER, clear STRING also
 4105 	when clearing MAYBE_NUM.
 4106 
 4107 2015-08-15         Arnold D. Robbins     <arnold@skeeve.com>
 4108 
 4109 	* dfa.c (dfamust): Restore c90 compat by moving some
 4110 	variable declarations to the top of the routine.
 4111 
 4112 2015-08-12         Arnold D. Robbins     <arnold@skeeve.com>
 4113 
 4114 	* dfa.c: Sync with GNU grep. Yet again, again.
 4115 
 4116 2015-08-02         Arnold D. Robbins     <arnold@skeeve.com>
 4117 
 4118 	* dfa.c: Sync with GNU grep. Yet again.
 4119 
 4120 2015-07-21         Arnold D. Robbins     <arnold@skeeve.com>
 4121 
 4122 	* dfa.c: Sync with GNU grep.
 4123 
 4124 2015-07-18         Arnold D. Robbins     <arnold@skeeve.com>
 4125 
 4126 	* dfa.c: Sync with GNU grep.
 4127 
 4128 2015-07-08         Arnold D. Robbins     <arnold@skeeve.com>
 4129 
 4130 	* dfa.h, dfa.c: Sync with GNU grep.
 4131 
 4132 2015-06-29         Arnold D. Robbins     <arnold@skeeve.com>
 4133 
 4134 	* awkgram.y (yylex): If gawk extension function is found as
 4135 	a function in a user-defined function body, treat it normally.
 4136 	Makes eval "print and(a, 1)" work in the debugger again.
 4137 	Thanks, yet again, to Hermann Peifer.
 4138 	* interpret.h (r_interpret): Op_subscript. UPREF if the
 4139 	element value is a typed regexp.  Thanks to Hermann Peifer.
 4140 
 4141 2015-06-28         Arnold D. Robbins     <arnold@skeeve.com>
 4142 
 4143 	Improve memory tracking of typed regexps.
 4144 
 4145 	* awkgram.y (make_regnode): Set valref to 1.
 4146 	* interpret.h (r_interpret): Have Op_push_re upref typed regexp.
 4147 	* builtin.c (do_typeof): OK to deref typed regex.
 4148 	* awk.h (force_string): Do dupnode on the regexp text.
 4149 
 4150 2015-06-26         Arnold D. Robbins     <arnold@skeeve.com>
 4151 
 4152 	Remove support for old-style extensions.
 4153 
 4154 	* awk.h (Node_old_ext_func, Op_old_ext_func): Removed.
 4155 	Remove all uses throughout the code.
 4156 	(load_old_ext, make_old_builtin): Remove declarations.
 4157 	* ext.c (load_old_ext, make_old_builtin): Removed.
 4158 	* awkgram.y (tokentab): Remove "extension" entry.
 4159 	* eval.c (Node_old_ext_funci, Op_old_ext_func): Remove from tables.
 4160 	* interpret.h (interpret): Remove stuff for old extensions.
 4161 
 4162 	Unrelated:
 4163 
 4164 	* builtin.c (do_typeof): Add support for strnum, distinguish
 4165 	untyped from unassigned, use "string" and "number". Thanks to
 4166 	Hermann Peifer for suggesting inclusion of strnum.
 4167 
 4168 2015-06-25         Arnold D. Robbins     <arnold@skeeve.com>
 4169 
 4170 	Further work straightening out memory management for typeof.
 4171 
 4172 	* awk.h (DEREF): Add an assert.
 4173 	* builtin.c (do_typeof): Add comments, cases where not to deref.
 4174 	* debug.c (print_instruction): Add Op_push_arg_untyped.
 4175 	* interpret.h (r_interpret): Additional comments / tweaks for
 4176 	Op_push_arg_untyped.
 4177 
 4178 	Unrelated. Make `x = @/foo/ ; print x' print something.
 4179 
 4180 	* builtin.c (do_print): Check for Node_typedregex and handle it.
 4181 	Needed for adding test code.
 4182 
 4183 	Unrelated. Typo fix.
 4184 
 4185 	* debug.c (initialize_watch_item): Dupnode the right thing.
 4186 
 4187 2015-06-22         Arnold D. Robbins     <arnold@skeeve.com>
 4188 
 4189 	* awkgram.y (snode): Make isarray not scalarize untyped parameters
 4190 	also.
 4191 	* profile.c (pprint): Add Op_push_arg_untyped.
 4192 
 4193 	Improve debugger support for typed regexps.
 4194 	Thanks to Hermann Peifer for the bug report.
 4195 
 4196 	* awkgram.y (valinfo): Add support for Node_typedregex.
 4197 	* debug.c (watchpoint_triggered): Handle Node_typedregex.
 4198 	(initialize_watch_item): Ditto.
 4199 	(print_memory): Ditto.
 4200 
 4201 	Fix typeof to work on subarrays.  Thanks, yet again, to
 4202 	Hermann Peifer for the bug report.
 4203 
 4204 	* builtin.c (do_typeof): Don't deref Node_var_array.
 4205 
 4206 2015-06-21         Arnold D. Robbins     <arnold@skeeve.com>
 4207 
 4208 	Fixes for typeof - Don't let typeof change an untyped variable
 4209 	into a scalar.
 4210 
 4211 	* awk.h (opcodeval): Add Op_push_arg_untyped.
 4212 	* awkgram.y (snode): Separate out case for do_typeof, use
 4213 	Op_push_arg_untyped.
 4214 	* builtin.c (do_typeof): Arg will be equal to Nnull_string
 4215 	if it's untyped.
 4216 	* eval.c (optypes): Add Op_push_arg_untyped.
 4217 	* interpret.h (r_interpret): Add Op_push_arg_untyped handling.
 4218 
 4219 2015-06-19         Arnold D. Robbins     <arnold@skeeve.com>
 4220 
 4221 	* builtin.c (do_isarray): Minor edit to lint warning.
 4222 	* TODO: Updated.
 4223 
 4224 2015-06-14         Arnold D. Robbins     <arnold@skeeve.com>
 4225 
 4226 	* regcomp.c, regex_internal.h, regexec.c: Sync with GLIBC.
 4227 
 4228 	Unrelated:
 4229 
 4230 	* regex_internal.c, regexec.c: __attribute --> __attribute__.
 4231 
 4232 	Related:
 4233 
 4234 	* regex_internal.h: Clean up defines for non-GCC for attribute;
 4235 	essentially sync it with GLIBC.
 4236 
 4237 2015-06-12         Arnold D. Robbins     <arnold@skeeve.com>
 4238 
 4239 	* awkgram.y: Finish converting "hard" regex to "typed" regex.
 4240 
 4241 2015-05-31         Arnold D. Robbins     <arnold@skeeve.com>
 4242 
 4243 	* field.c (posix_def_parse_field): Removed. It's no longer
 4244 	needed after updates to the POSIX standard. Thanks to
 4245 	Michael Klement <michael.klement@usa.net> for pointing this out.
 4246 
 4247 2015-05-26  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>
 4248 
 4249 	* floatcomp.c (count_trailing_zeros): New function.
 4250 	This compiles to a single TZCNT instruction on the x86-64.
 4251 	(adjust_uint): Use it to keep more high-order bits when
 4252 	some of the lowest-order bits are zero.  This implements
 4253 	the documented behavior: "If the result cannot be represented
 4254 	exactly as a C 'double', leading nonzero bits are removed one by
 4255 	one until it can be represented exactly."
 4256 
 4257 2015-05-26         Arnold D. Robbins     <arnold@skeeve.com>
 4258 
 4259 	* regcomp.c: Fix offsets so error messages come out correct
 4260 	once again.
 4261 
 4262 2015-05-19         Arnold D. Robbins     <arnold@skeeve.com>
 4263 
 4264 	* 4.1.3: Release tar ball made.
 4265 
 4266 2015-05-15         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4267 
 4268 	* symbol.c (load_symbols): Plug minor memory leak by calling unref(tmp)
 4269 	on "identifiers" string after assoc_lookup is done with it.
 4270 
 4271 2015-05-15         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4272 
 4273 	* main.c (load_procinfo_argv): New function to save argv array values
 4274 	in PROCINFO["argv"][0..argc-1].
 4275 	(load_procinfo): Call load_procinfo_argv.
 4276 
 4277 2015-05-11         Arnold D. Robbins     <arnold@skeeve.com>
 4278 
 4279 	* awk.h, awkgram.y, builtin.c, eval.c profile.c, re.c:
 4280 	Change Node_hardregex to Node_typedregex everywhere.
 4281 
 4282 2015-05-05         Arnold D. Robbins     <arnold@skeeve.com>
 4283 
 4284 	* awkgram.y (yylex): Yet Another Fix for parsing bracket
 4285 	expressions. Thanks yet again to Andrew Schorr. Maybe it's
 4286 	even finally nailed down now.
 4287 
 4288 	Unrelated:
 4289 
 4290 	* config.guess, config.sub: Get latest versions.
 4291 
 4292 	Make profiling for hard regexes work.
 4293 
 4294 	* profile.c (pp_string_or_hard_regex): Renamed from pp_string.
 4295 	Add bool param for hard regex and add @ if so.
 4296 	(pp_string): New function, calls pp_string_or_hard_regex.
 4297 	(pp_hard_regex): New function, calls pp_string_or_hard_regex.
 4298 	(pprint): Adjust to print a hard regex correctly.
 4299 
 4300 2015-05-01         Arnold D. Robbins     <arnold@skeeve.com>
 4301 
 4302 	* awkgram.y: Make sure values are not null in param list.
 4303 	Avoids core dump for `function f(func, a) {}'. Thanks to
 4304 	Tibor Palinkas <libmawk@igor2.repo.hu>.
 4305 
 4306 2015-04-30         Arnold D. Robbins     <arnold@skeeve.com>
 4307 
 4308 	* Makefile.am: Take --program-prefix into account when
 4309 	installing/uninstalling the symlinks, especially 'awk'.
 4310 	Thanks to Steffen Nurpmeso <sdaoden@yandex.com> for
 4311 	the report.
 4312 
 4313 	Unrelated:
 4314 
 4315 	* awkgram.y (yylex): Yet Another Fix for parsing bracket
 4316 	expressions. Thanks again to Andrew Schorr.
 4317 
 4318 2015-04-29         Arnold D. Robbins     <arnold@skeeve.com>
 4319 
 4320 	* 4.1.2: Release tar ball made.
 4321 
 4322 2015-04-28         Arnold D. Robbins     <arnold@skeeve.com>
 4323 
 4324 	* builtin.c (isarray): Add lint warning that isarray()
 4325 	is deprecated.
 4326 
 4327 2015-04-28         Arnold D. Robbins     <arnold@skeeve.com>
 4328 
 4329 	* awkgram.y (yylex): Rework the bracket handling from zero.
 4330 	Thanks to Michal Jaegermann for yet another test case.
 4331 
 4332 	Unrelated:
 4333 
 4334 	* eval.c (setup_frame): Restore call-by-value for $0. This was
 4335 	necessitated by the changes on 2014-11-11 for conserving
 4336 	memory use. Thanks to Andrew Schorr for the report and isolating
 4337 	the cause of the problem.
 4338 
 4339 2015-04-27         Arnold D. Robbins     <arnold@skeeve.com>
 4340 
 4341 	* awkgram.y (yylex): Make change of Jan 7 for parsing regexps
 4342 	work better. Thanks to Nelson Beebe.
 4343 
 4344 2015-04-26         Arnold D. Robbins     <arnold@skeeve.com>
 4345 
 4346 	* dfa.c: Sync with grep.
 4347 
 4348 2015-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 4349 
 4350 	* builtin.c (do_strftime): For bad time_t values, return "".
 4351 
 4352 2015-04-16         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4353 
 4354 	* node.c (r_force_number): If strtod sets errno, then force the
 4355 	numeric value in node->numbr to zero. For subnormal values, strtod
 4356 	sets errno but does not return zero, and we don't want to retain
 4357 	those subnormal values.
 4358 
 4359 2015-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 4360 
 4361 	Let parameter names shadow the names of gawk additional built-ins.
 4362 	Make it actually work.
 4363 
 4364 	* awkgram.y (want_param_names): Now an enum, there are three states.
 4365 	(grammar): Set states properly.
 4366 	(yylex): Improve checking logic.
 4367 
 4368 2015-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 4369 
 4370 	* configure.ac: Updated by autoupdate.
 4371 	* configure, aclocal.m4: Regenerated.
 4372 	* io.c, main.c, profile.c: Removed use of RETSIGTYPE.
 4373 
 4374 2015-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 4375 
 4376 	* builtin.c (do_strftime): Use a double for the timestamp and
 4377 	check that the value is within range for a time_t.
 4378 
 4379 	Unrelated:
 4380 
 4381 	* regex_internal.h (test_malloc, test_realloc): Use %lu in printf
 4382 	format for error messages. Thanks to Michal Jaegermann for
 4383 	pointing this out.
 4384 
 4385 	Unrelated:
 4386 
 4387 	* NEWS: Updated.
 4388 
 4389 2015-04-15         Arnold D. Robbins     <arnold@skeeve.com>
 4390 
 4391 	Let parameter names shadow the names of gawk additional built-ins.
 4392 
 4393 	* awkgram.y (want_param_names): New variable.
 4394 	(yylex): Check it before returning a built-in token.
 4395 	(grammar): Set and clear it in the right places.
 4396 
 4397 2015-04-14         Arnold D. Robbins     <arnold@skeeve.com>
 4398 
 4399 	* builtin.c (do_strftime): Restore checking for negative result and
 4400 	add check that time_t is > 0 --- means we're assigning a negative value
 4401 	to an unsigned time_t. Thanks again to Glaudiston Gomes da Silva
 4402 	<glaudistong@gmail.com>.
 4403 
 4404 	If localtime() or gmtime() return NULL, return a null string.
 4405 	Thanks to Andrew Schorr.
 4406 
 4407 	Unrelated:
 4408 	* builtin.c (call_sub): Fix for indirect gensub, 3 args now works.
 4409 
 4410 	Unrelated:
 4411 
 4412 	* builtin.c (do_sub): Improve some variable names for readability
 4413 	and add / expand some comments.
 4414 
 4415 	Unrelated:
 4416 
 4417 	* builtin.c (call_sub, call_match, call_split_func): Allow for
 4418 	regex to be Node_hardregex.
 4419 
 4420 2015-04-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>
 4421 		   Arnold D. Robbins     <arnold@skeeve.com>
 4422 
 4423 	* builtin.c (do_sub): Make computations smarter; initial len
 4424 	to malloc, test for final amount after all matches done and
 4425 	need to copy in the final part of the original string.
 4426 
 4427 2015-04-13         Arnold D. Robbins     <arnold@skeeve.com>
 4428 
 4429 	* regcomp.c (analyze): Prevent malloc(0).
 4430 	* regex_internal.h (test_malloc, test_realloc): New functions
 4431 	that check for zero count.
 4432 	(re_malloc, re_realloc): Adjust to call the new functions for gawk.
 4433 	* regexec.c (build_trtable, match_ctx_clean): Replace malloc/free
 4434 	with re_malloc/re_free.
 4435 
 4436 	Unrelated:
 4437 
 4438 	* builtin.c (do_strftime): Disable checking timestamp value for less
 4439 	than zero. Allows times before the epoch to work with strftime.
 4440 	Thanks to Glaudiston Gomes da Silva <glaudistong@gmail.com>
 4441 	for raising the issue.
 4442 
 4443 2015-04-12         Arnold D. Robbins     <arnold@skeeve.com>
 4444 
 4445 	* Makefile.am (efence): Make this link again.
 4446 	Thanks to Michal Jaegermann for pointing out the problem.
 4447 
 4448 2015-04-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4449 
 4450 	* awkgram.y (yyerror): Rationalize buffer size computations. Remove
 4451 	old valgrind workarounds.
 4452 	* debug.c (gprintf): Rationalize buffer size computations.
 4453 	(serialize_subscript): Ditto.
 4454 	* io.c (iop_finish): Rationalize buffer size computations.
 4455 	* profile.c (pp_string): Correct space allocation computation.
 4456 
 4457 2015-04-08        John E. Malmberg       <wb8tyw@qsl.net>
 4458 
 4459 	* custom.h: VMS shares some code paths with ZOS_USS in
 4460 	building gawkfts extension.
 4461 
 4462 2015-04-08         Arnold D. Robbins     <arnold@skeeve.com>
 4463 
 4464 	Factor out opening of /dev/XXX files from /inet.
 4465 	Enable interpretation of special filenames for profiling output.
 4466 
 4467 	* awk.h (devopen_simple): Add declaration.
 4468 	* io.c (devopen_simple): New routine.
 4469 	(devopen): Call devopen_simple as appropriate.
 4470 	* profile.c (set_prof_file): Call devopen_simple as appropriate,
 4471 	some additional logic to handle fd to fp conversion.
 4472 
 4473 	Unrelated:
 4474 
 4475 	* main.c (usage): Add a comment for translators.
 4476 
 4477 2015-04-08  Eli Zaretskii  <eliz@gnu.org>
 4478 
 4479 	* profile.c (set_prof_file): Interpret a file name of "-" to mean
 4480 	standard output.
 4481 
 4482 2015-04-06         Arnold D. Robbins     <arnold@skeeve.com>
 4483 
 4484 	* awk.h (force_number): Add `!= 0' check to bitwise operation.
 4485 	* awkgram.y: Same, many places.
 4486 	(check_special): Simplify code for checking extension flags.
 4487 
 4488 2015-04-05         Arnold D. Robbins     <arnold@skeeve.com>
 4489 
 4490 	* awkgram.y (install_builtins): If do_traditional is true, do not
 4491 	install gawk extensions flagged with GAWKX.  Similarly, if do_posix
 4492 	is true, do not install functions flagged with NOT_POSIX.
 4493 	This fixes a problem with spurious lint complaints about shadowing
 4494 	a global variable that is not valid in traditional or posix mode.
 4495 	Thanks to Andrew Schorr for finding the problem and supplying
 4496 	initial code; I did it slightly differently.
 4497 
 4498 2015-04-03         Arnold D. Robbins     <arnold@skeeve.com>
 4499 
 4500 	* awk.h (force_string): If hard_regex, return string text of the regex.
 4501 	(force_string, force_number): If hard_regex, return Nnull_string.
 4502 	* awkgram.y: Fix ~ and !~ with @/.../.
 4503 	* eval.c (setup_frame): Handle a hard regex.
 4504 	* re.c (avoid_dfa): Ditto.
 4505 
 4506 2015-04-02         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4507 
 4508 	* NEWS: Rename div to intdiv.
 4509 
 4510 2015-04-02         Arnold D. Robbins     <arnold@skeeve.com>
 4511 
 4512 	Rename div() to intdiv().
 4513 
 4514 	* builtin.c (do_intdiv): Renamed from do_div.
 4515 	* mfpr.c (do_mpfr_intdiv): Renamed from do_mpfr_div.
 4516 	* awk.h: Update declarations.
 4517 	* awkgram.y (tokentab, snode): Revise accordingly.
 4518 
 4519 2015-03-31         Arnold D. Robbins     <arnold@skeeve.com>
 4520 
 4521 	* awk.h (call_sub): Renamed from call_sub_func.
 4522 	(call_match, call_split_func): Declare.
 4523 	* builtin.c (call_sub): Renamed from call_sub_func.
 4524 	(call_match, call_split_func): New functions.
 4525 	* interpret.h (r_interpret): Call new functions as appropriate.
 4526 	* node.c (r_unref): Revert change to handle Node_regex, not needed.
 4527 
 4528 2015-03-31         Arnold D. Robbins     <arnold@skeeve.com>
 4529 
 4530 	* awk.h (r_get_field): Declare.
 4531 	* builtin.c (call_sub_func): Rearrange the stack to be what
 4532 	the buitin function expects.
 4533 	* eval.c (r_get_field): Make extern.
 4534 
 4535 2015-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 4536 
 4537 	* io.c (redirect): Change not_string from int to bool.
 4538 	* gawkapi.c (api_get_file): Minor stylistic improvements.
 4539 	* NEWS: Updated for retryable I/O and new API function.
 4540 
 4541 2015-03-24         Arnold D. Robbins     <arnold@skeeve.com>
 4542 
 4543 	* awkgram.y (make_regnode): Make extern.
 4544 	* awk.h (make_regnode): Declare.
 4545 	* builtin.c (call_sub_func): Start on reworking the stack to
 4546 	be what do_sub() expects. Still needs work.
 4547 	* interpret.h (r_interpret): Add a cast in comparison with do_sub().
 4548 	* node.c (r_unref): Handle Node_regex nodes.
 4549 
 4550 2015-03-24         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4551 
 4552 	* interpret.h (r_interpret): When Op_K_exit has an argument of
 4553 	Nnull_string, do not update exit_val, since no value was supplied.
 4554 
 4555 2015-03-24         Arnold D. Robbins     <arnold@skeeve.com>
 4556 
 4557 	* awk.h, gawkapi.c, io.c: Minor code reformatting.
 4558 
 4559 2015-03-20         Arnold D. Robbins     <arnold@skeeve.com>
 4560 
 4561 	Start on fixing indirect calls of builtins.
 4562 
 4563 	* awk.h (call_sub_func): Add declaration.
 4564 	* awkgram.y (lookup_builtin): Handle length, sub functions.
 4565 	(install_builtin): Handle length function.
 4566 	* builtin.c (call_sub_func): New function.
 4567 	* interpret.h (r_interpret): If calling do_sub, do it through
 4568 	call_sub_func().
 4569 
 4570 2015-03-19         Arnold D. Robbins     <arnold@skeeve.com>
 4571 
 4572 	* re.c (re_update): Handle hard regex - for sub/gsub/gensub.
 4573 	* awkgram.y (grammar): Add support for hard_regex with ~ and !~;
 4574 	allowed only on the right hand side.
 4575 	(mk_rexp): Handle a hard regex.
 4576 
 4577 2015-03-18         Arnold D. Robbins     <arnold@skeeve.com>
 4578 
 4579 	* builtin.c (do_typeof): Be smarter about checking for uninitialized
 4580 	values; can now detect and return "untyped" for such values.
 4581 	* awkgram.y (yylex): Collect @/.../ entirely in the lexer and return
 4582 	a new terminal (HARD_REGEX).
 4583 	(regexp): Reverted to just a regular awk regexp constant.
 4584 	(hard_regexp): New nonterminal, can be used only in direct
 4585 	assignment and as an argument in function call. New set of nonterminals
 4586 	for function call expression lists.  More work still to do.
 4587 
 4588 2015-03-18         Arnold D. Robbins     <arnold@skeeve.com>
 4589 
 4590 	* config.guess, config.sub: Updated, from libtool 2.4.6.
 4591 
 4592 2015-03-17         Arnold D. Robbins     <arnold@skeeve.com>
 4593 
 4594 	* profile.c (pp_number): Allocate enough room to print the number
 4595 	in all cases. Was a problem mixing -M with profiling with a really
 4596 	big number. Thanks to Hermann Peifer for the bug report.
 4597 
 4598 2015-03-08         Arnold D. Robbins     <arnold@skeeve.com>
 4599 
 4600 	* re.c (regexflags2str): Removed. It was redundant.
 4601 
 4602 	* io.c (devopen): Change the logic such that if nonfatal is true
 4603 	for the socket, don't do retries.  Also clean up the formatting
 4604 	some.  At strictopen, check if errno is ENOENT and if so, propagate
 4605 	the error from getaddrinfo() up to the caller. Add explanatory
 4606 	comments.
 4607 
 4608 2015-02-28         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4609 
 4610 	* io.c (pty_vs_pipe): Remove check for NULL PROCINFO_node, since
 4611 	this is now checked inside in_PROCINFO.
 4612 
 4613 2015-02-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4614 
 4615 	* io.c (socketopen): New parameter hard_error; set it if
 4616 	getaddrinfo() fails. Change fatals to warnings.
 4617 	(devopen): Pass in address of boolean hard_error variable
 4618 	and stop trying to open the file if hard_error is true.
 4619 	Save and restore errno around call to socketopen() and
 4620 	use restored errno if open() fails at strictopen.
 4621 
 4622 2015-02-27         Arnold D. Robbins     <arnold@skeeve.com>
 4623 
 4624 	* symbol.c (check_param_names): Fix argument order in memset() call.
 4625 	* configure.ac: Use AC_SEARCH_LIBS instead of AC_CHECK_LIB. This fixes
 4626 	a long-standing problem where `-lm' was used twice in the final
 4627 	compilation line.
 4628 
 4629 2015-02-27         Arnold D. Robbins     <arnold@skeeve.com>
 4630 
 4631 	Start on making regexp a real type.
 4632 
 4633 	* awk.h (Node_hardregex): New node type.
 4634 	(do_typeof): Add declaration.
 4635 	* awkgram.y: Make @/.../ a hard regex.
 4636 	(tokentab): New entry for typeof() function.
 4637 	(snode): Try to handle typeof().
 4638 	(make_regnode): Handle Node_hardregex.
 4639 	* builtin.c (do_typeof): New function.
 4640 	* eval.c (nodetypes): Add Node_hardregex.
 4641 	* re.c (re_update): Check for hardregex too in assert.
 4642 
 4643 2015-02-24         Arnold D. Robbins     <arnold@skeeve.com>
 4644 
 4645 	* POSIX.STD: Update copyright year.
 4646 	* awkgram.y (yylex): Allow \r after \\ line continuation everywhere.
 4647 	Thanks to Scott Rush <scott.rush@honeywell.com> for the report.
 4648 
 4649 2015-02-13         Arnold D. Robbins     <arnold@skeeve.com>
 4650 
 4651 	* awkgram.y (yylex): Be more careful about passing true to
 4652 	nextc() when collecting a regexp.  Some systems' iscntrl()
 4653 	are not as forgiving as GLIBC's. E.g., Solaris.
 4654 	Thanks to Dagobert Michelsen <dam@baltic-online.de> for
 4655 	the bug report and access to systems to check the fix.
 4656 
 4657 2015-02-12         Arnold D. Robbins     <arnold@skeeve.com>
 4658 
 4659 	* POSIX.STD: Update with info about function parameters.
 4660 	* configure.ac: Remove test for / use of dbug library.
 4661 
 4662 2015-02-11         Arnold D. Robbins     <arnold@skeeve.com>
 4663 
 4664 	* gawkapi.h: Fix spelling error in comment.
 4665 
 4666 2015-02-10         Arnold D. Robbins     <arnold@skeeve.com>
 4667 
 4668 	* profile.c (pprint): Restore printing of count for rules.
 4669 	Bug report by Hermann Peifer.
 4670 
 4671 2015-02-08         Arnold D. Robbins     <arnold@skeeve.com>
 4672 
 4673 	* io.c: Make it "NONFATAL" everywhere.
 4674 
 4675 2015-02-08         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4676 
 4677 	* awk.h (RED_NON_FATAL): Removed.
 4678 	(redirect): Add new failure_fatal parameter.
 4679 	(is_non_fatal_redirect): Add declaration.
 4680 	* builtin.c (efwrite): Rework check for non-fatal.
 4681 	(do_printf): Adjust calls to redirect.
 4682 	(do_print_rec): Ditto. Move check for redirection error up.
 4683 	* io.c (redflags2str): Remove RED_NON_FATAL.
 4684 	(redirect): Add new failure_fatal parameter. Simplify the code.
 4685 	(is_non_fatal_redirect): New function.
 4686 	(do_getline_redir): Adjust calls to redirect.
 4687 
 4688 2014-12-27         Arnold D. Robbins     <arnold@skeeve.com>
 4689 
 4690 	* awk.h (is_non_fatal_std): Declare new function.
 4691 	* io.c (is_non_fatal_std): New function.
 4692 	* builtin.c (efwrite): Call it.
 4693 
 4694 2015-02-07         Arnold D. Robbins     <arnold@skeeve.com>
 4695 
 4696 	* regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h,
 4697 	regexec.c: Sync with GLIBC. Mostly copyright date updates.
 4698 
 4699 2015-02-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4700 
 4701 	* eval.c (set_IGNORECASE): If IGNORECASE has a numeric value, try
 4702 	using that before treating it as a string.  This fixes a problem
 4703 	where setting -v IGNORECASE=0 on the command line was not working
 4704 	properly.
 4705 
 4706 2015-02-01         Arnold D. Robbins     <arnold@skeeve.com>
 4707 
 4708 	Move POSIX requirement for disallowing parameter names with the
 4709 	same name as a function into --posix.
 4710 
 4711 	* NEWS: Document it.
 4712 	* awkgram.y (parse_program): Check do_posix before calling
 4713 	check_param_names().
 4714 	* symbol.c (check_param_names): Set up a fake node and call
 4715 	in_array() for function parameter names instead of linear
 4716 	searching the function list a second time. Thanks to Andrew
 4717 	Schorr for the motivation.
 4718 
 4719 2015-01-30         Arnold D. Robbins     <arnold@skeeve.com>
 4720 
 4721 	Don't allow function parameter names to be the same as function
 4722 	names - required by POSIX. Bug first reported in comp.lang.awk.
 4723 
 4724 	In addition, don't allow use of a parameter as a function name
 4725 	in a call (but it's ok in indirect calls).
 4726 
 4727 	* NEWS: Updated.
 4728 	* awk.h (check_param_names): Add declaration.
 4729 	* awkgram.y (at_seen): New variable. Communicates between
 4730 	yylex() and the parser.
 4731 	(FUNC_CALL production): Check at_seen and check that the identifier
 4732 	is a function name.
 4733 	(parse_program): Call check_param_names() and set errcount.
 4734 	(yylex): Set at_seen after seeing an at-sign.
 4735 	* symbol.c (check_param_names): New function.
 4736 
 4737 2015-01-24         Arnold D. Robbins     <arnold@skeeve.com>
 4738 
 4739 	Infrastructure updates.
 4740 
 4741 	Bison 3.0.4. Automake 1.15. Gettext 0.19.4.
 4742 
 4743 2015-01-20         Arnold D. Robbins     <arnold@skeeve.com>
 4744 
 4745 	* gawkapi.c (api_set_array_element): Remove useless call to
 4746 	make_aname.
 4747 	* symbol.c (load_symbols): Ditto.
 4748 	Thanks to Andrew Schorr for pointing out the problem.
 4749 
 4750 2015-01-19         Arnold D. Robbins     <arnold@skeeve.com>
 4751 
 4752 	* awkgram.c: Update to bison 3.0.3.
 4753 	* command.c: Ditto.
 4754 	* NEWS: Note same.
 4755 
 4756 2015-01-16         Stephen Davies        <sdavies@sdc.com.au>
 4757 
 4758 	* awkgram.y (rule): Set first_rule to false. Catches more cases
 4759 	for gathering comments. Thanks to Hermann Peifer for the test case.
 4760 
 4761 2015-01-15         Arnold D. Robbins     <arnold@skeeve.com>
 4762 
 4763 	* dfa.h, dfa.c: Sync with grep. Mainly copyright updates.
 4764 	* getopt.c, getopt.h, getopt1.c getopt_int.h: Sync with GLIBC.
 4765 	Mainly copyright updates, one minor code fix.
 4766 
 4767 2015-01-14         Arnold D. Robbins     <arnold@skeeve.com>
 4768 
 4769 	Remove deferred variables.
 4770 
 4771 	* awk.h (register_deferred_variable): Remove declaration.
 4772 	* awkgram.y (is_deferred_variable, process_deferred,
 4773 	symtab_used, extensions_used, deferred_variables,
 4774 	process_deferred): Remove declarations, bodies, and uses.
 4775 	* builtin.c (do_length): Update comment.
 4776 	* main.c (init_vars): Just call load_procinfo() and `load_environ()'.
 4777 
 4778 2015-01-08         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4779 
 4780 	Revert changes to API deferred variable creation -- these variables
 4781 	should be created when lookup is called, not when update is called.
 4782 	* awk.h (variable_create): Remove function declaration.
 4783 	* awkgram.y (variable_create): Remove function.
 4784 	(variable): Restore variable_create functionality inline.
 4785 	* gawkapi.c (api_sym_update): Revert to using install_symbol, since the
 4786 	deferred variable check should be done when lookup is called, not here.
 4787 
 4788 2015-01-07         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4789 
 4790 	* gawkapi.c (api_set_array_element): Remove stray call to
 4791 	make_aname.  I cannot see what purpose this served.  Maybe I am
 4792 	missing something.
 4793 
 4794 2015-01-07         Arnold D. Robbins     <arnold@skeeve.com>
 4795 
 4796 	* configure.ac: Update debug flags if developing.
 4797 	* awkgram.y (yylex): Regex parsing bug fix for bracket expressions.
 4798 	Thanks to Mike Brennan for the report.
 4799 	* builtin.c (format_tree): Catch non-use of count$ for dynamic
 4800 	field width or precision.
 4801 
 4802 	Unrelated:
 4803 
 4804 	Load deferred variables if extensions are used; they might
 4805 	want to access PROCINFO and/or ENVIRON. Thanks to Andrew Schorr
 4806 	for pointing out the issue.
 4807 
 4808 	* awkgram.y (extensions_used): New variable. Set it on @load.
 4809 	(do_add_scrfile): Set it on -l.
 4810 	(process_deferred): Check it also.
 4811 
 4812 2015-01-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4813 
 4814 	* gawkapi.c (api_sym_update): If copying a subarray, must update
 4815 	the parent_array pointer.  Also, call the astore hook if non-NULL.
 4816 	(api_set_array_element): Call the astore hook if non-NULL.
 4817 
 4818 2015-01-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4819 
 4820 	* awk.h (variable_create): Now takes a 3rd argument to tell caller
 4821 	whether this is a deferred variable.
 4822 	* awkgram.y (variable_create): Return indicator of whether this is
 4823 	a deferred variable in a newly added 3rd arg.
 4824 	(variable): Pass 3rd arg to variable_create.
 4825 	* gawkapi.c (api_sym_update): If we triggered the creation of a deferred
 4826 	variable, we must merge the extension's array elements into the deferred
 4827 	array, not the other way around.  The ENVIRON array has special funcs
 4828 	to call setenv and unsetenv.
 4829 
 4830 2015-01-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4831 
 4832 	* awk.h (variable_create): Declare new function.
 4833 	* awkgram.y (variable_create): New function to create a variable
 4834 	taking the deferred variable list into consideration.
 4835 	(variable): Call new function variable_create if the variable is
 4836 	not found.
 4837 	* gawkapi.c (api_sym_update): If an array is being created, then
 4838 	call new function variable_create instead of install_symbol.  If this
 4839 	is the first reference to a deferred variable, than the new array
 4840 	may contain elements that must be merged into the array provided by
 4841 	the extension.
 4842 
 4843 2015-01-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4844 
 4845 	* io.c (wait_any): If the `interesting' argument is non-zero, then we
 4846 	must not return until that child process has exited, since the caller
 4847 	gawk_pclose depends on our returning its exit status.  So in that case,
 4848 	do not pass WNOHANG to waitpid.
 4849 
 4850 2015-01-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4851 
 4852 	* gawkapi.h: Fix another comment typo.
 4853 
 4854 2015-01-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4855 
 4856 	* gawkapi.h: Fix typo in comment.
 4857 
 4858 2015-01-02         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4859 
 4860 	* gawkapi.h (gawk_api): Modify api_get_file to remove the typelen
 4861 	argument.
 4862 	(get_file): Remove typelen argument from the macro.
 4863 	* gawkapi.c (api_get_file): Remove typelen argument.
 4864 
 4865 2014-12-24         Arnold D. Robbins     <arnold@skeeve.com>
 4866 
 4867 	* profile.c (pprint): Be sure to set ip2 in all paths
 4868 	through the code. Thanks to GCC 4.9 for the warning.
 4869 
 4870 2014-12-18         Arnold D. Robbins     <arnold@skeeve.com>
 4871 
 4872 	* builtin.c (do_sub): Do not waste a byte at the end of a string.
 4873 
 4874 2014-12-14         Arnold D. Robbins     <arnold@skeeve.com>
 4875 
 4876 	* awkgram.y (yyerror): Do not waste a byte at the end of a string.
 4877 	* builtin.c (do_match): Ditto.
 4878 	* command.y (append_statement): Ditto.
 4879 	* debug.c (gprintf, serialize): Ditto.
 4880 	* field.c (set_FIELDWIDTHS): Ditto.
 4881 	* io.c.c (grow_iop_buffer): Ditto.
 4882 	* profile.c (pp_string, pp_group3): Ditto.
 4883 
 4884 2014-12-14         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 4885 
 4886 	* array.c (concat_exp): Do not waste a byte at the end of a string.
 4887 	* awkgram.y (common_exp): Ditto.
 4888 	* builtin.c (do_substr): Ditto.
 4889 	* eval.c (set_OFS): Ditto.
 4890 	* field.c (rebuild_record): Ditto.
 4891 	* gawkapi.h (r_make_string): Ditto.
 4892 	* interpret.h (r_interpret): Ditto for Op_assign_concat.
 4893 	* node.c (r_format_val, r_dupnode, make_str_node, str2wstr, wstr2str):
 4894 	Ditto.
 4895 	* re.c (make_regexp): Ditto.
 4896 
 4897 2014-12-20         Arnold D. Robbins     <arnold@skeeve.com>
 4898 
 4899 	Enable non-fatal output on per-file or global basis,
 4900 	via PROCINFO.
 4901 
 4902 	* awk.h (RED_NON_FATAL): New redirection flag.
 4903 	* builtin.c (efwrite): If RED_NON_FATAL set, just set ERRNO and return.
 4904 	(do_printf): Check errflg and if set, set ERRNO and return.
 4905 	(do_print): Ditto.
 4906 	(do_print_rec): Ditto.
 4907 	* io.c (redflags2str): Update table.
 4908 	(redirect): Check for global PROCINFO["nonfatal"] or for
 4909 	PROCINFO[file, "nonfatal"] and don't fail on open if set.
 4910 	Add RED_NON_FATAL to flags.
 4911 	(in_PROCINFO): Make smarter and more general.
 4912 
 4913 2014-12-12        Stephen Davies         <sdavies@sdc.com.au>
 4914 
 4915 	Improve comment handling in pretty printing.
 4916 
 4917 	* awk.h (comment_type): New field in the node.
 4918 	(EOL_COMMENT, FULL_COMMENT): New defines.
 4919 	* awkgram.y (block_comment): New variable.
 4920 	(check_comment): New function.
 4921 	(grammar): Add code to handle comments as needed.
 4922 	(get_comment): Now takes a flag indicating kind of comment.
 4923 	(yylex): Collect comments appropriately.
 4924 	(append_rule): Ditto.
 4925 	* profile.c (pprint): Smarten up comment handling.
 4926 	Have printing \n take comments into account.
 4927 	(end_line): New function.
 4928 	(pp_func): Better handling of function comments.
 4929 
 4930 2014-12-10         Arnold D. Robbins     <arnold@skeeve.com>
 4931 
 4932 	* dfa.c: Sync with GNU grep.
 4933 
 4934 2014-11-26         Arnold D. Robbins     <arnold@skeeve.com>
 4935 
 4936 	* builtin.c (do_sub): Improve wording of gensub warnings.
 4937 
 4938 2014-11-25         Arnold D. Robbins     <arnold@skeeve.com>
 4939 
 4940 	* builtin.c (do_sub): For gensub, add more warnings for invalid
 4941 	third argument.
 4942 
 4943 2014-11-23         Arnold D. Robbins     <arnold@skeeve.com>
 4944 
 4945 	* awk.h: Move all inline functions to the bottom of the file.
 4946 	Keeps modern GCC happier.
 4947 
 4948 2014-11-22         Arnold D. Robbins     <arnold@skeeve.com>
 4949 
 4950 	* awk.h (emalloc, realloc): Redefine in terms of ...
 4951 	(emalloc_real, erealloc_real): New static inline functions.
 4952 	(fatal): Move definition up.
 4953 	* gawkmisc.c (xmalloc): If count is zero, make it one for older
 4954 	mallocs that require size > 0 (such as z/OS).
 4955 
 4956 2014-11-21         Arnold D. Robbins     <arnold@skeeve.com>
 4957 
 4958 	* main.c: Remove a debugging // comment.
 4959 	* NOTES: Removed.
 4960 
 4961 	Unrelated:
 4962 
 4963 	Revert changes of 2014-11-20 from Paul Eggert. Causes failures
 4964 	on z/OS.
 4965 
 4966 	Unrelated: Avoid unnecessary copying of $0.
 4967 
 4968 	* interpret.h (UNFIELD): New macro.
 4969 	(r_interpret): Use it where *lhs is assigned to.
 4970 
 4971 2014-11-20  Paul Eggert  <eggert@cs.ucla.edu>
 4972 
 4973 	Port to systems where malloc (0) and/or realloc(P, 0) returns NULL.
 4974 	* gawkmisc.c (xmalloc):
 4975 	* xalloc.h (realloc):
 4976 	Do not fail if malloc(0) or realloc(P, 0) returns NULL.
 4977 	Fail only when the allocator returns null when attempting to
 4978 	allocate a nonzero number of bytes.
 4979 
 4980 2014-11-19         Arnold D. Robbins     <arnold@skeeve.com>
 4981 
 4982 	Infrastructure upgrades:
 4983 
 4984 	* Automake 1.14.1, Gettext 0.19.3, Libtool 2.4.3.
 4985 	* compile, extension/build-aux/compile: New files.
 4986 
 4987 2014-11-19  gettextize  <bug-gnu-gettext@gnu.org>
 4988 
 4989 	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.3.
 4990 
 4991 2014-11-16         Arnold D. Robbins     <arnold@skeeve.com>
 4992 
 4993 	* interpret.h: Revert change of 2014-11-11 since it breaks
 4994 	certain uses.
 4995 
 4996 	Unrelated:
 4997 
 4998 	* dfa.c: Sync with GNU grep.
 4999 
 5000 2014-11-15         Arnold D. Robbins     <arnold@skeeve.com>
 5001 
 5002 	* array.c, awk.h, awkgram.y, builtin.c, dfa.c, eval.c, field.c,
 5003 	interpret.h, io.c, main.c, mpfr.c, node.c, re.c, regex_internal.h,
 5004 	replace.c: Remove all uses of MBS_SUPPORT.
 5005 	* regex_internal.h: Disable wide characters on DJGPP.
 5006 	* mbsupport.h: Rework to be needed only for DJGPP.
 5007 
 5008 2014-11-11         Arnold D. Robbins     <arnold@skeeve.com>
 5009 
 5010 	Don't let memory used increase linearly in the size of
 5011 	the input.  Problem reported by dragan legic
 5012 	<dragan.legic@yandex.ru>.
 5013 
 5014 	* field.c (set_record): NUL-terminate the buffer.
 5015 	* interpret.h (r_interpret): Op_field_spec: if it's $0, increment
 5016 	the valref.  Op_store_var: if we got $0, handle it appropriately.
 5017 
 5018 2014-11-10         Arnold D. Robbins     <arnold@skeeve.com>
 5019 
 5020 	Reorder main.c activities so that we can set a locale on the
 5021 	command line with the new, for now undocumented, -Z option.
 5022 
 5023 	* main.c (parse_args, set_locale_stuff): New functions.
 5024 	(stopped_early): Made file level static.
 5025 	(optlist, optab): Add new argument.
 5026 	(main): Adjust ordering and move inline code into new functions.
 5027 
 5028 2014-11-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5029 
 5030 	* gawkapi.c (node_to_awk_value): When the type wanted is AWK_UNDEFINED
 5031 	and a it's a Node_val set to Nnull_string, return AWK_UNDEFINED instead
 5032 	of AWK_NUMBER 0.
 5033 
 5034 2014-11-06         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5035 
 5036 	* awk.h (redirect_string): First argument should be const.  Add a new
 5037 	extfd argument to enable extensions to create files with pre-opened
 5038 	file descriptors.
 5039 	(after_beginfile): Declare function used in both eval.c and gawkapi.c.
 5040 	* eval.c (after_beginfile): Remove extern declaration now in awk.h.
 5041 	* gawkapi.c (api_get_file): Implement API changes to return
 5042 	awk_input_buf_t and/or awk_output_buf_t info, as well as accept an
 5043 	fd for inserting an opened file into the table.
 5044 	* gawkapi.h (gawk_api): Modify the api_get_file declaration to
 5045 	return awk_bool_t and add 3 new arguments -- a file descriptor
 5046 	for inserting an already opened file, and awk_input_buf_t and
 5047 	awk_output_buf_t to return info about both input and output.
 5048 	(get_file): Add new arguments to the macro.
 5049 	* io.c (redirect_string): First arg should be const, and add a new
 5050 	extfd arg so extensions can pass in a file that has already been
 5051 	opened by the extension.  Use the passed-in fd when appropriate,
 5052 	and pass it into two_way_open.
 5053 	(redirect): Pass new fd -1 arg to redirect_string.
 5054 	(two_way_open): Accept new extension fd parameter and open it
 5055 	as a socket.
 5056 
 5057 2014-11-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5058 
 5059 	* io.c (retryable): New function to indicate whether I/O can be
 5060 	retried for this file instead of throwing a hard error.
 5061 	(get_a_record) Check whether this file is configured for retryable
 5062 	I/O before returning nonstandard -2.
 5063 
 5064 2014-11-03         Norihiro Tanaka       <noritnk@kcn.ne.jp>
 5065 
 5066 	* re.c (research): Use dfa superset to improve matching speed.
 5067 
 5068 2014-11-02         Arnold D. Robbins     <arnold@skeeve.com>
 5069 
 5070 	* profile.c (div_on_left_mul_on_right): New function.
 5071 	(parenthesize): Call it.
 5072 
 5073 2014-10-30         Arnold D. Robbins     <arnold@skeeve.com>
 5074 
 5075 	* configure: Regenerated after fix to m4/readline.m4.
 5076 
 5077 	Unrelated; fixes to profiling. Thanks to Hermann Peifer and
 5078 	Manuel Collado for pointing out problems:
 5079 
 5080 	* profile.c (pprint): For Op_unary_minus, parenthesize -(-x)
 5081 	correctly.
 5082 	(prec_level): Get the levels right (checked the grammar).
 5083 	(is_unary_minus): New function.
 5084 	(pp_concat): Add checks for unary minus; needs to be parenthesized.
 5085 
 5086 2014-10-30         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5087 
 5088 	* NEWS: Mention installation of /etc/profile.d/gawk.{csh,sh}.
 5089 
 5090 2014-10-29         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5091 
 5092 	* configure.ac (AC_CONFIG_FILES): Add extras/Makefile.
 5093 	* Makefile.am (SUBDIRS): Add extras.
 5094 	* extras: Add new subdirectory.
 5095 
 5096 2014-10-29         Arnold D. Robbins     <arnold@skeeve.com>
 5097 
 5098 	* dfa.c: Sync with GNU grep. Again, again.
 5099 
 5100 2014-10-28         Arnold D. Robbins     <arnold@skeeve.com>
 5101 
 5102 	* dfa.c: Sync with GNU grep. Again.
 5103 
 5104 2014-10-25         Arnold D. Robbins     <arnold@skeeve.com>
 5105 
 5106 	* dfa.c: Sync with GNU grep.
 5107 
 5108 2014-10-17         John E. Malmberg      <wb8tyw@qsl.net>
 5109 
 5110 	* ext.c (close_extensions): Test for null pointer since
 5111 	since this can be called by signal handler before the
 5112 	pointers are initialized.
 5113 
 5114 2014-10-15         Arnold D. Robbins     <arnold@skeeve.com>
 5115 
 5116 	Make sane the handling of AWKPATH and AWKLIBPATH:
 5117 
 5118 	1. Don't explicitly search "."; it must be in the path either
 5119 	physically or as null element a la the shell's $PATH
 5120 	2. If environment's value was empty, use built-in default value.
 5121 	3. Set ENVIRON["AWK*PATH"] to the path used.
 5122 
 5123 	* io.c (path_info): Remove try_cwd member.
 5124 	(get_cwd): Removed, not needed anymore.
 5125 	(do_find_source): Don't do explicit check in current directory.
 5126 	It must come from the AWKPATH or AWKLIBPATH variable.
 5127 	* main.c (path_environ): If value from environment was empty,
 5128 	set it to the default.  This is how gawk has behaved since 2.10.
 5129 
 5130 2014-10-13         Arnold D. Robbins     <arnold@skeeve.com>
 5131 
 5132 	* regcomp.c (__re_error_msgid): Make error message for REG_EBRACK
 5133 	more helpful - also used for unmatched [:, [., [=.
 5134 	Thanks to Davide Brini for raising the issue.
 5135 
 5136 2014-10-12         KO Myung-Hun          <komh78@gmail.com>
 5137 
 5138 	Fixes for OS/2:
 5139 
 5140 	* Makefile.am (install-exec-hook, uninstall-links): Use $(EXEEXT).
 5141 	* getopt.h: Redefinitions if using KLIBC.
 5142 	* io.c (_S_IFDIR, _S_IRWXU): Define if the more standard versions
 5143 	are available.
 5144 
 5145 2014-10-12         Arnold D. Robbins     <arnold@skeeve.com>
 5146 
 5147 	* README: Remove Pat Rankin from VMS duties, per his request.
 5148 
 5149 2014-10-08         Arnold D. Robbins     <arnold@skeeve.com>
 5150 
 5151 	* dfa.c: Sync with GNU grep.
 5152 
 5153 2014-10-05         Arnold D. Robbins     <arnold@skeeve.com>
 5154 
 5155 	* profile.c (pprint): Fix typo in header. Sheesh.
 5156 
 5157 	Unrelated:
 5158 
 5159 	* awkgram.y (mk_program): Add a comment that we don't need to
 5160 	clear the comment* variables.
 5161 
 5162 2014-10-04         Arnold D. Robbins     <arnold@skeeve.com>
 5163 
 5164 	* profile.c (pp_string_fp): Fix breaklines case to actually
 5165 	output the current letter. This broke at gawk 4.0.0. Sigh.
 5166 	Thanks to Bert Bos (bert@w3.org) for the report.
 5167 
 5168 2014-10-03	Stephen Davies		<sdavies@sdc.com.au>
 5169 
 5170 	* awkgram.y (program_comment): Renamed from comment0.
 5171 	(function_comment): Renamed from commentf.
 5172 
 5173 2014-10-02         Arnold D. Robbins     <arnold@skeeve.com>
 5174 
 5175 	* awkgram.y, profile.c: Minor white space cleanups.
 5176 
 5177 2014-10-01         Arnold D. Robbins     <arnold@skeeve.com>
 5178 
 5179 	Fix a few compile warnings:
 5180 
 5181 	* awkgram.y (split_comment): Make static.
 5182 	General: Remove some unused variables, clean up some whitepace nits.
 5183 
 5184 	* profile.c (indent): Add some braces to turn off compiler warnings.
 5185 
 5186 2014-09-29         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5187 
 5188 	* main.c (main): In optlist, it should say "h", not "h:", since there
 5189 	is no argument for the help option.  Thanks to Joep van Delft for
 5190 	the bug report.
 5191 
 5192 2014-09-29         Arnold D. Robbins     <arnold@skeeve.com>
 5193 
 5194 	* gawkapi.h: Minor edits to sync with documentation. Does not
 5195 	influence the behavior of the API.
 5196 
 5197 2014-09-28         Arnold D. Robbins     <arnold@skeeve.com>
 5198 
 5199 	* command.y (cmdtab): Add "where" as an alias for "backtrace".
 5200 	Finally!
 5201 
 5202 	Unrelated:
 5203 
 5204 	* dfa.c: Sync with GNU grep.
 5205 
 5206 2014-09-27         Arnold D. Robbins     <arnold@skeeve.com>
 5207 
 5208 	* awkgram.y (check_for_bad): Bitwise-and the bad character with 0xFF
 5209 	to avoid sign extension into a large integer.
 5210 
 5211 	Unrelated:
 5212 
 5213 	* configure.ac: Add an option to enable locale letters in identifiers.
 5214 	Undocumented and subject to being rescinded at any time in the future.
 5215 	* awkgram.y (is_alpha): Actual code is here.
 5216 	* NEWS: Mention to look at configure --help.
 5217 
 5218 	Unrelated:
 5219 
 5220 	* profile.c (pprint): Use "rule(s)" instead of "block(s)" in the
 5221 	header.
 5222 
 5223 2014-09-23         Arnold D. Robbins     <arnold@skeeve.com>
 5224 
 5225 	* awkgram.y (yylex): Don't check for junk characters inside
 5226 	quoted strings.  Caused issues on DJGPP and Solaris.
 5227 
 5228 	Unrelated:
 5229 
 5230 	* io.c (devopen): Straighten things out with respect to
 5231 	compatibility with BWK awk.
 5232 
 5233 2014-09-19         Arnold D. Robbins     <arnold@skeeve.com>
 5234 
 5235 	* awkgram.y: Further commentary as to the treacherousness
 5236 	of isalnum and isalpha.
 5237 
 5238 2014-09-15         Arnold D. Robbins     <arnold@skeeve.com>
 5239 
 5240 	Finish removing use of isalpha and isalnum.
 5241 
 5242 	* awk.h (is_alpha, is_alnum, is_identchar): Add declarations.
 5243 	* awkgram.y (yylex): Use is_alpha.
 5244 	(is_alpha, is_alnum): New functions.
 5245 	(is_identchar): Use is_alnum.
 5246 	* builtin.c (r_format_tree): Use is_alpha, is_alnum.
 5247 	* command.y (yylex): Use is_alpha, is_identchar.
 5248 	* ext.c (is_letter): Use is_alpha.
 5249 	(is_identifier_char): Removed; replaced uses with is_identchar.
 5250 	* main.c (arg_assign): Use is_alpha, is_alnum.
 5251 	* node.c (r_force_number): Use is_alpha.
 5252 
 5253 2014-09-14         Arnold D. Robbins     <arnold@skeeve.com>
 5254 
 5255 	* awkgram.y (is_identchar): Change from simple macro to function
 5256 	since use of isalnum() let non-ASCII letters slip through into
 5257 	identifiers.
 5258 
 5259 2014-09-13	Stephen Davies		<sdavies@sdc.com.au>
 5260 
 5261 	When doing pretty-printing (but not profiling), include the original
 5262 	comments in the output.
 5263 
 5264 	General rules:
 5265 
 5266 	Pretty printing:
 5267 		- Do NOT indent by a tab
 5268 		- Do NOT print the header comments ("# BEGIN rules", etc.)
 5269 		- DO print the comments that are in the program
 5270 
 5271 	Profiling:
 5272 		- DO indent by a tab
 5273 		- DO print the header comments
 5274 		- Do NOT print the program's original comments
 5275 
 5276 	* awkgram.y (comment0, commentf): New variables that are  pointers to
 5277 	program and function comments.
 5278 	(get_comment): New function that retrieves consecutive comment lines
 5279 	and empty lines as a unit).
 5280 	(split_comment): New function: iff first block in the program is a
 5281 	function and it is preceded by comments, take the last non-blank
 5282 	line as function comment and any preceding lines as program comment.)
 5283 
 5284 	Following token rules were changed to handle comments:
 5285 
 5286 	* awkgram.y (pattern, LEX_BEGIN, LEX_END, LEX_BEGINFILE, LEX_ENDFILE,
 5287 	action, function_prologue, statements): Update to handle comments.
 5288 				
 5289 	Following functions were changed to handle comments:
 5290 
 5291 	* awkgram.y (mk_program, mk_function, allow_newline and yylex): Update
 5292 	to handle comments. (Also fixed typo in case '\\'.)
 5293 
 5294 	* profile.c (print_comment): New function to format comment printing.
 5295 	(indent, pprint, dump_prog, pp_func): Changed to handle comments and
 5296 	the revised indentation rules.
 5297 
 5298 2014-09-07         Arnold D. Robbins     <arnold@skeeve.com>
 5299 
 5300 	* awk.h: Move libsigsegv stuff to ...
 5301 	* main.c: here. Thanks to Yehezkel Bernat for motivating
 5302 	the cleanup.
 5303 	* symbol.c (make_symbol, install, install_symbol): Add const to
 5304 	first parameter. Adjust decls and fix up uses.
 5305 
 5306 2014-09-05         Arnold D. Robbins     <arnold@skeeve.com>
 5307 
 5308 	Add builtin functions to FUNCTAB for consistency.
 5309 
 5310 	* awk.h (Node_builtin_func): New node type.
 5311 	(install_builtins): Declare new function.
 5312 	* awkgram.y [DEBUG_USE]: New flag value for debug functions; they
 5313 	don't go into FUNCTAB.
 5314 	(install_builtins): New function.
 5315 	* eval.c (nodetypes): Add Node_builtin_func.
 5316 	* interpret.h (r_interpret): Rework indirect calls of built-ins
 5317 	since they're now in the symbol table.
 5318 	* main.c (main): Call `install_builtins'.
 5319 	* symbol.c (install): Adjust for Node_builtin_func.
 5320 	(load_symbols): Ditto.
 5321 
 5322 2014-09-04         Arnold D. Robbins     <arnold@skeeve.com>
 5323 
 5324 	* profile.c (pprint): Case Op_K_for: Improve printing of
 5325 	empty for loop header.
 5326 
 5327 	Unrelated: Make indirect function calls work for built-in and
 5328 	extension functions.
 5329 
 5330 	* awkgram.y (lookup_builtin): New function.
 5331 	* awk.h (builtin_func_t): New typedef.
 5332 	(lookup_builtin): Declare it.
 5333 	* interpret.h (r_interpret): For indirect calls, add code to
 5334 	find and call builtin functions, and call extension functions.
 5335 
 5336 2014-09-01         Arnold D. Robbins     <arnold@skeeve.com>
 5337 
 5338 	* builtin.c (do_substr): Return "" instead of null string in case
 5339 	result is passed to length() with --lint. Based on discussions in
 5340 	comp.lang.awk.
 5341 
 5342 	Unrelated:
 5343 
 5344 	* interpret.h (r_interpret): For indirect function call, separate
 5345 	error message if lookup returned NULL. Otherwise got a core dump.
 5346 	Thanks to "Kenny McKormack" for the report in comp.lang.awk.
 5347 
 5348 2014-08-27         Arnold D. Robbins     <arnold@skeeve.com>
 5349 
 5350 	* configure.ac: Add test for strcasecmp.
 5351 	* regcomp.c: Remove special case code around use of strcasecmp().
 5352 	* replace.c: Include missing/strncasecmp.c if either strcasecmp()
 5353 	or strncasecmp() aren't available.
 5354 
 5355 2014-08-26         Arnold D. Robbins     <arnold@skeeve.com>
 5356 
 5357 	* regcomp.c, regex_internal.c: Sync with GBLIC. Why not.
 5358 
 5359 	Unrelated:
 5360 
 5361 	Remove support for MirBSD. It uglified the code too much
 5362 	for no discernible gain.
 5363 
 5364 	* configure.ac: Remove check for MirBSD and define of
 5365 	LIBC_IS_BORKED.
 5366 	* dfa.c: Remove code depending on LIBC_IS_BORKED.
 5367 	* main.c: Ditto.
 5368 	* regcomp.c: Ditto.
 5369 	* NEWS: Updated.
 5370 
 5371 2014-08-24         Arnold D. Robbins     <arnold@skeeve.com>
 5372 
 5373 	* regex.h: Remove underscores in names of parameters in function
 5374 	declarations. Tweak names as needed.
 5375 
 5376 2014-08-20         Arnold D. Robbins     <arnold@skeeve.com>
 5377 
 5378 	* node.c (parse_escape): Max of 2 digits after \x.
 5379 
 5380 2014-08-18         Arnold D. Robbins     <arnold@skeeve.com>
 5381 
 5382 	* symbol.c: General formatting cleanup.
 5383 
 5384 2014-08-15         Arnold D. Robbins     <arnold@skeeve.com>
 5385 
 5386 	* main.c (usage): Adjust whitespace for -L and add "invalid"
 5387 	as a possible value for it.  Report from Robert P. J. Day
 5388 	<rpjday@crashcourse.ca>.
 5389 
 5390 2014-08-14         Arnold D. Robbins     <arnold@skeeve.com>
 5391 
 5392 	* Makefile.am (SUBDIRS): Put awklib after doc so that examples
 5393 	get extracted when the doc changes.
 5394 
 5395 2014-08-13         Arnold D. Robbins     <arnold@skeeve.com>
 5396 
 5397 	* builtin.c (do_sub): Move initial allocation of the replacement
 5398 	string down towards code to do the replacement, with a (we hope)
 5399 	better guesstimate of how much to initially allocate. The idea
 5400 	is to avoid unnecessary realloc() calls by making a better guess
 5401 	at how much to allocate.  This came up in an email discussion
 5402 	with Tom Dickey about mawk's gsub().
 5403 
 5404 2014-08-12         Juergen Kahrs <jkahrs@users.sourceforge.net>
 5405 
 5406 	* cmake/configure.cmake:
 5407 	* cmake/package.cmake: Copyright update.
 5408 	* README.cmake:
 5409 	* README_d/README.cmake: Moved file.
 5410 
 5411 2014-08-12         Arnold D. Robbins     <arnold@skeeve.com>
 5412 
 5413 	OFS being set should rebuild $0 using previous OFS if $0
 5414 	needs to be rebuilt. Thanks to Mike Brennan for pointing this out.
 5415 
 5416 	* awk.h (rebuild_record): Declare.
 5417 	* eval.c (set_OFS): If not being called from var_init(), check
 5418 	if $0 needs rebuilding. If so, parse the record fully and rebuild it.
 5419 	Make OFS point to a separate copy of the new OFS for next time, since
 5420 	OFS_node->var_value->stptr was already updated at this point.
 5421 	* field.c (rebuild_record): Is now extern instead of static.
 5422 	Use OFS and OFSlen instead of the value of OFS_node.
 5423 
 5424 	Unrelated:
 5425 
 5426 	* Makefile.am (RM): Define for makes that don't have it,
 5427 	such as on OpenBSD.  Thanks to Jeremie Courreges-Anglas
 5428 	<jca@wxcvbn.org> for the report.
 5429 
 5430 2014-08-05         Arnold D. Robbins     <arnold@skeeve.com>
 5431 
 5432 	Bug fix: For MPFR sqrt(), need to set precision of result to be
 5433 	the same as that of the argument. Doesn't hurt other functions.
 5434 	See test/mpfrsqrt.awk. Thank to Katie Wasserman <katie@wass.net>
 5435 	for the bug report.
 5436 
 5437 	* mpfr.c (do_mpfr_func): New function. Runs code for MPFR functions
 5438 	while still enabling debugging. Add call here to mpfr_set_prec().
 5439 	Original code from SPEC_MATH macro.
 5440 	(SPEC_MATH): Change macro to call do_mpfr_func().
 5441 
 5442 	Next MPFR bug fix: The % operator gave strange results for negative
 5443 	numerator. Thanks again to Katie Wasserman for the bug report.
 5444 
 5445 	* mpfr.c (mpg_mod): Use mpz_tdiv_qr() instead of mpz_mod(). From
 5446 	the GMP doc, mpz_mod() should have worked; it's not clear why
 5447 	it doesn't.
 5448 
 5449 2014-08-03         Arnold D. Robbins     <arnold@skeeve.com>
 5450 
 5451 	* builtin.c (format_tree): Don't need to check return value of
 5452 	wctombr for -2. Thanks to Eli Zaretskii for pointing this out.
 5453 
 5454 	Unrelated:
 5455 
 5456 	* gawkapi.h: Fix doc for API get_record - errcode needs to
 5457 	be greater than zero.
 5458 	* interpret.h (r_interpret): Move setting of ERRNO to here, from ...
 5459 	* io.c (inrec): ... here. Makes the code cleaner.
 5460 
 5461 2014-08-03         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5462 
 5463 	* awkgram.y (getfname): Match on either ptr or ptr2 so --profile
 5464 	will work in -M (MPFR bignum) mode.
 5465 
 5466 2014-07-31         Arnold D. Robbins     <arnold@skeeve.com>
 5467 
 5468 	* builtin.c (format_tree): Make %c handling more sane on Windows.
 5469 	Rework the lint messages.
 5470 
 5471 	Unrelated:
 5472 
 5473 	* dfa.c: Sync with GNU grep. Mainly white space differences.
 5474 
 5475 	Unrelated:
 5476 
 5477 	* mpfr.c (cleanup_mpfr): New function to deallocate _mpf_t1
 5478 	and _mpf_t2; removes some valgrind warnings.
 5479 	* awk.h (cleanup_mpfr): Add declaration.
 5480 	* main.c (main): Add call to `cleanup_mpfr'.
 5481 
 5482 	Fix memory leak:
 5483 
 5484 	* mpfr.c (do_mpfr_div): Add unref to denominator and numerator
 5485 	to not leak memory. Thanks to Katie Wasserman <katie@wass.net>
 5486 	for isolating the problem to that routine.
 5487 
 5488 2014-07-25         Arnold D. Robbins     <arnold@skeeve.com>
 5489 
 5490 	* main.c (main): Add a warning message if -M is used and gawk was
 5491 	compiled without MPFR/GMP.
 5492 
 5493 2014-07-24         Arnold D. Robbins     <arnold@skeeve.com>
 5494 
 5495 	* main.c (usage): Put text for `-n' *after* text for `-m'.
 5496 	Report from Robert P. J. Day <rpjday@crashcourse.ca>.
 5497 
 5498 	Fix problems with I/O errors reported by Assaf Gordon
 5499 	<assafgordon@gmail.com>:
 5500 
 5501 	* io.c (inrec): Change type to bool to make calling easier. Add
 5502 	check in non-EOF case for error, and if so, return false.
 5503 	Update ERRNO in case there is an ENDFILE block.
 5504 	* awk.h (inrec): Change type in declaration.
 5505 	* interpret.h (r_interpret): Change call of inrec() to boolean
 5506 	notation.
 5507 
 5508 2014-07-10         Arnold D. Robbins     <arnold@skeeve.com>
 5509 
 5510 	New `div()' function to do integer division and remainder;
 5511 	mainly useful for use with GMP integers. Thanks to
 5512 	Katie Wasserman <katie@wass.net> for the suggestion.
 5513 
 5514 	* awk.h (do_div, do_mpfr_div): Declare new functions.
 5515 	* builtin.c (do_div): New function.
 5516 	* mpfr.c (do_mpfr_div): New function.
 5517 	* awkgram.y (tokentab): New entry.
 5518 	(snode): Add check for do_div/do_mpfr_div to make 3rd arg
 5519 	be an array.
 5520 	* NEWS: Updated.
 5521 	* TODO: Updated.
 5522 
 5523 2014-07-10         Arnold D. Robbins     <arnold@skeeve.com>
 5524 
 5525 	* awkgram.y (check_for_bad): New routine to do the fatal message,
 5526 	with smarter checking.
 5527 	(nextc): Call it as appropriate.
 5528 
 5529 	* builtin.c (format_tree): Add check for bad returns from mbrlen
 5530 	to avoid trying to malloc (size_t) -1 bytes. Thanks to
 5531 	mail.green.fox@gmail.com for the bug report.
 5532 
 5533 2014-07-03         Arnold D. Robbins     <arnold@skeeve.com>
 5534 
 5535 	* awkgram.y (nextc): Add bool check_for_bad parameter to check
 5536 	for bad characters in the source program.
 5537 	(yylex): Adjust calls.
 5538 
 5539 2014-06-24         Arnold D. Robbins     <arnold@skeeve.com>
 5540 
 5541 	* main.c (main): The --pretty-print option no longer runs the
 5542 	program.  This removes the need for the GAWK_NO_PP_RUN environment var.
 5543 	* NEWS: Updated.
 5544 	* TODO: Updated.
 5545 
 5546 2014-06-22         Paul Eggert          <eggert@penguin.cs.ucla.edu>
 5547 
 5548 	Bring in from GNULIB:
 5549 
 5550 	regex: fix memory leak in compiler
 5551 	Fix by Andreas Schwab in:
 5552 	https://sourceware.org/ml/libc-alpha/2014-06/msg00462.html
 5553 	* lib/regcomp.c (parse_expression): Deallocate partially
 5554 	constructed tree before returning error.
 5555 
 5556 2014-06-19         Arnold D. Robbins     <arnold@skeeve.com>
 5557 
 5558 	* builtin.c (do_sub): Add more info to leading comment.
 5559 	Add some whitespace in the code.
 5560 
 5561 2014-06-08         Arnold D. Robbins     <arnold@skeeve.com>
 5562 
 5563 	* dfa.c: Sync with GNU grep.
 5564 
 5565 2014-06-03         Arnold D. Robbins     <arnold@skeeve.com>
 5566 
 5567 	* dfa.c (mbs_to_wchar): Define a macro if not MBS.
 5568 
 5569 2014-05-29         Arnold D. Robbins     <arnold@skeeve.com>
 5570 
 5571 	* dfa.c: Sync with GNU grep.
 5572 
 5573 2014-05-26         Arnold D. Robbins     <arnold@skeeve.com>
 5574 
 5575 	* io.c (inetfile): Change return type to bool.  Wrap code
 5576 	with ifdef HAVE_SOCKETS so that it'll compile on DJGPP.
 5577 
 5578 2014-05-22         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5579 
 5580 	Allow any redirected getline inside BEGINFILE/ENDFILE.
 5581 
 5582 	* awkgram.y (LEX_GETLINE): Only require a redirection and not also
 5583 	a variable if getline is in a BEGINFILE or ENDFILE rule.
 5584 	* interpret.h (Op_K_getline_redir): Remove check and fatal error.
 5585 
 5586 2014-05-20         Arnold D. Robbins     <arnold@skeeve.com>
 5587 
 5588 	* dfa.c (dfaexec): Minor sync with GNU grep.
 5589 
 5590 2014-05-14         Arnold D. Robbins     <arnold@skeeve.com>
 5591 
 5592 	* custom.h (_GL_PURE): Move definition to here. Sigh.
 5593 	* dfa.h, dfa.c: Sync with GNU grep. Sigh.
 5594 
 5595 	Unrelated:
 5596 
 5597 	* custom.h: Remove stuff for Ultrix 4.3. No one has such
 5598 	systems anymore; this just got missed earlier.
 5599 
 5600 2014-05-11         Arnold D. Robbins     <arnold@skeeve.com>
 5601 
 5602 	* debug.c (do_eval): Repair fix of 2014-05-09 and use
 5603 	assoc_remove to take @eval out of the function table.
 5604 	* symbol.c: Fix a comment.  This file needs some work.
 5605 
 5606 2014-05-10         Arnold D. Robbins     <arnold@skeeve.com>
 5607 
 5608 	* io.c (get_a_record): Finish TERMNEAREND handling in case
 5609 	we don't have a regular file but aren't going to get more data.
 5610 	Added some additional comments.
 5611 
 5612 2014-05-09         Arnold D. Robbins     <arnold@skeeve.com>
 5613 
 5614 	* debug.c (do_eval): Don't free `f' which points into the context
 5615 	that was previously freed. Bug reported by Jan Chaloupka
 5616 	<jchaloup@redhat.com>.  Apparently introduced with move to
 5617 	SYMTAB and FUNCTAB, but only showed up on Fedora 20 and Ubuntu 14.04,
 5618 	which have a newer glibc.
 5619 	(do_eval): Fix a memory leak seen by valgrind on Fedora 20 and
 5620 	Ubuntu 14.04: the new SRCFILE that is added wasn't released.
 5621 
 5622 	Unrelated:
 5623 
 5624 	* io.c (get_a_record): Handle return of TERMNEAREND when the
 5625 	entire file has been read into the buffer and we're using a
 5626 	regex for RS. Bug report by Grail Dane <grail69@hotmail.com>.
 5627 
 5628 2014-05-04         Arnold D. Robbins     <arnold@skeeve.com>
 5629 
 5630 	* debug.c (debug_prog): Change check for GAWK_RESTART so that it
 5631 	actually works. Bug fix: run command in debugger would start
 5632 	over again but not actually start running the program.
 5633 
 5634 2014-04-25         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5635 
 5636 	* io.c (two_way_open): In forked child, reset SIGPIPE to SIG_DFL.
 5637 	Fixes problems with "broken pipe" errors from child processes,
 5638 	restoring 4.1.0 and earlier behavior. Thanks to Daryl F
 5639 	<wyatt@prairieturtle.ca> for the report.
 5640 	(gawk_popen): Ditto.
 5641 
 5642 2014-04-25         Arnold D. Robbins     <arnold@skeeve.com>
 5643 
 5644 	* dfa.h, dfa.c: Merge with GNU grep; lots of forward motion.
 5645 
 5646 2014-04-24         Arnold D. Robbins     <arnold@skeeve.com>
 5647 
 5648 	Update xalloc.h for pending merge with dfa.
 5649 
 5650 	* xalloc.h (xstrdup): Implement this.
 5651 	(x2nrealloc): Incorporate changed logic from GNULIB.
 5652 
 5653 2014-04-20         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5654 
 5655 	* io.c (struct inet_socket_info): Define new structure
 5656 	for use in parsing special socket filenames.
 5657 	(inetfile): Parse all components of the special socket filename
 5658 	into the struct inet_socket_info.  Returns true only if it is a
 5659 	valid socket fliename, unlike the previous version which checked
 5660 	for the '/inet[46]?/' prefix only.
 5661 	(redirect): Patch to use updated inetfile() function.
 5662 	(devopen): Remove logic to parse socket filenames, since this has
 5663 	been moved into the inetfile() function.
 5664 	(two_way_open): Update args to inetfile().
 5665 
 5666 2014-04-20         Arnold D. Robbins     <arnold@skeeve.com>
 5667 
 5668 	* builtin.c (do_rand): Make calls to random() in predictable
 5669 	order to avoid order of evaluation differences amongst compilers.
 5670 	Thanks to Anders Magnusson <ragge@ludd.ltu.se> (of the PCC team)
 5671 	for the suggestion.
 5672 
 5673 2014-04-18         Arnold D. Robbins     <arnold@skeeve.com>
 5674 
 5675 	* configure.ac: Change adding of -export-dynamic for GCC to be
 5676 	-Wl,-export-dynamic, which then works for PCC also.
 5677 
 5678 2014-04-11         Arnold D. Robbins     <arnold@skeeve.com>
 5679 
 5680 	* io.c (closemaybesocket): Define if not defined, e.g. building
 5681 	without socket code. Thanks to dave.gma@googlemail.com (Dave Sines)
 5682 	for the report.
 5683 
 5684 2014-04-08         Arnold D. Robbins     <arnold@skeeve.com>
 5685 
 5686 	* 4.1.1: Release tar ball made.
 5687 
 5688 2014-04-08         Arnold D. Robbins     <arnold@skeeve.com>
 5689 
 5690 	* README: Update.
 5691 	* configure.ac: Bump version.
 5692 
 5693 2014-04-03         Arnold D. Robbins     <arnold@skeeve.com>
 5694 
 5695 	* regcomp.c (parse_bracket_exp): Move a call to `re_free' inside
 5696 	an ifdef. Makes the code marginally cleaner.
 5697 
 5698 2014-03-30         Arnold D. Robbins     <arnold@skeeve.com>
 5699 
 5700 	* dfa.c: Sync with GNU grep.
 5701 
 5702 2014-03-28         Arnold D. Robbins     <arnold@skeeve.com>
 5703 
 5704 	* configure.ac: Remove duplicate AC_HEADER_TIME and rearrange
 5705 	order of macros some. May help on older systems.
 5706 
 5707 2014-03-23         Arnold D. Robbins     <arnold@skeeve.com>
 5708 
 5709 	* dfa.c: Move include of dfa.h around for correct building
 5710 	on Irix. Thanks to Nelson H.F. Beebe for the report.
 5711 
 5712 	Unrelated:
 5713 
 5714 	* .gitignore: Simplify .dSYM pattern for Mac OS X.
 5715 
 5716 2014-03-21         Arnold D. Robbins     <arnold@skeeve.com>
 5717 
 5718 	* dfa.c (using_simple_locale): Add ifdefs in case there is no
 5719 	locale support at all. Thanks to Scott Deifik for the report.
 5720 
 5721 	Unrelated:
 5722 
 5723 	* main.c (UPDATE_YEAR): Set to 2014.
 5724 
 5725 2014-03-17         Arnold D. Robbins     <arnold@skeeve.com>
 5726 
 5727 	* .gitignore: Add .dSYM directories for Mac OS X.
 5728 	Thanks to Hermann Peifer for the suggestion.
 5729 
 5730 2014-03-10         Arnold D. Robbins     <arnold@skeeve.com>
 5731 
 5732 	* dfa.h, dfa.c: Sync with grep. Yet again.
 5733 	* regex_internal.c (built_wcs_upper_buffer, build_upper_buffer):
 5734 	Fixes from GNULIB for mixed case matching on Mac OS X.
 5735 
 5736 	Unrelated:
 5737 
 5738 	* builtin.c (format_tree): Smarten handling of %' flag. Always
 5739 	pass it in for floating point formats. Then only add the
 5740 	thousands_sep if there is one. Also, allow for thousands_sep
 5741 	to be a string, not just one character.  Thanks to Michal Jaegermann
 5742 	for the report.
 5743 
 5744 2014-03-08         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5745 
 5746 	* gawkapi.c (api_impl): Add memory allocation function pointers.
 5747 	* gawkapi.h (GAWK_API_MINOR_VERSION): Bump.
 5748 	(gawk_api_t): Add memory allocation function pointers api_malloc,
 5749 	api_calloc, api_realloc, and api_free.
 5750 	(gawk_malloc, gawk_calloc, gawk_realloc, gawk_free): New macros.
 5751 	(emalloc): Replace malloc with gawk_malloc.
 5752 	(erealloc): Replace erealloc with gawk_erealloc.
 5753 
 5754 2014-03-05         Arnold D. Robbins     <arnold@skeeve.com>
 5755 
 5756 	Straighten out enumerated types some more.
 5757 
 5758 	* awk.h (add_srcfile): Fix type of first parameter.
 5759 	* awkgram.y (add_srcfile, do_add_srcfile): Ditto.
 5760 	* cmd.h (A_NONE): New enum nametypeval.
 5761 	* command.y (argtab): Use it in final value.
 5762 	* ext.c (make_builtin): Use awk_false, awk_true.
 5763 	* io.c (init_output_wrapper): Use awk_false.
 5764 
 5765 	Unrelated:
 5766 
 5767 	* debug.c (do_commands): Initialize num to silence warnings.
 5768 	Thanks to Michal Jaegermann.
 5769 
 5770 	Unrelated:
 5771 
 5772 	* builtin.c (do_mktime): Change lint warning for minutes to
 5773 	check against 59, not 60.  Thanks to Hermann Peifer for the report.
 5774 
 5775 2014-03-03         Arnold D. Robbins     <arnold@skeeve.com>
 5776 
 5777 	* dfa.c: Sync with grep. Yet again.
 5778 
 5779 2014-02-28         Arnold D. Robbins     <arnold@skeeve.com>
 5780 
 5781 	* dfa.c: Sync with grep. Looks like good improvement with
 5782 	respect to bracket expressions.
 5783 
 5784 2014-02-27         Arnold D. Robbins     <arnold@skeeve.com>
 5785 
 5786 	Fixes for enum/int mismatches as warned by some compilers.
 5787 
 5788 	* awk.h (ANONE): New enum for array sorting.
 5789 	* array.c (assoc_list): Use it.
 5790 	* builtin.c (format_tree): New MP_NONE value.
 5791 	* gawkapi.c: Use awk_false and awk_true everywhere instead of
 5792 	false and true.
 5793 
 5794 2014-02-26         Arnold D. Robbins     <arnold@skeeve.com>
 5795 
 5796 	* configure.ac: Set up do-nothing extension/Makefile on
 5797 	MirBSD also.
 5798 
 5799 2014-02-21         Arnold D. Robbins     <arnold@skeeve.com>
 5800 
 5801 	* dfa.h, dfa.c (parse_bracket_exp): Sync with grep.
 5802 
 5803 2014-02-20         Arnold D. Robbins     <arnold@skeeve.com>
 5804 
 5805 	* regex.h, regex.c, regex_internal.c, regex_internal.h: Sync
 5806 	with GLIBC. Mainly copyright updates.
 5807 	* getopt.c, getopt.h, getopt1.c, getopt_int.h: Ditto.
 5808 	* dfa.c (parse_bracket_exp): Sync with grep, where they restored
 5809 	the buggy code.  Sigh.
 5810 
 5811 	Unrelated:
 5812 
 5813 	* NEWS: Typo fix.
 5814 	* interpret.h (r_interpret): Init a variable for BEGINFILE to avoid
 5815 	compiler warnings. Thanks to Michal Jaegermann.
 5816 
 5817 2014-02-15         Arnold D. Robbins     <arnold@skeeve.com>
 5818 
 5819 	* awkgram.c, command.c: Regenerated - Bison 3.0.2.
 5820 
 5821 2014-02-04         Arnold D. Robbins     <arnold@skeeve.com>
 5822 
 5823 	* dfa.c (to_uchar): Make use of this. Syncs with GNU grep.
 5824 
 5825 2014-02-03         Arnold D. Robbins     <arnold@skeeve.com>
 5826 
 5827 	* awkgram.y (negate_num): Bracket `tval' in #ifdef MPFR since it's
 5828 	only used in that code.
 5829 
 5830 2014-01-31         Arnold D. Robbins     <arnold@skeeve.com>
 5831 
 5832 	* Makefile.am (dist-hook): Improve creation of pc/config.h. We
 5833 	have to jump through a lot of hoops for 'make distcheck' to
 5834 	actually work.
 5835 
 5836 2014-01-30         Arnold D. Robbins     <arnold@skeeve.com>
 5837 
 5838 	* Makefile.am (dist-hook): Improve creation of pc/config.h to copy
 5839 	the new file into the distribution directory being created.
 5840 	Also, put the temporary files into /tmp.
 5841 
 5842 2014-01-28         Arnold D. Robbins     <arnold@skeeve.com>
 5843 
 5844 	* awkgram.y (negate_num): If just a double, return. Fixes a bug
 5845 	that showed up on 32-bit systems with MPFR. Thanks to Eli Zaretskii
 5846 	and Corinna Vinschen for the report.  Also, free the MPZ integer.
 5847 	Thanks to valgrind for the report.
 5848 
 5849 	Unrelated:
 5850 
 5851 	* dfa.c: Sync with GNU grep - removed some special cased code
 5852 	for grep.
 5853 
 5854 2014-01-24         Arnold D. Robbins     <arnold@skeeve.com>
 5855 
 5856 	* configure.ac, field.c: Update copyright year.
 5857 
 5858 2014-01-19         Arnold D. Robbins     <arnold@skeeve.com>
 5859 
 5860 	* awkgram.y (negate_num): Handle the case of -0 for MPFR; the sign
 5861 	was getting lost. Thanks to Hermann Peifer for the report.
 5862 
 5863 2014-01-18         Arnold D. Robbins     <arnold@skeeve.com>
 5864 
 5865 	* dfa.c (parse_bracket_exp): Sync with GNU grep, which now uses
 5866 	gawk's code for RRI in single-byte locales!  Hurray.
 5867 
 5868 2014-01-16         Arnold D. Robbins     <arnold@skeeve.com>
 5869 
 5870 	* configure.ac: For z/OS, restore creation of do-nothing
 5871 	Makefile in extension directory.
 5872 
 5873 2014-01-14         Arnold D. Robbins     <arnold@skeeve.com>
 5874 
 5875 	* field.c (do_split): Make sure split() gets FS value if no
 5876 	third arg even after FPAT was set. Thanks to Janis Papanagnou
 5877 	for the report.
 5878 
 5879 2014-01-13         Arnold D. Robbins     <arnold@skeeve.com>
 5880 
 5881 	* README: Fix John Malmberg's email address.
 5882 
 5883 2014-01-12         Arnold D. Robbins     <arnold@skeeve.com>
 5884 
 5885 	* awkgram.y:  Update copyright year.
 5886 	(func_use): Simplify code.
 5887 	* command.y:  Update copyright year.
 5888 	* ext.c:  Update copyright year.
 5889 	(make_builtin): Small simplification.
 5890 	(make_old_builtin): Make code consistent with make_builtin(), add
 5891 	call to track_ext_func().
 5892 	* bootstrap.sh: Update copyright year. Remove touch of version.c
 5893 	since that file is no longer autogenerated.
 5894 
 5895 2014-01-07         Arnold D. Robbins     <arnold@skeeve.com>
 5896 
 5897 	* command.y (next_word): Move into ifdef for HAVE_LIBREADLINE,
 5898 	since it's only used by that code.
 5899 	* ext.c (load_old_ext): Minor improvements.
 5900 
 5901 2014-01-03         Arnold D. Robbins     <arnold@skeeve.com>
 5902 
 5903 	* config.guess, config.rpath, config.sub, depcomp,
 5904 	install-sh: Updated.
 5905 	* dfa.h, dfa.c: Sync with GNU grep; comment fix and copyright year.
 5906 	* NEWS: Updated some, including copyright year.
 5907 
 5908 2013-12-26         Arnold D. Robbins     <arnold@skeeve.com>
 5909 
 5910 	* README: Add John Malmberg for VMS.
 5911 
 5912 2013-12-24         Arnold D. Robbins     <arnold@skeeve.com>
 5913 
 5914 	* getopt.h: Add `defined(__sun)' to list of system that do get to
 5915 	include stdlib.h.  Needed for Illumos. Thanks to
 5916 	Richard Palo <richard.palo@free.fr> for the report.
 5917 
 5918 2013-12-21         Mike Frysinger        <vapier@gentoo.org>
 5919 
 5920 	* configure.ac: Add --disable-extensions flag to control
 5921 	compiling extensions.  Better for cross-compiling.
 5922 	(AC_CANONICAL_HOST): Added. Changed case statements appropriately.
 5923 	* Makefile.am (check-for-shared-lib-support): Removed.
 5924 	(check-recursive, all-recursive): Removed.
 5925 
 5926 2013-12-21         Arnold D. Robbins     <arnold@skeeve.com>
 5927 
 5928 	* config.guess: Updated.
 5929 	* configure, aclocal.m4: Updated based on automake 1.13.4.
 5930 
 5931 2013-12-19         Arnold D. Robbins     <arnold@skeeve.com>
 5932 
 5933 	* regexec.c (re_search_internal): Make sure `dfa' pointer is
 5934 	not NULL before trying to dereference it.
 5935 
 5936 2013-12-16         Arnold D. Robbins     <arnold@skeeve.com>
 5937 
 5938 	* configure.ac (AC_FUNC_VPRINTF): Remove. Not needed on current
 5939 	systems.
 5940 	* awk.h (HAVE_VPRINTF): Remove check.
 5941 
 5942 2013-12-12         John E. Malmberg      <wb8tyw@qsl.net>
 5943 
 5944 	* io.c (redirect): Add additional VMS error codes.
 5945 	(nextfile): Retry open after closing some files.
 5946 
 5947 2013-12-10         Scott Deifik          <scottd.mail@sbcglobal.net>
 5948 
 5949 	* io.c (closemaybesocket): Add definition for DJGPP.
 5950 
 5951 2013-12-10         Arnold D. Robbins     <arnold@skeeve.com>
 5952 
 5953 	* awk.h (Floor, Ceil): Remove declarations and VMS redefinitions.
 5954 	* floatcomp.c (Floor, Ceil): Removed, not needed. Move bracketing
 5955 	ifdef to the top of the file.
 5956 	* builtin.c (double_to_int): Use floor() and ceil().
 5957 
 5958 2013-12-07         Arnold D. Robbins     <arnold@skeeve.com>
 5959 
 5960 	* regex_internal.h (__attribute__): Define to empty if not GCC.
 5961 	* custom.h (__attribute__): Remove the definition from here; the
 5962 	right place was regex_internal.h.
 5963 
 5964 2013-12-06         Arnold D. Robbins     <arnold@skeeve.com>
 5965 
 5966 	No need to generate version.c from version.in.
 5967 	Thanks to John E. Malmberg <wb8tyw@qsl.net> for the suggestion.
 5968 
 5969 	* version.in: Removed.
 5970 	* version.c: Use PACKAGE_STRING directly.
 5971 	* Makefile.am (EXTRA_DIST): Remove version.in.
 5972 	(distcleancheck_listfiles): Remove this rule.
 5973 	(MAINTAINERCLEANFILES): Remove this definition.
 5974 	(version.c): Remove the rule to create it.
 5975 
 5976 2013-12-05         Arnold D. Robbins     <arnold@skeeve.com>
 5977 
 5978 	Fixes for Z/OS.
 5979 
 5980 	* custom.h (__attribute__): Define to empty.
 5981 	* dfa.c (parse_bracket_exp): Add a cast to quiet a warning.
 5982 	* regex.c: Correctly bracket include of <sys/param.h>.
 5983 
 5984 	Unrelated:
 5985 
 5986 	* debug.c (find_rule): Add a FIXME comment.
 5987 
 5988 2013-12-03         John E. Malmberg	<wb8tyw@qsl.net>
 5989 
 5990 	* io.c (redirect): Add additional VMS error code to check.
 5991 	(do_find_source): Append "/" if not a VMS filename.
 5992 
 5993 2013-12-01         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5994 
 5995 	* main.c (optab): Sort by long option name.
 5996 
 5997 2013-11-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 5998 
 5999 	* main.c (optab): Add entry for --include.
 6000 
 6001 2013-11-23         Arnold D. Robbins     <arnold@skeeve.com>
 6002 
 6003 	* dfa.c: Merge from grep; minor fixes in how bit twiddling
 6004 	is done.
 6005 
 6006 2013-11-01         Arnold D. Robbins     <arnold@skeeve.com>
 6007 
 6008 	* dfa.c (lex): Reset laststart so that stuff like \s* works.
 6009 	Fix from grep.
 6010 
 6011 2013-10-31         Arnold D. Robbins     <arnold@skeeve.com>
 6012 
 6013 	* builtin.c (efwrite): If write error to stdout is EPIPE,
 6014 	die silently.  Thanks to Hermann Peifer for helping find this.
 6015 
 6016 2013-10-22         Arnold D. Robbins     <arnold@skeeve.com>
 6017 
 6018 	Revise error messages when writing to standard output or standard
 6019 	error to ignore EPIPE.  Add the ability based on an environment
 6020 	variable to get the source file and line number.
 6021 
 6022 	* awk.h (r_warning): Renamed from warning.
 6023 	(warning): New macro to set location and call warning.
 6024 	* io.c (flush_io): Print errors only if not EPIPE.
 6025 	(close_io): Ditto.
 6026 	* main.c (lintfunc): Init to r_warning.
 6027 	(main): Enhance explanatory comment.
 6028 	(usage): Print errors only if not EPIPE.
 6029 	(copyleft): Ditto.
 6030 	* msg.c (err): Make printing srcfile and srcline depend upon
 6031 	GAWK_MSG_SRC environment variable.
 6032 	(r_warning): Renamed from warning.
 6033 
 6034 2013-10-17         Arnold D. Robbins     <arnold@skeeve.com>
 6035 
 6036 	* main.c (main): Ignore SIGPIPE. See the comment in the code.
 6037 	Thanks to Alan Broder for reporting the issue.
 6038 
 6039 	Unrelated:
 6040 
 6041 	* rand.c (do_rand): Fix computation and loop checking against
 6042 	1.0 to use do..while.
 6043 
 6044 2013-10-16         Arnold D. Robbins     <arnold@skeeve.com>
 6045 
 6046 	Make -O work again.  Turns out that C99 bool variables
 6047 	are clamped to zero or one.
 6048 
 6049 	* main.c (do_optimize): Init to false.
 6050 	(main): Set do_optimize to true on -O.
 6051 	* eval.c (setup_frame): Change all uses of do_optimize to be
 6052 	a boolean check instead of a test > 1.
 6053 	* awkgram.y: Ditto.
 6054 	(optimize_assignment): Remove check against do_optimize since
 6055 	it was inited to true anyway.
 6056 
 6057 	Unrelated:
 6058 
 6059 	* re.c (resetup): Add a comment about the joy of syntax bits.
 6060 
 6061 	Unrelated:
 6062 
 6063 	* builtin.c (do_rand): If result is exactly 1.0, keep trying.
 6064 	Thanks to Nelson Beebe.
 6065 
 6066 2013-10-10         Arnold D. Robbins     <arnold@skeeve.com>
 6067 
 6068 	* dfa.c (lex): Sync with GNU grep. Handle multibyte \s and \S.
 6069 
 6070 	Unrelated:
 6071 
 6072 	* awk.h [ARRAY_MAXED]: Fix value of this and subsequent flags
 6073 	after addition of NULL_FIELD.
 6074 	* eval.c (flags2str): Add NULL_FIELD. Duh.
 6075 
 6076 2013-10-09         Arnold D. Robbins     <arnold@skeeve.com>
 6077 
 6078 	* awkgram.y (mk_assignment): Rework switch to handle Op_assign,
 6079 	and to provide a better error message upon unknown opcode.
 6080 
 6081 2013-09-28         Arnold D. Robbins     <arnold@skeeve.com>
 6082 
 6083 	* dfa.c: Sync with GNU grep.
 6084 
 6085 2013-09-25         Arnold D. Robbins     <arnold@skeeve.com>
 6086 
 6087 	* builtin.c (do_rand): Make the result more random by calling
 6088 	random() twice. See the comment in the code. Thanks to
 6089 	Bob Jewett <jewett@bill.scs.agilent.com> for the report and
 6090 	the fix.
 6091 
 6092 2013-09-24         Arnold D. Robbins     <arnold@skeeve.com>
 6093 
 6094 	* debug.c (find_rule): Handle case where lineno is zero. Can happen
 6095 	if break is given without a line number on a current line. Thanks
 6096 	to Ray Song <i@maskray.me> for the report.
 6097 
 6098 2013-09-19         Arnold D. Robbins     <arnold@skeeve.com>
 6099 
 6100 	* dfa.c (parse_bracket_exp): Use code from grep to keep things within
 6101 	range (updates change of 2013-09-08). Fix whitespace in one of the
 6102 	gawk-only additions.
 6103 
 6104 2013-09-13         Arnold D. Robbins     <arnold@skeeve.com>
 6105 
 6106 	Fix use of NF after it's extended, e.g. see test/nfloop.awk.
 6107 
 6108 	* awk.h (NULL_FIELD): New flag
 6109 	* builtin.c (do_print_rec): Check f0->flags instead of if
 6110 	equal to Nnull_string.
 6111 	* eval.c (r_get_field): Check (*lhs)->flags instead of if
 6112 	equal to Nnull_string or Null_field.
 6113 	* field.c (init_fields): Init field zero and Null_field with
 6114 	NULL_FIELD flag.
 6115 	(set_NF): Set parse_high_water = NF in case NF extended past the
 6116 	end. This is the actual bug fix.
 6117 
 6118 2013-09-08         Arnold D. Robbins     <arnold@skeeve.com>
 6119 
 6120 	Fixes based on reports from a static code checker. Thanks to
 6121 	Anders Wallin for sending in the list.
 6122 
 6123 	* array.c (asort_actual): Free list if it's not NULL.
 6124 	* builtin.c (do_sub): Set buf to NULL and assert on it before using
 6125 	it.
 6126 	* cint_array.c (cint_array_init): Clamp any value of NHAT from the
 6127 	environment such that it won't overflow power_two_table when used as
 6128 	an index.
 6129 	* dfa.c (parse_bracket_exp): Check that len is in range before using it
 6130 	to index buf.
 6131 	* getopt.c (_getopt_internal_r): Change call to alloca to use malloc.
 6132 	* io.c (socket_open): Init read_len to zero.
 6133 	(two_way_open): Upon failure to fork, close the slave fd also.
 6134 	* re.c (research): Init try_backref to false.
 6135 	* regcomp.c (build_range_exp): Free any items that were allocated in
 6136 	the case where not all items were.
 6137 	(build_charclass_op): Same. Init br_token to zero with memset.
 6138 	(create_tree): Init token t to zero with memset.
 6139 	* regex_internal.c (re_dfa_add_node): Free any items that were
 6140 	allocated in the case where not all items were.
 6141 	* symbol.c (destroy_symbol): On default, break, to fall into releasing
 6142 	of resources.
 6143 
 6144 2013-08-29         Arnold D. Robbins     <arnold@skeeve.com>
 6145 
 6146 	* debug.c (HAVE_HISTORY_LIST): Move checks and defines to the top.
 6147 	(do_save, serialize): Adjust #if checks to depend on having both
 6148 	readline and the history functions. Needed for Mac OS X whose
 6149 	native readline is a very old version. Sigh.
 6150 	* configh.in, configure: Regenerated due to change in m4/readline.m4.
 6151 	Issue reported by Hermann Peifer and Larry Baker.
 6152 
 6153 	Unrelated:
 6154 
 6155 	* getopt.c: Sync with GLIBC, changes are minor.
 6156 
 6157 	Unrelated:
 6158 
 6159 	* dfa.c: Sync with version in grep. Primarily whitespace / comment
 6160 	wording changes.
 6161 
 6162 2013-08-26         Arnold D. Robbins     <arnold@skeeve.com>
 6163 
 6164 	* regcomp.c (parse_dup_op): Remove RE_TOKEN_INIT_BUG code (change of
 6165 	Feb 19 2005) since it's no longer needed.
 6166 
 6167 	* regcomp.c (re_fastmap_iter): Undo addition of volatile from
 6168 	Jan 18 2007; no longer needed and is one less change to have to
 6169 	maintain against the upstream.
 6170 
 6171 	* regcomp.c, regex.h, regex_internal.h: Sync with GLIBC.
 6172 
 6173 2013-08-22         Arnold D. Robbins     <arnold@skeeve.com>
 6174 
 6175 	* str_array.c (env_store): If the new value being stored is NULL,
 6176 	pass in "" instead. Avoids core dump on Mac OS X.
 6177 	Thanks to Hermann Peifer for the bug report.
 6178 
 6179 2013-08-20         Arnold D. Robbins     <arnold@skeeve.com>
 6180 
 6181 	* nonposix.h: New file. Contains FAKE_FD_VALUE.
 6182 	* awk.h: Include it if MinGW or EMX.
 6183 	* Makefile.am (base_sources): Add nonposix.h.
 6184 
 6185 2013-08-18         Arnold D. Robbins     <arnold@skeeve.com>
 6186 
 6187 	Reflect updates to ENVIRON into the real environment.
 6188 
 6189 	* awk.h (init_env_array): Add declaration.
 6190 	* main.c (load_environ): Call init_env_array.
 6191 	* str_array.c (env_remove, env_store, env_clear, init_env_array):
 6192 	New functions.
 6193 	(env_array_func): New array vtable.
 6194 
 6195 2013-08-18         Arnold D. Robbins     <arnold@skeeve.com>
 6196 
 6197 	* array.c (force_array): Set symbol->xarray to NULL before
 6198 	initing the array if it was Node_var_new.
 6199 	(null_array): Restore assert, undoing change of 2013-05-27.
 6200 
 6201 2013-08-15         Arnold D. Robbins     <arnold@skeeve.com>
 6202 
 6203 	* debug.c (print_memory): Fix whitespace / indentation.
 6204 
 6205 2013-08-02         Arnold D. Robbins     <arnold@skeeve.com>
 6206 
 6207 	* awkgram.y (append_rule): Add attempt to insert any comment
 6208 	before a rule. Commented out at the moment.
 6209 
 6210 2013-07-30         Arnold D. Robbins     <arnold@skeeve.com>
 6211 
 6212 	* awk.h (enum opcodeval): Add Op_comment.
 6213 	* awkgram.y (comment): New variable to hold comment text.
 6214 	(statement): Add saved comments to lists being built.
 6215 	(allow_newline): Save comment text if necessary. Append if have
 6216 	existing text.
 6217 	(yylex): Ditto.
 6218 	* debug.c (print_instruction): Handle Op_comment.
 6219 	* eval.c (optypes): Add entry for Op_comment.
 6220 	* interpret.h (r_interpret): Ditto.
 6221 	* profile.c (pprint): For Op_comment, print the comment text.
 6222 
 6223 2013-07-24         Arnold D. Robbins     <arnold@skeeve.com>
 6224 
 6225 	* io.c (FAKE_FD_VALUE): Move definition from here ...
 6226 	* awk.h (FAKE_FD_VALUE): ... to here. Fixes compilation on MinGW.
 6227 
 6228 2013-07-08         Arnold D. Robbins     <arnold@skeeve.com>
 6229 
 6230 	* io.c (get_a_record): Change `min' to `MIN' for consistency with
 6231 	other files and general practice.
 6232 
 6233 2013-07-07         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6234 
 6235 	* configure.ac (AC_CHECK_FUNCS): Check for sigprocmask.
 6236 	* io.c (wait_any): If sigprocmask is available, block signals instead
 6237 	of ignoring them temporarily.
 6238 
 6239 2013-07-05         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6240 
 6241 	* gawkapi.h (gawk_api): Document that the api_get_file function will not
 6242 	access the file type and length arguments if the file name is empty.
 6243 
 6244 2013-07-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6245 
 6246 	* configure.ac (AC_CHECK_FUNCS): Add a check for waitpid.
 6247 	* io.c (wait_any): Enhance comment to explain why we loop reaping all
 6248 	exited children when the argument is zero.  When available, use waitpid
 6249 	with WNOHANG to avoid blocking.  Remove my previous incorrect patch to
 6250 	exit after reaping the first child.  The function is intended to
 6251 	wait for all children, since we are not careful about reaping children
 6252 	as soon as they die.
 6253 
 6254 2013-07-02         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6255 
 6256 	* gawkapi.h (gawk_api): Remove unused api_lookup_file hook.
 6257 	(lookup_file): Remove associated macro.
 6258 	* gawkapi.c (api_lookup_file): Remove unused function.
 6259 	(api_impl):  Remove unused api_lookup_file hook.
 6260 
 6261 2013-07-02         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6262 
 6263 	* awkgram.y (main_beginfile): Declare new global INSTRUCTION *.
 6264 	(parse_program): Set main_beginfile to point to the BEGINFILE
 6265 	instruction block.
 6266 	* gawkapi.c (api_get_file): After nextfile starts a new file,
 6267 	we need to run the BEGINFILE actions.  We retrieve the
 6268 	instruction pointer from main_beginfile and execute it until
 6269 	we reach the Op_after_beginfile opcode.  We then run after_beginfile
 6270 	manually and restore the value of currule and source.
 6271 
 6272 2013-07-04         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6273 
 6274 	* gawkapi.h (awk_element_t): Add comment indicating that the array
 6275 	element index will always be a string!
 6276 	* gawkapi.c (api_flatten_array): When converting the index to an awk
 6277 	value, request a string conversion, since we want the indices to
 6278 	appear as strings to the extensions.  This makes the call to
 6279 	force_string redundant, since node_to_awk_value does that internally
 6280 	when we request a string.
 6281 
 6282 2013-07-02         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6283 
 6284 	* eval.c (update_ERRNO_string): Set PROCINFO["errno"] to 0.
 6285 	* io.c (inrec): Since get_a_record may now return -2, be sure
 6286 	to throw an error in that case as well.
 6287 	(wait_any): Fix what appears to be a bug.  The old logic repeatedly
 6288 	called wait until it failed.  When a process has multiple children,
 6289 	this causes it to stall until all of them have exited.  Instead,
 6290 	we now exit the function after the first successful wait call.
 6291 	(do_getline_redir, do_getline): Handle case where get_a_record
 6292 	returns -2.
 6293 	(errno_io_retry): New function to decide whether an I/O operation should
 6294 	be retried.
 6295 	(get_a_record): When read returns an error, call errno_io_retry to
 6296 	decide whether the operation should be retried.  If so, return -2
 6297 	instead of setting the IOP_AT_EOF flag.
 6298 
 6299 2013-07-01         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6300 
 6301 	* eval.c (update_ERRNO_int, unset_ERRNO): Update PROCINFO["errno"].
 6302 
 6303 2013-06-30         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6304 
 6305 	* awk.h (redirect_string): Declare new function that provides API access
 6306 	to the redirection mechanism.
 6307 	* gawkapi.h (GAWK_API_MINOR_VERSION): Bump from 0 to 1 since 2 new
 6308 	hooks were added to the api.
 6309 	(gawk_api_t): Add 2 new functions api_lookup_file and api_get_file.
 6310 	(lookup_file, get_file): New macros to wrap the new API functions.
 6311 	* gawkapi.c (curfile): Declare this extern, since it is needed
 6312 	by lookup_file and get_flie.
 6313 	(api_lookup_file): Find an open file using curfile or getredirect().
 6314 	(api_get_file): Find or open a file using curfile or redirect_string().
 6315 	(api_impl): Add api_lookup_file and api_get_file.
 6316 	* io.c (redirect_string): Renamed from redirect and changed arguments
 6317 	to take a string instead of a 'NODE *'.  This allows it to be called
 6318 	through the API's new get_file hook.
 6319 	(redirect): Now implemented by calling redirect_string backend function.
 6320 
 6321 2013-07-04         Arnold D. Robbins     <arnold@skeeve.com>
 6322 
 6323 	* builtin.c (format_tree): Fixes for %c with multibyte characters
 6324 	and field width > 1. Bugs reported by Nethox <nethox@gmail.com>.
 6325 
 6326 2013-07-02         Arnold D. Robbins     <arnold@skeeve.com>
 6327 
 6328 	* profile.c (pp_string): Add a call to chksize and fix another.
 6329 	Avoids valgrind errors on profile5 test. Thanks to Andrew
 6330 	Schorr for the report.
 6331 
 6332 2013-06-27         Arnold D. Robbins     <arnold@skeeve.com>
 6333 
 6334 	* awkgram.y: Minor whitespace cleanup, remove redundant ifdef.
 6335 
 6336 2013-06-24         Arnold D. Robbins     <arnold@skeeve.com>
 6337 
 6338 	* dfa.c (copytoks): Rewrite to call addtok_mb() directly. Avoids
 6339 	problems with multibyte characters inside character sets.
 6340 	Thanks to Steven Daniels <stevendaniels88@gmail.com> for reporting
 6341 	the problem.  Much thanks to Mike Haertel <mike@ducky.net> for the
 6342 	analysis and fix.
 6343 
 6344 2013-06-24  Eli Zaretskii  <eliz@gnu.org>
 6345 
 6346 	* io.c: Move #include "popen.h" out of the HAVE_SOCKETS condition,
 6347 	as this is needed for non-sockets builds as well.  See
 6348 	http://lists.gnu.org/archive/html/bug-gawk/2013-06/msg00014.html
 6349 	for the details of the problem this caused.
 6350 
 6351 2013-06-15         Arnold D. Robbins     <arnold@skeeve.com>
 6352 
 6353 	* io.c: Add ifdefs for VMS so that it will compile again.
 6354 	Thanks to Anders Wallin.
 6355 
 6356 2013-06-11         Arnold D. Robbins     <arnold@skeeve.com>
 6357 
 6358 	* debug.c (print_lines): Move setting of binary mode to after all
 6359 	the messing with the fd. Simplifies code some.
 6360 	* io.c (srcopen): Rearrange so that can add call to setbinmode
 6361 	here too. This fixes the debugger and makes reading source
 6362 	files a little faster. Thanks again to Corinna Vinschen.
 6363 
 6364 2013-06-10         Arnold D. Robbins     <arnold@skeeve.com>
 6365 
 6366 	* debug.c (print_lines): Set binary mode so that calculation of the
 6367 	byte offsets will be right. Thanks to Corinna Vinschen for the
 6368 	direction.
 6369 
 6370 2013-06-10         Arnold D. Robbins     <arnold@skeeve.com>
 6371 
 6372 	* re.c (check_bracket_exp): Remove warning about ranges being
 6373 	locale dependent, since they aren't anymore.
 6374 
 6375 2013-06-09         Arnold D. Robbins     <arnold@skeeve.com>
 6376 
 6377 	* io.c (iop_finish): Change fstat call to fcntl/F_GETFL per
 6378 	Eli Z., for Windows.
 6379 
 6380 2013-06-03         Arnold D. Robbins     <arnold@skeeve.com>
 6381 
 6382 	* eval.c (unwind_stack): If exiting, don't worry about strange stuff
 6383 	on the stack.
 6384 
 6385 	Unrelated:
 6386 
 6387 	* awk.h (init_sockets): Declare.
 6388 	* io.c (init_io): Remove ifdef around call.
 6389 
 6390 2013-06-01  Eli Zaretskii  <eliz@gnu.org>
 6391 
 6392 	* io.c (SHUT_RD) [SD_RECEIVE]: Define to SD_RECEIVE.
 6393 	(SHUT_WR) [SD_SEND]: Define to SD_SEND.
 6394 	(SHUT_RDWR) [SD_BOTH]: Define to SD_BOTH.
 6395 	(FD_TO_SOCKET, closemaybesocket) [!FD_TO_SOCKET]: New macros.
 6396 	(SOCKET_TO_FD, SOCKET) [!SOCKET_TO_FD]: New macros.
 6397 	(PIPES_SIMULATED): Define only for DJGPP.
 6398 	(pipe) [__MINGW32__]: Define to call _pipe, unless PIPES_SIMULATED
 6399 	is defined.
 6400 	(init_io) [HAVE_SOCKETS]: Call init_sockets.
 6401 	(iop_close, socketopen): Call closemaybesocket instead of close.
 6402 	(redirect) [__MINGW32__]: Call wait_any with a non-zero argument.
 6403 	(devopen) [__EMX__ || __MINGW32__]: Don't call stat on network
 6404 	pseudo-filenames.
 6405 	(two_way_open) [HAVE_SOCKETS]: Switch input and output to binary
 6406 	mode if appropriate.
 6407 	(two_way_open) [!PIPES_SIMULATED]: Use the __EMX__ code for MinGW
 6408 	as well.
 6409 	[__MINGW32__] Call spawnl to invoke $ComSpec and pass it a
 6410 	suitably quoted command line.
 6411 	(two_way_open) [__MINGW32__]: Wait only for a specified process
 6412 	ID.  If successful, update the exit status of the exited process.
 6413 	Don't use signals that are undefined on MinGW.
 6414 	(two_way_open) [!PIPES_SIMULATED]: Use the __EMX__ code for MinGW
 6415 	as well.
 6416 	(min): Define only if not already defined.
 6417 	(read_with_timeout) [__MINGW32__]: Allow reading from sockets with
 6418 	timeout.
 6419 	(gawk_fclose) [__MINGW32__]: Close the underlying socket as well.
 6420 
 6421 	* getopt.c: Include stdlib.h for MinGW as well.
 6422 
 6423 2013-05-30         Arnold D. Robbins     <arnold@skeeve.com>
 6424 
 6425 	More profiling fixes:
 6426 
 6427 	* profile.c (pprint): For Op_in_array, parenthesize subscript if
 6428 	the precedence is lower. E.g.:  (c = tolower(foo)) in ARRAY.
 6429 	(prec_level): Merge cases for precedence of 5.
 6430 	(parenthesize): Simplify, as in 3.1.8. Avoids stuff like
 6431 	`(x == 1 && (z ==2 && (q == 4 && w == 7)))'.
 6432 
 6433 	Unrelated:
 6434 
 6435 	* io.c (iop_finish): fstat the fd before closing it to avoid
 6436 	errors on some operating systems. Thanks to Eli Zaretskii
 6437 	for the report.
 6438 
 6439 2013-05-29         Arnold D. Robbins     <arnold@skeeve.com>
 6440 
 6441 	* profile.c (pp_group3): Renamed from pp_concat. Change all calls.
 6442 	(is_binary): Change return type to bool.
 6443 	(is_scalar): New function.
 6444 	(pp_concat): New function to handle concatenation operator better.
 6445 	(pprint): Call it at case Op_concat. Fix Op_K_delete if multiple
 6446 	indexes to separate with "][".
 6447 	General: Add leading comments as needed.
 6448 
 6449 2013-05-28         Arnold D. Robbins     <arnold@skeeve.com>
 6450 
 6451 	* main.c (main): Add minor hack to not run code if pretty printing
 6452 	and undocumented env var GAWK_NO_PP_RUN exists.
 6453 	* profile.c (pp_string): Explicitly print NUL chars as \000.
 6454 
 6455 2013-05-27         Arnold D. Robbins     <arnold@skeeve.com>
 6456 
 6457 	* configure.ac (AM_INIT_AUTOMAKE): Add dist-lzip to quiet
 6458 	outside maintainer warnings.
 6459 
 6460 	Unrelated:
 6461 
 6462 	* configure.ac (AC_STRUCT_ST_BLKSIZE): Replaced with call to
 6463 	AC_CHECK_MEMBERS.
 6464 
 6465 	Unrelated:
 6466 
 6467 	* array.c (null_array): Remove the assert and just clear
 6468 	symbol->xarray.
 6469 
 6470 2013-05-26         Arnold D. Robbins     <arnold@skeeve.com>
 6471 
 6472 	* getopt.c: For Mac OS X, also include <stdlib.h> to avoid
 6473 	some compiler warnings.
 6474 
 6475 2013-05-20         Arnold D. Robbins     <arnold@skeeve.com>
 6476 
 6477 	* gawkapi.h [FAKE_FD_VALUE]: Moved from here to ...
 6478 	* io.c [FAKE_FD_VALUE]: here.
 6479 
 6480 2013-05-14  Eli Zaretskii  <eliz@gnu.org>
 6481 
 6482 	* io.c (devopen) [__EMX__ || __MINGW32__]: Produce EISDIR on MinGW
 6483 	when an attempt to open() a directory fails.
 6484 	(two_way_open) [__EMX__ || __MINGW32__]: When trying to open() a
 6485 	directory fails with EISDIR, assign FAKE_FD_VALUE to the file
 6486 	descriptor and attributes of a directory to its mode bits.  This
 6487 	is needed to support the readdir extension.
 6488 
 6489 	* gawkapi.h (FAKE_FD_VALUE): New macro, used in io.h and in
 6490 	extension/gawkdirfd.h.
 6491 
 6492 2013-05-09         Arnold D. Robbins     <arnold@skeeve.com>
 6493 
 6494 	* 4.1.0: Release tar ball made.
 6495 
 6496 2013-05-09         Arnold D. Robbins     <arnold@skeeve.com>
 6497 
 6498 	* awkgram.y (snode): Make it a fatal error to use a regexp constant
 6499 	as the second argument of index(). Thanks to Christopher Durant
 6500 	<christopher.durant@marquesa.net> and Brian Kernighan for the report
 6501 	and the advice.
 6502 
 6503 2013-04-28  Eli Zaretskii  <eliz@gnu.org>
 6504 
 6505 	* io.c (redirect): Remove the HACK that called close_one when
 6506 	errno was zero in the MinGW build.  This prevents failure in
 6507 	several tests in the test suite, e.g., closebad.
 6508 
 6509 2013-04-28         Arnold D. Robbins     <arnold@skeeve.com>
 6510 
 6511 	* bootstrap.sh: Fix a comment.
 6512 
 6513 2013-04-24         Arnold D. Robbins     <arnold@skeeve.com>
 6514 
 6515 	* io.c (do_getline_redir): Fix the leading comment.
 6516 
 6517 2013-04-23         Arnold D. Robbins     <arnold@skeeve.com>
 6518 
 6519 	* main.c (load_procinfo): Add PROCINFO entries for API major
 6520 	and minor versions.
 6521 
 6522 2013-04-21         Arnold D. Robbins     <arnold@skeeve.com>
 6523 
 6524 	* missing: Update from Automake 1.13.1.
 6525 
 6526 2013-04-18         Arnold D. Robbins     <arnold@skeeve.com>
 6527 
 6528 	* configure.ac: Fix a typo.
 6529 
 6530 2013-04-17         Corinna Vinschen      <vinschen@redhat.com>
 6531 
 6532 	* configure.ac: Remove special casing for cygwin for libiconv
 6533 	and libintl.
 6534 
 6535 2013-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 6536 
 6537 	* bootstrap.sh: Touch gawk.texi too. Update copyright.
 6538 
 6539 2013-04-16         Arnold D. Robbins     <arnold@skeeve.com>
 6540 
 6541 	* awkgram.c: Regenerated from bison 2.7.1.
 6542 	* command.c: Ditto.
 6543 	* dfa.h, dfa.c: Minor edits to sync with GNU grep.
 6544 	* gettext.h: Sync with gettext 0.18.2.1.
 6545 	* random.h: Remove obsolete __P macro and use. Update copyright year.
 6546 	* Makefile.am, array.c, builtin.c, cint_array.c, cmd.h, debug.c,
 6547 	eval.c, ext.c, field.c, gawkapi.c, gawkapi.h, gettext.h, int_array.c,
 6548 	interpret.h, msg.c, node.c, profile.c, re.c, replace.c, str_array.c,
 6549 	symbol.c: Update copyright year.
 6550 
 6551 	Update to automake 1.13.1:
 6552 
 6553 	* configure.ac (AM_INIT_AUTOMAKE): Update version.
 6554 	* configure, Makefile.in, aclocal.m4, awklib/Makefile.in,
 6555 	doc/Makefile.in, test/Makefile.in: Regenerated.
 6556 
 6557 	* getopt.c, getopt.h, getopt1.c, getopt_int.h: Sync with GLIBC.
 6558 
 6559 2013-04-14         Arnold D. Robbins     <arnold@skeeve.com>
 6560 
 6561 	* awkgram.y (check_funcs): Fix logic of test for called but
 6562 	not defined warning. Thanks to Scott Deifik for the bug report.
 6563 
 6564 2013-04-02         Arnold D. Robbins     <arnold@skeeve.com>
 6565 
 6566 	* profile.c (print_lib_list): Send final newline to prof_fp
 6567 	instead of stdout.  Thanks to Hermann Peifer for the bug report.
 6568 
 6569 2013-03-27         Arnold D. Robbins     <arnold@skeeve.com>
 6570 
 6571 	* Makefile.am (SUBDIRS): Move extension back into the middle of
 6572 	the list so that `make check' without a prior `make' works.
 6573 
 6574 	Unrelated:
 6575 
 6576 	* main.c (main): Move env_lc into ifdef for LIBC_IS_BORKED.
 6577 
 6578 2013-03-20         Arnold D. Robbins     <arnold@skeeve.com>
 6579 
 6580 	For systems where libc is borked (MirBSD, maybe others).
 6581 
 6582 	* dfa.c: Force use of gawk_mb_cur_max instead of MB_CUR_MAX and make
 6583 	mbrtowc a macro that always fails.
 6584 	(using_utf8): Force utf8 to be 0 if libc borked and gawk_mb_cur_max
 6585 	is one.
 6586 	* main.c (main): If libc is borked and LC_ALL or LANG exist in the
 6587 	environment and are set to "C" or "c", force gawk_mb_cur_max to one.
 6588 
 6589 2013-03-11         Arnold D. Robbins     <arnold@skeeve.com>
 6590 
 6591 	* re.c (check_bracket_exp): Make handling of embedded ] in
 6592 	regexp smarter. Thanks to Ed Morton <mortoneccc@comcast.net>
 6593 	for reporting the bug.
 6594 
 6595 2013-03-01         Arnold D. Robbins     <arnold@skeeve.com>
 6596 
 6597 	Don't build extensions if API isn't supported:
 6598 
 6599 	* Makefile.am (SUBDIRS): Move extension directory to last in case
 6600 	building the extensions is not supported.
 6601 	* configure.ac: Add check for MirBSD and don't even try to run the
 6602 	checks for DYNAMIC if so.
 6603 
 6604 	Check for systems (MirBSD) where libc doesn't understand not
 6605 	to use UTF-8 for LC_ALL=C.
 6606 
 6607 	* configure.ac (LIBC_IS_BORKED): AC_DEFINE if needed.
 6608 	* regcomp.c (init_dfa): Change logic as needed if LIBC_IS_BORKED.
 6609 
 6610 2013-02-28         Arnold D. Robbins     <arnold@skeeve.com>
 6611 
 6612 	Cause profiling / pretty printing to include a list of
 6613 	loaded extensions. Thanks to Hermann Peifer for the bug report.
 6614 
 6615 	* awk.h (srcfiles): Add declaration.
 6616 	* profile.c (print_lib_list): New function.
 6617 	(dump_prog): Call it.
 6618 
 6619 2013-02-26         Arnold D. Robbins     <arnold@skeeve.com>
 6620 
 6621 	* awkgram.y (expression_list): In case of error return the list
 6622 	instead of NULL so that snode gets something it can count.
 6623 
 6624 2013-02-12         Arnold D. Robbins     <arnold@skeeve.com>
 6625 
 6626 	* bisonfix.awk: Comment out code for fixing continued #if
 6627 	statements. It is likely not needed anymore. Leave it there in
 6628 	case I'm wrong.
 6629 
 6630 2013-02-06         Arnold D. Robbins     <arnold@skeeve.com>
 6631 
 6632 	* builtin.c (printf_common): Move nargs > 0 check into assert.
 6633 	(do_sprintf): Add nargs check and fatal message to here.
 6634 
 6635 2013-02-04         Arnold D. Robbins     <arnold@skeeve.com>
 6636 
 6637 	* main.c (main): Remove undocumented -m option which was for
 6638 	compatibility with BWK awk. His awk dropped it back in 2007.
 6639 
 6640 2013-02-03         Arnold D. Robbins     <arnold@skeeve.com>
 6641 
 6642 	* configure.ac: Add Automake test for cross compiling.
 6643 
 6644 2013-01-31         Arnold D. Robbins     <arnold@skeeve.com>
 6645 
 6646 	* regcomp.c, regex.c, regex_internal.c, regexec.c: Update
 6647 	copyright years to sync with GLIBC.
 6648 
 6649 	From: http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html,
 6650 	by Andreas Schwab <schwab@suse.de>:
 6651 
 6652 	* regexec.c (extend_buffers): Add parameter min_len.
 6653 	(check_matching): Pass minimum needed length.
 6654 	(clean_state_log_if_needed): Likewise.
 6655 	(get_subexp): Likewise.`
 6656 
 6657 2013-01-31         Arnold D. Robbins     <arnold@skeeve.com>
 6658 
 6659 	* dfa.c: Include "dfa.h" which includes regex.h after limits.h
 6660 	so that RE_DUP_MAX gets the correct value. Especially needed on
 6661 	OpenVMS. Thanks to Anders Wallin.
 6662 
 6663 	* main.c (version): Print out API version numbers if DYNAMIC.
 6664 	Helpful also for knowing if to run the shlib tests.
 6665 
 6666 	* configure: Regenerated after change in m4/readline.m4.
 6667 
 6668 2013-01-31         Arnold D. Robbins     <arnold@skeeve.com>
 6669 
 6670 	* PROBLEMS: Removed. It is no longer needed.
 6671 	* Makefile.am (EXTRA_DIST): Remove PROBLEMS from list.
 6672 
 6673 2013-01-31         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6674 
 6675 	* configure.ac: Remove TEST_MPFR conditional added in last patch.
 6676 	We will instead test for MPFR capability by looking at the output
 6677 	from gawk --version.
 6678 
 6679 2013-01-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6680 
 6681 	* configure.ac: Add MPFR test for use in test/Makefile.am.
 6682 
 6683 2013-01-25         Arnold D. Robbins     <arnold@skeeve.com>
 6684 
 6685 	* awkgram.y (parms_shadow): Change int param to bool.
 6686 	* cmd.h (output_is_tty): Sync type with rest of code (is bool).
 6687 	* dfa.c (MALLOC): Undef first, for Irix.
 6688 	* Makefile.am (LDADD): Use LIBREADLINE and LIBMPFR instead of
 6689 	automake substitutions.
 6690 	* configure.ac (AC_INIT): Version bump.
 6691 	(GAWK_CHECK_READLINE): Renamed from GNUPG_CHECK_READLINE.
 6692 
 6693 2013-01-23         Arnold D. Robbins     <arnold@skeeve.com>
 6694 
 6695 	* awk.h (list_functions): Change parameter to bool.
 6696 	* symbol.c (list_functions): Ditto.
 6697 	(get_symbols): Change sort parameter to bool. Additional
 6698 	code cleanup.
 6699 
 6700 2013-01-22         Arnold D. Robbins     <arnold@skeeve.com>
 6701 
 6702 	* symbol.c (get_symbols): Reset count after each loop to only
 6703 	sort the actual items retrieved. Thanks to Hermann Peifer (by
 6704 	way of Andrew Schorr) for reporting the bug.  Also add some
 6705 	commentary and fix function name in emalloc calls.
 6706 
 6707 2013-01-20         Arnold D. Robbins     <arnold@skeeve.com>
 6708 
 6709 	* re.c (regexflags2str): New routine.
 6710 	(resetup): If do_intervals, also turn on RE_NO_BK_BRACES.
 6711 	Thanks to Yan Lei <yanl.fnst@cn.fujitsu.com> for the
 6712 	bug report.
 6713 
 6714 2013-01-18         Arnold D. Robbins     <arnold@skeeve.com>
 6715 
 6716 	Fix a problem with include ordering to get ptrdiff_t definition,
 6717 	showed up on Debian Lenny. Reported by Manuel Collado.
 6718 	Fix brought over from grep.
 6719 
 6720 	* dfa.h: Include regex.h and stddef.h directly.
 6721 	* dfa.c: Adjust includes.
 6722 
 6723 2013-01-11         John Haque            <j.eh@mchsi.com>
 6724 
 6725 	* awk.h (do_mpfr_rshift): Renamed from do_mpfr_rhift.
 6726 	* awkgram.y (do_mpfr_rshift): Renamed from do_mpfr_rhift.
 6727 	* mpfr.c (_tz1, _tz2, _mpz1, _mpz2, mpz1, mpz2, get_bit_ops,
 6728 	free_bit_ops): Removed.
 6729 	(init_mpfr): Remove calls to mpz_init.
 6730 	(get_intval, free_intval): New functions.
 6731 	(do_mpfr_rshift, do_mpfr_lshift): Rework code.
 6732 	(do_mpfr_and, do_mpfr_or, do_mpfr_xor): Accept two or more arguments
 6733 	to match regular functions.
 6734 
 6735 2013-01-11         Arnold D. Robbins     <arnold@skeeve.com>
 6736 
 6737 	* bisonfix.awk: Adjust ARGV / ARGC to force reading of standard
 6738 	input; apparently needed for Mac OS X. Thanks to Akim Demaille
 6739 	for the report.
 6740 
 6741 2013-01-06         Arnold D. Robbins     <arnold@skeeve.com>
 6742 
 6743 	* io.c (redirect, two_way_open): Set the name field in the
 6744 	awk_input_buf_t and awk_output_buf_t structures, as needed.
 6745 	Thanks to Manuel Collado for the report.
 6746 
 6747 2013-01-05         Arnold D. Robbins     <arnold@skeeve.com>
 6748 
 6749 	* regex_internal.h (struct re_dfa_t): Restore ifdefs around
 6750 	__libc_lock_define, they really were needed. Bleah.
 6751 
 6752 2013-01-01         Arnold D. Robbins     <arnold@skeeve.com>
 6753 
 6754 	Sync with GLIBC regex files.
 6755 
 6756 	* regex_internal.h (struct re_dfa_t): Remove ifdefs around
 6757 	__libc_lock_define since it's already defined to empty in non-LIBC
 6758 	case.
 6759 	* regexec.c (check_node_accept_bytes): Restore decl with use from
 6760 	GLIBC code since this is LIBC case.
 6761 
 6762 2012-12-27         Arnold D. Robbins     <arnold@skeeve.com>
 6763 
 6764 	* builtin.c (do_print, do_printf): Use output_fp as default
 6765 	output for print/printf only if running under the debugger.
 6766 	Otherwise use stdout as Brian, Peter, and Al intended.
 6767 
 6768 2012-12-25         Arnold D. Robbins     <arnold@skeeve.com>
 6769 
 6770 	Remove sym-constant from API after discussions with John
 6771 	Haque and Andrew Schorr.
 6772 
 6773 	* gawkapi.h (api_sym_constant): Removed field in API struct.
 6774 	(sym_constant): Remove macro.
 6775 	* gawkapi.c (set_constant, api_sym_update, api_sym_constant): Removed.
 6776 	(sym_update_real): Renamed to api_sym_update(). is_const parameter
 6777 	removed and code adjusted.
 6778 
 6779 2012-12-24         Arnold D. Robbins     <arnold@skeeve.com>
 6780 
 6781 	* 4.0.2: Release tar ball made.
 6782 
 6783 2012-12-23         John Haque      <j.eh@mchsi.com>
 6784 
 6785 	* eval.c (r_get_lhs): Node_array_ref. If original is Node_var,
 6786 	don't assign null-string as value.
 6787 	* ext.c (get_argument): Node_array_ref. Check if already a scalar.
 6788 
 6789 2011-12-23         John Haque      <j.eh@mchsi.com>
 6790 
 6791 	* awkgram.y (is_deferred_variable): New function.
 6792 	(func_install): Call it.
 6793 	* eval.c (r_interpret): Op_push_arg. Check for uninitialized scalar.
 6794 
 6795 2012-12-23         Arnold D. Robbins     <arnold@skeeve.com>
 6796 
 6797 	* awkgram.y (tokentab): Whitespace fix for "include".
 6798 	* builtin.c (printf_common): Do a fatal error if no args to printf()
 6799 	or sprintf().
 6800 
 6801 2012-12-19         Arnold D. Robbins     <arnold@skeeve.com>
 6802 
 6803 	* bootstrap.sh: Touch extension/aclocal.m4 also.
 6804 
 6805 	Unrelated: Extend input parser API:
 6806 
 6807 	* awk.h (IOBUF): Remove read_func pointer.
 6808 	* gawkapi.h (awk_input_buf_t): Move it to here.
 6809 	* io.c (iop_alloc, get_a_record, get_read_timeout): Adjust code.
 6810 
 6811 	Unrelated: Make sure that variables like NF, NR, FNR are
 6812 	accessable correctly both through SYMTAB and through API.
 6813 
 6814 	* gawkapi.c (api_sym_lookup): Call update_global_values().
 6815 	(api_sym_lookup_scalar): Ditto.
 6816 	* interpret.h (Op_subscript, Op_subscript_lhs): Ditto.
 6817 	* main.c (update_global_values): Adjust comment.
 6818 
 6819 	Unrelated: Fix --disable-lint so that everything compiles.
 6820 
 6821 	* main.c (main): Move case label inside ifdef.
 6822 	* awkgram.y (isnoeffect): Add ifdefs around declaration, use,
 6823 	and function body.
 6824 
 6825 	Unrelated: Restore building with tcc.
 6826 
 6827 	* awk.h (AFUNC): Move to array.c which is the only place its used.
 6828 	(ainit_ind, atypeof_ind, etc.): New macros for use in array.c
 6829 	* array.c (AFUNC): Change to use F##_ind. Works with tcc and other
 6830 	compilers.
 6831 	* configure.ac: Only add -export-dynamic flag if compiling with gcc.
 6832 
 6833 2012-12-18         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6834 
 6835 	* gawkapi.c (sym_update_real): If setting a scalar variable that exists
 6836 	already in an undefined state with type set to Node_var_new, we must
 6837 	update the type to Node_var if the new value is not undefined.
 6838 
 6839 2012-12-18         Arnold D. Robbins     <arnold@skeeve.com>
 6840 
 6841 	* awkgram.y (tokentab): "extension" needs to be inside ifdef DYNAMIC.
 6842 	Thanks to Anders Wallin for finding this.
 6843 
 6844 2012-12-16         Arnold D. Robbins     <arnold@skeeve.com>
 6845 
 6846 	* debug.c (do_set_var): Fix last remaining `*assoc_lookup() = x'.
 6847 
 6848 2012-12-15         Arnold D. Robbins     <arnold@skeeve.com>
 6849 
 6850 	Infrastructure Updates:
 6851 
 6852 	* awkgram.c, command.c: Regenerated with bison 2.7.
 6853 	* config.guess, config.sub, depcomp: Updated from automake 1.12.6.
 6854 
 6855 2012-12-09         Arnold D. Robbins     <arnold@skeeve.com>
 6856 
 6857 	Clean up BINMODE to use symbolic values.
 6858 
 6859 	* awk.h (enum binmode_values): New enum.
 6860 	* eval.c (set_BINMODE): Use them.
 6861 	* io.c (binmode, close_rp, gawk_popen): Ditto.
 6862 	* main.c (main): Ditto.
 6863 	* builtin.c (do_system): Ditto.
 6864 
 6865 	Unrelated:
 6866 
 6867 	* configure.ac: Look for posix_openpt
 6868 	* io.c (two_way_open): Use posix_openpt if it's available.
 6869 	Thanks to Christian Weisgerber <naddy@mips.inka.de> for
 6870 	the changes.
 6871 
 6872 	Also unrelated:
 6873 
 6874 	* regex.c: Don't include <sys/param.h> on VMS. Thanks to
 6875 	Anders Wallin.
 6876 
 6877 	Also unrelated:
 6878 
 6879 	* ext.c (is_letter, is_identifier_char): New functions. Don't use
 6880 	<ctype.h> functions since those could rely on the locale.
 6881 	(make_builtin): Adjust test for valid name to call the new
 6882 	functions and return false instead of throwing a fatal error.
 6883 	(make_old_builtin): Adjust test for valid name to call the new
 6884 	function.
 6885 	* awk.h (is_identchar): Move from here, ...
 6886 	* awkgram.y (is_identchar): ... to here. This is safe, since
 6887 	the locale is C during parsing the program.
 6888 
 6889 	Also unrelated: Make all checks for bitflags being set consistent
 6890 	in case we should wish to switch them to macro calls:
 6891 
 6892 	* awkgram.y, builtin.c, cint_array.c, debug.c, eval.c, gawkapi.c,
 6893 	int_array.c, io.c, mpfr.c, node.c, profile.c, str_array.c: Fix
 6894 	as needed.
 6895 
 6896 2012-12-07         Arnold D. Robbins     <arnold@skeeve.com>
 6897 
 6898 	* awkgram.y (tokentab): `fflush()' is now in POSIX, remove the
 6899 	RESX flag. This was the last use, so delete the flag.
 6900 	(yylex): Don't check RESX.
 6901 
 6902 	Thanks to Nathan Weeks <weeks@iastate.edu> for helping make this
 6903 	happen.
 6904 
 6905 2012-12-01         Arnold D. Robbins     <arnold@skeeve.com>
 6906 
 6907 	* interpret.h: For op_assign_concat, if both strings
 6908 	have WSTRCUR, then do the realloc() and append for the
 6909 	wide string too.  Thanks to Janis Papanagnou
 6910 	<janis_papanagnou@hotmail.com> for the discussion in
 6911 	comp.lang.awk.
 6912 
 6913 2012-11-30         Arnold D. Robbins     <arnold@skeeve.com>
 6914 
 6915 	* regcomp.c, regex.c, regex_internal.h, regexec.c: Sync
 6916 	with GLIBC.  Why not.
 6917 
 6918 	* gawkapi.c (awk_bool_t): Change into an enum with awk_false and
 6919 	awk_true values.
 6920 
 6921 2012-01-30         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 6922 
 6923 	Further cleanups of macros in awk.h
 6924 
 6925 	* awk.h (_r, _t): Remove declarations.
 6926 	(unref, m_force_string): Remove macros.
 6927 	(r_unref): Move declaration.
 6928 	(r_force_string): Remove declaration.
 6929 	(DEREF, force_string, force_number, unref): Now inline functions.
 6930 	(POP_STRING, TOP_STRING): Back to macros.
 6931 	* eval.c (_t): Remove definition.
 6932 	* main.c (_r): Remove definition.
 6933 	* node.c (r_force_string): Remove.
 6934 
 6935 2012-11-27         Arnold D. Robbins     <arnold@skeeve.com>
 6936 
 6937 	* builtin.c (do_fflush): Make fflush() and fflush("") both
 6938 	flush everything. See the comment in the code.
 6939 
 6940 2012-11-26         Arnold D. Robbins     <arnold@skeeve.com>
 6941 
 6942 	* awk.h (Node_old_ext_func, Op_old_ext_func): New enum values.
 6943 	* configure.ac: Use -export-dynamic if supported for old extension
 6944 	mechanism.
 6945 	* eval.c (nodeytpes): Add Node_old_ext_func.
 6946 	(optypetab): Add Op_old_ext_func.
 6947 	* ext.c (make_old_ext_builtin): "New" function.
 6948 	* interpret.h: Special case Op_old_ext_builtin. Add checks for
 6949 	Node_old_ext_func.
 6950 	* msg.c: Adjust placement of a comment.
 6951 
 6952 2012-05-02         John Haque      <j.eh@mchsi.com>
 6953 
 6954 	* str_array.c (str_copy): Initialize next pointer in the linked list
 6955 	to avoid memory corruption.
 6956 	* int_array.c (int_copy): Ditto.
 6957 
 6958 2012-04-21         John Haque      <j.eh@mchsi.com>
 6959 
 6960 	Shutdown routine for a dynamic extension.
 6961 
 6962 	* awk.h (SRCFILE): New field fini_func.
 6963 	* ext.c (load_ext): Takes an additional argument to look up and
 6964 	save the clean up routine in SRCFILE struct.
 6965 	(INIT_FUNC, FINI_FUNC): Defines for default init and fini routine
 6966 	names.
 6967 	(do_ext): Use default for the name of the init or fini routine if
 6968 	one is not supplied. Adjust call to load_ext().
 6969 	(close_extensions): Execute fini routines.
 6970 	* interpret.h (Op_at_exit): Call close_extensions().
 6971 	* msg.c (gawk_exit): Ditto.
 6972 	* debug.c (close_all): Ditto.
 6973 	* main.c (main): Adjust call to load_ext().
 6974 	* awkgram.y (tokentab): Specify 2nd and 3rd optional arguments
 6975 	for the extension() built-in.
 6976 
 6977 	Unrelated:
 6978 
 6979 	* interpret.h (Op_arrayfor_init): Use assoc_length for array size.
 6980 
 6981 2012-04-19         John Haque      <j.eh@mchsi.com>
 6982 
 6983 	Enhanced array interface to support transparent implementation
 6984 	using external storage and ...
 6985 
 6986 	* awk.h (astore): Optional post-assignment store routine for
 6987 	array subscripts.
 6988 	(Op_subscript_assign): New opcode to support the store routine.
 6989 	(alength): New array interface routine for array length.
 6990 	(assoc_length): New macro.
 6991 	(assoc_empty): Renamed from array_empty.
 6992 	* awkgram.y (snode): Append Op_subscript_assign opcode if
 6993 	(g)sub variable is an array element.
 6994 	(mk_getline): Same for getline variable.
 6995 	(mk_assignment): Same if assigning to an array element.
 6996 	* field.c (set_element): Call store routine if needed.
 6997 	* builtin.c (do_match): Ditto.
 6998 	(do_length): Use length routine for array size.
 6999 	* symbol.c (print_vars): Ditto.
 7000 	* array.c (null_length): Default function for array length interface.
 7001 	(asort_actual):	Call store routine if defined.
 7002 	(asort_actual, assoc_list): Use length routine for array size.
 7003 	(null_array_func): Add length and store routine entries.
 7004 	* str_array.c (str_array_func): Same.
 7005 	* cint_array.c (cint_array_func): Same.
 7006 	* int_array.c (int_array_func): Same.
 7007 	* eval.c (optypetab): Add Op_subscript_assign.
 7008 	* profile.c (pprint): Add case Op_subscript_assign.
 7009 	* interpret.h (set_array, set_idx): New variables to keep track
 7010 	of an array element with store routine.
 7011 	(Op_sub_array, Op_subscript_lhs, Op_store_sub, Op_subscript_assign):
 7012 	Add code to handle array store routine.
 7013 	* debug.c (print_symbol, print_array, cmp_val, watchpoint_triggered,
 7014 	initialize_watch_item): Use length routine for array size.
 7015 
 7016 	* awk.h (assoc_kind_t): New typedef for enum assoc_list_flags.
 7017 	(sort_context_t): Renamed from SORT_CONTEXT.
 7018 	* array.c (asort_actual, assoc_sort): Adjust.
 7019 	* cint_array.c (cint_list, tree_list, leaf_list): Adjust.
 7020 	* int_array.c (int_list): Adjust.
 7021 	* str_array.c (str_list): Adjust.
 7022 
 7023 2012-04-18         John Haque      <j.eh@mchsi.com>
 7024 
 7025 	* awk.h (atypeof, AFUNC): New macros.
 7026 	(afunc_t): Renamed typedef from array_ptr.
 7027 	* array.c (register_array_func, null_lookup): Use AFUNC macro
 7028 	instead of hard-coded index for array functions.
 7029 	(asort_actual): Unref null array elements before overwriting.
 7030 	(force_array): Renamed from get_array.
 7031 	(null_array): Renamed from init_array. Also initialize flags to 0.
 7032 	(array_types): Renamed from atypes.
 7033 	(num_array_types): Renamed from num_atypes.
 7034 	* interpret.h (r_interpret): In case Op_sub_array, unref null array element.
 7035 	* str_array.c (str_array_init): Reworked for (re)initialization of array.
 7036 	* int_array.c (int_array_init): Ditto.
 7037 	* cint_array.c (cint_array_init): Ditto.
 7038 
 7039 2012-11-24         Arnold D. Robbins     <arnold@skeeve.com>
 7040 
 7041 	Directory cleanup.
 7042 
 7043 	* TODO.xgawk, FUTURES: Merged into TODO.
 7044 	* TODO: More stuff added.
 7045 	* Makefile.am (EXTRA_DIST): Updated.
 7046 
 7047 2012-11-22         Arnold D. Robbins     <arnold@skeeve.com>
 7048 
 7049 	Cleanup of awk.h.
 7050 
 7051 	* array.c (r_in_array): Removed.
 7052 	* awk.h (MALLOC_ARG_T): Replaced with size_t everywhere.
 7053 	(S_ISREG, setsid): Moved to io.c.
 7054 	(__extension__): Removed.
 7055 	(INT32_BIT): Moved to cint_array.c.
 7056 	(_t): Always declare.
 7057 	(DO_LINT_INVALID, et al): Moved into an enum.
 7058 	(POP_ARRAY, POP_PARAM, POP_SCALAR, TOP_SCALAR, dupnode, in_array):
 7059 	Moved into inline functions.
 7060 	(force_number, force_string): Simplified.
 7061 	(ZOS_USS): Remove undef of DYNAMIC, it's handled in configure.ac.
 7062 	* io.c (S_ISREG, setsid): Moved to here.
 7063 	* cint_array.c (INT32_BIT): Moved to here.
 7064 	* eval.c (_t): Always define.
 7065 	* protos.h: Use size_t directly instead of MALLOC_ARG_T.
 7066 
 7067 	Unrelated:
 7068 
 7069 	* gawkapi.h: Add `awk_' prefix to structure tags where they
 7070 	were missing.  Document the full list of include files needed.
 7071 
 7072 2012-11-14         Arnold D. Robbins     <arnold@skeeve.com>
 7073 
 7074 	* io.c (do_find_source): On VMS, don't add the `/' separator.
 7075 	Thanks to Anders Wallin.
 7076 
 7077 	MPFR minor cleanup:
 7078 
 7079 	* awk.h (mpfr_unset): Declare new function.
 7080 	* mpfr.c (mpfr_unset): New function.
 7081 	* node.c (r_unref): Call it instead of inline code.
 7082 	* gawk_api.c (api_sym_update_scalar): Call it instead of inline code.
 7083 
 7084 2012-11-13         Arnold D. Robbins     <arnold@skeeve.com>
 7085 
 7086 	* symbol.c (get_symbols): Check type, not vname. Keeps
 7087 	valgrind happy. Thanks to Andrew Schorr for noticing the problem.
 7088 
 7089 2012-11-10         Arnold D. Robbins     <arnold@skeeve.com>
 7090 
 7091 	* Update to bison 2.6.5. Various files regenerated.
 7092 	* io.c (find_source): Add a default value for SHLIBEXT.
 7093 	(read_with_timeout): For VMS also, just use read().
 7094 
 7095 2012-11-10         John Haque      <j.eh@mchsi.com>
 7096 
 7097 	* int_array.c (int_copy): Initialize next pointer of newchain to null.
 7098 	* eval.c (eval_condition): Force string context for an integer used
 7099 	as array index.
 7100 
 7101 2012-11-10         Arnold D. Robbins     <arnold@skeeve.com>
 7102 
 7103 	* gawkapi.c (api_add_ext_func, api_awk_atexit, api_clear_array,
 7104 	api_create_array, api_create_value, api_register_ext_version,
 7105 	api_release_value, api_update_ERRNO_string, node_to_awk_value,
 7106 	remove_element, run_ext_exit_handlers): Add null pointer checks.
 7107 	Everywhere: Add / fixup leading comments.
 7108 
 7109 	* interpret.h (Op_store_sub): If assigning to an uninitialized variable
 7110 	through SYMTAB, change it to Node_var. Add explanatory comments.
 7111 	* symbol.c (get_symbol): Rationalized. Skip non-variables in SYMTAB.
 7112 
 7113 2012-11-04         Arnold D. Robbins     <arnold@skeeve.com>
 7114 
 7115 	* gawkapi.h: Minor documentation edit.
 7116 
 7117 2012-10-31         Arnold D. Robbins     <arnold@skeeve.com>
 7118 
 7119 	* awkgram.y (want_regexp): Use as a bool, not as an int.
 7120 	* field.c: Fix a comment.
 7121 	* gawkapi.h: Add comment to include <errno.h>.
 7122 	* symbol.c (load_symbols): ``No automatic aggregate initialization.''
 7123 	Here too. Sigh again.
 7124 
 7125 	* gawkapi.h: Minor documentation edits.
 7126 
 7127 2012-11-27         Arnold D. Robbins     <arnold@skeeve.com>
 7128 
 7129 	* builtin.c (do_fflush): Make fflush() and fflush("") both
 7130 	flush everything. See the comment in the code.
 7131 
 7132 2012-10-28         Arnold D. Robbins     <arnold@skeeve.com>
 7133 
 7134 	* Update to bison 2.6.4. Various files regenerated.
 7135 
 7136 2012-10-27         Arnold D. Robbins     <arnold@skeeve.com>
 7137 
 7138 	* gawkapi.h: Continuing the minor formatting / doc cleanups.
 7139 
 7140 2012-10-26         Arnold D. Robbins     <arnold@skeeve.com>
 7141 
 7142 	* gawkapi.h: Continuing the minor formatting / doc cleanups.
 7143 
 7144 2012-10-24         Arnold D. Robbins     <arnold@skeeve.com>
 7145 
 7146 	* gawkapi.h: Still more minor formatting / doc cleanups.
 7147 
 7148 2012-10-23         Arnold D. Robbins     <arnold@skeeve.com>
 7149 
 7150 	* gawkapi.h: More minor formatting / doc cleanups.
 7151 
 7152 2012-10-21         Arnold D. Robbins     <arnold@skeeve.com>
 7153 
 7154 	Fixes for z/OS from Dave Pitts.
 7155 
 7156 	* awk.h (assoc_list_flags): No trailing comma on last enum value.
 7157 	* gawkapi.h (awk_valtype_t): Ditto.
 7158 	* symbol.c (lookup): ``No automatic aggregate initialization.'' Sigh.
 7159 
 7160 	Unrelated:
 7161 
 7162 	* gawkapi.h: Minor formatting / doc cleanups.
 7163 
 7164 2012-10-19         Arnold D. Robbins     <arnold@skeeve.com>
 7165 
 7166 	If SYMTAB is used, make sure ENVIRON and PROCINFO get loaded too.
 7167 
 7168 	* awkgram.y (process_deferred): New function. Call it when program
 7169 	is completely parsed.
 7170 	(symtab_used): New variable.
 7171 	(variable): Set it to true if SYMTAB is looked up.
 7172 	* main.c (load_environ, load_procinfo): Make sure the routines are
 7173 	only called once.
 7174 
 7175 	Unrelated fixes:
 7176 
 7177 	* awkgram.y (yylex): Check continue_allowed and break_allowed as
 7178 	soon as they are seen in the scanner; the rules that check them
 7179 	can not be reduced until after a token that allows them is seen,
 7180 	leading to errors at execution time.
 7181 	* interpret.h (Op_K_break, Op_K_continue, Op_jmp): Add assertion
 7182 	that pc->target_jmp is not NULL.
 7183 
 7184 	* symbol.c (lookup): Correct a comment.
 7185 
 7186 2012-10-14         Arnold D. Robbins     <arnold@skeeve.com>
 7187 
 7188 	* gawkapi.h (IOBUF_PUBLIC): Renamed awk_input_buf_t.
 7189 	(struct iobuf_public): Renamed struct awk_input.
 7190 	* awk.h: Adjust.
 7191 
 7192 2012-10-13         Arnold D. Robbins     <arnold@skeeve.com>
 7193 
 7194 	* Update to Automake 1.12.4. Various files regenerated.
 7195 
 7196 2012-10-11         Arnold D. Robbins     <arnold@skeeve.com>
 7197 
 7198 	* awk.h (dup_ent): New member for Node_param_list.
 7199 	* symbol.c (install): For parameters, if this is a duplicate, chain
 7200 	it off the original using the dup_ent pointer.
 7201 	(remove_params): If there's a duplicate, remove it from the list.
 7202 
 7203 	* awk.h: Fix flags to have unique numeric values. Oops.
 7204 
 7205 2012-10-10         Arnold D. Robbins     <arnold@skeeve.com>
 7206 
 7207 	* gawkapi.h: Add considerably more documentation. Rearrange order
 7208 	of functions in the struct to make more sense, grouping related
 7209 	functions together in a more logical order.
 7210 	* gawkapi.c: Adjust as needed.
 7211 	* ext.c (make_builtin): Adjust for name change in struct member.
 7212 
 7213 2012-10-05         Arnold D. Robbins     <arnold@skeeve.com>
 7214 
 7215 	* mbsupport.h: Add a bunch of undefs for z/OS.
 7216 
 7217 2012-10-04         Arnold D. Robbins     <arnold@skeeve.com>
 7218 
 7219 	* TODO.xgawk: Update.
 7220 	* awk.h (make_str_node): Removed macro.
 7221 	(make_string): Modified to call make_str_node.
 7222 	(r_make_str_node): Renamed to make_str_node.
 7223 	* gawkapi.c: Changed r_make_str_node to make_str_node everywhere.
 7224 	* node.c (make_str_node): Renamed from make_str_node.
 7225 
 7226 	Update to automake 1.12.4.
 7227 
 7228 	* Makefile.in, aclocal.m4, awklib/Makefile.in, doc/Makefile.in,
 7229 	extension/Makefile.in, extension/aclocal.m4, test/Makefile.in:
 7230 	Regenerated.
 7231 
 7232 	* interpret.h (Op_Subscript): Added lint warnings for FUNCTAB
 7233 	and SYMTAB.
 7234 
 7235 2012-10-02         Arnold D. Robbins     <arnold@skeeve.com>
 7236 
 7237 	* awk.h (func_table): Declare.
 7238 	* awkgram.y: If do_posix or do_traditional, then check for
 7239 	delete on SYMTAB. Add check for delete on FUNCTAB, also.
 7240 	* interpret.h (Op_Subscript): For FUNCTAB, return the element name
 7241 	as its value too.  Avoids lots of weirdness and allows indirect calls
 7242 	after assignment from FUNCTAB["foo"] to work.
 7243 	(Op_store_sub): Disallow assignment to elements of FUNCTAB.
 7244 	(Op_indirect_func_all): Turn assert into check and fatal error.
 7245 	* symbol.c (func_table): No longer static.
 7246 	(lookup): If do_posix or do_traditional, skip the global table.
 7247 	(release_all_vars): Clear func_table too.
 7248 
 7249 2012-09-25         Arnold D. Robbins     <arnold@skeeve.com>
 7250 
 7251 	First cut at SYMTAB and FUNCTAB. This does the following:
 7252 	- Change symbol table handling to use gawk arrays.
 7253 	- Store symbols in SYMTAB array and allow indirect access
 7254 	  through SYMTAB to variables, both getting and setting.
 7255 	- List function names in FUNCTAB indexes; Values cannot be
 7256 	  used at the moment.
 7257 	- No documentation yet.
 7258 
 7259 	* awk.h (Node_hashnode, hnext, hname, hlength, hcode, hvalue):
 7260 	Removed, not needed any more.
 7261 	(init_symbol_table, symbol_table): Add declarations.
 7262 	* awkgram.y: Disallow delete on SYMTAB, fix warning for tawk
 7263 	extension if traditional.
 7264 	* eval.c (nodetypes): Remove Node_hashnode element.
 7265 	* interpret.h (Op_subscript, Op_store_sub): Handle SYMTAB and go
 7266 	through to the actual value.
 7267 	* main.c (main): Init Nnull_string earlier. Add call to
 7268 	init_symbol_table().
 7269 	* profile.c (pp_str, pp_len): Change definitions.
 7270 	(pp_next): New macro.
 7271 	(pp_push, pp_pop): Adjust uses.
 7272 	* symbol.c (variables): Removed.
 7273 	(global_table, param_table, func_table, symbol_table,
 7274 	installing_specials): New variables.
 7275 	(lookup, make_params, install_params, remove_params, remove_symbol,
 7276 	make_symbol, install, get_symbols, release_all_vars, append_symbol,
 7277 	release_symbols, load_symbols): Rework logic considerably.
 7278 	(init_symbol_table): New function.
 7279 
 7280 2012-09-23         Arnold D. Robbins     <arnold@skeeve.com>
 7281 
 7282 	`delete array' and `nextfile' are now in POSIX.
 7283 	Thanks to Nathan Weeks <weeks@iastate.edu> for the
 7284 	initiative and letting us know about it.
 7285 
 7286 	* awkgram.y: Make the right code changes for `delete array'
 7287 	and `nextfile'.
 7288 	(tokentab): Set flags to zero for nextfile.
 7289 
 7290 2012-09-19         Arnold D. Robbins     <arnold@skeeve.com>
 7291 
 7292 	* symbol.c (load_symbols): Zero out the new node. Prevents assertion
 7293 	failure on PPC Mac OS X.
 7294 
 7295 2012-09-14         Arnold D. Robbins     <arnold@skeeve.com>
 7296 
 7297 	Allow read-only access to built-in variables from extensions.
 7298 
 7299 	* awk.h (NO_EXT_SET): New flag.
 7300 	* gawkapi.c (api_sym_lookup, api_sym_update_real): Set flag if off
 7301 	limits variable instead of failing. Adjust logic.
 7302 	(api_sym_update_scalar, api_set_array_element, api_del_array_element,
 7303 	api_release_flattened_array): Adjust logic.
 7304 	* gawkapi.h: Adjust documentation.
 7305 
 7306 	Provide PROCINFO["identifiers"]. Undocumented for now.
 7307 
 7308 	* awk.h (load_symbols): Add declaration.
 7309 	* awkgram.y (variable): Adjust comment formatting.
 7310 	* main.c (main): Call load_symbols().
 7311 	* symbol.c (load_symbols): New function.
 7312 
 7313 2012-09-13         Arnold D. Robbins     <arnold@skeeve.com>
 7314 
 7315 	* configure.ac: Determination of DYNAMIC adjusted. Hopefully is
 7316 	smarter for z/OS.
 7317 
 7318 2012-09-13         Dave Pitts            <dpitts@cozx.com>
 7319 
 7320 	* awk.h: Add defines for z/OS for newer types.
 7321 
 7322 2012-08-31         Arnold D. Robbins     <arnold@skeeve.com>
 7323 
 7324 	* gawkapi.c: Wrap various bits in #ifdef DYNAMIC so that
 7325 	gawk will compile on systems without dynamic loading.
 7326 
 7327 2012-08-24         Arnold D. Robbins     <arnold@skeeve.com>
 7328 
 7329 	Add version facility to API. Thanks to Manuel Collado
 7330 	for the idea.
 7331 
 7332 	* awk.h (print_ext_versions): Declare.
 7333 	Rearrange includes and decls to make more sense.
 7334 	* gawkapi.h (register_ext_version): New API.
 7335 	(dl_load_func): Add code for ext_version.
 7336 	* gawkapi.c (api_register_ext_version, print_ext_versions):
 7337 	New functions.
 7338 	* main.c (do_version): New variable.
 7339 	(optab): Set it for -v / --version.
 7340 	(main): Set it in arg parsing switch. Call version() after the
 7341 	extensions have been loaded.
 7342 
 7343 2012-08-22         Arnold D. Robbins     <arnold@skeeve.com>
 7344 
 7345 	Add output wrapper and two-way processor to extension API.
 7346 
 7347 	* awk.h (struct redirect): Replace output FILE * with awk_output_buf_t.
 7348 	(register_output_wrapper, register_two_way_processor): Declare.
 7349 	* builtin.c (efwrite): Adjust logic to use rp->output data and
 7350 	functions if rp is not NULL. Remove redundant declaration of function.
 7351 	(do_fflush, do_printf, do_print, do_print_rec): Same adjustment.
 7352 	* ext.c (make_builtin): Adjust error messages.
 7353 	* gawkapi.c (api_register_output_wrapper,
 7354 	api_register_two_way_processor): New functions.
 7355 	(sym_update_real): Adjust code formatting.
 7356 	* gawkapi.h (awk_input_parser_t): Make next pointer awk_const.
 7357 	(awk_output_buf_t, awk_two_way_processor_t): New structs.
 7358 	(api_register_output_wrapper, api_register_two_way_processor): New APIs.
 7359 	(dl_load_func): Allow for empty function table (NULL elements).
 7360 	* io.c (find_output_wrapper, init_output_wrapper, find_two_processor,
 7361 	gawk_fwrite, gawk_ferror, gawk_fflush, gawk_fclose): New functions.
 7362 	(redirect): Call init_output_wrapper, find_output_wrapper as needed.
 7363 	Adjust use of rp->fp to rp->output.fp and also function calls.
 7364 	(close_rp, close_redir, flush_io): Same adjustment.
 7365 	(two_way_open): Same adjustment. Call find_two_way_processor, and
 7366 	find_output_wrapper, as needed.
 7367 
 7368 2012-08-17         Arnold D. Robbins     <arnold@skeeve.com>
 7369 
 7370 	* Update infrastructure: Automake 1.12.3 and bison 2.6.2.
 7371 
 7372 2012-08-15         Arnold D. Robbins     <arnold@skeeve.com>
 7373 
 7374 	* dfa.c: Sync w/GNU grep.
 7375 
 7376 2012-08-12         Arnold D. Robbins     <arnold@skeeve.com>
 7377 
 7378 	* gawkapi.h: Make the versions enum constants instead of defines.
 7379 
 7380 2012-08-11         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7381 
 7382 	* awkgram.y (add_srcfile): It is now a fatal error to load the
 7383 	same file with -f and -i (or @include).
 7384 	* TODO.xgawk: Update to reflect this change.
 7385 
 7386 2012-08-10         Arnold D. Robbins     <arnold@skeeve.com>
 7387 
 7388 	* FUTURES, TODO.xgawk: Updates.
 7389 
 7390 2012-08-08         Arnold D. Robbins     <arnold@skeeve.com>
 7391 
 7392 	* configure.ac: Add -DNDEBUG to remove asserts if not developing.
 7393 
 7394 	* gawkapi.h: Document how to build up arrays.
 7395 	* gawkapi.c (api_sym_update): For an array, pass the new cookie
 7396 	back out to the extension.
 7397 
 7398 	* awk.h (IOBUF): Move struct stat into IOBUF_PUBLIC.
 7399 	(os_isreadable): Change to take an IOBUF_PUBLIC.
 7400 	* gawkapi.h (IOBUF_PUBLIC): Received struct stat.
 7401 	(INVALID_HANDLE): Moves to here.
 7402 	* io.c (iop_alloc): Stat the fd and fill in stat buf.
 7403 	(iop_finish): Use passed in stat info.
 7404 
 7405 2012-08-05         Arnold D. Robbins     <arnold@skeeve.com>
 7406 
 7407 	* README.git: More stuff added.
 7408 
 7409 2012-08-01         Arnold D. Robbins     <arnold@skeeve.com>
 7410 
 7411 	* io.c (iop_finish): New function.
 7412 	(iop_alloc): Add errno_val parameter. Move code into iop_finish.
 7413 	Add large explanatory leading comment.
 7414 	(after_beginfile): Rework logic. Check for input parser first, then
 7415 	check for invalid iop.
 7416 	(nextfile): Organize code better. Call iop_alloc then iop_finish.
 7417 	(redirect): Call iop_alloc, find_input_parser, iop_finish.
 7418 	(two_way_open): Call iop_alloc, find_input_parser, iop_finish.
 7419 	(gawk_popen): Call iop_alloc, find_input_parser, iop_finish.
 7420 	(find_input_parser): Set iop->valid if input parser takes control.
 7421 	(get_a_record): Rework setting RT to use macros.
 7422 
 7423 2012-07-29         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7424 
 7425 	* awk.h (set_RT_to_null, set_RT): Removed.
 7426 	* gawkapi.h (api_set_RT): Removed.
 7427 	(get_record): Signature changed in input parser struct.
 7428 	* gawkapi.c (api_set_RT): Removed.
 7429 	* io.c (set_RT_to_null, set_RT): Removed.
 7430 	(get_a_record): Adjustments for new API for input parser.
 7431 
 7432 2012-07-29         Arnold D. Robbins     <arnold@skeeve.com>
 7433 
 7434 	* awk.h (os_isreadable): Adjust declaration.
 7435 	(struct iobuf): Add new member `valid'.
 7436 	* io.c (iop_alloc): Remove do_input_parsers parameter, it's
 7437 	always true. Adjust logic to set things to invalid if could not
 7438 	find an input parser.
 7439 	(after_beginfile): Use valid member to check if iobuf is valid.
 7440 	Don't clear iop->errcode.
 7441 	(nextfile): Adjust logic to clear errcode if valid is true and
 7442 	also to update ERRNO.
 7443 	(redirect): Check iop->valid and cleanup as necessary, including
 7444 	setting ERRNO.
 7445 	(two_way_open): Ditto.
 7446 	(gawk_popen): Ditto.
 7447 	(devopen): Remove check for directory.
 7448 
 7449 2012-07-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7450 
 7451 	* io.c (find_input_parser): Issue a warning if take_control_of fails.
 7452 
 7453 2012-07-27         Arnold D. Robbins     <arnold@skeeve.com>
 7454 
 7455 	* awk.h (set_RT): Change to take a NODE * parameter.
 7456 	* io.c (set_RT): Change to take a NODE * parameter.
 7457 	* gawkapi.h: Change open hook to input parser in comment.
 7458 	* gawkapi.c (api_set_RT): Adjust call to set_RT.
 7459 
 7460 2012-07-26         Arnold D. Robbins     <arnold@skeeve.com>
 7461 
 7462 	* awk.h (set_RT_to_null, set_RT): Declare functions.
 7463 	(os_isreadable): Declare function.
 7464 	* io.c (set_RT_to_null, set_RT): New functions.
 7465 	(iop_close): Init ret to zero.
 7466 	* gawkapi.c (api_register_input_parser): Check for null pointer.
 7467 	(api_set_RT): New function.
 7468 	* gawkapi.h (api_set_RT): New function.
 7469 
 7470 2012-07-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7471 
 7472 	* gawkapi.h (IOBUF_PUBLIC): Document the get_record and close_func
 7473 	API.
 7474 	(awk_input_parser_t) Change can_take_file argument to const, and
 7475 	document the API.
 7476 	* io.c (get_a_record): Document that the caller initializes *errcode
 7477 	to 0, and remote the test for non-NULL errcode.
 7478 
 7479 2012-07-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7480 
 7481 	* gawkapi.c (api_sym_update_scalar): Fix some minor bugs.  Was
 7482 	not updating AWK_NUMBER when valref != 1.  And strings were not
 7483 	freeing MPFR values.
 7484 
 7485 2012-07-25         Arnold D. Robbins     <arnold@skeeve.com>
 7486 
 7487 	Start refactoring of IOBUF handling and turn "open hooks"
 7488 	into "input parsers".
 7489 
 7490 	* awk.h (IOP_NOFREE_OBJ): Flag removed.
 7491 	(register_input_parser): Renamed from register_open_hook.
 7492 	* ext.c (load_ext): Make sure lib_name is not NULL.
 7493 	* gawk_api.c (api_register_input_parser): Renamed from
 7494 	api_register_open_hook.
 7495 	* gawk_api.h (api_register_input_parser): Renamed from
 7496 	api_register_open_hook.  Rework structure to have "do you want it"
 7497 	and "take control of it" functions.
 7498 	* io.c (iop_alloc): Remove third argument which is IOBUF pointer.
 7499 	Always malloc it. Remove use of IOP_NOFREE_OBJ everywhere.
 7500 	(find_input_parser): Renamed from find_open_hook.
 7501 	(nextfile): Don't use static IOBUF.
 7502 	(iop_close): Call close_func first. Then close fd or remap it
 7503 	if it's still not INVALID_HANDLE.
 7504 	(register_input_parser): Renamed from register_open_hook.
 7505 	Use a FIFO list and check if more than one parser will accept the
 7506 	file. If so, fatal error.
 7507 
 7508 2012-07-25         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7509 
 7510 	* configure.ac: Instead of using acl_shlibext for the shared library
 7511 	extension, define our own variable GAWKLIBEXT with a hack to work
 7512 	correctly on Mac OS X.
 7513 	* Makefile.am (SHLIBEXT): Use the value of GAWKLIBEXT instead of
 7514 	acl_shlibext.
 7515 
 7516 2012-07-24         Arnold D. Robbins     <arnold@skeeve.com>
 7517 
 7518 	* configure.ac: Add crude but small hack to make plug-ins work
 7519 	on Mac OS X.
 7520 
 7521 2012-07-20         Arnold D. Robbins     <arnold@skeeve.com>
 7522 
 7523 	* gawkapi.h: Rework table to not take up so much space.
 7524 	* gawkapi.c (api_sym_update_scalar): Rework optimization code
 7525 	to clean up the function.
 7526 
 7527 2012-07-17         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7528 
 7529 	* gawkapi.h: Add comments explaining new api_create_value and
 7530 	api_release_value functions.
 7531 	* gawkapi.c (sym_update_real): Allow updates with AWK_SCALAR and
 7532 	AWK_VALUE_COOKIE types.  After creating a regular variable,
 7533 	remove the call to unref(node->var_value), since this is not
 7534 	done elsewhere in the code (see, for example, main.c:init_vars).
 7535 	If the update is for an existing variable, allow any val_type
 7536 	except AWK_ARRAY (was previously disallowing AWK_SCALAR and
 7537 	AWK_VALUE_COOKIE for no apparent reason).
 7538 	(api_sym_update_scalar): The switch should return false for an
 7539 	invalid val_type value, so change the AWK_ARRAY case to default.
 7540 	(valid_subscript_type): Any scalar value is good, so accept any valid
 7541 	type except AWK_ARRAY.
 7542 	(api_create_value): Accept only AWK_NUMBER and AWK_STRING values.
 7543 	Anything else should fail.
 7544 
 7545 2012-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 7546 
 7547 	Speedup:
 7548 
 7549 	* awk.h (r_free_wstr): Renamed from free_wstr.
 7550 	(free_wstr): Macro to test the WSTRCUR flag first.
 7551 	* node.c (r_free_wstr): Renamed from free_wstr.
 7552 
 7553 	Support value cookies:
 7554 
 7555 	* gawkapi.h (awk_val_type_t): Add AWK_VALUE_COOKIE.
 7556 	(awk_value_cookie_t): New type.
 7557 	(awk_value_t): Support AWK_VALUE_COOKIE.
 7558 	(api_create_value, api_release_value): New function pointers.
 7559 	* gawkapi.c (awk_value_to_node, api_sym_update_scalar,
 7560 	valid_subscript_type): Handle AWK_VALUE_COOKIE.
 7561 	(api_create_value, api_release_value): New functions.
 7562 
 7563 2012-07-16         Arnold D. Robbins     <arnold@skeeve.com>
 7564 
 7565 	* gawkapi.c (awk_value_to_node): Support AWK_SCALAR.
 7566 	(api_sym_update_scalar): Performance improvements.
 7567 
 7568 2012-07-12         Arnold D. Robbins     <arnold@skeeve.com>
 7569 
 7570 	Allow creation of constants. Thanks to John Haque for the
 7571 	implementation concept.
 7572 
 7573 	* gawk_api.h (api_sym_constant): Create a constant.
 7574 	* gawk_api.h (api_sym_update_real): Renamed from api_sym_update.
 7575 	Add is_const parameter and do the right thing if true.
 7576 	(api_sym_update, api_sym_constant): Call api_sym_update_real
 7577 	in the correct way.
 7578 	(set_constant): New function.
 7579 
 7580 2012-07-11         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7581 
 7582 	* gawkapi.h: Fix typo in comment.
 7583 	(awk_value_t): Type for scalar_cookie should be awk_scalar_t,
 7584 	not awk_array_t.
 7585 	(gawk_api): Add new api_sym_lookup_scalar function.
 7586 	(sym_lookup_scalar): New wrapper macro for api_sym_lookup_scalar hook.
 7587 	* gawkapi.c (api_sym_lookup_scalar): New function for faster scalar
 7588 	lookup.
 7589 	(api_impl): Add entry for api_sym_lookup_scalar.
 7590 
 7591 2012-07-11         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7592 
 7593 	* gawkapi.c (awk_value_to_node): Change to a switch statement
 7594 	so AWK_SCALAR or other invalid type is handled properly.
 7595 	(valid_subscript_type): Test whether a value type is acceptable
 7596 	for use as an array subscript (any scalar value will do).
 7597 	(api_get_array_element, api_set_array_element, api_del_array_element):
 7598 	Use new valid_subscript_type instead of restricting to string values.
 7599 
 7600 2012-07-11         Arnold D. Robbins     <arnold@skeeve.com>
 7601 
 7602 	Lots of API work.
 7603 
 7604 	* gawkapi.h: Function pointer members renamed api_XXX and
 7605 	macros adjusted. More documentation.
 7606 	(awk_valtype_t): New AWK_SCALAR enum for scalar cookies.
 7607 	(awk_scalar_t): New type.
 7608 	(awk_value_t): New member scalar_cookie.
 7609 	(api_sym_update_scalar): New API function.
 7610 	(erealloc): New macro.
 7611 	(make_const_string): New macro, renamed from dup_string.
 7612 	(make_malloced_string): New macro, renamed from make_string.
 7613 	(make_null_string): New inline function.
 7614 	(dl_load_func): Add call to init routine through pointer if
 7615 	not NULL.
 7616 
 7617 	* gawkapi.c (awk_value_to_node): Assume that string values came
 7618 	from malloc.
 7619 	(node_to_awk_value): Handle AWK_SCALAR.
 7620 	(api_sym_update): Ditto.
 7621 	(api_sym_update_scalar): New routine.
 7622 	(api_get_array_element): Return false if the element doesn't exist.
 7623 	Always unref the subscript.
 7624 	(remove_element): New helper routine.
 7625 	(api_del_array_element): Use it.
 7626 	(api_release_flattened_array): Ditto.
 7627 	(api_impl): Add the new routine.
 7628 
 7629 2012-07-11         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7630 
 7631 	* gawkapi.c (api_sym_update): Allow val_type to be AWK_UNDEFINED
 7632 	for setting a variable to "", i.e. dupnode(Nnull_string).
 7633 
 7634 2012-07-10         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7635 
 7636 	* awkgram.y (add_srcfile): Lint warning message for a previously loaded
 7637 	shared library should say "already loaded shared library" instead
 7638 	of "already included source file".
 7639 
 7640 2012-07-08         Arnold D. Robbins     <arnold@skeeve.com>
 7641 
 7642 	* gawkapi.h (set_array_element): Use index + value instead
 7643 	of element structure. Matches get_array_element.
 7644 	(set_array_element_by_elem): New macro to use an element.
 7645 	* gawkapi.c (api_set_array_element): Make the necessary adjustments.
 7646 
 7647 2012-07-04         Arnold D. Robbins     <arnold@skeeve.com>
 7648 
 7649 	* awkgram.y (tokentab): Remove limit on number of arguments
 7650 	for "and", "or", and "xor".
 7651 	* builtin.c (do_and, do_or, do_xor): Modify code to perform the
 7652 	respective operation on any number of arguments. There must be
 7653 	at least two.
 7654 
 7655 2012-06-29         Arnold D. Robbins     <arnold@skeeve.com>
 7656 
 7657 	* gawkapi.h: Improve the documentation of the return values
 7658 	per Andrew Schorr.
 7659 
 7660 2012-06-25         Arnold D. Robbins     <arnold@skeeve.com>
 7661 
 7662 	* TODO.xgawk: Updated.
 7663 	* awk.h (track_ext_func): Declared.
 7664 	* awkgram.y (enum defref): Add option for extension function.
 7665 	(struct fdesc): Add member for extension function.
 7666 	(func_use): Handle extension function, mark as extension and defined.
 7667 	(track_ext_func): New function.
 7668 	(check_funcs): Update logic for extension functions.
 7669 	* ext.c (make_builtin): Call track_ext_func.
 7670 
 7671 2012-06-24         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7672 
 7673 	* TODO.xgawk: Most of IOBUF has been hidden.
 7674 	* gawkapi.h (IOBUF): Remove declaration (now back in awk.h).
 7675 	(IOBUF_PUBLIC): Declare new structure defining subset of IOBUF fields
 7676 	that should be exposed to extensions.
 7677 	(gawk_api): Update register_open_hook argument from IOBUF to
 7678 	IOBUF_PUBLIC.
 7679 	* awk.h (IOBUF): Restore declaration with 5 fields moved to new
 7680 	IOBUF_PUBLIC structure.
 7681 	(register_open_hook): Update open_func argument from IOBUF to
 7682 	IOBUF_PUBLIC.
 7683 	* gawkapi.c (api_register_open_hook): Ditto.
 7684 	* io.c (after_beginfile, nextfile, iop_close, gawk_pclose): Some fields
 7685 	such as fd and name are now inside the IOBUF public structure.
 7686 	(struct open_hook): Update open_func argument from IOBUF to
 7687 	(register_open_hook): Ditto.
 7688 	(find_open_hook): opaque now inside IOBUF_PUBLIC.
 7689 	(iop_alloc): fd and name now in IOBUF_PUBLIC.
 7690 	(get_a_record): If the get_record hook returns EOF, set the IOP_AT_EOF
 7691 	flag.  Access fd inside IOBUF_PUBLIC.
 7692 	(get_read_timeout): File name now inside IOBUF_PUBLIC.
 7693 	* interpret.h (r_interpret): File name now inside IOBUF_PUBLIC.
 7694 	* ext.c (load_ext): No need to call return at the end of a void
 7695 	function.
 7696 
 7697 2012-06-24         Arnold D. Robbins     <arnold@skeeve.com>
 7698 
 7699 	* ext.c (load_ext): Don't return a value from a void function.
 7700 	* gawkapi.c (api_set_array_element): Set up vname and parent_array.
 7701 
 7702 2012-06-21         Arnold D. Robbins     <arnold@skeeve.com>
 7703 
 7704 	More API and cleanup:
 7705 
 7706 	* awk.h (stopme): Make signature match other built-ins.
 7707 	* awkgram.y (stopme): Make signature match other built-ins.
 7708 	(regexp): Minor edit.
 7709 	* gawkapi.c (api_set_argument): Remove unused variable.
 7710 	Set parent_array field of array value.
 7711 	* TODO.xgawk: Update some.
 7712 
 7713 	Remove extension() builtin.
 7714 
 7715 	* awk.h (do_ext): Removed.
 7716 	(load_ext): Signature changed.
 7717 	* awkgram.y (tokentab): Remove do_ext.
 7718 	Change calls to do_ext.
 7719 	* ext.c (load_ext): Make init function a constant.
 7720 	* main.c (main): Change calls to do_ext.
 7721 
 7722 2012-06-20         Arnold D. Robbins     <arnold@skeeve.com>
 7723 
 7724 	Restore lost debugging function:
 7725 
 7726 	* awkgram.y (stopme): Restore long lost debugging function.
 7727 	* awk.h (stopme): Add declaration.
 7728 
 7729 	API work:
 7730 
 7731 	* ext.c (get_argument): Make extern.
 7732 	* awk.h (get_argument): Declare it.
 7733 	* gawkapi.c (api_set_argument): Call it. Finish off the logic.
 7734 	(api_get_argument): Refine logic to use get_argument.
 7735 	* gawkapi.h (set_argument): New API.
 7736 
 7737 2012-06-19         Arnold D. Robbins     <arnold@skeeve.com>
 7738 
 7739 	Remove code duplication in gawkapi.c from msg.c:
 7740 
 7741 	* awk.h (err): Add `isfatal' first parameter.
 7742 	* awkgram.y (err): Adjust all calls.
 7743 	* msg.c (err): Adjust all calls. Move fatal code to here ...
 7744 	(r_fatal): From here.
 7745 	* gawkapi.c: Remove code duplication and adjust calls to `err'.
 7746 
 7747 	Handle deleting elements of flattened array:
 7748 
 7749 	* awk.h (get_argument): Remove declaration.
 7750 	* ext.c (get_argument): Make static.
 7751 	* gawkapi.h (awk_flat_array_t): Make opaque fields const. Add
 7752 	more descriptive comments.
 7753 	* gawkapi.c (release_flattened_array): Delete elements flagged
 7754 	for deletion. Free the flattened array also.
 7755 
 7756 	Add additional debugging when developing:
 7757 
 7758 	* configure.ac: Add additional debugging flags.
 7759 	* configure: Regenerated.
 7760 
 7761 2012-06-18         Arnold D. Robbins     <arnold@skeeve.com>
 7762 
 7763 	* gawkapi.h (get_array_element): Restore `wanted' parameter.
 7764 	(awk_element_t): Use awk_value_t for index. Add awk_flat_array_t.
 7765 	(flatten_array): Change signature to use awk_flat_array_t;
 7766 	(release_flattened_array): Change signature to use awk_flat_array_t;
 7767 	* gawkapi.c (api_sym_update): Handle case where variable exists already.
 7768 	(api_get_array_element): Restore `wanted' parameter and pass it
 7769 	on to node_to_awk_value.
 7770 	(api_set_array_element): Revisse to match changed element type.
 7771 	(api_flatten_array): Revise signature, implement.
 7772 	(api_release_flattened_array): Revise signature, implement.
 7773 
 7774 2012-06-17         Arnold D. Robbins     <arnold@skeeve.com>
 7775 
 7776 	API Work:
 7777 
 7778 	* gawkapi.h (get_array_element): Remove `wanted' parameter.
 7779 	(r_make_string): Comment the need for `api' and `ext_id' parameters.
 7780 	* gawkapi.c (api_sym_update): Move checks to front.
 7781 	Initial code for handling arrays. Still needs work.
 7782 	(api_get_array_element): Implemented.
 7783 	(api_set_array_element): Additional checking code.
 7784 	(api_del_array_element): Implemented.
 7785 	(api_create_array): Implemented.
 7786 	(init_ext_api): Force do_xxx values to be 1 or 0.
 7787 	(update_ext_api): Ditto.
 7788 
 7789 2012-06-12         Arnold D. Robbins     <arnold@skeeve.com>
 7790 
 7791 	API Work:
 7792 
 7793 	* gawkapi.h (awk_value_t): Restore union.
 7794 	(get_curfunc_param): Renamed to get_argument. Return type changed
 7795 	to awk_bool_t. Semantics better thought out and documented.
 7796 	(awk_atexit, get_array_element): Return type now void.
 7797 	(sym_lookup): Return type now void. Argument order rationalized.
 7798 	* gawkapi.c (node_to_awk_value): Return type is now awk_bool_t.
 7799 	Semantics now match table in gawkawpi.h.
 7800 	(api_awk_atexit): Return type now void.
 7801 	(api_sym_lookup): Return type is now awk_bool_t. Change parameter
 7802 	order.
 7803 	(api_get_array_element): Return type is now awk_bool_t.
 7804 
 7805 	Further API implementations and fixes for extension/testext.c:
 7806 
 7807 	* awk.h (final_exit): Add declaration.
 7808 	* ext.c (load_ext): Change `func' to install_func.
 7809 	* gawkapi.c: Add casts to void for id param in all functions.
 7810 	(api_sym_update): Finish implementation.
 7811 	(api_get_array_element): Start implementation.
 7812 	(api_set_array_element): Add error checking.
 7813 	(api_get_element_count): Add error checking, return the right value.
 7814 	* main.c (main): Call final_exit instead of exit.
 7815 	(arg_assign): Ditto.
 7816 	* msg.c (final_exit): New routine to run the exit handlers and exit.
 7817 	(gawk_exit): Call it.
 7818 	* profile.c (dump_and_exit): Ditto.
 7819 
 7820 2012-06-10         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7821 
 7822 	* TODO.xgawk: Addition of time extension moved to "done" section.
 7823 
 7824 2012-06-10         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7825 
 7826 	* gawkapi.c (api_update_ERRNO_string): Treat boolean true as a request
 7827 	for TRANSLATE, and false as DONT_TRANSLATE.
 7828 
 7829 2012-06-06         Arnold D. Robbins     <arnold@skeeve.com>
 7830 
 7831 	* cint_array.c (tree_print, leaf_print): Add additional casts
 7832 	for printf warnings.
 7833 
 7834 	* awk.h (update_ext_api): Add declaration.
 7835 	* gawkapi.c (update_ext_api): New function.
 7836 	* eval.c (set_LINT): Call update_ext_api() at the end.
 7837 	* gawkapi.h: Document that do_XXX could change on the fly.
 7838 
 7839 	* awk.h (run_ext_exit_handlers): Add declaration.
 7840 	* msg.c (gawk_exit): Call it.
 7841 
 7842 2012-06-05         Arnold D. Robbins     <arnold@skeeve.com>
 7843 
 7844 	* ext.c (load_ext): Remove use of RTLD_GLOBAL. Not needed in new
 7845 	scheme. Clean up error messages.
 7846 
 7847 2012-06-04         Arnold D. Robbins     <arnold@skeeve.com>
 7848 
 7849 	* configure.ac: Remove use of -export-dynamic for GCC.
 7850 	* configure: Regenerated.
 7851 
 7852 2012-05-30         Arnold D. Robbins     <arnold@skeeve.com>
 7853 
 7854 	* main.c (is_off_limits_var): Minor coding style edit.
 7855 	* gawkapi.c (awk_value_to_node): More cleanup.
 7856 	(node_to_awk_value): Use `wanted' for decision making.
 7857 	(api_sym_update): Start implementation. Needs more work.
 7858 	General: More cleanup, comments.
 7859 	* gawkapi.h (api_sym_update): Add additional comments.
 7860 
 7861 2012-05-29         Arnold D. Robbins     <arnold@skeeve.com>
 7862 
 7863 	* gawkapi.c (node_to_awk_value): Add third parameter indicating type
 7864 	of value desired. Based on that, do force_string or force_number
 7865 	to get the "other" type.
 7866 	(awk_value_to_node): Clean up the code a bit.
 7867 	(get_curfunc_param): Move forcing of values into node_to_awk_value.
 7868 	(api_sym_lookup): Add third parameter indicating type of value wanted.
 7869 	(api_get_array_element): Ditto.
 7870 	* gawk_api.h: Additional comments and clarifications. Revise APIs
 7871 	to take third 'wanted' argument as above.
 7872 	(awk_value_t): No longer a union so that both values may be accessed.
 7873 	All macros: Parenthesized the bodies.
 7874 	* bootstrap.sh: Rationalize a bit.
 7875 
 7876 2012-05-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7877 
 7878 	* Makefile.am (include_HEADERS): Add so gawkapi.h will be installed.
 7879 	(base_sources): Add gawkapi.h so that it is in dist tarball.
 7880 	* TODO.xgawk: Update.
 7881 	* main.c (is_off_limits_var): Stop returning true for everything
 7882 	except PROCINFO.
 7883 
 7884 2012-05-25         Arnold D. Robbins     <arnold@skeeve.com>
 7885 
 7886 	* main.c (is_off_limits_var): New function to check if a variable
 7887 	is one that an extension function may not change.
 7888 	* awk.h (is_off_limits_var): Declare it.
 7889 	* gawkapi.c (api_sym_lookup): Use it.
 7890 
 7891 	* bootstrap.sh: Touch various files in the extension directory also.
 7892 
 7893 2012-05-24         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7894 
 7895 	* gawkapi.h (awk_param_type_t): Remove (use awk_valtype_t instead).
 7896 	(awk_ext_func_t): Pass a result argument, and return an awk_value_t *.
 7897 	(gawk_api.get_curfunc_param): Add a result argument.
 7898 	(gawk_api.set_return_value): Remove obsolete function.
 7899 	(gawk_api.sym_lookup, gawk_api.get_array_element): Add a result
 7900 	argument.
 7901 	(gawk_api.api_make_string, gawk_api.api_make_number): Remove hooks,
 7902 	since access to gawk internal state is not required to do this.
 7903 	(set_return_value): Remove obsolete macro.
 7904 	(get_curfunc_param, sym_lookup, get_array_element): Add result argument.
 7905 	(r_make_string, make_number): New static inline functions.
 7906 	(make_string, dup_string): Revise macro definitions.
 7907 	(dl_load_func): Remove global_api_p and global_ext_id args,
 7908 	and fix SEGV by setting api prior to checking its version members.
 7909 	(GAWK): Expand ifdef to include more stuff.
 7910 	* gawkapi.c (node_to_awk_value): Add result argument.
 7911 	(api_get_curfunc_param): Add result argument, and use awk_valtype_t.
 7912 	(api_set_return_value): Remove obsolete function.
 7913 	(awk_value_to_node): New global function to convert back into internal
 7914 	format.
 7915 	(api_add_ext_func): Simply call make_builtin.
 7916 	(node_to_awk_value): Add result argument, and handle Node_val case.
 7917 	(api_sym_lookup, api_get_array_element): Add result argument.
 7918 	(api_set_array_element): Implement.
 7919 	(api_make_string, api_make_number): Remove functions that belong on
 7920 	client side.
 7921 	(api_impl): Remove 3 obsolete entries.
 7922 	* TODO.xgawk: Update to reflect progress.
 7923 	* Makefile.am (base_sources): Add gawkapi.c.
 7924 	* awk.h: Include gawkapi.h earlier.
 7925 	(api_impl, init_ext_api, awk_value_to_node): Add declarations
 7926 	so we can hook in new API.
 7927 	(INSTRUCTION): Add new union type efptr for external functions.
 7928 	(extfunc): New define for d.efptr.
 7929 	(load_ext): Remove 3rd obj argument that was never used for anything.
 7930 	(make_builtin): Change signature for new API.
 7931 	* awkgram.y (load_library): Change 2nd argument to load_ext
 7932 	from dlload to dl_load, and remove pointless 3rd argument.
 7933 	* main.c (main): Call init_ext_api() before loading shared libraries.
 7934 	Change 2nd argument to load_ext from dlload to dl_load, and remove
 7935 	pointless 3rd argument.
 7936 	* ext.c (do_ext): Remove pointless 3rd argument to load_ext.
 7937 	(load_ext): Remove 3rd argument.  Port to new API (change initialization
 7938 	function signature).  If initialization function fails, issue a warning
 7939 	and return -1, else return 0.
 7940 	(make_builtin): Port to new API.
 7941 	* interpret.h (r_interpret): For Op_ext_builtin, call external functions
 7942 	with an awk_value_t result buffer, and convert the returned value
 7943 	to a NODE *.  For Node_ext_func, code now in extfunc instead of builtin.
 7944 
 7945 2012-05-21         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7946 
 7947 	* configure.ac: Remove libtool, and call configure in the
 7948 	extension subdirectory.  Change pkgextensiondir to remove the
 7949 	version number, since the new API has builtin version checks.
 7950 	* TODO.xgawk: Update.
 7951 	* ltmain.sh: Removed, since libtool no longer used here.
 7952 
 7953 2012-05-19         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7954 
 7955 	* TODO.xgawk: Update to reflect progress and new issues.
 7956 	* main.c (main): Add -i (--include) option.
 7957 	(usage): Ditto.
 7958 	* awkgram.y (add_srcfile): Eliminate duplicates only for SRC_INC
 7959 	and SRC_EXTLIB sources (i.e. -f duplicates should not be removed).
 7960 	* io.c (find_source): Set DEFAULT_FILETYPE to ".awk" if not defined
 7961 	elsewhere.
 7962 
 7963 2012-05-15         Arnold D. Robbins     <arnold@skeeve.com>
 7964 
 7965 	* awk.h: Include "gawkapi.h" to get IOBUF.
 7966 	* gawkapi.h: Considerable updates.
 7967 	* gawkapi.c: New file. Start at implementing the APIs.
 7968 
 7969 2012-05-13         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7970 
 7971 	* TODO.xgawk: Update to reflect recent discussions and deletion of
 7972 	extension/xreadlink.[ch].
 7973 
 7974 2012-05-11         Arnold D. Robbins     <arnold@skeeve.com>
 7975 
 7976 	Sweeping change: Use `bool', `true', and `false' everywhere.
 7977 
 7978 2012-04-09         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7979 
 7980 	* eval.c (unset_ERRNO): Fix memory management bug -- need to use
 7981 	dupnode with Nnull_string.
 7982 
 7983 2012-04-08         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7984 
 7985 	* Makefile.am (valgrind): Define VALGRIND instead of redefining AWK.
 7986 	This allows test/Makefile.am to set up the command environment as
 7987 	desired.
 7988 	(valgrind-noleak): Ditto, plus set --leak-check=no instead of the
 7989 	default summary setting.
 7990 
 7991 2012-04-07         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7992 
 7993 	* TODO.xgawk: Update to reflect progress.
 7994 
 7995 2012-04-01         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 7996 
 7997 	* TODO.xgawk: Move valgrind-noleak item into "done" section.
 7998 	* Makefile.am (valgrind-noleak): Add new valgrind rule that omits
 7999 	the "--leak-check=full" option to help spot more serious problems.
 8000 
 8001 2012-04-01         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8002 
 8003 	* TODO.xgawk: Move ERRNO item into "done" section.
 8004 	* awk.h (update_ERRNO, update_ERRNO_saved): Remove declarations.
 8005 	(update_ERRNO_int, enum errno_translate, update_ERRNO_string,
 8006 	unset_ERRNO): Add new declarations.
 8007 	* eval.c (update_ERRNO_saved): Renamed to update_ERRNO_int.
 8008 	(update_ERRNO_string, unset_ERRNO): New functions.
 8009 	* ext.c (do_ext): Use new update_ERRNO_string function.
 8010 	* io.c (ERRNO_node): Remove redundant extern declaration (in awk.h).
 8011 	(after_beginfile, nextfile): Replace update_ERRNO() with
 8012 	update_ERRNO_int(errno).
 8013 	(inrec): Replace update_ERRNO_saved with update_ERRNO_int.
 8014 	(do_close): Use new function update_ERRNO_string.
 8015 	(close_redir, do_getline_redir, do_getline): Replace update_ERRNO_saved
 8016 	with update_ERRNO_int.
 8017 
 8018 2012-03-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8019 
 8020 	* TODO.xgawk: Update to reflect debate about how to support Cygwin
 8021 	and other platforms that cannot link shared libraries with unresolved
 8022 	references.
 8023 	* awkgram.y (add_srcfile): Minor bug fix: reverse sense of test
 8024 	added by Arnold in last patch.
 8025 	* configure.ac: AC_DISABLE_STATIC must come before AC_PROG_LIBTOOL.
 8026 
 8027 2012-03-26         Arnold D. Robbins     <arnold@skeeve.com>
 8028 
 8029 	Some cleanups.
 8030 
 8031 	* awkgram.y (add_srcfile): Use whole messages, better for
 8032 	translations.
 8033 	* io.c (init_awkpath): Small style tweak.
 8034 	* main.c (path_environ): Straighten out initial comment, fix
 8035 	compiler warning by making `val' const char *.
 8036 
 8037 2012-03-25         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8038 
 8039 	* configure.ac (AC_DISABLE_STATIC): Add this to avoid building useless
 8040 	static extension libraries.
 8041 
 8042 2012-03-25         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8043 
 8044 	* TODO.xgawk: New file listing completed and pending xgawk enhancements.
 8045 
 8046 2012-03-24         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8047 
 8048 	* io.c (path_info): Fix white space.
 8049 	(pi_awkpath, pi_awklibpath): Avoid structure initializers.
 8050 	(do_find_source): Eliminate pointless parentheses.
 8051 	(find_source): Leave a space after "&".
 8052 	* main.c (load_environ): Fix typo in comment.
 8053 
 8054 2012-03-21         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8055 
 8056 	* awkgram.y (LEX_LOAD): New token to support @load.
 8057 	(grammar): Add rules to support @load.
 8058 	(tokentab): Add "load".
 8059 	(add_srcfile): Improve error message to distinguish between source files
 8060 	and shared libraries.
 8061 	(load_library): New function to load libraries specified with @load.
 8062 	(yylex): Add support for LEX_LOAD (treated the same way as LEX_INCLUDE).
 8063 
 8064 2012-03-20         Andrew J. Schorr     <aschorr@telemetry-investments.com>
 8065 
 8066 	* Makefile.am (EXTRA_DIST): Remove extension.
 8067 	(SUBDIRS): Add extension so libraries will be built.
 8068 	(DEFS): Define DEFLIBPATH and SHLIBEXT so we can find shared libraries.
 8069 	* awk.h (deflibpath): New extern declaration.
 8070 	* configure.ac: Add support for building shared libraries by adding
 8071 	AC_PROG_LIBTOOL and AC_SUBST for acl_shlibext and pkgextensiondir.
 8072 	(AC_CONFIG_FILES): Add extension/Makefile.
 8073 	* io.c (pi_awkpath, pi_awklibpath): New static structures to contain
 8074 	path information.
 8075 	(awkpath, max_pathlen): Remove static variables now inside pi_awkpath.
 8076 	(init_awkpath): Operate on path_info structure to support both
 8077 	AWKPATH and AWKLIBPATH.  No need for max_path to be static, since
 8078 	this should be called only once for each environment variable.
 8079 	(do_find_source): Add a path_info arg to specify which path to search.
 8080 	Check the try_cwd parameter to decide whether to search the current
 8081 	directory (not desirable for AWKLIBPATH).
 8082 	(find_source): Choose appropriate path_info structure based on value
 8083 	of the is_extlib argument.  Set EXTLIB_SUFFIX using SHLIBEXT define
 8084 	instead of hardcoding ".so".
 8085 	* main.c (path_environ): New function to add AWKPATH or AWKLIBPATH
 8086 	to the ENVIRON array.
 8087 	(load_environ): Call path_environ for AWKPATH and AWKLIBPATH.
 8088 
 8089 2012-06-19         Arnold D. Robbins     <arnold@skeeve.com>
 8090 
 8091 	* main.c (main): Do setlocale to "C" if --characters-as-bytes.
 8092 	Thanks to "SP" for the bug report.
 8093 
 8094 2012-05-09         Arnold D. Robbins     <arnold@skeeve.com>
 8095 
 8096 	* configure.ac: Added AC_HEADER_STDBOOL
 8097 	* awk.h, dfa.c, regex.c: Reworked to use results
 8098 	of test and include missing_d/gawkbool.h.
 8099 
 8100 2012-05-07         Arnold D. Robbins     <arnold@skeeve.com>
 8101 
 8102 	* array.c (prnode): Add casts to void* for %p format.
 8103 	* debug.c (print_instruction): Ditto.
 8104 	* builtin.c: Fix %lf format to be %f everywhere.
 8105 
 8106 	Unrelated:
 8107 
 8108 	* replace.c: Don't include "config.h", awk.h gets it for us.
 8109 
 8110 2012-05-04         Arnold D. Robbins     <arnold@skeeve.com>
 8111 
 8112 	* getopt.c [DJGPP]: Change to __DJGPP__.
 8113 	* mbsupport.h [DJGPP]: Change to __DJGPP__.
 8114 
 8115 	Unrelated:
 8116 
 8117 	* awk.h: Workarounds for _TANDEM_SOURCE.
 8118 
 8119 2012-05-01         Arnold D. Robbins     <arnold@skeeve.com>
 8120 
 8121 	* dfa.c: Sync with GNU grep. RRI code now there, needed additional
 8122 	change for gawk.
 8123 	* configure.ac: Add check for stdbool.h.
 8124 	* regex.c: Add check for if not have stdbool.h, then define the
 8125 	bool stuff.
 8126 
 8127 2012-04-27         Arnold D. Robbins     <arnold@skeeve.com>
 8128 
 8129 	* dfa.c: Sync with GNU grep.
 8130 	* xalloc.h (xmemdup): Added, from grep, for dfa.c. Sigh.
 8131 
 8132 2012-04-27         Arnold D. Robbins     <arnold@skeeve.com>
 8133 
 8134 	Update to autoconf 2.69, automake 1.12.
 8135 
 8136 	* INSTALL, aclocal.m4, configh.in, depcomp, install-sh, missing,
 8137 	mkinstalldirs, ylwrap: Updated.
 8138 	* configure.ac (AC_TYPE_LONG_LONG_INT, AC_TYPE_UNSIGNED_LONG_LONG_INT,
 8139 	AC_TYPE_INTMAX_T, AC_TYPE_UINTMAX_T): Renamed from gl_* versions.
 8140 	* configure: Regenerated.
 8141 
 8142 2012-04-24         Arnold D. Robbins     <arnold@skeeve.com>
 8143 
 8144 	* cmd.h (dPrompt, commands_Prompt, eval_Prompt, dgawk_Prompt): Changed
 8145 	to dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt.
 8146 	* debug.c: Ditto.
 8147 	* command.y: Ditto.  Some minor whitespace and comments cleanup.
 8148 
 8149 2012-04-24         Arnold D. Robbins     <arnold@skeeve.com>
 8150 
 8151 	io.c cleanup and some speedup for RS as regexp parsing.
 8152 
 8153 	* awk.h (Regexp): New members has_meta and maybe_long.
 8154 	(enum redirval): Add redirect_none as value 0.
 8155 	(remaybelong): Remove function declaration.
 8156 	* awkgram.y: Use redirect_none instead of 0 for no redirect cases.
 8157 	* io.c (go_getline_redir): Second arg now of type enum redirval.
 8158 	Changed intovar into into_variable.
 8159 	(comments and whitespace): Lots of general cleanup.
 8160 	(socket_open): readle changed to read_len.
 8161 	(two_way_open): Add additional calls to os_close_on_exec.
 8162 	(rsrescan): Simplify code a bit and use RS->maybe_long.
 8163 	* re.c (make_regexp): Set up new members in Regexp struct.
 8164 	(remaybelong): Remove function.
 8165 	(reisstring): Simplified code.
 8166 
 8167 2012-04-16  Eli Zaretskii  <eliz@gnu.org>
 8168 
 8169 	* io.c (read_with_timeout) [__MINGW32__]: Just call the blocking
 8170 	'read', as 'select' is only available for sockets.
 8171 	* mpfr.c (set_ROUNDMODE) [!HAVE_MPFR]: Renamed from set_RNDMODE.
 8172 	* main.c (load_procinfo): Declare name[] also when HAVE_MPFR is
 8173 	defined even though HAVE_GETGROUPS etc. are not.
 8174 
 8175 2012-04-12         John Haque      <j.eh@mchsi.com>
 8176 
 8177 	* array.c, awk.h, awkgram.y, builtin.c, command.y, debug.c,
 8178 	field.c, mpfr.c, profile.c: Change RND_MODE to ROUND_MODE.
 8179 
 8180 2012-04-11         John Haque      <j.eh@mchsi.com>
 8181 
 8182 	* main.c (varinit): Change RNDMODE to ROUNDMODE.
 8183 
 8184 2012-04-11         Arnold D. Robbins     <arnold@skeeve.com>
 8185 
 8186 	* main.c: Change --arbitrary-precision to --bignum.
 8187 
 8188 2012-04-02         John Haque      <j.eh@mchsi.com>
 8189 
 8190 	Add support for arbitrary-precision arithmetic.
 8191 
 8192 	* mpfr.c: New file.
 8193 	* awk.h (struct exp_node): Add union to handle different number types.
 8194 	(MPFN, MPZN): New flag values.
 8195 	(DO_MPFR, do_mpfr): New defines.
 8196 	(PREC_node, RNDMODE_node): Add declarations.
 8197 	(PRECISION, RND_MODE, MNR, MFNR, mpzval, do_ieee_fmt): Add declarations.
 8198 	(make_number, str2number, format_val, cmp_numbers): Ditto.
 8199 	(force_number): Change definition.
 8200 	(Func_pre_exec, Func_post_exec): New typedefs.
 8201 	(POP_NUMBER, TOP_NUMBER): Change definitions.
 8202 	(get_number_ui, get_number_si, get_number_d, get_number_uj,
 8203 	iszero, IEEE_FMT, mpg_float, mpg_integer, mpg_float,
 8204 	mpg_integer): New defines.
 8205 	* awkgram.y (tokentab):	Add alternate function entries for MPFR/GMP.
 8206 	(snode): Choose the appropriate function.
 8207 	(negate_num): New function to negate a number.
 8208 	(grammar): Use it.
 8209 	(yylex): Adjust number handling code.
 8210 	* array.c (value_info, asort_actual, sort_user_func): Adjust for
 8211 	MPFR/GMP numbers.
 8212 	(do_adump, indent): Minor changes.
 8213 	(sort_up_index_number, sort_up_value_number, sort_up_value_type): Use
 8214 	cmp_numbers() for numeric comparisons.
 8215 	* builtin.c (mpz2mpfr): New function.
 8216 	(format_tree): Adjust to handle MPFR and GMP numbers.
 8217 	* eval.c (register_exec_hook): New function to manage interpreter hooks.
 8218 	(num_exec_hook, pre_execute, post_execute): New and adjusted definitions.
 8219 	(h_interpret): Renamed from debug_interpret.
 8220 	(init_interpret): Changed to use the new name.
 8221 	(flags2str): New entries for MPFN and MPZN.
 8222 	(cmp_nodes): Reworked to use separate routine for numeric comparisons.
 8223 	(set_IGNORECASE, set_BINMODE, set_LINT, update_NR, update_FNR,
 8224 	update_NF): Adjust code and some cleanup.
 8225 	* field.c (rebuild_record): Field copying code reworked to handle
 8226 	MPFR/GMP numbers.
 8227 	(set_NF): Minor adjustment.
 8228 	* io.c (INCREMENT_REC): New macro.
 8229 	(inrec, do_getline): Use the new macro.
 8230 	(nextfile, set_NR, set_FNR, get_read_timeout, pty_vs_pipe): Adjust code
 8231 	to handle MPFR/GMP numbers.
 8232 	* interpret.h (r_interpret): Adjust TOP_NUMBER/POP_NUMBER usage.
 8233 	(EXEC_HOOK): New macro and definition.
 8234 	(DEBUGGING): Removed.
 8235 	* main.c (DEFAULT_PREC, DEFAULT_RNDMODE): New defines.
 8236 	(opttab): New entry for option arbitrary-precision.
 8237 	(main): Handle the new option.
 8238 	(usage): Add to usage message.
 8239 	(varinit): Add PREC and RNDMODE.
 8240 	(load_procinfo): Install MPFR and GMP related items.
 8241 	(version): Append MPFR and GMP versions to message.
 8242 	* msg.c (err) : Adjust FNR handling with MPFR/GMP.
 8243 	* node.c (r_format_val): Renamed from format_val.
 8244 	(r_force_number): Return NODE * instead of AWKNUM.
 8245 	(make_number, str2number, format_val, cmp_numpers: Defined and initialized.
 8246 	(r_unref): Free MPFR/MPZ numbers.
 8247 	(get_numbase): Renamed from isnondecimal and return the base.
 8248 	(cmp_awknums): New function to compare two AWKNUMs.
 8249 	* command.y (yylex): Adjust number handling code.
 8250 	(grammar): Minor adjustments to handle negative numbers.
 8251 	* debug.c (init_debug): New function.
 8252 	(do_info, do_set_var, watchpoint_triggered, serialize,
 8253 	initialize_watch_item, do_watch, print_watch_item): Minor adjustments.
 8254 	(debug_pre_execute): Adjusted to handle MPFR and GMP numbers.
 8255 
 8256 2012-04-09         Arnold D. Robbins     <arnold@skeeve.com>
 8257 
 8258 	* INSTALL, config.guess, config.sub, depcomp, install-sh,
 8259 	missing, mkinstalldirs, ylwrap: Update to latest from automake 1.11.4.
 8260 
 8261 2012-04-08         Arnold D. Robbins     <arnold@skeeve.com>
 8262 
 8263 	* Update various files to automake 1.11.4.
 8264 
 8265 2012-03-30         Arnold D. Robbins     <arnold@skeeve.com>
 8266 
 8267 	* configure.ac (GAWK_AC_NORETURN): Do as macro instead of inline.
 8268 
 8269 2012-03-29         Arnold D. Robbins     <arnold@skeeve.com>
 8270 
 8271 	* dfa.h, dfa.c: Sync with grep. Major cleanups and some changes
 8272 	there.
 8273 	* re.c (research): Pass size_t* to dfaexec to match type change.
 8274 	* configure.ac (AH_VERBATIM[_Noreturn]): Added from Paul Eggert to
 8275 	ease compiling.
 8276 	(AC_INIT): Bump version.
 8277 	* configure, configh.in, version.c: Regenerated.
 8278 
 8279 2012-03-28         Arnold D. Robbins     <arnold@skeeve.com>
 8280 
 8281 	* 4.0.1: Release tar ball made.
 8282 
 8283 2012-03-28         Arnold D. Robbins     <arnold@skeeve.com>
 8284 
 8285 	* getopt.c: Add DJGPP to list of platforms where it's ok
 8286 	to include <stdlib.h>.
 8287 	* awkgram.y, builtin.c, ext.c, mbsupport.h, re.c: Update
 8288 	copyright year.
 8289 
 8290 2012-03-21         Corinna Vinschen      <vinschen@redhat.com>
 8291 
 8292 	* getopt.c: Add Cygwin to list of platforms where it's ok
 8293 	to include <stdlib.h>.
 8294 
 8295 2012-03-20         Arnold D. Robbins     <arnold@skeeve.com>
 8296 
 8297 	Get new getopt to work on Linux and C90 compilers:
 8298 
 8299 	* getopt.c: Undef ELIDE_CODE for gawk.
 8300 	(_getopt_internal_r): Init first.needs_free to 0. In test for -W
 8301 	move executable code to after declarations for C90 compilers.
 8302 	* getopt1.c: Undef ELIDE_CODE for gawk.
 8303 
 8304 	Minor bug fix with printf, thanks to John Haque:
 8305 
 8306 	* builtin.c (format_tree): Initialize base to zero at the top
 8307 	of the while loop.
 8308 
 8309 	Getting next tar ball ready:
 8310 
 8311 	* configure.ac: Remove duplicate check for wcscoll. Thanks
 8312 	to Stepan Kasal.
 8313 
 8314 2012-03-16         Arnold D. Robbins     <arnold@skeeve.com>
 8315 
 8316 	* getopt.c, getopt.h, getopt1.c, getopt_int.h, regcomp.c,
 8317 	regex.c, regex.h, regex_internal.c, regex_internal.h,
 8318 	regexec.c: Sync with GLIBC, what the heck.
 8319 
 8320 2012-03-14         Eli Zaretskii  <eliz@gnu.org>
 8321 
 8322 	* mbsupport.h (btowc): Change for non-DJGPP.
 8323 	* re.c (dfaerror): Add call to exit for DJGPP.
 8324 
 8325 2012-03-14         Arnold D. Robbins     <arnold@skeeve.com>
 8326 
 8327 	* regex_internal.c (re_string_skip_chars): Fix calculation of
 8328 	remain_len with m.b. chars. Thanks to Stanislav Brabec
 8329 	<sbrabec@suse.cz>.
 8330 
 8331 2012-02-28         Arnold D. Robbins     <arnold@skeeve.com>
 8332 
 8333 	* main.c (init_groupset): Make `getgroups' failing a non-fatal
 8334 	error.  After all, what's the big deal?  Should help on Plan 9.
 8335 
 8336 2012-02-27         Arnold D. Robbins     <arnold@skeeve.com>
 8337 
 8338 	* dfa.c (parse_bracket_exp): Revert changes 2012-02-15 to stay
 8339 	in sync with grep.
 8340 	* dfa.h (dfarerror): Add __attribute__ from grep.
 8341 
 8342 2012-02-15         Arnold D. Robbins     <arnold@skeeve.com>
 8343 
 8344 	Fix warnings from GCC 4.6.2 -Wall option.
 8345 
 8346 	* awkgram.y (newline_eof): New function to replace body of
 8347 	NEWLINE_EOF macro.
 8348 	(yylex): Replace body of NEWLINE_EOF macro.
 8349 	* dfa.c (parse_bracket_exp): Init variables to zero.
 8350 	* ext.c (dummy, junk): Remove.
 8351 	* regex_internal.c (re_string_reconstruct): Remove buf array. It was
 8352 	set but not used.
 8353 
 8354 2012-02-10         Arnold D. Robbins     <arnold@skeeve.com>
 8355 
 8356 	* dfa.c: Sync with GNU grep.
 8357 
 8358 2012-02-07         Arnold D. Robbins     <arnold@skeeve.com>
 8359 
 8360 	* main.c (main): Move init of `output_fp' to before parsing of
 8361 	program so that error messages from msg.c don't dump core.
 8362 	Thanks to Michael Haardt <michael@moria.de>.
 8363 
 8364 2012-01-13         Arnold D. Robbins     <arnold@skeeve.com>
 8365 
 8366 	* dfa.c [is_valid_unibtye_character]: Fix from GNU grep to
 8367 	bug reported by me from Scott Deifik for DJGPP.
 8368 
 8369 2012-01-03         Arnold D. Robbins     <arnold@skeeve.com>
 8370 
 8371 	* dfa.c: Sync with GNU grep.
 8372 
 8373 2012-01-02         Arnold D. Robbins     <arnold@skeeve.com>
 8374 
 8375 	* io.c (Read_can_timeout, Read_timeout, Read_default_timeout):
 8376 	Renamed to use lower case.
 8377 	Other minor stylistic edits.
 8378 
 8379 2012-01-01         John Haque      <j.eh@mchsi.com>
 8380 
 8381 	* awk.h (struct iobuf): New entry read_func.
 8382 	* io.c (Read_can_timeout, Read_timeout, Read_default_timeout):
 8383 	New variables.
 8384 	(init_io): New routine to initialize the variables.
 8385 	(in_PROCINFO): New "clever" routine to parse elements with indices
 8386 	separated by a SUPSEP.
 8387 	(get_read_timeout): New routine to read timeout value for an IOBUF.
 8388 	(read_with_timeout): New routine to read from a fd with a timeout.
 8389 	(pty_vs_pipe): Use in_PROCINFO().
 8390 	(get_a_record): Set the timeout value and the read routine as necessary.
 8391 	* main.c (main): Call init_io().
 8392 
 8393 2011-12-31         Arnold D. Robbins     <arnold@skeeve.com>
 8394 
 8395 	* profile_p.c: Remove the file.
 8396 	* msg.c (err): Remove check for name being dgawk.
 8397 
 8398 2011-12-31         Arnold D. Robbins     <arnold@skeeve.com>
 8399 
 8400 	* awk.h [STREQ, STREQN]: Remove macros.
 8401 	* awkgram.y, builtin.c, command.y, debug.c, eval.c,
 8402 	io.c, msg.c: Change all uses to call strcmp, strncmp.
 8403 
 8404 2011-12-28         Arnold D. Robbins     <arnold@skeeve.com>
 8405 
 8406 	* int_array.c, str_array.c: Fix some compiler warnings 32/64
 8407 	bit system differences.
 8408 
 8409 2011-12-26         John Haque      <j.eh@mchsi.com>
 8410 
 8411 	Merge gawk, pgawk and dgawk into a single executable gawk.
 8412 
 8413 	* awk.h (DO_PRETTY_PRINT, DO_PROFILE, DO_DEBUG,
 8414 	do_pretty_print, do_debug): New defines.
 8415 	(interpret): New variable, a pointer to an interpreter routine.
 8416 	(enum exe_mode): Nuked.
 8417 	* main.c (opttab): New options --pretty-print and --debug;
 8418 	Remove option --command.
 8419 	(usage): Update usage messages.
 8420 	* interpret.h: New file.
 8421 	* eval.c (r_interpret): Move to the new file.
 8422 	(debug_interpret): New interpreter routine when debugging.
 8423 	(init_interpret): New routine to initialize interpreter related
 8424 	variables.
 8425 	* eval_d.c, eval_p.c: Delete files.
 8426 	* debug.c (interpret): Renamed to debug_prog.
 8427 	(DEFAULT_PROMPT, DEFAULT_HISTFILE, DEFAULT_OPTFILE): Remove prefix 'd'.
 8428 	* profile.c (init_profiling): Nuked.
 8429 	* Makefile.am: Adjusted.
 8430 
 8431 	Add command line option --load for loading extensions.
 8432 
 8433 	* awk.h (srctype): Add new source type SRC_EXTLIB.
 8434 	* ext.c(load_ext): New routine to load extension.
 8435 	(do_ext): Adjust to use load_ext().
 8436 	* main.c (opttab): Add new option --load.
 8437 	(main): Call load_ext() to load extensions.
 8438 	(usage): Add usage message for the new option.
 8439 	* io.c (get_cwd): New routine.
 8440 	(do_find_source): Use the new routine.
 8441 	(find_source): Handle new type SRC_EXTLIB.
 8442 	* awkgram.y (parse_program, next_sourcefile): Skip type SRC_EXTLIB.
 8443 	(add_srcfile): Adjust call to find_source.
 8444 	* debug.c (source_find): Same.
 8445 
 8446 	Unrelated:
 8447 
 8448 	* ext.c (get_argument): Fixed argument parsing.
 8449 	* array.c (null_array_func): Reworked array routines for an empty array.
 8450 	* str_array.c, int_array.c: Make GCC happy, use %u instead of %lu
 8451 	printf formats.
 8452 	* eval.c (node_Boolean): New array for TRUE and FALSE nodes.
 8453 	(init_interpret): Create the new nodes.
 8454 	(eval_condition): Add test for the new nodes.
 8455 	(setup_frame): Disable tail-recursion optimization when profiling.
 8456 	* interpret.h (r_interpret): Use the boolean nodes instead of making
 8457 	new ones when needed.
 8458 
 8459 2011-12-26         Arnold D. Robbins     <arnold@skeeve.com>
 8460 
 8461 	Finish Rational Range Interpretation (!)
 8462 
 8463 	* dfa.c (match_mb_charset): Compare wide characters directly
 8464 	instead of using wcscoll().
 8465 	* regexec.c (check_node_accept_byte): Ditto.
 8466 
 8467 	Thanks to Paolo Bonzini for pointing these out.
 8468 
 8469 2011-12-06         John Haque      <j.eh@mchsi.com>
 8470 
 8471 	* debug.c (source_find): Fix misplaced call to efree.
 8472 	* profile.c (redir2str): Add a missing comma in the redirtab array.
 8473 	* eval.c (r_interpret): Disallow call to exit if currule is undefined.
 8474 	This avoids the possibility of running END blocks more than once when
 8475 	used in a user-defined sorted-in comparison function.
 8476 	* array.c (sort_user_func): Adjust appropriately.
 8477 
 8478 2011-12-06         Arnold D. Robbins     <arnold@skeeve.com>
 8479 
 8480 	* awk.h, mbsupport.h: Changes for MBS support on DJGPP
 8481 	and z/OS.
 8482 	* io.c: Disable pty support on z/OS.
 8483 
 8484 2011-11-27         Arnold D. Robbins     <arnold@skeeve.com>
 8485 
 8486 	* dfa.c: Sync with GNU grep.
 8487 	* dfa.h: Add _GL_ATTRIBUTE_PURE macro. Bleah.
 8488 
 8489 2011-11-14         John Haque      <j.eh@mchsi.com>
 8490 
 8491 	* debug.c (set_breakpoint_at): Fix problem with setting
 8492 	breakpoints in a switch statement. Thanks to Giorgio Palandri
 8493 	<giorgio.palandri@gmail.com> for the bug report.
 8494 
 8495 2011-11-14         Arnold D. Robbins     <arnold@skeeve.com>
 8496 
 8497 	* mbsupport.h: Add check for HAVE_BTOWC, per Pat Rankin.
 8498 
 8499 2011-11-12         Eli Zaretskii  <eliz@gnu.org>
 8500 
 8501 	* mbsupport.h: Additional glop for dfa.c in Windows environment.
 8502 
 8503 2011-11-01         Arnold D. Robbins     <arnold@skeeve.com>
 8504 
 8505 	* dfa.c: Move glop for ! MBS_SUPPORT to ...
 8506 	* mbsupport.h: ... here.
 8507 	* replace.c: Include missing_d/wcmisc.c if ! MBS_SUPPORT.
 8508 	* regex_internal.h: Move include of mbsupport.h up and add
 8509 	additional checks to avoid inclusion of wctype.h and wchar.h.
 8510 
 8511 2011-10-27         Arnold D. Robbins     <arnold@skeeve.com>
 8512 
 8513 	* builtin.c (do_strftime): Per Pat Rankin, instead of casting
 8514 	fclock, use a long variable and check for negative or overflow.
 8515 
 8516 2011-10-25         Arnold D. Robbins     <arnold@skeeve.com>
 8517 
 8518 	Merge with gawk_performance branch done. Additionally:
 8519 
 8520 	* cint_array.c, int_array.c, str_array.c: Fix compiler complaints
 8521 	about printf formats (signed / unsigned vs. %d / %u).
 8522 	* eval.c (setup_frame): Add a missing return value.
 8523 
 8524 2011-10-25         Arnold D. Robbins     <arnold@skeeve.com>
 8525 
 8526 	* Makefile.am (dist-hook): Use `cd $(srcdir)/pc' so that
 8527 	`make distcheck' works completely.
 8528 	* builtin.c (do_strftime): Add cast to long int in check
 8529 	for fclock < 0 for systems where time_t is unsigned (e.g., VMS).
 8530 
 8531 2011-10-25  Stefano Lattarini  <stefano.lattarini@gmail.com>
 8532 
 8533 	dist: generated file `version.c' is not removed by "make distclean"
 8534 
 8535 	* Makefile.am (distcleancheck_listfiles): Define to ignore the
 8536 	generated `version.c' file.
 8537 
 8538 2011-10-24         Arnold D. Robbins     <arnold@skeeve.com>
 8539 
 8540 	* dfa.c (wcscoll): Create for VMS.
 8541 	* Makefile.am (dist-hook): Run sed scripts to make pc/config.h.
 8542 
 8543 2011-10-24  Eli Zaretskii  <eliz@gnu.org>
 8544 
 8545 	* builtin.c [HAVE_POPEN_H]: Include "popen.h".
 8546 	* README.git: Update for pc/ systems.
 8547 
 8548 2011-10-21         Arnold D. Robbins     <arnold@skeeve.com>
 8549 
 8550 	* Makefile.am (distcleancheck_listfiles): Added, per advice from
 8551 	Stefano Lattarini <stefano.lattarini@gmail.com>.
 8552 	* dfa.c: Additional faking of mbsupport for systems without it;
 8553 	mainly VMS.
 8554 
 8555 2011-10-21  Stefano Lattarini  <stefano.lattarini@gmail.com>
 8556 
 8557 	* configure.ac (AM_C_PROTOTYPES): Remove call to this macro.
 8558 	The comments in configure.ac said that the call to AM_C_PROTOTYPES
 8559 	was needed for dfa.h, synced from GNU grep; but this statement is
 8560 	not true anymore in grep since commit v2.5.4-24-g9b5e7d4 "replace
 8561 	AC_CHECK_* with gnulib modules", dating back to 2009-11-26.  Also,
 8562 	the support for automatic de-ANSI-fication has been deprecated in
 8563 	automake 1.11.2, and will be removed altogether in automake 1.12.
 8564 	* vms/vms-conf.h (PROTOTYPES, __PROTOTYPES): Remove these #define,
 8565 	they are not used anymore.
 8566 	* pc/config.h (PROTOTYPES): Likewise.
 8567 
 8568 2011-10-18         Dave Pitts            <dpitts@cozx.com>
 8569 
 8570 	* dfa.c: Move some decls to the top of their functions for
 8571 	C90 compilers.
 8572 
 8573 2011-10-18         Arnold D. Robbins     <arnold@skeeve.com>
 8574 
 8575 	* builtin.c (do_strftime): Add check for negative / overflowed
 8576 	time_t value with fatal error. Thanks to Hermann Peifer
 8577 	<peifer@gmx.eu> for the bug report.
 8578 	* dfa.c (setbit_wc): Non-MBS version. Add a return false
 8579 	since VMS compiler doesn't understand that abort doesn't return.
 8580 
 8581 2011-10-10         Arnold D. Robbins     <arnold@skeeve.com>
 8582 
 8583 	* builtin.c (do_sub): Init textlen to zero to avoid "may be
 8584 	used uninitialized" warning. Thanks to Corinna Vinschen for
 8585 	pointing this out.
 8586 	* eval.c (unwind_stack): Add parentheses around condition in while
 8587 	to avoid overzealous warning from GCC.
 8588 
 8589 2011-09-30  Eli Zaretskii  <eliz@gnu.org>
 8590 
 8591 	* io.c (remap_std_file): Fix non-portable code that caused
 8592 	redirected "print" to fail if a previous read from standard input
 8593 	returned EOF.  Reported by David Millis <tvtronix@yahoo.com>.
 8594 	(remap_std_file): Per Eli's suggestion, removed the leading close
 8595 	of oldfd and will let dup2 do the close for us.
 8596 
 8597 2011-10-11         John Haque     <j.eh@mchsi.com>
 8598 
 8599 	* symbol.c: Add licence notice.
 8600 	* array.c (PREC_NUM, PREC_STR): Define as macros.
 8601 
 8602 2011-10-09         Arnold D. Robbins     <arnold@skeeve.com>
 8603 
 8604 	* dfa.c: Sync with GNU grep.
 8605 
 8606 2011-10-07         John Haque     <j.eh@mchsi.com>
 8607 
 8608 	Tail recursion optimization.
 8609 	* awkgram.y (grammar, mk_function): Recognize tail-recursive
 8610 	calls.
 8611 	* awk.h (tail_call, num_tail_calls): New defines.
 8612 	* eval.c (setup_frame): Reuse function call stack for
 8613 	tail-recursive calls.
 8614 	(dump_fcall_stack): Reworked.
 8615 
 8616 2011-10-04         Arnold D. Robbins     <arnold@skeeve.com>
 8617 
 8618 	* awk.h, main.c (gawk_mb_cur_max): Make it a constant 1 when
 8619 	MBS_SUPPORT isn't available to allow GCC dead code constant
 8620 	expression computation and dead code elimination to help out.
 8621 
 8622 2011-10-02         Arnold D. Robbins     <arnold@skeeve.com>
 8623 
 8624 	* io.c (rsnullscan, get_a_record): Fix the cases where terminators
 8625 	are incomplete when RS == "". Also fix the case where the new value
 8626 	is shorter than the old one.  Based on patch from Rogier
 8627 	<rogier777@gmail.com> as submitted by Jeroen Schot
 8628 	<schot@A-Eskwadraat.nl>.
 8629 
 8630 2011-09-24         Arnold D. Robbins     <arnold@skeeve.com>
 8631 
 8632 	* eval.c, io.c, re.c: Fix some spelling errors. Thanks to
 8633 	Jeroen Schot <schot@A-Eskwadraat.nl>.
 8634 
 8635 2011-09-21         Arnold D. Robbins     <arnold@skeeve.com>
 8636 
 8637 	* dfa.c, mbsupport.h: Sync with GNU grep. Large amount of changes
 8638 	that remove many ifdefs, moving many conditions for multibyte
 8639 	support into regular C code and relying GCC's dead code optimization
 8640 	to eliminate code that won't be needed.
 8641 	* dfa.c: For gawk, add a number of additional defines so that things
 8642 	will compile if MBS_SUPPORT is 0.
 8643 	* array.c, awk.h, awkgram.y, builtin.c, eval.c, field.c, main.c,
 8644 	node.c, re.c: Change `#ifdef MBS_SUPPORT' to `#if MBS_SUPPORT'.
 8645 	* awk.h, regex_internal.h: Move NO_MBSUPPORT handling to ...
 8646 	* mbsupport.h: ...here.
 8647 
 8648 2011-09-16         Arnold D. Robbins     <arnold@skeeve.com>
 8649 
 8650 	* dfa.c: Sync with GNU grep.
 8651 
 8652 2011-09-08         John Haque     <j.eh@mchsi.com>
 8653 
 8654 	Optimization for compound assignment, increment and
 8655 	decrement operators; Avoid unref and make_number calls
 8656 	when there is no extra references to the value NODE.
 8657 
 8658 2011-09-03         Arnold D. Robbins     <arnold@skeeve.com>
 8659 
 8660 	* dfa.c: Sync with GNU grep.
 8661 
 8662 2011-08-31         John Haque     <j.eh@mchsi.com>
 8663 
 8664 	Grammar related changes: Simplify grammar for user-defined
 8665 	functions and general cleanups.
 8666 
 8667 	* symbol.c: New file.
 8668 	* awkgram.y: Move symbol table related routines to the
 8669 	new file.
 8670 	(rule, func_name, function_prologue, param_list): Reworked.
 8671 	(install_function, check_params): Do all error checks
 8672 	for the function name and parameters before installing in
 8673 	the symbol table.
 8674 	(mk_function): Finalize function definition.
 8675 	(func_install, append_param, dup_params): Nuked.
 8676 	* symbol.c (make_params): allocate function parameter nodes
 8677 	for the symbol table. Use the hash node as Node_param_list;
 8678 	Saves a NODE for each parameter.
 8679 	(install_params): Install function parameters into the symbol
 8680 	table.
 8681 	(remove_params): Remove parameters out of the symbol table.
 8682 	* awk.h (parmlist, FUNC): Nuked.
 8683 	(fparms): New define.
 8684 
 8685 	Dynamically loaded function parameters are now handled like
 8686 	those for a builtin.
 8687 
 8688 	* awk.h (Node_ext_func, Op_ext_builtin): New types.
 8689 	(Op_ext_func): Nuked.
 8690 	* ext.c (make_builtin): Simplified.
 8691 	(get_curfunc_arg_count): Nuked; Use the argument 'nargs' of
 8692 	the extension function instead.
 8693 	(get_argument, get_actual_argument): Adjust.
 8694 	* eval.c (r_interpret): Update case Op_func_call for a dynamic
 8695 	extension function. Handle the new opcode Op_ext_builtin.
 8696 	* pprint (profile.c): Adjust.
 8697 
 8698 	Use a single variable to process gawk options.
 8699 
 8700 	* awk.h (do_flags): New variable.
 8701 	(DO_LINT_INVALID, DO_LINT_ALL, DO_LINT_OLD, DO_TRADITIONAL,
 8702 	DO_POSIX, DO_INTL, DO_NON_DEC_DATA, DO_INTERVALS,
 8703 	DO_PROFILING, DO_DUMP_VARS, DO_TIDY_MEM,
 8704 	DO_SANDBOX): New defines.
 8705 	(do_traditional, do_posix, do_intervals, do_intl,
 8706 	do_non_decimal_data, do_profiling, do_dump_vars,
 8707 	do_tidy_mem, do_sandbox, do_lint,
 8708 	do_lint_old): Defined as macros.
 8709 	* main.c: Remove definitions of the do_XX variables. Add
 8710 	do_flags definition.
 8711 	* debug.c (execute_code, do_eval, parse_condition): Save
 8712 	do_flags before executing/parsing and restore afterwards.
 8713 
 8714 	Nuke PERM flag. Always increment/decrement the reference
 8715 	count for a Node_val. Simplifies macros and avoids
 8716 	occasional memory leaks, specially in the debugger.
 8717 
 8718 	* awk.h (UPREF, DEREF, dupnode, unref): Simplified.
 8719 	(mk_number): Nuked.
 8720 	* (*.c): Increment the reference count of Nnull_string before
 8721 	assigning as a value.
 8722 
 8723 	Revamped array handling mechanism for more speed and
 8724 	less memory consumption.
 8725 
 8726 	* awk.h (union bucket_item, BUCKET): New definitions. Used as
 8727 	bucket elements for the hash table implementations of arrays;
 8728 	40% space saving in 32 bit x86.
 8729 	(buckets, nodes, array_funcs, array_base, array_capacity,
 8730 	xarray, alookup, aexists, aclear, aremove, alist,
 8731 	acopy, adump, NUM_AFUNCS): New defines.
 8732 	(array_empty): New macro to test for an empty array.
 8733 	(assoc_lookup, in_array): Defined as macros.
 8734 	(enum assoc_list_flags): New declaration.
 8735 	(Node_ahash, NUMIND): Nuked.
 8736 	* eval.c (r_interpret): Adjust cases Op_subscript,
 8737 	Op_subscript_lhs, Op_store_var and Op_arrayfor_incr.
 8738 	* node.c (dupnode, unref): Removed code related to Node_ahash.
 8739 	* str_array.c: New file to handle array with string indices.
 8740 	* int_array.c: New file to handle array with integer indices.
 8741 	* cint_array.c: New file. Special handling of arrays with
 8742 	(mostly) consecutive integer indices.
 8743 
 8744 	Memory pool management reworked to handle NODE and BUCKET.
 8745 
 8746 	* awk.h (struct block_item, BLOCK, block_id): New definitions.
 8747 	(getblock, freeblock): New macros.
 8748 	(getbucket, freebucket): New macros to allocate and deallocate
 8749 	a BUCKET.
 8750 	(getnode, freenode): Adjusted.
 8751 	* node.c (more_nodes): Nuked.
 8752 	(more_blocks): New routine to allocate blocks of memory.
 8753 
 8754 2011-08-24         Arnold D. Robbins     <arnold@skeeve.com>
 8755 
 8756 	Fix pty co-process communication on Ubuntu GNU/Linux.
 8757 
 8758 	* io.c: Add include of <sys/ioctl.h> to get definition of TIOCSCTTY.
 8759 	(two_way_open): Move call for this ioctl to after setsid() call.
 8760 
 8761 2011-08-23         Arnold D. Robbins     <arnold@skeeve.com>
 8762 
 8763 	* regex_internal.c (re_string_fetch_byte_case): Remove
 8764 	__attribute((pure)) since it causes failures with gcc -O2
 8765 	-fno-inline. Thanks to Neil Cahill <ncahill_alt@yahoo.com>
 8766 	for reporting the bug.
 8767 
 8768 2011-08-10         John Haque      <j.eh@mchsi.com>
 8769 
 8770 	BEGINFILE/ENDFILE related code redone.
 8771 
 8772 	* awk.h (prev_frame_size, has_endfile, target_get_record,
 8773 	target_newfile): New defines.
 8774 	* awkgram.y (mk_program): Initialize has_endfile appropriately for
 8775 	Op_get_record.
 8776 	(parse_program): Initialize new jump targets for
 8777 	Op_get_record and Op_newfile.
 8778 	* eval.c (unwind_stack): Change argument to number of
 8779 	items to be left in the stack. Adjust code.
 8780 	(pop_fcall, pop_stack): New defines.
 8781 	(setup_frame): Initialize prev_frame_size.
 8782 	(exec_state, EXEC_STATE): New structure and typedef.
 8783 	(exec_state_stack): New variable.
 8784 	(push_exec_state, pop_exec_state): New functions to save and
 8785 	later retrieve an execution state.
 8786 	(r_interpret): Use the new functions and the defines in
 8787 	cases Op_K_getline, Op_after_beginfile, Op_after_endfile,
 8788 	Op_newfile and Op_K_exit.
 8789 	* io.c (after_beginfile): When skipping a file using nextfile,
 8790 	return zero in case there was an error opening the file.
 8791 	(has_endfile): Nuke global variable.
 8792 	(inrec): Add a second argument to pass errno to the calling
 8793 	routine.
 8794 	* debug.c (print_instruction): Update cases.
 8795 
 8796 2011-08-10         Arnold D. Robbins     <arnold@skeeve.com>
 8797 
 8798 	Fix (apparently long-standing) problem with FIELDWIDTHS.
 8799 	Thanks to Johannes Meixner <jsmeix@suse.de>.
 8800 
 8801 	* field.c (set_FIELDWIDTHS): Adjust calculations.
 8802 
 8803 	Fix problem with FPAT, reported by "T. X. G." <leopardie333@yahoo.com>
 8804 
 8805 	* awk.h (Regexp): Add new member 'non_empty'.
 8806 	* field.c (fpat_parse_field): Save/restore local variable non_empty
 8807 	from member in Regexp struct.
 8808 
 8809 2011-08-09         Arnold D. Robbins     <arnold@skeeve.com>
 8810 
 8811 	Fix pty issue reported by "T. X. G." <leopardie333@yahoo.com>
 8812 
 8813 	* configure.ac: Check for setsid.
 8814 	* awk.h: If not HAVE_SETSID define it as an empty macro.
 8815 	* io.c (two_way_open): Call setsid if using pty's.
 8816 
 8817 2011-07-29  Eli Zaretskii  <eliz@gnu.org>
 8818 
 8819 	* builtin.c (format_tree): Rename small -> small_flag,
 8820 	big -> big_flag, bigbig -> bigbig_flag.  Solves compilation errors
 8821 	when building Gawk with libsigsegv on MS-Windows, see
 8822 	https://lists.gnu.org/archive/html/bug-gawk/2011-07/msg00029.html.
 8823 
 8824 2011-07-28         Arnold D. Robbins     <arnold@skeeve.com>
 8825 
 8826 	* builtin.c (do_sub): Revert to gawk 3.1 behavior for backslash
 8827 	handling. It was stupid to think I could break compatibility.
 8828 	Thanks to John Ellson <ellson@research.att.com> for raising
 8829 	the issue.
 8830 
 8831 2011-07-26         John Haque      <j.eh@mchsi.com>
 8832 
 8833 	* eval.c (r_interpret): In cases Op_var_assign and Op_field_assign,
 8834 	include Op_K_getline_redir in the test for skipping the routine.
 8835 
 8836 2011-07-26         John Haque      <j.eh@mchsi.com>
 8837 
 8838 	Fix handling of assign routines for 'getline var'.
 8839 	Rework the previous fix for (g)sub.
 8840 
 8841 	* awk.h: New define assign_ctxt for use in Op_var_assign
 8842 	and Op_field_assign opcodes. Remove define AFTER_ASSIGN.
 8843 	* awkgram.y (snode, mk_getline): Initialize assign_ctxt.
 8844 	* builtin.c (do_sub): Adjust to take only the first two
 8845 	arguments.
 8846 	* eval.c (r_interpret): In cases Op_var_assign and Op_field_assign,
 8847 	skip the routine as appropriate. Adjust case Op_sub_builtin.
 8848 	* main.c (get_spec_varname): New function.
 8849 	* debug.c (print_instruction): Use the new function to get
 8850 	special variable name.
 8851 
 8852 2011-07-17         Arnold D. Robbins     <arnold@skeeve.com>
 8853 
 8854 	* main.c (varinit): Mark FPAT as NON_STANDARD. Thanks to
 8855 	Wolfgang Seeberg <wolfgang.seeberg@yahoo.com> for the report.
 8856 	* Makefile.am (EXTRA_DIST): Add po/README, per advice from
 8857 	Bruno Haible.
 8858 	* dfa.c: Sync with GNU grep.
 8859 	* xalloc.h (xzalloc): New function, from GNU grep, for dfa.c.
 8860 	* README: Note that bug list is really a real mailing list.
 8861 
 8862 2011-07-16         Arnold D. Robbins     <arnold@skeeve.com>
 8863 
 8864 	* Makefile.am (AUTOMAKE_OPTIONS): Removed.
 8865 	* configure.ac (AM_INIT_AUTOMAKE): Removed dist-bzip2 option, on
 8866 	advice from Karl Berry.
 8867 
 8868 2011-07-15         John Haque      <j.eh@mchsi.com>
 8869 
 8870 	* awk.h (Op_sub_builtin): New opcode.
 8871 	(GSUB, GENSUB, AFTER_ASSIGN, LITERAL): New flags for
 8872 	Op_sub_builtin.
 8873 	* awkgram.y (struct tokentab): Change opcode to	Op_sub_builtin
 8874 	for sub, gsub and gensub.
 8875 	(snode): Update processing of sub, gsub and gensub.
 8876 	* builtin.c (do_sub, do_gsub, do_gensub): Nuke.
 8877 	(sub_common): Renamed to do_sub. Relocate gensub argument
 8878 	handling code from do_gensub to here; Simplify the code a
 8879 	little bit.
 8880 	* eval.c (r_interpret): Handle Op_sub_builtin. Avoid field
 8881 	re-splitting or $0 rebuilding if (g)sub target string is
 8882 	a field and no substitutions were done.
 8883 	* pprint (profile.c): Add case for the new opcode.
 8884 	* print_instruction (debug.c): Ditto.
 8885 
 8886 	Take out translation for errno strings; extensions will
 8887 	need to use their own domain.
 8888 
 8889 	* awk.h (enum errno_translate): Removed.
 8890 	(update_ERRNO_string): Remove second translate parameter.
 8891 	* eval.c (update_ERRNO_string): Remove second translate parameter
 8892 	and code that used it.
 8893 	* gawkapi.h (api_update_ERRNO_string): Remove third translate
 8894 	parameter.
 8895 	* gawkapi.c (api_update_ERRNO_string): Remove third translate
 8896 	parameter and change call to update_ERRNO_string.
 8897 	* io.c (do_close): Fix call to update_ERRNO_string.
 8898 
 8899 2011-07-15         Arnold D. Robbins     <arnold@skeeve.com>
 8900 
 8901 	* awk.h: Typo fix: "loner" --> longer. Thanks to Nelson Beebe.
 8902 	* builtin.c (efwrite): Fix flushing test back to what it was
 8903 	in 3.1.8. Thanks to Strefil <strefil@yandex.ru> for the problem
 8904 	report.
 8905 	* configure.ac: Bump version to 4.0.0a for stable branch.
 8906 
 8907 2011-06-24         Arnold D. Robbins     <arnold@skeeve.com>
 8908 
 8909 	* Makefile.am (EXTRA_DIST): Add ChangeLog.0.
 8910 	* 4.0.0: Remake the tar ball.
 8911 
 8912 2011-06-23         Arnold D. Robbins     <arnold@skeeve.com>
 8913 
 8914 	* configure.ac: Update version to 4.0.0.
 8915 	* configure: Regenerated.
 8916 	* ChangeLog.0: Rotated ChangeLog into this file.
 8917 	* ChangeLog: Created anew for gawk 4.0.0 and on.
 8918 	* README: Bump version to 4.0.0.
 8919 	* 4.0.0: Release tar ball made.