aboutsummaryrefslogtreecommitdiffstats
path: root/ChangeLog.0
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog.0')
-rw-r--r--ChangeLog.09885
1 files changed, 9885 insertions, 0 deletions
diff --git a/ChangeLog.0 b/ChangeLog.0
new file mode 100644
index 00000000..af6bd99f
--- /dev/null
+++ b/ChangeLog.0
@@ -0,0 +1,9885 @@
+Mon Jun 20 20:33:26 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfaanalyze): Allocate the right number of leaves to
+ avoid crashes. Thanks to Jim Meyering.
+
+Mon Jun 20 20:22:35 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (setbit_c, setbit_case_fold_c): Compare btowc result against
+ WEOF. Thanks to Eli Zaretskii for pointing out the problem.
+
+Mon Jun 20 20:22:26 2011 Pat Rankin <rankin@pactechdata.com>
+
+ * dfa.c (addtok_wc): enclose prototype within #if MBS_SUPPORT.
+
+Fri Jun 17 11:09:22 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.86: Final beta test tar ball for 4.0.
+
+Fri Jun 17 10:55:27 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ Implement Rational Range Interpretation (RRI) directly in code.
+
+ * regex.h [RE_RANGES_IGNORE_LOCALES]: Remove macro and its use.
+ * dfa.c (parse_bracket_exp): Remove use of RE_RANGES_IGNORE_LOCALES
+ and just do it in code.
+ (hard-locale.h): Remove include.
+ (hard_LC_COLLATE): Remove variable and its uses.
+ * re.c (resetup): Remove use of RE_RANGES_IGNORE_LOCALES.
+ * regcomp.c (build_range_exp): Remove use of RE_RANGES_IGNORE_LOCALES
+ and just do it in code. Remove cmp_buf array; it's no longer needed.
+ * Makefile.am (base_sources): Remove hard_locale.h and hard_locale.c.
+ * hard_locale.h, hard_locale.c: Removed from dist.
+
+Sun Jun 12 23:43:06 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (resetup): Always turn on RE_RANGES_IGNORE_LOCALES.
+ Add justifying comment with URLs for the relevant portions of
+ POSIX. Thanks to Paul Eggert for pointing out the happy change
+ to the rules and supplying the URLs.
+
+Wed Jun 8 22:41:30 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (build_range_exp): Add check for RE_NO_EMPTY_RANGES
+ from GNULIB regcomp.c, courtesy of GNU grep.
+
+Wed Jun 8 22:10:03 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+
+Sun Jun 5 21:49:30 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.85: Fourth beta test tar ball for 4.0.
+
+Sun Jun 5 21:39:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (fpat_parse_field): Bug fix. Thanks to
+ "Radoulov, Dimitre" <cichomitiko@gmail.com> for pointing
+ out the problem.
+
+Fri Jun 3 10:39:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (build_range_exp): Make syntax the first argument,
+ for compatibility with gnulib version of the file.
+
+Wed Jun 1 06:29:27 2011 Pat Rankin <rankin@pactechdata.com>
+
+ * re.c (check_bracket_exp): Fix typo.
+
+Tue May 31 23:01:00 2011 John Haque <j.eh@mchsi.com>
+
+ * re.c (check_bracket_exp): Use mem* routines instead of str*
+ for searching.
+ * main.c (arg_assign): Disallow builtin or user-defined function
+ as the name of a variable.
+ * awkgram.y (check_special): Rework so can be called from
+ arg_assign.
+
+Tue May 31 22:23:41 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ In order to attain the goal of having ranges act like they are
+ always in the C locale, bit the bullet and did the work in
+ the regex and dfa engines. The pre-processing routine was not
+ handling too many cases that a full regexp parser would catch.
+
+ * regex.h [RE_RANGES_IGNORE_LOCALES]: New syntax bit.
+ (RE_SYNTAX_GNU_AWK): Use it.
+ * dfa.c (parse_bracket_exp): If the RE_RANGES_IGNORE_LOCALES
+ is set, ignore locales when building a range.
+ * re.c (expand_range): Remove function and declaration.
+ (add_char): Remove function and declaration.
+ (make_regexp): Remove use of expand_range.
+ (resetup): Add RE_RANGES_IGNORE_LOCALES if --traditional.
+ * regcomp.c (build_range_exp): Add syntax variable as last argument.
+ Add code to check for RE_RANGES_IGNORE_LOCALES and do the right thing.
+ Adjust all calls.
+
+Sun May 29 22:48:41 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (expand_range): Handle cases where expanded range
+ includes '\\' (and ']'). Thanks to Juergen Daubert <jue@jue.li>.
+ Fatal error if end point is below start point ([z-a]),
+ thanks to John Haque. Don't repeat the last character in
+ the expansion. Thanks to Arnold Robbins.
+
+Fri May 27 10:01:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.84: Third beta test tar ball for 4.0.
+
+Thu May 26 22:10:08 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (get_field): Enhance logic for setting NF if we're
+ using FPAT to parse fields. Can end up with weird cases. Thanks
+ to Pat Rankin for pointing them out.
+
+Mon May 23 22:06:13 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Allow newline after comma in range patterns,
+ per POSIX. Thanks to discussion in comp.lang.awk. (!!!)
+
+Mon May 23 22:02:46 2011 John Haque <j.eh@mchsi.com>
+
+ * ext.c (get_actual_argument): Change argument type from
+ Node_var_new to Node_var when used as a scalar.
+
+Sun May 22 11:56:40 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (varinit): Give FPAT a reasonable default value.
+ * field (get_field): Adjust test for at end of record to >=;
+ fpat_parse_field can go beyond when matching null regexps.
+ Thanks to Pat Rankin.
+
+Fri May 20 11:00:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.h (__attribute_warn_unused_result__): Always
+ ifdef out. Bleah.
+
+Thu May 19 17:13:18 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.83: Second beta test tar ball for 4.0.
+
+Thu May 19 16:47:19 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (dump_vars): Fix warning message. Thanks to Pat Rankin.
+ * main.c (usage): No space allowed after -d and -p. Also thanks
+ to Pat Rankin.
+
+Thu May 19 16:34:04 2011 Pat Rankin <rankin@pactechdata.com>
+
+ * regex_internal.h (__attribute_warn_unused_result__): Define with
+ empty expansion for !__GNUC__ configuration.
+
+Wed May 18 22:13:18 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.82: Beta test tar ball for 4.0, we hope!
+
+Wed May 18 21:47:54 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (PIPES_SIMULATED): Simplify the case where PIPES_SIMULATED
+ is true but using temporary files - that code not needed anymore.
+ * regcomp.c, regex.h, regex_internal.c, regex_internal.h,
+ regexec.c: Sync with GLIBC. Why not.
+
+Mon May 16 17:55:25 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.c: Regenerated using bison 2.5.
+
+Sat May 14 22:25:50 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (nextfile): Use `in_array' in main loop to see if element
+ of ARGV exists, instead of using `assoc_lookup'. The latter creates
+ the element! A day one bug!
+ * dfa.c (parse_bracket_exp): For z/OS init pattern manually.
+
+Mon May 9 16:30:49 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (sort_up_value_type): Remove unused variable ret.
+ (do_delete): Initialize local variables to silence warnings.
+ Thanks to Michal Jaegermann.
+
+Mon May 9 15:07:29 2011 Corinna Vinschen <vinschen@redhat.com>
+
+ * awk.h: Remove cygwin code for libsigsegv.
+
+Sun May 8 20:38:03 2011 John Haque <j.eh@mchsi.com>
+
+ * eval.c (r_interpret): In case Op_sub_array, store only the
+ subarray index as 'vname'.
+ * array.c (make_aname): Redone for dynamic computation of
+ a subarray actual 'vname'.
+ (array_vname): Use make_aname() for (sub)array name.
+ (asort_actual): Performance optimization for asort(a).
+
+Sun May 8 20:29:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * debug.c (print_array): Sort in order of string indices, per
+ request from John Haque.
+ * array.c (sort_up_value_number): Use string value to provide
+ ordering when numeric values are equal. Ensures that tests come
+ out OK on different systems.
+
+Sun May 8 20:27:27 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep.
+ * regex.h: Sync with GLIBC in preparation for submitting updates
+ back.
+
+Thu May 5 21:22:44 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_interpret): PROCINFO sorting only takes effect
+ if not do_posix.
+
+Wed May 4 23:31:14 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ Move array sorting to using predefined strings, add value sorting
+ by type of assignment.
+
+ * array.c (sort_up_value_type, sort_down_value_type): New routines.
+ (asort_actual): Pass string value to assoc_list, not NODE *.
+ Make sure indices of new arrays have numeric value set also.
+ (sort_up_value_number): Don't break the tie based on string value.
+ (sort_selection): Removed.
+ (assoc_list): Third arg is string constant. Add name to table of
+ functions. Linear search it.
+ * awk.h (assoc_list): Fix declaration.
+ * debug.c (print_array): And use of assoc_list.
+ * eval.c (r_interpret): Ditto.
+
+Wed May 4 23:06:17 2011 John Haque <j.eh@mchsi.com>
+
+ * eval.c (setup_frame): Handle a Node_var in stack. Fixes
+ a problem when a Node_var_new as param becomes Node_var during
+ expresssion evaluation for a subsequent param.
+
+Wed May 4 23:04:06 2011 John Haque <j.eh@mchsi.com>
+
+ Fix the problem (crash) with disappearing array argument when
+ it is a subarray of another deleted array argument.
+
+ * awk.h (struct exp_node): Nuke unused field sub.nodep.number.
+ New field sub.nodep.rn.
+ (parent_array): New definition for sub.nodep.rn to keep track
+ of the parent of a subarray.
+ * awkgram.y (mk_symbol): Initialize parent_array to NULL.
+ * eval.c (r_interpret): In the case Op_sub_array, assign
+ parent_array.
+ * array.c (get_array): Initialize parent_array to NULL when
+ a Node_var_new becomes a Node_var_array.
+ (assoc_find): Add a fourth argument for the previous node
+ of the returned bucket.
+ (in_array, assoc_lookup): Adjust calls to assoc_find().
+ (adjust_fcall_stack): New routine to change a soon-to-be deleted
+ subarray parameter in the function call stack to a local array.
+ (do_delete): Simplify code, remove recursive usage. Call
+ adjust_fcall_stack() where appropriate.
+ (do_delete_loop): Call adjust_fcall_stack() before clearing the
+ array.
+ (asort_actual): Don't accept an array and its subarray as
+ arguments for asort() or asorti().
+ (asort_actual, dup_table): For asort(), appropriately assign
+ parent_array when creating the result array.
+ * field.c (do_split, do_patsplit): An array and its subarray not
+ accepted for the second and the fourth arguments. Remove
+ unnecessary dupnode of the field seperator node.
+
+ Unrelated:
+ * awkgram.y (LEX_DELETE, simple_variable): Change type argument
+ from Node_var_array to Node_var_new for calls to variable().
+ * io.c (devopen): Fix parsing GAWK_MSEC_SLEEP env variable.
+
+Mon May 2 23:44:34 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (parse_bracket_exp): Sync with GNU grep, since we
+ now require C 90, go ahead and put non-constant values into
+ the array initializers.
+
+Mon May 2 23:37:09 2011 Corinna Vinschen <vinschen@redhat.com>
+
+ * awk.h (small): Undef after include of <sigsegv.h> to compile
+ builtin.c on Cygwin.
+
+Fri Apr 29 12:29:56 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with GNU grep, mainly typos in comments.
+
+Fri Apr 29 12:13:32 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (inetfile): Change ifdef to ifndef for have getaddrinfo.
+ Ooops.
+
+Fri Apr 29 11:49:38 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ Per Pat Rankin, remove code related to GFMT_WORKAROUND and VAXCRTL.
+
+ * builtin.c (sgfmt): Nuked.
+ (format_tree): Removed code related to GFMT_WORKAROUND and VAXCRTL.
+ * node.c (format_val): Revise comment.
+
+Fri Apr 29 11:33:08 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (NUMIND): New flag, indicates numeric value of an
+ array index is current.
+ * array.c (awk_hash): Remove code for VAXC, it's no longer
+ needed. Per Pat Rankin.
+ (assoc_lookup): Only assign the numeric value if it's available.
+ (do_delete): Add comment about free_subs calling force_string.
+ (sort_force_index): Use NUMIND.
+
+Fri Apr 29 10:15:24 2011 John Haque <j.eh@mchsi.com>
+
+ * builtin.c: Relocate all codes from awkprintf.h. Restore
+ format_tree.
+ * debug.c (do_print_f): Adjust appropriately. Install fatal trap
+ for format_tree.
+ * Makefile.am (base_sources): Remove awkprintf.h.
+
+ * array.c (assoc_list): Avoid possible crash; Remove unneeded
+ initialization of pre_func.
+
+Wed Apr 27 22:31:23 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (ahash_dupnode): Merged into dupnode in node.c, change uses.
+ * array.c (ahash_unref): Merged into unref in node.c, change all uses.
+ * node.c (dupnode): Revised to support Node_ahash.
+ (unref): Ditto.
+
+ Lots of code clean up in array.c:
+
+ * array.c (AVG_CHAIN_MAX): Made unsigned.
+ (array_init): Use strtoul to convert value instead of doing it
+ manually.
+ (array_vname): Nuke code that could limit length of name. It
+ was never used.
+ (concat_exp): Make len unsigned, clean up the calculation.
+ (assoc_lookup): Set ahname_num in the index at time of element
+ creation.
+ (dup_table): Copy ahname_num also.
+ Other minor cleanups after code review.
+
+Sun Apr 24 15:39:19 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * NEWS.0: Moved all pre-4.0 news to here.
+ * NEWS: Shortened.
+ * Makefile.am (EXTRA_DIST): Add NEWS.0.
+
+Sun Apr 24 12:43:49 2011 John Haque <j.eh@mchsi.com>
+
+ * array.c (sort_user_func): Fix return value to match the
+ documentaion.
+ (sort_selection): Make user-specified comparison function with
+ the same name override default "unsorted" specification.
+
+Fri Apr 22 16:05:27 2011 John Haque <j.eh@mchsi.com>
+
+ * array.c (sort_user_func): New routine to handle user-defined
+ quicksort comparison function.
+ (assoc_list): Adjust for user-defined comparison function.
+
+Fri Apr 22 09:18:16 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (awk_hash): Force results into 32 bits for consistency
+ across platforms. Keeps the test suite happy. This may turn out
+ to be a bad idea in the long run.
+
+Mon Apr 18 10:18:26 2011 John Haque <j.eh@mchsi.com>
+
+ * array.c (assoc_list): New function to construct, and optionally
+ sort, a list of array elements.
+ (asort_actual): Use the new function to sort array elements.
+ (assoc_sort_inplace, assoc_from_list, merge_sort, merge): Nuked.
+ (sort_selection): Simplify handling of error and warning messages.
+ (sorted_in, sort_match): Nuked, related code in sort_selection() and
+ assoc_list().
+ (sort_ignorecase, sort_up_index_ignrcase, sort_down_index_ignrcase,
+ sort_maybe_numeric_index, sort_cmp_nodes, cmp_func, sort_up_value,
+ sort_down_value): Nuked. Ignorecase handling done in the corresponding
+ non-ignorecase versions.
+ (cmp_string): New routine for string comparisons.
+ (sort_up_value_string, sort_down_value_string, sort_up_value_number,
+ sort_down_value_number, sort_force_index_number,
+ sort_force_value_number, sort_force_value_string): New routines.
+ * awk.h (struct exp_node): New field sub.hash.num to store the
+ numeric value of an array index.
+ (ahname_num): New define.
+ (SORT_CTXT): New typedef.
+ * awkgram.y (tokentab): Accept three args for asort() and asorti().
+ (snode): Adjust for the extra args.
+ * eval.c (r_interpret): In case Op_arrayfor_init, call assoc_list()
+ for a list of array elements.
+ * debug.c (print_array): Call assoc_list() for a sorted list of array
+ elements.
+
+Wed Apr 13 10:17:37 2011 John Haque <j.eh@mchsi.com>
+
+ * builtin.c (do_strftime): Make the third argument to strftime
+ really work.
+ * io.c (redirect): Do not free `rp' after failure to open socket
+ in redirect_twoway. Fixes a double-free memory error.
+
+Thu Apr 7 21:38:08 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (merge): Use sort_cmp_nodes for asort/asorti.
+ See test/arraysort.awk test 1.
+
+Thu Apr 7 10:48:21 2011 Pat Rankin <rankin@patechdata.com>
+
+ * array.c (sort_cmp_nodes): New routine. Unlike cmp_nodes, numbers
+ are less than strings instead of being formatted and then compared.
+ (sort_up_value): Use it.
+
+Sun Apr 3 22:18:26 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README, FUTURE: Minor edits.
+
+Fri Apr 1 11:53:54 2011 Pat Rankin <rankin@patechdata.com>
+
+ * array.c (sort_up_index_number): Fix the NODE arguments passed to
+ sort_up_index_string() when a tie breaker is needed.
+
+Fri Apr 1 11:49:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ Change ISATTY macro to os_isatty function.
+
+ * awk.h (ISATTY): Remove definition.
+ (os_isatty): Add declaration.
+ * debug.c, io.c, main.c: Change all calls.
+
+Thu Mar 31 22:57:36 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Checklist: Updated. This is a git-only file.
+ * POSIX.STD: Revised some.
+
+Tue Mar 29 20:52:38 2011 John Haque <j.eh@mchsi.com>
+
+ * awkgram.y (LEXT_NEXT): Don't issue an error message if the next
+ statement is in a function (rule = 0).
+
+ Always resolve the jump target for an exit statement at run-time.
+ This fixes a bug when the statement occurs in a function.
+
+ * awk.h: New defines target_atexit and target_end.
+ * awkgram.y (LEX_EXIT): Initilize the jump targets.
+ * eval.c (r_interpret): Use current rule to choose the jump target
+ for Op_K_exit.
+ * debug.c (print_instruction): Adjust case Op_K_exit.
+
+Tue Mar 29 20:45:49 2011 Pat Rankin <rankin@patechdata.com>
+
+ Move the code to support sorting `for (index in array)' from
+ eval.c to array.c, and implement several additional orderings.
+
+ * array.c (comp_func, sorted_in, sort_ignorecase,
+ sort_up_index_ignrcase, sort_down_index_ignrcase): Move from eval.c.
+ (sort_up_index_string, sort_down_index_string): Move from eval.c
+ and rename from *_str to *_string.
+ (sort_selection, sort_match, sort_maybe_numeric_index,
+ sort_up_index_number, sort_down_index_number,
+ sort_up_value, sort_down_value): New routines.
+ * eval.c (sort_&c): Move to array.c.
+ (r_interpret: case Op_arrayfor_init): Call sort_maybe_numeric_index
+ before and after qsort.
+ * awk.h (qsort_compfunc): New typedef.
+ (sorted_in, sort_maybe_numeric_index): Declare.
+
+Fri Mar 25 13:15:36 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Move libsigsegv portability checks to here from main.c.
+ * eval.c (fcall_list, fcall_count): Move definitions to here
+ from main.c.
+ * io.c (do_find_source): Check against NULL in for loop.
+ * main.c: Lots of cleanup. Move some things out to other files,
+ add comments to some variable definitions.
+ (enum asgntype): To assign_type
+ (main): Remove decls of getopt variables, clean up comments.
+ Use emalloc and efree for libsigsegv stack. Remove check for SCCS
+ leading magic characters.
+ (add_preassign): Change allocassigns to alloc_assigns.
+ (init_locale): Change strdup calls to estrdup.
+ (save_argv): Make the routine static.
+ * version.in (version_string): Remove leading 4 SCCS magic characters.
+
+Wed Mar 2 08:15:02 2011 John Haque <j.eh@mchsi.com>
+
+ * array.c (asort_actual): Handle the case when the same array
+ is used as the source and destination.
+ * field.c (do_split): Make it fatal if attempting to use the same
+ array for both second and fourth arguments.
+ (do_patsplit): Ditto.
+
+Sun Feb 27 08:01:04 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update copryright in all relevant files.
+
+Sat Feb 26 21:54:07 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (sorted_in): Revise text of lint warning.
+
+Fri Feb 25 17:34:14 2011 Pat Rankin <rankin@patechdata.com>
+
+ * eval.c (sorted_in): Remove incorrect unref() call.
+
+Wed Feb 23 21:48:20 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Free extra_stack, to make valgrind happier.
+
+Tue Feb 22 12:04:09 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (UPDATE_YEAR): Move to 2011. Fix copyright.
+
+Tue Feb 15 17:11:26 2011 Pat Rankin <rankin@pactechdata.com>
+
+ * eval.c (sorted_in, sort_up_index_str, sort_down_index_str,
+ sort_up_index_ignrcase, sort_down_index_ignrcase, sort_ignorecase):
+ New functions to sort arrays for `for (index in array)' statements.
+ (r_interpret: case Op_arrayfor_init): Call sorted_in().
+
+Wed Feb 16 07:12:50 2011 John Haque <j.eh@mchsi.com>
+
+ Fix line numbers in the lint, warning and error messages issued
+ by the parser.
+
+ * awkgram.y (lintwarn_ln, warning_ln, error_ln): New local versions,
+ each accepts an additional line number argument.
+ (print_included_from): New function to seperate 'Included from ..'
+ message from yyerror. Use it in yyerror, and in the new functions.
+ (grammar): Use the local versions for messages.
+ (add_srcfile, include_source, dup_parms, func_install, param_sanity,
+ mk_binary, add_lint): Ditto.
+ (dup_params, include_source): Adjust arguments to pass line number.
+ * awk.h: New definition ATTRIBUTE_PRINTF_2.
+
+ * awkgram.y (yylex): New variable warntab. Use it to issue only one
+ warning for the same non-standard special token in source.
+ (parse_program): Avoid spurious warnings. Don't call check_funcs if
+ yyparse aborts prematurely.
+
+Mon Feb 14 08:03:41 2011 John Haque <j.eh@mchsi.com>
+
+ * awkgram.y (regexp): Don't use tokstart in lint warning, it isn't
+ `\0' terminated.
+ (grammar): Copy update and assign routines from relevant variables into
+ instructions to avoid extra pointer dereferencing at run-time.
+ * awk.h (update_var, assign_var): new definitions.
+ * eval.c (r_interpret): Adjust cases Op_var_assign and Op_var_update.
+
+Sun Feb 13 20:22:47 2011 Eli Zaretskii <eliz@gnu.org>
+
+ * awkgram.y (add_srcfile):
+ * debug.c (source_find): Pass `path' and `src' to files_are_same.
+ * gawkmisc.c [__DJGPP__ || __MINGW32__]: Include pc/gawkmisc.pc,
+ for consistency with __EMX__ and pc/Makefile.
+ * debug.c (interpret, initialize_pager, prompt_continue)
+ (set_gawk_output): Use ISATTY instead of isatty.
+ * io.c (redirect, iop_alloc): Same.
+ * main.c (main): Same.
+ * awk.h (ISATTY): Trivial definition, if not defined elsewhere.
+
+Sun Feb 13 20:16:04 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (check_funcs): Update warning about never called to say
+ "never called directly" since it could be called indirectly.
+
+Sun Feb 13 07:12:50 2011 John Haque <j.eh@mchsi.com>
+
+ * profile.c (pprint): In case Op_indirect_func_call, pop off
+ indirect var after function parameters.
+ Thanks to Hermann Peifer <peifer@gmx.eu> for the bug report.
+ * array.c (do_delete): Always free an empty sub-array name and node.
+ * ChangeLog: Fix typos.
+
+Fri Feb 11 10:26:25 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (remad_std_file): Close oldfd first, in case we've
+ run out of fd and do dup2 if the newfd isn't what we were
+ looking for. Thanks to Hermann Peifer <peifer@gmx.eu> for
+ the bug report.
+
+Thu Feb 10 21:31:36 2011 Andreas Buening <andreas.buening@nexgo.de>
+
+ * main.c (load_procinfo): Fix warning about unsed variables if we
+ don't have multiple groups.
+ * protos.h: Move decls for many standard functions here if
+ they aren't in the header files (OS/2) and bracket inside
+ #ifndef STDC_HEADERS.
+ * io.c (devopen): Remove decl of strtoul.
+ * field.c (set_FIELDWIDTHS): Same.
+ * awk.h: Always include protos.h.
+
+Tue Feb 8 22:46:22 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c, builtin.c, eval.c: Equalize message strings and
+ fix a typo. Thanks to Benno Schulenberg <bensberg@justemail.net>.
+
+Mon Feb 7 11:23:33 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (next_sourcefile): Comment out assertion that
+ lexeof is true; causes core dump on user typos of bad
+ characters which previous versions did not do. Thanks to
+ Pat Rankin for the report.
+
+ * re.c (expand_range): Allow for ^ as first character
+ inside range. Thanks for Nelson Beebe for the bug report.
+
+Fri Feb 4 10:28:19 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README.cvs: Udpated.
+ * Checklist: New file for storage in the git repository.
+
+Wed Feb 2 20:34:41 2011 Corinna Vinschen <vinschen@redhat.com>
+
+ * awkgram.y (free_bc_internal): Remove unused variable.
+
+Tue Feb 1 23:13:10 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bootstrap.sh: No need to find aclocal.m4, just touch it.
+
+Tue Feb 1 23:05:51 2011 Corinna Vinschen <vinschen@redhat.com>
+
+ Make values of ctype macros into unsigned char to fix
+ warnings found on Cygwin / Newlib.
+
+ * array.c (array_init): Add cast.
+ * awkgram.y: Ditto.
+ * awkprintf.h: Ditto.
+ * builtin.c (sub_common, nondec2awknum): Ditto.
+ * command.y: Ditto.
+ * eval.c (fmt_ok): Ditto.
+ * ext.c (make_builtin): Ditto.
+ * main.c (main, arg_assign): Ditto.
+ * re.c (check_bracket_exp): Ditto.
+ * node.c (r_force_number, parse_escape): Ditto.
+ (dump_wstr): Add unused attribute (unrelated).
+
+Tue Feb 1 23:01:40 2011 John Haque <j.eh@mchsi.com>
+
+ Fix switch debugging.
+
+ * awkgram.y (LEX_SWITCH, case_statements, case_statement,
+ case_value): Linearize instructions to facilitate debugging.
+ (switch_body): Removed.
+ (yylex): Add LEX_CASE in special token processing.
+ (free_bc_internal): Remove case Op_K_switch.
+ * awk.h (OPCODE): Remove opcode Op_case_list.
+ * eval.c (r_interpret): Remove Op_K_switch. Add case
+ Op_K_case to handle switch.
+ Add cases Op_K_do, Op_K_while, Op_K_for, Op_K_arrayfor, Op_K_switch
+ and Op_K_default as no-ops, needed for pgawk.
+ * debug.c (print_instruction): Remove case Op_K_switch,
+ add case Op_K_case instead.
+
+ Unrelated:
+ * awkgram.y (case_statements): As case values, "abc" and /abc/
+ no longer considered as duplicates.
+
+ Cleanup grammar and run-time code for switch and loops.
+ Jump targets for break and continue are now fixed, and known
+ at parse time. See ChangeLog entry dated Oct 21, 2010.
+
+ * awk.h (OPCODE): Remove Op_push_loop and Op_pop_loop.
+ (loop_count): Remove definition.
+ * awkgram.y (fix_break_continue): Change calling parameters to
+ instruction list, break and continue targets. Adjust code.
+ (LEX_DO, LEX_WHILE, LEX_SWITCH, LEX_FOR): Simplify grammar. Use
+ Op_no_op as target for break. Adjust call to fix_break_continue.
+ (mk_for_loop): Ditto.
+ * eval.c (r_interpret): Nuke cases Op_push_loop and Op_pop_loop.
+ Simplify Op_K_break and Op_K_continue. Remove declaration of in_loop
+ and all loop detection code thereof.
+ * debug.c (pre_execute, post_execute): Adjust declarations and code.
+ (print_instruction): Nuke cases Op_push_loop and Op_pop_loop.
+ * eval.c (r_interpret): Adjust calls to pre_execute and post_execute.
+ * profile.c (pprint): Adjust cases Op_K_for, Op_K_do, Op_K_while,
+ Op_K_switch and Op_K_arrayfor. Add cases Op_K_case and Op_K_default.
+ Remove Op_push_loop and Op_pop_loop.
+
+ Unrelated cleanup:
+ * awkgram.y (mk_condition): Don't include Op_K_if, Op_K_else and
+ Op_cond_exp if not profiling.
+
+Tue Feb 1 10:20:02 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_interpret): Change magic string for array sorting.
+
+Sun Jan 30 21:49:53 2011 John Haque <j.eh@mchsi.com>
+
+ Add `isarray' built-in function.
+
+ * awk.h (enum opcodeval): Op_push_arg: new opcode.
+ (do_isarray): Add declaration.
+ * awkgram.y (tokentab): Add new entry for `isarray' function.
+ (snode): Add handling for it.
+ * builtin.c (do_isarray): New function.
+ (do_length): Die if posix and get an array argument.
+ * debug.c (print_instruction): Handle Op_push_arg.
+ * profile.c (pprint): Likewise.
+ * eval.c (optypes, r_interpret): Likewise.
+
+Sun Jan 30 21:13:01 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * hard-locale.h: Synced to GNU grep.
+ * hard-locale.c: New file, brought in from GNU grep.
+ * Makefile.am (base_sources): Add hard-locale.c.
+ * dfa.h: Sync as much as possible to GNU grep.
+ * dfa.c: Sync as much as possible to GNU grep.
+ * builtin.c (do_strftime): Remove unneeded variable.
+
+Thu Jan 27 22:52:54 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (comp_func): Add declaration.
+ * debug.c (comp_func): Make not static, and move to ...
+ * eval.c (comp_func): ... here.
+ (r_interpret): Add array sorting if magic index is
+ set in PROCINFO.
+
+Thu Jan 27 22:12:00 2011 Corinna Vinschen <vinschen@redhat.com>
+
+ * Makefile.am: Remove $(EXEEXT) from 'awk' symlink.
+
+Thu Jan 27 21:21:13 2011 John Haque <j.eh@mchsi.com>
+
+ * eval.c (r_interpret): When in BEGINFILE or ENDFILE, add check for
+ `getline var < file' in cases Op_K_getline_redir and Op_K_getline.
+
+ * awkgram.y (constant_fold): Code cleanups. Fix bug in the code for
+ string concatenation.
+
+ * configure.ac: Remove unneeded extra call to AC_LANG.
+
+Thu Jan 27 15:00:42 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c: Fix up some comments.
+ * io.c (remap_std_file): New function.
+ (iop_close): Use it.
+
+Mon Jan 24 22:14:21 2011 Andreas Buening <andreas.buening@nexgo.de>
+
+ * debug.c: Bracket variables used with readline in #ifdef.
+ * dfa.c (add_utf8_anychar): Move inside ifdef.
+
+Mon Jan 24 22:05:26 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (make_regexp): Add separate variable for dfa syntax.
+ General formatting cleanup.
+ (research): General formatting cleanup.
+ (refree): Remove out of date comment.
+ (re_update): Comment the routine.
+ (check_bracket_exp): Improve check for range to not get [^-/]
+ kinds of things. Thanks to Nelson Beebe for pointing out the bug.
+
+Wed Jan 19 20:31:17 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (is_valid_character): Add `& 0XFF' and remove casts to
+ unsigned chars in other files. Remove definition of this macro
+ in not MBS_SUPPORT case, since it wasn't being used.
+ (btowc_cache): New macro to index into the array and use the
+ same trick. Relies on ANSI C preprocessor semantics.
+ Fix all uses.
+ * builtin.c, node.c, io.c: Fix uses of these macros.
+
+Wed Jan 19 20:19:29 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (wstr2str): New function.
+ * awk.h: Declare it.
+ * builtin.c (is_wupper, is_wlower, to_wupper, to_wlower,
+ wide_change_case, wide_tolower, wide_toupper): New functions to
+ simplify wide character case conversions.
+ (do_tolower, do_toupper): Use wide_tolower, wide_toupper in multibyte
+ case.
+ (do_substr): Simplify code a little bit.
+
+Mon Jan 17 22:48:48 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_bindtextdomain): Change type of `the_result'
+ to const char* to kill compiler warnings.
+ * debug.c (source_find): Improve error message when file not
+ found.
+ * awkgram.y (get_src_buf): Add cast to value of `read' to
+ turn off compiler warnings on different systems.
+
+Mon Jan 10 21:40:05 2011 Andreas Buening <andreas.buening@nexgo.de>
+
+ * io.c (devopen): Handle opening of directories for OS/2.
+
+Mon Jan 10 21:37:49 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Rearrange includes of <fcntl.h> so it won't be
+ included for VMS, move definition of O_BINARY down.
+
+Sat Jan 8 23:00:37 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Include <fcntl.h> here.
+ * main.c, io.c: Remove includes of <fcntl.h>.
+
+2011-01-08 Eli Zaretskii <eliz@gnu.org>
+
+ * io.c (PIPES_SIMULATED) [__DJGPP__ || __MINGW32__]: Define.
+ (binmode): Define for __DJGPP__ and __MINGW32__ as well.
+ (gawk_popen) [!PIPES_SIMULATED]: Define for __DJGPP__ and
+ __MINGW32__ as well.
+
+Wed Jan 5 20:35:30 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Move call to AC_LANG([C]) into here from
+ m4/readline.m4.
+
+Tue Jan 4 11:21:18 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ Clean up some compiler warnings:
+
+ * array.c (do_delete): Cast for printf.
+ * builtin.c (do_bindtextdomain): Casts for const char *.
+ * io.c (rs1scan): Cast for indexing of array.
+ * re.c (add_char): Remove unused variables.
+
+Fri Dec 31 11:05:11 2010 Michal Jaegermann <michal@harddata.com>
+
+ * awk.h (strncasecmpmbs): Change parameters to const char *.
+ * builtin.c (strncasecmpmbs): Change parameters to const char *.
+ Add casts as appropriate in calls to other functions.
+ * eval.c (cmp_nodes): Add casts in calls to strncasecmpmbs.
+ * node.c (str2wstr): Ditto.
+
+Tue Dec 28 21:13:31 2010 Eli Zaretskii <eliz@gnu.org>
+
+ * gawkmisc.c: Restore inclusion of pc/gawkmisc.pc.
+
+Tue Dec 28 21:00:36 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ext.c (make_builtin): Make first parameter const char *.
+ Adjust code inside to fit.
+ * awk.h (make_builtin): Adjust declaration.
+
+Mon Dec 27 19:55:10 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c [AF_UNSPEC, AF_INET, AF_INET6]: Add definitions for systems
+ that don't define them.
+ (inetfile): Make IPv6 a fatal error if using the fake getaddrinfo,
+ since chances are good that IPv6 really isn't available.
+
+Sat Dec 25 19:36:27 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fixes for z/OS.
+
+ * awkgram.y (tokcompare): Change argument types to const void *.
+ (check_special): Add cast to void * in call to qsort.
+ * builtin.c (do_bindtextdomain): Change `directory' and `domain'
+ to const char *.
+ * custom.h (ZOS_USS): Undef HAVE_SYS_PARAM_H and HAVE_MCHECK_H.
+ Beats me why configure thinks it has those things.
+
+Fri Dec 24 12:56:46 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h: Remove defs for MIPS RiscOS.
+ * configure.ac, aclocal.m4: Updated to Autoconf 2.68.
+
+Wed Dec 22 21:21:28 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gettext.h: Synchronized with gettext 0.18.1.
+
+2010-12-22 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.18.1.
+ * ABOUT-NLS, config.rpath: Updated from gettext 0.18.1.
+
+Sun Dec 19 16:43:14 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (update_PROCINFO_str, update_PROCINFO_num, make_str_node):
+ Change `char *' parameters to `const char *' to avoid some
+ compiler warnings.
+ * ext.c (do_ext): Remove cast in call to make_string.
+ * field.c (update_PROCINFO_str, update_PROCINFO_num): Adjust.
+ * main.c (init_args): Remove casts in calls to make_string.
+ * node.c (r_make_str_node): Add cast in assignment if ALREADY_MALLOCED.
+
+Sat Dec 18 20:12:59 2010 Eli Zaretskii <eliz@gnu.org>
+
+ * array.c, gawkmisc.c, io.c, main.c, regex_internal.h,
+ awkgram.y, awk.h, array.c: Remove OS2 and _MSC_VER defines.
+
+Sat Dec 18 19:56:17 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c, eval.c, floatcomp.c, io.c: Remove all the crufty
+ old code for #ifdef CRAY.
+
+Thu Dec 16 11:06:50 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Put strftime() default format into PROCINFO["strftime"].
+
+ * awk.h (def_strftime_format): Declare const char[] array.
+ * main.c (def_strftime_format): Define it.
+ (load_procinfo): Load it into PROCINFO.
+ * builtin.c (do_strftime): Use value in PROCINFO for format
+ string if it's there. Remove old def_format static array.
+
+Mon Dec 13 17:12:44 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ If not POSIX, turn [d-h] into [defgh].
+
+ * re.c (check_bracket_exp): Make warning about ranges under
+ lint control.
+ (expand_range): New routine to expand ranges.
+ (make_regexp): Check if might have range and call expand_range.
+ (add_char): New helper function for expand_range.
+
+Thu Dec 9 22:12:48 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c: Restored changes of 1 July 2010 to allow /inet4 and /inet6;
+ they got lost amongst the merges. Fixed checking of do_sandbox.
+ Also, removed the option for raw IP sockets since it was never
+ implemented and wasn't going to be.
+
+Tue Dec 7 11:59:00 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Remove test for return type of sprintf. Another
+ renegade from the late 1980's bites the dust!
+ * protos.h (sprintf): Remove declaration.
+
+Sun Dec 5 15:01:35 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (grow_stack): Change env var to GAWK_STACKSIZE.
+ * awk.h, main.c, eval.c, profile.c: Removed features added
+ for those who are Strong In The Ways of the Source.
+ * debug.c (comp_func): Moved to here from eval.c, where it's
+ no longer needed.
+
+Sat Dec 4 21:44:38 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (init_btowc_cache): New function.
+ (btowc_cache): New array.
+ (str2wstr): Use is_valid_character in test instead of several isXXX
+ calls.
+ * awk.h [is_valid_character]: Macro to use btowc_cache.
+ * main.c (main): Call init_btowc_cache().
+ * io.c (rs1scan): Add call to is_valid_character when processing
+ characters byte by byte.
+
+Wed Dec 1 08:10:21 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h, awkgram.y, debug.c: Change CONTEXT to AWK_CONTEXT
+ everywhere to avoid problems with libsigsegv on cygwin.
+
+Tue Nov 30 13:48:34 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (MRL): Removed variable, not used since Tandem code nuked.
+ (main): Fix argument parsing for -m.
+ (usage): Make -m undocumented (already is the doc/* files).
+ * io.c (MRL): Remove declaration.
+
+Mon Nov 29 21:59:21 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (check_bracket_exp): Add check and warning for ranges.
+ I may live to regret this.
+
+Mon Nov 29 20:09:18 2010 Eli Zaretskii <eliz@gnu.org>
+
+ * replace.c [!HAVE_STRFTIME]: For __MINGW32__, define
+ HAVE_STRFTIME while compiling missing_d/strftime.c.
+
+Thu Nov 25 20:12:28 2010 John Haque <j.eh@mchsi.com>
+
+ * awkgram.y (grammar): Bug fix in delete for loop efficiency hack.
+ * debug.c (do_info): Don't sort functions to avoid potential memory leak
+ in case A_FUNCTIONS.
+
+ Plug more potential leaks in the debugger eval/condition commands:
+ * builtin.c (POP_TWO_SCALARS): New macro to free first scalar in case
+ of a fatal error in the next.
+ (do_index, do_atan2, do_lshift, do_rshift, do_and, do_or, do_xor): Use it
+ instead of two consecutive POP_SCALARs.
+
+ Execution context related code cleanups. Also, added descriptive
+ comments for functions.
+ * awkgram.y (get_context): Nuked.
+ (push_context, pop_context, in_main_context): New functions.
+ (mk_program, parse_program, yylex): Updated.
+ * debug.c (condition_triggered, do_eval, parse_condition): Updated.
+ * eval.c (unwind_stack): Updated.
+ * main.c (main): Updated.
+ * awk.h (struct context): Removed member level, not needed.
+
+ * eval.c (op_assign): Initialize r to NULL, and declare x only
+ if HAVE_FMOD not defined to remove GCC warnings.
+
+Thu Nov 25 08:32:31 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (posix_compare): Do string comparison with strcoll() /
+ wcscoll().
+ (cmp_nodes): Call it if do_posix. This may be a bad idea,
+ but what the heck. Standards compatibility uber alles!
+
+Wed Nov 24 20:09:23 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ext.c (do_ext): Require definition of `plugin_is_GPL_compatible'
+ per GNU Coding standards.
+
+Sun Nov 21 14:23:58 2010 John Haque <j.eh@mchsi.com>
+
+ Debugger: Fix memory leak when quitting pager.
+ * awk.h (PUSH_BINDING, POP_BINDING): Generalize macro definitions.
+ * debug.c (print_array): save and restore bindings for pager.
+ free list in case of an early exit in the pager.
+ (do_dump_instructions): Don't sort functions to avoid potential
+ memory leak.
+ (execute_code): Adjust PUSH_BINDING and POP_BINDING macro invocations.
+
+ * awkgram.y (func_call): Avoid reading freed memory for indirect var
+ name; do the special variable check before the call to 'variable'.
+
+ * eval.c (r_interpret): Fixes and cleanups. Change TOP to TOP_SCALAR
+ in the case Op_store_field.
+ (assign_common, assign, compare): Nuked macros.
+ (cmp_scalar, op_assign): New functions as replacements for the macros.
+
+Fri Nov 19 11:57:28 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bootstrap.sh, Makefile.am: Remove treatment of CVS.
+ * README.cvs: Updated further.
+
+Thu Nov 18 23:28:23 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Remove `--enable-portals' option. I don't think
+ anyone ever used it.
+ * io.c (two_way_open): Remove the code for portals.
+ * README.cvs, README.git, bootstrap.sh: New files for storage
+ in the Git repository.
+
+Tue Nov 16 11:56:31 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * version.in: Removed descriptive comments. New features and
+ so on are documented in the documentation and in NEWS.
+
+Mon Nov 15 19:19:25 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (LEX_LENGTH): Removed warning about length with
+ no argument being deprecated.
+ * awkprintf.h: Remove code for sun386. Fix %c to print multibyte
+ character instead of first byte.
+ * builtin.c (sub_common): Update commentary about POSIX.
+ * io.c (nextfile): Add MAYBE_NUM to FILENAME.
+
+Fri Nov 12 11:53:15 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (update_global_values): New routine, needed for correct
+ operation of --dump-variables.
+ * awk.h: Declared it.
+ * awkgram.y (get_varlist): Call it.
+ Thanks to Hermann Peifer <peifer@gmx.eu> for the bug report.
+
+ * debug.c (find_subscript): Initialize `r' to NULL, per
+ Michal Jaegermann.
+
+Thu Nov 11 16:31:49 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Restore decls of strcasecmp, strncasecmp.
+ * builtin.c: Lots of general cleanups.
+ (sub_common): Actually enable POSIX rules! (Wasn't done right
+ earlier.)
+
+Thu Nov 4 14:08:29 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c, awkgram.y, awkprintf.h, builtin.c, debug.c, eval.c,
+ field.c, io.c, main.c, node.c, profile.c, re.c: Remove register
+ keyword everywhere.
+ * node.c: Minor code cleanups.
+
+Wed Nov 3 08:29:15 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (free_wstr): If argument is null string or null field,
+ return. Thanks to Vojtech Vitek <vvitek@redhat.com>
+
+Tue Nov 2 16:45:06 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Straighten out options more. --lint --> -L, --lint-old --> -t
+
+ * main.c (optlist, optab, main, usage): Adjusted approrpiately.
+
+ Other:
+ * awk.h: Lots more general cleanup.
+ * builtin.c (strncasecmpmbs): Move mbstate vars into the routine.
+ * awk.h (strncasecmpmbs): Adjust declaration.
+ * eval.c (cmp_nodes): Adjust call.
+ * awkgram.y, command.y: Remove unused variables.
+
+Mon Nov 1 21:55:26 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (optlist, optab, main): Renamed -l option to -t
+ so can eventually merge in xgawk's -l option.
+ (usage): Adjusted approrpiately.
+
+Mon Nov 1 16:23:52 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c, awk.h, custom.h, eval.c, gawkmisc.c, io.c, main.c,
+ protos.h, replace.c: Remove code related to: __amigaos__,
+ atarist, BeOS, _MSC_VER, MSDOS, TANDOM, WIN32, and anything
+ not for __STDC__.
+
+Sun Oct 31 21:49:22 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Start on cleaning up. Remove stuff for DOS, WIN32,
+ TANDEM, atarist, NeXT even!
+
+Sun Oct 31 05:56:23 2010 John Haque <j.eh@mchsi.com>
+
+ Add array of arrays.
+
+ * awk.h (Op_sub_array): New opcode.
+ (POP_SCALAR, TOP_SCALAR): New macros. If the item is not a scalar,
+ make it a fatal error.
+ (POP_STRING, TOP_STRING): Use POP_SCALAR and TOP_SCALAR instead
+ of POP and TOP.
+ (force_string, force_number): Unrelated: simplify (remove) macros
+ for older gcc and non-gcc compilers.
+ * awkgram.y (grammar): New non-terminals for array subscripts.
+ delete array subscripts are handled differently than array subscripts
+ used as a variable.
+ (SUBSCRIPT): New terminal symbol to indicate end of subscripts.
+ (yylex): Return SUBSCRIPT after all the subscripts has been read.
+ (rules variable, LEX_DELETE and LEX_FOR): Adapt to these changes.
+ (sub_counter): New global to count the number of subscripts in a
+ delete statement.
+ (optimize_assignment): Adjust code for assignment to an array element.
+ * array.c (make_aname): New function to construct a sub-array name.
+ (get_array): Handle Node_val in the default case.
+ (concat_exp): Issue fatal error message if each expression is not a
+ scalar.
+ (assoc_clear): Recursively clear sub-arrays.
+ (do_delete, assoc_dump, assoc_sort_inplace, dup_table):
+ Handle array of arrays.
+ * builtin.c: Replace POP with POP_SCALAR as appropriate.
+ * eval.c (optypes): Add entry for Op_sub_array.
+ (r_interpret): Handle Op_sub_array. For case Op_subscript, increment
+ reference count only if the result is a scalar. If type is not a
+ scalar in Op_subscript_lhs, make it fatal. Adjust stack pointer
+ after a call to do_delete in Op_K_delete. Change POP(TOP)
+ to POP_SCALAR(TOP_SCALAR) as needed.
+ * profile.c (pprint): Add case for Op_sub_array.
+ * command.y (grammar): New non-terminals and rules to handle
+ array of arrays.
+ * debug.c (struct list_item): Redesigned. Field subs is NODE ** now,
+ new fields num_subs and sname. New flags OLD_IS_ARRAY and CUR_IS_ARRAY;
+ removed flag ARRAY_WATCH. Renamed macro IS_ARRAY() to WATCHING_ARRAY.
+ (do_info): Adapt to the structural changes in cases A_WATCH and
+ A_DISPLAY.
+ (print_array): New function to print contents of an array.
+ (print_subscript): New function to print an element of an array.
+ (do_print_var): Use the new functions to print an array element
+ and contents.
+ (do_set_var): Adapt to the structural changes in list_item for
+ an array element.
+ (delete_item, do_add_item, display): Ditto.
+ (add_item): Ditto. Use field symbol, not subs to store field number and
+ adjust accordingly everywhere.
+ Unrelated: handle function parameter correctly, watch and display now
+ prints the param name instead of the actual array name.
+ (find_subscript): New function.
+ (initialize_watch_item): Use the new function find_subscript
+ to locate an array element NODE.
+ (watchpoint_triggered): Redone.
+ (cmp_val): Redone.
+ (print_watch_code): Adjust code for printing subscript.
+ (print_instruction): Add case for Op_sub_array.
+ (serialize_subscript): New function.
+ (serialize): Use the new function to serialize watch and display
+ subscripts.
+ (unserialize_list_item): Adapt to the structural changes. Also,
+ simplify code.
+ (do_print_f): Redo code for printting array element.
+ (pre_execute_code, execute_code): Change POP to POP_SCALAR.
+
+ Unrelated:
+
+ * debug.c (unserialize_commands): New function for common code in
+ unserialize_breakpoint and unserialize_list_item.
+ (unserialize_breakpoint and unserialize_list_item): Use the new
+ function.
+
+ * awkgram.y (grammar): Do not terminate parser if seen an empty(NULL)
+ subscript. Install null string as subscript and continue parsing.
+ (variable): Do not terminate parser if type is Node_func, change it
+ to Node_var_new temporarily. Simplifies grammar and allows parser to
+ continue.
+
+ * command.y (yylex): Add history entry when blank line repeats
+ previous command.
+
+ * debug.c (pp_args): Removed. Pretty-printing SUBSEP
+ seperated indexes can not be made to work reasonably in all cases.
+ (struct list_item): Removed field pp_subs.
+ (concat_args): Move to file command.y.
+ * command.y (grammar): Concatenate SUPSEP seperated indexes.
+
+Thu Oct 28 16:25:08 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Remove use of varargs.h everywhere:
+
+ * awkgram.y (yyerror): Fixed.
+ * awk.h [CAN_USE_STADARG_H]: Removed, #error added if not available.
+ (snprintf, Func_print, msg, error, warning): Fix declarations.
+ * cmd.h (gprintf, d_error): Fix declaration.
+ * command.y (yyerror): Fixed.
+ * debug.c (d_error, gprintf): Fixed code.
+ * main.c (lintfunc): Fix declaration.
+ * msg.c (msg, warnning, error, r_fatal): Fixed code.
+
+Wed Oct 27 16:45:29 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [P]: Finally, nuked the `P' macro. Removed definitions
+ and uses.
+ [HAVE_DOPRNT]: Removed check for this, now require vfprintf.
+ [BELL]: Nuked; require a compiler that supports '\a'.
+ * array.c, awkgram.y, awkprintf.h, builtin.c, cmd.h, command.y,
+ debug.c, eval.c, ext.c, field.c, io.c, main.c, protos.h [P]:
+ Remove all uses.
+ * node.c (r_force_number): Change check with strtod to `ptr == cpend',
+ SunOS 3.5 compatibility no longer concerns us. Removed the comment.
+ [P]: Removed all uses.
+ (parse_escape): Change from BELL to '\a'.
+ * profile.c (pp_string): Change from BELL to '\a'.
+ [P]: Removed all uses.
+
+Tue Oct 26 20:11:37 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (fix_break_continue): New routine to make break and
+ continue instructions point to where they should jump to. Adjusted
+ grammar to call it for switch and loops.
+ * eval.c (r_interpret): For Op_K_break and Op_K_continue, jump
+ to pc->target_jmp.
+ * command.y (cmdtab, do_help): Translate the help messages.
+ * debug.c (option_list, option_help): Translate the help messages.
+ Elsewhere, clean up / add calls to gettext.
+
+Fri Oct 22 11:18:29 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ChangeLog: Merged with ChangeLog.BYTECODE.
+ * Makefile.am (EXTRA_DIST): Removed ChangeLog.BYTECODE.
+ * ChangeLog.BYTECODE: Removed the file.
+
+Thu Oct 21 12:16:35 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Make break and continue outside a loop not allowed at all,
+ even with --traditional, as BWK awk no longer allows this.
+
+ * eval.c (r_interpret): For Op_K_break and Op_K_continue, make
+ them fatal errors if not in a loop.
+ * awkgram.y (break_allowed, continue_allowed): New variables.
+ [BREAK, CONTINUE]: New flags for tokentab.
+ (yylex): If set, increment the corresponding variable.
+ (Grammar): Test variables when break/continue seen, decrement them
+ at the end of productions for loops and switch.
+
+Tue Oct 19 20:03:29 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (optab, usage): Remove --compat, --copyleft, and --usage extra
+ option aliases.
+
+Tue Oct 19 08:25:02 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkprintf.h (r_format_arg): Undouble "%" characters in
+ error messages. Thanks to Scott Deifik for catching the problem.
+
+Sat Oct 16 22:08:54 2010 Arnold Robbins <arnold@skeeve.com>
+
+ Apply changes from John Haque:
+
+ * awk.h [ASSIGNED]: Remove unused flag.
+ (Op_cond_pair_left): Remove.
+ * debug.c (print_instruction): Remove Op_cond_pair_left.
+ (do_trace_instruction): Fix print for Op_newfile.
+ (parse_condition): Improve code.
+ * eval.c (optypes): Add space to string for "!".
+ (r_interpret): Remove Op_cond_pair_left and Node_instruction cases.
+ Revise Op_cond_pair to handle left and right sides correctly.
+ Simple code fixes in some other cases.
+ * profile.c (pprint): Remove Op_cond_pair_left. Simplify Op_not.
+
+Fri Oct 15 14:17:09 2010 Arnold Robbins <arnold@skeeve.com>
+
+ * awk.h (Op_cond_pair_left): New op for left side of condition pair.
+ * debug.c (print_instruction): Support it.
+ * profile.c (pprint): Ditto.
+ * eval.c (r_interpret): Split Op_cond_pair into two cases; they have
+ to be handled differently.
+
+Wed Oct 13 19:17:03 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.h [RE_SYNTAX_AWK]: Add RE_CHAR_CLASSES, for compatibility
+ with modern Unix awk.
+
+Sun Oct 10 15:31:01 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (dfawarn): Do nothing in body, since gawk does it's
+ own checking.
+
+Sun Oct 10 15:30:34 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ MERGE with bytecode version! Many many files changed / added.
+
+Sun Oct 3 08:41:25 2010 John Haque <j.eh@mchsi.com>
+
+ * Lots of files: Indirect function call, FPAT, BEGINFILE/ENDFILE
+ from gawk-devel.
+
+ * awk.h (defrule): New enum for rule types.
+ (ruletab): Converts rule types to string constants.
+ * awkgram.y: Use rule types to simplify code in grammar.
+ * eval.c, debug.c, profile.c, awkgram.y routines: Update to use ruletab.
+
+ * Lots of files: New debugger command eval for evaluation of
+ arbitrary (g)awk expression(s).
+ eval "awk statement(s)"
+ OR
+ eval p1, p2
+ > awk statement
+ > more awk statement(s)
+ > end
+ p1, p2 are eval locals.
+ Conditional break/watch point:
+ break 1 "condition expression"
+ OR
+ break 1
+ condition "condition expression"
+
+ * command.y: grammar clean-ups.
+ (find_command): Redo to fix bugs in abbreviation/partial-string
+ search.
+
+ * debug.c (command_source): New structure. Used to manage
+ sources for debugger commands. 'source file' command can now
+ include additional source commands.
+
+ * awk.h: new enum type redirval for I/O redirection types;
+ remove redirection types from OPCODE.
+ * awkgram.y: Adjust grammar for redirection type changes.
+ (yylex, mk_getline): Update for redirection type changes.
+ * io.c (redirect, do_getline): Ditto.
+ * profile.c (redir2str): New function to convert redirection types
+ to string constants.
+ (pprint): Use new function redir2str.
+ * debug.c (print_instruction): Ditto.
+ * eval.c (optypes): Remove redirection types from table.
+
+ * main.c (main): initialize do_optimize to 1, default optimizations.
+ do_optimize > 1 for -O (--optimize) command line option.
+ do_optimize = 0 turns off all optimizations, and is for debugging
+ purposes.
+ * awkgram.y: Updated.
+
+ Lots of other cleanups and improvements.
+
+Thu Sep 16 09:44:47 2010 John Haque <j.eh@mchsi.com>
+
+ Lots of bug fixes & improvements, including work on
+ profiling.
+
+Wed Aug 18 22:15:06 2010 Arnold Robbins <arnold@skeeve.com>
+
+ Lots of files: Sync fully with gawk-stable version, in particular
+ documentation edits and all ChangeLog files.
+
+Mon Aug 9 07:17:54 2010 John Haque <j.eh@mchsi.com>
+
+ Fix the case when runtime stack can have a INSTRUCTION pointer
+ while popping stack items (a next/nextfile statement inside a loop).
+
+ * awk.h: new NODETYPE Node_instruction. Remove instruction pointer
+ from STACK_ITEM union, and all related macros.
+ * eval.c (r_interpret): wrap code (INSTRUCTION) pointer inside
+ a NODE for Op_push_loop. Change Op_pop_loop, Op_K_break
+ and Op_K_continue accordingly.
+ (unwind_stack): free Node_instruction.
+ (nodetypes): add new entry for Node_instruction.
+
+Thu Aug 5 15:05:22 2010 Arnold Robbins <arnold@skeeve.com>
+
+ * awk.h: Remove redundant declaration of struct lconv loc;
+ * awkprintf.h: Move ifdef for HAVE_LOCALE_H inside case '\''.
+ * custom.h: Add macros for setenv and unsetenv for Z/OS.
+ * main.c (main): Remove three argument version for Tiny CC after
+ applying patches to local copy that fix the issue with environ.
+
+Mon Jul 26 07:23:01 2010 John Haque <j.eh@mchsi.com>
+
+ Started Byte Code version ChangeLog.
+
+ * awk.h, eval.c, debug.c, profile.c: Renamed opcode Op_exit to
+ Op_atexit. Simplify exit value handling; use existing global
+ exit_val from main.c.
+ New opcode Op_stop.
+
+ * msg.c: New variables fatal_tag_valid, fatal_tag.
+ (r_fatal): Use these new variables.
+ (err): Change myname from dgawk to gawk when debugging;
+ reflects the correct source of error messages.
+
+ * builtin.c, msg.c: Change stdout to output_fp.
+ (do_fflush): Also flush output_fp if not stdout.
+
+ * command.y (yylex, yyparse): (Much) improved error recovery.
+
+ * awkgram.y (yylex): Add 'goto out' in 'check_special'
+ for do_traditional or do_posix check, lost somewhere
+ between 3.1.3 to 3.1.8.
+ (pop_var): New name remove_symbol to go with mk_symbol.
+ (install): New name install_symbol.
+
+ * debug.c:(set_gawk_output): Improved handling of /dev files
+ including /dev/ttyN, /dev/pts/N.
+ (pre_execute): Renamed execute, a pre_hook in r_interpret.
+ (post_execute): New function, a post_hook in r_interpret;
+ used to detect non-local jumps (next, nextfile, exit)
+ with commands 'until' and 'finish', and to print the
+ returned value for finish.
+ (print_instruction): Redo function params initialization
+ when trace is on. Hopefully, correct this time around.
+ (close_all): New function to close all known files
+ during quit and restart.
+
+ * eval.c(r_interpret): Redefine macro JUMPTO to include
+ post_hook from above, and use it exclusively to move to
+ the next instruction for execution.
+
+ * debug.c (do_run): Trap gawk fatal errors.
+Sun Sep 5 12:44:24 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (check_bracket_exp): Add `warned' flag to table and adjust
+ code to only warn once about each candidate.
+ (make_regexp): Always call check_bracket_exp, per discussion
+ on comp.lang.awk.
+
+Fri Aug 6 16:29:55 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (check_bracket_exp): Improved the code, again.
+
+Thu Aug 5 18:41:27 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (check_bracket_exp): Improved the code.
+
+Tue Aug 3 11:35:11 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (check_bracket_exp): New function.
+ (make_regexp): Call it if do_lint.
+
+Thu Jul 1 19:22:33 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Add support for /inet4/... and /inet6/... files.
+
+ * io.c (socketopen): New parameter `family' for address family.
+ (inetfile): New function. Changed everywhere to use it and
+ the values it sets.
+
+Fri Jun 25 01:01:39 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Added short option letters for all long options
+ that didn't have them so that they can be used in #!. This
+ reinstates -r, FWIW.
+ (usage): Revised message to list standard options first, then
+ options for extensions, sorted by short letter.
+
+Mon Jun 21 23:05:20 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ New FPAT variable and patsplit built-in function.
+
+ * awk.h (NODETYPE): Add Node_FPAT.
+ (FPAT_node, do_patsplit, set_FPAT): Declare.
+ (set_FPAT, update_PROCINFO_str, update_PROCINFO_num,
+ current_field_sep): New functions.
+ * awkgram.y (tokentab): Add patsplit.
+ (snode): Add code for do_patsplit to default third arg to FPAT.
+ (isnoeffect, isassignable): Add cases for Node_FPAT.
+ * eval.c (nodetypes): Add FPAT.
+ (r_tree_eval, r_get_lhs): Add cases for Node_FPAT.
+ * field.c (fpat_parse_field, update_PROCINFO_num, set_FPAT,
+ do_patsplit): New functions.
+ (update_PROCINFO): Renamed to update_PROCINFO_str.
+ (FPAT_re_yes_case, FPAT_re_no_case, FPAT_regexp): New variables.
+ (using_FIELDWIDTHS): Replaced with current_field_sep and all calls.
+ * io.c (set_RS): Call current_field_sep insead of using_fieldwidths.
+ * main.c (main): Use update_PROCINFO_str and update_PROCINFO_num
+ instead of manually updating the array.
+ (varinit): Add FPAT.
+ * profile.c (tree_eval, pp_lhs, is_scalar, pp_var): Add case for
+ Node_FPAT.
+
+Fri Jun 12 13:25:32 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Make command line arguments that are directories a warning.
+ They remain a fatal error if --posix or --traditional.
+
+ * configure.ac: Remove the --disable-directories-fatal option.
+ * io.c (nextfile): Rationalize the code that handles directories,
+ including setting ERRNO correctly.
+
+Thu Feb 26 20:57:52 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes from August 2008 through February 2009 to add
+ BEGINFILE and ENDFILE, originally against 3.1.6, merged into
+ development version.
+
+ * awk.h (in_beginfile_rule, in_endfile_rule): Add declarations.
+ * awkgram.y (beginfile_block, endfile_block): Add declarations.
+ (beginfile_or_endfile_rule, parsing_endfile_rule): New variables.
+ (LEX_BEGINFILE, LEX_ENDFILE): New tokens, new rules for those tokens.
+ (tokentab): Add new entries for BEGINFILE, ENDFILE.
+ (LEX_NEXTFILE): Allow nextfile in BEGINFILE rule.
+ (LEX_GETLINE): Allow only `getline var < file' inside BEGINFILE or
+ ENDFILE.
+ * eval.c (interpret): Check in_beginfile_rule and in_endfile_rule for
+ errors for next and nextfile.
+ (update_ERRNO_saved): When errno == 0, set to ERRNO to
+ null string.
+ (interpret): Allow nextfile in BEGINFILE rule.
+ (update_ERRNO_saved): Check errcode paramater, not global errno.
+ * io.c (beginfile_block, endfile_block, in_beginfile_rule,
+ in_endfile_rule): New variables.
+ (do_input): Set them. Update ERRNO only if not do_traditional.
+ Propogate error code down to fatal message.
+ (run_beginfile_rule, run_endfile_rule): New functions.
+ (iop_alloc): Use it instead of inline code. Add fourth argument
+ indicating that the open hooks should run. Adjust calls. Point is
+ to not call open hooks twice inside `nextfile'.
+ (do_nextfile): Check it and also in_beginfile_rule and only longjump
+ when both filebuf valid and not in a BEGINFILE rule.
+ (nextfile): Call run_beginfile_rule and run_endfile_rule as
+ appropriate. Reorder the logic to set ERRNO and allow BEGINFILE
+ to call nextfile to skip a bad data file. Adjust calls to
+ iop_open and find_open_hook.
+ (nextfile): Call iop_alloc if there's a BEGINFILE block in case
+ the hooks changed.
+ (find_open_hook): New function.
+ (get_a_record): On read error, just set *errcode and return. Let
+ higher level logic decide if it's fatal.
+ (inrec): Have error be fatal if traditional or if there isn't
+ an ENDFILE rule.
+ * profile.c (dump_prog): Add code for BEGINFILE / ENDFILE.
+ * awk.h (dump_prog): Adjust declaration.
+ * main.c (main): Adjust call to `dump_prog'. Check beginfile_block and
+ endfile_block also to be not NULL in order to call do_input. Thanks to
+ Steffen Schuler for pointing out the bug.
+
+Thu Feb 26 07:54:51 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Per advice from BWK and my own feelings, nuke additions from 2001
+ of seek and tell functions. They were never documented anyway.
+
+ * awk.h (do_seek, do_tell): Remove declarations.
+ (IOBUF): Remove save_start and rec_size members.
+ * awkgram.y (tokentab): Remove "seek" and "tell" entries.
+ * io.c (do_getline): Remove code setting save_start and rec_size.
+ (iop_alloc): Remove code initializing save_start and rec_size.
+ (do_seek, do_tell): Removed.
+ * configure.ac: Remove --enable-seektell option.
+
+Mon Feb 16 21:54:13 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (tokentab): Enable switch / case by default.
+ * configure.ac: Remove test for --enable-switch.
+
+Thu Feb 12 22:06:17 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (optab): --gen-po becomes --gen-pot. -r goes away since it's
+ now on by default.
+ (usage): Similar changes.
+ * regex.h [RE_SYNTAX_GNU_AWK, RE_SYNTAX_POSIX_AWK]: Adjust to support
+ interval expressions.
+ [RE_DEBUG]: Nuke: it is no longer used.
+ * re.c (resetup): Adjust comment for do_intervals.
+ (reflags2str): Remove RE_DEBUG.
+
+Sat Jan 17 20:41:54 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (WSTRCUR): Always define, no real need for ifdef.
+ * eval.c (flags2str): Similar.
+ * field.c (rebuild_record): Similar.
+
+Sat Jan 17 19:59:39 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Add indirect function calls. They require a special
+ syntax, which is an `@' in front of a function call.
+
+ * awk.h (NODETYPE): New Node_indirect_function_call value.
+ (ASSIGNED): New flag value.
+ * eval.c (nodetype2str): Add new node type.
+ (flags2str): Add ASSIGNED.
+ (func_call): Test the node type to determine
+ what kind of call. Cache the function body if a real function
+ is called indirectly. Also get scoping right if called from a function.
+ LOTS of work here to get this code right!
+ (op_assign): Add ASSIGNED to flags.
+ * awkgram.y (function_call, direct_function_call): New productions for
+ creating indirect function calls. Only call func_use for direct call.
+ (yylex): Add case for '@'. Only return it if not posix or traditional.
+ * profile.c (tree_eval): Add case for Node_indirect_func_call.
+ (pp_func_call): Check type and print '@' for indirect call.
+
+Tue Dec 30 22:25:04 2008 Assaf Gordon <gordon@cshl.edu>
+
+ * awk.h (do_sandbox): New variable declaration.
+ * main.c (do_sandbox): Variable definition.
+ (opttab): Add new option --sandbox.
+ (usage): Add to usage message.
+ * builtin.c (do_system): Disallow if sandboxed.
+ * io.c (redirect): Disallow redirections if sandboxed.
+
+Tue Dec 30 22:22:04 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (usage): Change --binary to --characters-as-bytes,
+ per Karl Berry.
+
+Thu Dec 18 05:29:46 2008 Steffen Schuler <schuler.steffen@googlemail.com>
+
+ * field.c (*_parse_field): Add `sep_arr' argument and fill it.
+ * field.c (do_split): Add handling of fourth argument of awk
+ builtin `split'.
+ * field.c (get_field): Extend parse_field by default argument.
+ * awkgram.y (tokentab): Extend `split' entry with fourth argument.
+
+Wed Dec 17 09:54:00 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (do_binary): New variable for new option -b which
+ makes gawk not mess with multibyte strings.
+ (opttab): Add option entry for -b / --binary.
+ (main): If do_binary, set gawk_mb_cur_max to 1.
+
+Sat Oct 27 22:43:50 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (resetup): Add RE_INVALID_INTERVAL_ORD to syntax bits if
+ doing interval expressions.
+
+Thu Oct 25 23:11:10 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (devopen): Add `isdir' pointer argument.
+ * io.c (devopen): Ditto. Adjust logic that checks for directory.
+ Adjust all calls.
+ * main.c (main): Adjust call to devopen.
+
+Sun Oct 3 23:18:44 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (lex): Enabled \s and \S escape sequences.
+ * regcomp.c (peek_token): Ditto.
+
+Tue Aug 3 13:29:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (sub_common): Make POSIX 2001 behavior the
+ default for `sub' and `gsub'.
+
+Wed Aug 21 13:39:08 2002 Dean Wakerly <dean@wakerly.com>
+
+ * main.c (main): Add short option letter 'r' for --re-interval.
+ Mainly for use in #! scripts.
+
+Wed Dec 26 22:03:48 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ Nuke /dev/pid etc. special files!
+
+ * awk.h (IOP_IS_INTERNAL, IOP_NO_FREE): Removed. Other defines
+ renumbered.
+ * io.c (iop_open, spec_setup, specfdopen, pidopen, useropen): Removed.
+ (do_input, redirect): Change uses of iop_open() to devopen() +
+ iop_alloc().
+ (iop_close, get_a_record): Remove special handling for IOP_INTERNAL,
+ IOP_NO_FREE.
+ (devopen): Remove comment relating to iop_open.
+ Add fstat check for valid fd for /dev/fd/N.
+
+Sun Nov 4 10:27:58 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h, builtin.c, awkgram.y: Renamed mark/reset to tell/seek.
+ * acconfig.h: Add `#undef SEEK_TELL'.
+ * configure.in: Add `--enable-seektell' configure-time option.
+ * io.c (do_seek, do_tell): renamed from do_reset, do_mark.
+
+Thu Aug 16 12:21:28 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ New feature, undocumented for now, use #define MARK_RESET to
+ to turn it on. New function val = mark("/some/file") to
+ save start position of current record. Use
+ reset("/some/file", pos) to go back to it. ONLY works
+ with getline.
+
+ * awk.h (IOBUF): New members save_start and rec_size.
+ (do_mark, do_reset): Add declarations.
+ * awkgram.y (tokentab): Add entries for mark and reset.
+ * io.c (specsetup): Initialize save_start and rec_size.
+ (iop_alloc): Ditto.
+ (do_getline): Update them as appropriate.
+ (do_mark, do_reset): New functions.
+
+Fri Sep 17 12:42:42 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (btowc): Changed to use mbrtowc.
+
+Wed Sep 15 08:26:55 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Further sync with GNU grep.
+
+Tue Sep 14 09:53:55 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (str2wstr): Per advice from Ulrich Drepper, when converting,
+ if the current byte is isprint, isgraph, iscntrl or zero, then it
+ can't start a multibyte character. This can save many calls to
+ `mbrtowcs', and speed up the conversion considerably.
+
+Mon Sep 13 11:19:21 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Sync with GNU grep.
+ * re.c (dfawarn): New routine for use by dfa.
+
+Sun Sep 12 22:17:02 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (tree_eval): Fix comment on for ... delete array loop.
+ (pp_string_fp): Get escapes right on regex constant.
+
+Sun Sep 5 20:38:42 2010 John E. Haque <j.eh@mchsi.com>
+
+ * re.c (str2wstr): Decrement src_count when skipping bad bytes.
+
+Fri Aug 27 13:51:13 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with current GNU grep - minor edits only.
+
+Fri Aug 20 16:26:14 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (tree_eval): Always parenthesize Node_cond_exp.
+ May add a few extra parens but guarantees the right semantics.
+ Thanks to Hermann Peifer <peifer@gmx.eu> for the bug report.
+
+Thu Aug 19 21:35:13 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.c (re_string_reconstruct): Move ifdef out to cover
+ variable declarations, to avoid "unused variable" warnings.
+ * regexec.c (check_arrival_add_next_nodes): Bracket declaration of
+ `err' with ifdef for the same reason.
+
+ Thanks to avarab@gmail.com for the suggestions.
+
+Wed Aug 18 22:13:30 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Added. Other minor cleanups.
+
+Tue Aug 17 23:27:43 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pp_string_fp): Use different sets of escape characters
+ if printing a string or a regex, based on delimiter. Thanks to
+ Hermann Peifer <peifer@gmx.eu> for the bug report.
+
+Sun Aug 8 23:05:09 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (make_regexp): Don't allocate rp->dfareg unless
+ we're using dfa; causes a memory leak otherwise. Thanks to
+ Antonio Columbo for reporting the bug.
+
+Wed Jul 14 23:04:30 2010 Eli Zaretskii <eliz@gnu.org>
+
+ * dfa.c: Include langinfo.h only if HAVE_LANGINFO_CODESET is
+ defined.
+
+Wed Jul 14 23:00:19 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Allow a backslash before CR-LF to also
+ work for line continuation, for MS-DOS style source files.
+ Thanks to (Vincent Belaiche) for pointing this out.
+
+Wed Jul 14 22:31:53 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (str2wstr): Keep going if get a bad multibyte sequence.
+ Allows match to give correct answers for RSTART, RLENGTH.
+ Add a lint warning. Correctly set the length of the string
+ based on pointer subtraction.
+
+Wed Jun 16 21:52:09 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (exec_count): Moved into NODE structure as standalone
+ element since count on `/pat/ { ... }' was wrong. Thanks to
+ Hermann Peifer <peifer@gmx.eu> for the bug report.
+
+ Note to self: DO NOT propogate this to the byte-code version.
+
+ Unrelated:
+
+ * awkgram.y (matchop): Made left associative to match behavior
+ of other awks.
+ (print_expression_list): Simplified so that something like
+ `print ("a", "b") in B in A' will work. Again, to match what
+ other awks do.
+
+Fri Jun 4 15:56:59 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Further merges with GNU grep.
+
+Thu May 20 22:20:32 2010 Stepan Kasal <skasal@redhat.com>
+
+ * Makefile.am [AUTOMAKE_OPTIONS]: Removed, contents now in ...
+ * configure.ac [AM_INIT_AUTOMAKE]: ... here.
+ Added dist-xz while I'm at it, per Karl Berry.
+
+Tue May 18 14:52:04 2010 Marcin Szewczyk <Marcin.Szewczyk@wodny.org>
+
+ * builtin.c (format_tree): Simplify code in pr_tail when multibyte
+ and %s or %d.
+
+Thu May 6 20:55:14 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.8: Release tar file made.
+
+Fri Apr 30 11:37:54 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Remove check for libsnprintf.
+
+Tue Apr 27 22:23:26 2010 Andreas Schwab <schwab@linux-m68k.org>
+
+ * builtin.c (do_mktime): Make lint check more sane.
+ Fix overflow check. Removes GCC warning that Arnold
+ incorrectly didn't like.
+
+Mon Apr 26 20:16:07 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ltmain.sh: Removed.
+ * builtin.c (do_mktime): Restored old code to match the
+ documentation. We now have a warning that we just have to
+ live with. Sigh. Stupid GCC. Added a lint warning though.
+ (format_tree): More code so that %'d acts like %d on systems
+ without <locale.h>.
+ * main.c (main): Add `&& #if defined(HAVE_LOCALE_H)' for
+ call to setlocale.
+
+Wed Apr 21 23:35:43 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Change quoting of -Dargs so that even tcsh
+ users will be happy.
+ * regex_internal.c (MAX): Add `#undef MAX', just in case.
+ * configure.ac: Don't look for libsigsegv on OSF/1, gives
+ us severe headaches.
+
+Tue Apr 20 12:01:01 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Sync with GNU grep. The long-standing x{0} bug
+ is now gone. Matching UTF-8 with "." is now much faster.
+ * re.c (avoid_dfa): Remove call to dfabroken() which is now gone.
+ * builtin.c (do_mktime): Simplify check of values passed in to be
+ more readable and to avoid a weird compiler warning from GCC.
+
+Fri Apr 16 15:02:26 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Add cast in error message to turn
+ off compiler warning.
+ * dfa.c (is_blank): New function. Use it everywhere instead of
+ ctype.h `isblank' macro which isn't available universally.
+
+Tue Apr 13 22:36:31 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c, awkgram.y, builtin.c, dfa.c, eval.c, ext.c, main.c,
+ node.c, re.c: Remove old ISxxx and TOxxx macros in favor of
+ standard versions. ``We're two wild and crazy guys!''
+
+Tue Apr 13 22:07:18 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.c, getopt.h, getopt1.c, getopt_int.h, regcomp.c, regex.c,
+ regex.h, regex_internal.c, regex_internal.h, regexec.c: Sync with
+ glibc. What the heck.
+
+Thu Apr 8 21:33:09 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: All leading indentation is now spaces only. Yet
+ another sync with grep.
+
+Thu Apr 8 20:45:25 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Move dfa internals into dfa.c and sync with grep. Avoids VMS and
+ z/OS compile problems in order to avoid cygwin issue when used
+ with ligsigsegv. ("Portability? We don't need no stinkin'
+ portability!")
+
+ * dfa.h: Move all the internals into dfa.c.
+ (dfaalloc, dfamusts, dfabroken): Add declarations.
+ * dfa.c: Accept all the internals.
+ (dfaalloc, dfamusts, dfabroken): New functions.
+ * awk.h (Regexp): Use a `struct dfa *'.
+ * re.c (make_regexp): Call dfaalloc. Adjust uses of dfareg
+ in other routines.
+ (refree): Free the dfa struct too.
+
+Tue Apr 6 23:06:55 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Further sync with GNU grep for enum change
+ and other misc changes.
+
+Tue Apr 6 20:13:45 2010 Michal Jaegermann <michal@harddata.com>
+
+ * main.c: Wrap declarations and bodies of `catchsegv' and
+ `catchstackoverflow' in #ifdef HAVE_LIBSIGSEGV to avoid
+ "not used" warnings.
+
+Tue Apr 6 20:11:47 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h: Move definition of token enum to dfa.c to avoid conflict
+ with Windows WCHAR introduced by libsigsegv. Thanks to Corinna
+ Vinschen.
+ * dfa.c: Enum body here.
+ (in_coll_range): z/OS fix: Initialize array to all zeros and assign
+ values instead of putting them into the initializer. Thanks to Dave
+ Pitts for reporting the problem.
+
+Fri Apr 2 12:32:40 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync with grep 2.6.3.
+
+Wed Mar 31 15:50:34 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfaexec): Move decl of `saved_end' up to top of function.
+ Fixes compilation on C89 compilers.
+
+Mon Mar 29 08:40:29 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ Remove local copy of libsigsegv. Use an external copy if available.
+
+ * Makefile.am: Remove SEGVSUBDIR and SEGVINCLUDE.
+ * configure.ac: Remove previous code that handled the library and use
+ gl_LIBSIGSEGV library.
+ * custom.h: Remove code for HAVE_SIGSEGV_H.
+ * main.c: Move to HAVE_LIBSIGSEGV.
+ * libsigegv/ : Removed.
+
+Mon Mar 29 05:41:35 2010 Corinna Vinschen <vinschen@redhat.com>
+
+ * dfa.c: Include hard-locale.h after xalloc.h because it needs
+ xmalloc.
+ * hard-locale.h (xmalloc): Remove declaration.
+ (hard_locale): Cast xmalloc to correct target type.
+
+Mon Mar 29 05:38:47 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c: (two_way_open): In counting down retries, test for > 0
+ instead of >= 0 since retries is unsigned. Thanks to Pat Rankin
+ for noticing.
+ * configure.ac: Remove use of -export-dynamic on cygwin.
+
+Thu Mar 25 21:48:13 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Sync to grep 2.6.1. That's probably enough for now.
+
+Wed Mar 24 19:48:01 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: More sync with grep.
+
+Tue Mar 23 19:42:48 2010 Jeff Chua <jeff.chua.linux@gmail.com>
+
+ * io.c (two_way_open): Bug fix in management of timeout value.
+
+Tue Mar 23 19:40:04 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Synced with released grep 2.6. Oh Frabjous Day!
+ Callou! Callay!
+
+Mon Mar 22 22:49:44 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.c: Regenerated using bison 2.4.2.
+
+Fri Mar 19 10:19:20 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Minor edits for compat with grep.
+
+Fri Mar 19 09:19:56 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (two_way_open): Cleanup new code for socket opens.
+ * replace.c: Include missing_d/usleep.c based HAVE_USLEEP.
+ * configure.ac: Add usleep to list of functions to look for.
+
+Thu Mar 18 23:30:33 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Imported from GNU grep and merged. Passes "make test".
+ * xalloc.h: New file, needed by dfa.c.
+ * Makefile.am (base_sources ): Added xalloc.h.
+
+Thu Mar 18 07:29:45 2010 Jeff Chua <jeff.chua.linux@gmail.com>
+
+ * io.c (two_way_open): Make failure to open a socket a non-fatal error.
+ Allow the amount of time to sleep during socket retries to come from an
+ undocumented env variable giving time in milliseconds.
+
+Mon Mar 8 20:58:05 2010 Paolo Bonzini <bonzini@gnu.org>
+
+ More fixes from GNU grep.
+
+ * dfa.c (dfaexec): Remove register keywords.
+ (FETCH): Use do..while(0) idiom.
+ (parse_bracket_exp_mb): Return MBCSET.
+ (in_coll_range): New.
+ (lex): Assign return value of parse_bracket_exp_mb to lasttok,
+ return it. Use in_coll_range instead of regcomp/regexec.
+
+Mon Mar 8 20:36:35 2010 Jim Meyering <jim@meyering.net>
+
+ Fixes from GNU grep development version:
+
+ build: avoid shadowing warnings
+ * dfa.c (match_mb_charset): Rename parameter: s/index/idx/.
+ (check_matching_with_multibyte_ops, match_anychar): Likewise.
+
+ build: avoid shadowing warning for unused "rs"
+ * dfa.c (transit_state): Remove dead stores;
+ Ignore transit_state_consume_1char return value.
+
+ syntax: remove trailing blanks
+ * dfa.c: Remove trailing blanks, to ease synchronization with grep.
+
+ clean-up: limit visibility of an internal function
+ * dfa.c (match_mb_charset): Declare static.
+
+ build: rename local to avoid shadowing global, dfa
+ * dfa.c (dfamust): Rename parameter: s/dfa/d/.
+
+Thu Feb 18 22:44:01 2010 Arnold D. Robbins <arnold@skeeve.com>0
+
+ * eval.c (push_args): Clear the stack to NULL pointers after mallocing
+ it. Fixes yesterday's problem when called from a rule.
+ See test/fcall_exit2.awk. Thanks to Seb <sbb@tuxfamily.org>.
+
+Wed Feb 17 23:19:32 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (pop_fcall): Check that argument on stack is not NULL before
+ attempting to clear it; add comment explaining it.
+ (push_args): Set nodes to zero for argument to make sure that values
+ are NULL for testing later in pop_fcall. See test/fcall_exit.awk.
+ Thanks to Seb <sbb@tuxfamily.org>.
+
+Sun Jan 31 22:46:49 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (prec_level): Add Node_regex to the switch so that
+ `! /xxx/' works. Thanks to Hermann Peifer <peifer@gmx.eu> for
+ reporting the bug.
+
+Thu Jan 28 17:40:14 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure, Makefile.am: Updated to Autoconf 2.65 and Automake 1.11.1,
+ libsigsegv 2.8.
+
+Thu Jan 21 23:24:56 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pprint): Separate out code for Node_switch_body and only
+ print the lnode; avoids printing the default case twice. Thanks to
+ Hermann Peifer <peifer@gmx.eu> for reporting the bug.
+
+Sun Jan 3 21:03:01 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Added casts as needed to silence warnings about
+ signedness of pointers from GCC 4.x.
+
+Fri Jan 1 11:41:50 2010 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): At pr_tail, remember to take the precision
+ into account when determining how many characters to copy out.
+ Thanks to tczy <cy@wre.ath.cx> for the bug report.
+
+Tue Dec 8 12:29:30 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac, awk.h: Remove use of <signum.h> header file.
+
+Mon Dec 7 15:25:02 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (format_val): Use <= and >= in the comparisons with
+ LONG_xxx instead of < and > so that things work correctly on systems
+ with 64 bit integers. Thanks to Stephen Davies for pointing out
+ the problem.
+
+Sat Nov 21 23:14:59 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): If there is not an actual thousands
+ separator character, don't let `quote_flag' have an effect. Fixes
+ test failure on Solaris 10, which bizarrely says to use the
+ thousands separator character every three digits, but then doesn't
+ actually supply one. Thanks to Nelson Beebe for the initial
+ report.
+
+Mon Nov 16 22:27:44 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (getnode): If MPROF wrap body in parentheses; remove
+ incorrect trailing semicolon.
+ * bisonfix.awk: Convert "y.tab.c" to "awkgram.c" for those rare
+ instances where we need to use a debugger on the parser so
+ that gdb will find the right source file.
+
+2009-10-26 Andreas Schwab <schwab@linux-m68k.org>
+
+ * io.c (iop_open): Set errno when rejecting a directory.
+
+Tue Oct 20 22:48:14 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (constant_fold): Fix check for two strings to look
+ at `right->flags'. Fix division code to check for division by
+ zero first. Thanks to Stephen Davies <scldad@sdc.com.au>
+ for both.
+
+Fri Oct 16 08:41:29 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): Do the close-on-exec setting before
+ attempt to get a FILE *. Thanks to Andreas Schwab.
+
+Wed Oct 14 23:25:47 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): When opening a file, set the close-on-exec flag.
+ Thanks to Chris Pearson <kermit4@gmail.com> for the bug report.
+
+Tue Oct 6 21:07:23 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): When an option requires an argument and we print a
+ message, call `usage' and exit.
+
+ Fix all calls to `usage' to use EXIT_FAILURE and EXIT_SUCCESS
+ instead of 1 and 0.
+
+Sun Oct 4 21:46:11 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Don't reset argv[0] to myname. In call
+ to `init_args', pass argv[0] if do_posix. Based on
+ Fedora bug report.
+
+Sun Oct 4 18:45:06 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): In lint warning, don't clobber
+ the character at the end of the subscript; instead use the
+ length to limit the number of characters printed. Thanks to
+ Nick Hobson <nick.hobson@yahoo.com>.
+
+Sun Aug 30 22:40:12 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_length): Handle the case where Node_var_new
+ was passed in as a parameter via a function call parameter.
+ Thanks to Greg Johnson <gregfjohnson@yahoo.com> for reporting
+ the bug.
+
+Tue Aug 11 19:23:51 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (parenthesize_expr): New function.
+ (tree_eval): Use it for Node_and and Node_or. Thanks to
+ Hermann Peifer <peifer@gmx.eu> for reporting the bug.
+
+Tue Aug 4 06:04:23 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): zero_flag does not apply to
+ %c and %s conversions. Thanks to Mike Brennan and Thomas Dickey
+ for the bug report.
+
+Tue Jul 21 22:28:56 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.7: Release tar file made.
+
+Fri Jul 17 08:35:10 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.c: Rebuilt with current Bison (2.4.1).
+
+Thu Jul 9 22:55:17 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * (NEWS README array.c awk.h awkgram.y builtin.c configure
+ configure.ac custom.h dfa.c ext.c field.c floatcomp.c io.c
+ main.c node.c profile.c re.c replace.c): Update copyrights
+ and other prep for a release.
+
+Thu Jul 9 22:20:04 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (init_locale): New function to make a deep copy of the
+ struct lconv. Thanks to KIMURA Koichi <kimura.koichi@canon.co.jp>
+ for the info.
+ * eval.c (r_tree_eval): Further improve Node_assign_concat code to
+ temporarily to keep reference counts correct and to get the
+ desired behavior.
+
+Mon Jul 6 20:29:12 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * floatmagic.h: Remove @ signs copied from Texinfo.
+ It would help if I were more awake.
+
+Sat Jul 4 21:55:18 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (base_sources): Add floatmagic.h so it'll
+ go into the tar ball.
+
+Fri Jul 3 13:47:36 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (is_scalar): Add Node_func_call to list.
+ (pp_concat): Make logic smarter for tree created by Node_assign_concat.
+
+Fri Jul 3 13:01:49 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (optimize_concat): New function that applies
+ Node_assign_concat more generally.
+ * eval.c (r_tree_eval): Improve Node_assign_concat code to temporarily
+ increase the stref on `l' to avoid side effects during evaluation of
+ `r'. This makes test/nasty.awk work. Ouch.
+
+Tue Jun 30 22:10:37 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * floatmagic.h: New file.
+ * builtin.c (format_tree): Use functions defined in floatmagic.h.
+
+Tue Jun 30 21:57:47 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac, Makefile.am: Add new --disable-libsigsegv command line
+ option to configure.
+ (LIBSIGSEGV, SEGVINCLUDE, SEGVSUBDIR): New variables that will be empty
+ if libsigsegv is disabled so nothing will happen, and that will have the
+ right values otherwise. They are then substituted into the Makefile.
+
+Wed Jun 24 23:00:10 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bootstrap.sh: Revised. Now works again. We think. (CVS-only file)
+
+Wed Jun 24 21:57:30 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h: Move z/OS EXIT_FAILURE definition from here to ...
+ * awk.h: Here. Define at end after regular definition.
+
+Thu Jun 18 06:17:38 2009 Scott Deifik <scottd@amgen.com>
+
+ * awk.h: Don't define HAVE_SIGSEGV_H for DJGPP.
+
+Thu Jun 18 05:38:42 2009 Dave Pitts <dpitts@cozx.com>
+
+ * custom.h: Changes needed for z/OS.
+
+Wed Jun 10 08:22:53 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (parse_escape): Add a lint warning if \x.. has more than two
+ hex digits.
+
+2009-06-08 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.17.
+
+Mon Jun 8 22:13:49 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Autoconf 2.63, Automake 1.11, Libtool 2.2.6a
+
+ * ltmain.sh: New file.
+ * configure.ac: Changes to keep infrastructure tools happy.
+ * alocal.m4, configure: Regenerated.
+ * Makefile.in, */Makefile.in: Regenerated.
+
+Mon Jun 8 07:43:25 2009 John DuBois <spcecdt@armory.com>
+
+ * builtin.c (mbc_byte_count, mbc_char_count): Make sure all declarations
+ come before executable code, for older compilers.
+ * dfa.c (insert): Ditto.
+ * io.c (devoopen): Ditto.
+
+Thu May 21 21:11:44 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Add simple constant folding.
+
+ * awk.h (do_optimize): New declaration.
+ (calc_exp): Add declaration.
+ * eval.c (calc_exp): Make non-static.
+ * main.c (do_optimize): New variable.
+ (opttab): Add new entry for --optimize.
+ (main): Add 'O' to optlist and code for argument parsing.
+ (usage): Update for new option.
+ * awkgram.y (Node_concat, Node_exp, Node_times, Node_quotient, Node_mod,
+ Node_plus, Node_minus): Call `constant_fold' to create the node in
+ the tree.
+ (constant_fold): New function.
+
+Fri May 15 16:02:01 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (getnode): For MPROF: Fix a typo.
+
+Fri May 15 14:10:44 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Function arguments cannot be reserved variable names, per POSIX.
+
+ * main.c (struct varinit): Add flags member.
+ (varinit): Add values for flags member (one or both of NON_STANDARD
+ or NO_INSTALL). Add entries for the rest of the gawk variables and
+ sort them, so that the table can be searched by ...
+ (is_std_var): New routine to see if a name is a standard variable.
+ * awk.h (is_std_var): Add declaration.
+ * awkgram.y (func_install): Use new routine and issue error.
+
+Wed Apr 22 07:42:05 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (sub_common): In code for handling \<dig> replacements,
+ first make sure that <dig> is within the range of parentheses sets
+ given, and then make sure that the subpattern start is not -1, meaning
+ that something actually matched. Thanks to Martin Olsson
+ <mnemo@minimum.se> for the bug report.
+ (do_length): Add a lint warning if `length' is passed an untyped
+ argument.
+
+Thu Apr 16 22:59:32 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (func_call): Save nloops_active; if after function returns
+ the actual nloops_active is greater than the saved value, it means
+ there was a return inside the loop body, so pop off the necessary
+ number of loops. Bug reported by Aleksey Cheusov <a.cheusov@gmail.com>.
+ Gawk was not leaking memory - that is, things were still pointed
+ to, but memory use could keep on growing.
+
+Fri Mar 27 10:59:11 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): Add lint warnings for fieldwidth and/or
+ precision in %%, and add lint warning for unknown format specifier
+ (e.g. %b). Thanks to "joanes.polus" <joanes.polus@laposte.net> for
+ the report.
+
+Wed Mar 18 18:15:41 2009 Pat Rankin <rankin@pactechdata.com>
+
+ * awk.h (EXIT_SUCCESS, EXIT_FAILURE): Move VMS-specific values
+ to vms/vms-conf.h.
+ (EXIT_FATAL): Define here instead of in msg.c.
+ * msg.c (EXIT_FATAL): Move definition to awk.h.
+
+Mon Mar 16 18:58:09 2009 Pat Rankin <rankin@pactechdata.com>
+
+ * main.c [#if HAVE_SIGSEGV_H]: For the #else case (VMS),
+ (stackoverflow_context_t): Dummy typedef for use in prototypes;
+ (stackoverflow_install_handler): Make macro expand to 0 rather
+ than nothing so that (void) cast on invocation of it works.
+
+ * main.c (catchstackoverflow): Don't return 0 from void function.
+
+Wed Feb 25 21:34:14 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (tokentab): Have only one copy of BEGIN / END.
+ (tokcompare): New function.
+ (check_special): Sort tokentab for EBCDIC systems.
+
+Sun Feb 15 22:39:30 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pp_delete): Print tree->exec_count to actually get
+ the value printed. Thanks to Hermann Peifer <peifer@gmx.eu>
+ for reporting the bug.
+
+Thu Feb 12 21:54:34 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Change to use EXIT_FAILURE.
+ * msg.c [EXIT_FATAL]: New macro.
+ * msg.c (r_fatal): Change to use EXIT_FATAL.
+ Thanks to Pat Rankin for pointing these out.
+ * re.c (reflags2str): Account for RE_SYNTAX_EMACS.
+ * awk.h: If not VMS, define HAVE_SIGSEGV_H.
+ * main.c: Check HAVE_SIGSEGV_H before including <sigsegv.h>. If not
+ there, define dummy macros.
+ (catchsegv, catchstackoverflow): Remove unneeded comment. Add return 0
+ for compilers that care.
+
+Mon Feb 9 05:24:52 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [CONST]: Renamed CONSTANT to avoid conflict with libsigsegv
+ on Windows.
+ * awkgram.y, field.c, re.c: Update all uses.
+
+Tue Feb 3 22:46:59 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (do_close): Wrap updating of ERRNO in check for not
+ do_traditional.
+
+Sat Jan 31 23:14:00 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): For '%s', don't count the multibyte
+ characters if we are just copying all the characters. Gives
+ big speedup. Thanks to Hirofumi Saito <hi_saito@yk.rim.or.jp>
+ for reporting the problem.
+
+Thu Jan 29 21:14:30 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (parse_field, re_parse_field, def_parse_field,
+ posix_def_parse_field, null_parse_field, sc_parse_field,
+ fw_parse_field): Add new last arg `in_middle'. Ignored by all
+ except re_parse_field.
+ (re_parse_field): Enhance logic to only allow ^ in a regex to match
+ if indeed at the beginning of a record.
+ (getfield): Adjust call to parse_field.
+
+Tue Jan 27 21:42:47 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes suggested by Toni Schilling <Schilling@equicon.de>,
+ as modified by feedback from Pat Rankin, and some help
+ from me.
+
+ * awk.h [WEXITSTATUS]: Improve definition for MSC and VMS.
+ [EXIT_SUCCESS, EXIT_FAILURE]: Define if they aren't.
+ * io.c, main.c, profile.c: Switch to using EXIT_xxx instead of
+ 0 and 1.
+ (main): Use constants instead of 0/1 for exit_val variable.
+ * eval.c (interpret): Map exit value from `exit' statement into
+ success / fail constants for VMS for exit_val variable.
+
+Tue Jan 20 07:35:34 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.h: Define __USE_GNU if not _LIBC; needed for non-GLIBC
+ systems such as, oh say, Mac OS X.
+
+Tue Jan 13 09:23:40 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.c, regex_internal.h: Remove some changes that are no
+ longer needed after sync with GLIBC.
+
+Mon Jan 12 22:27:10 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ Bi-annual sync with GLIBC.
+
+ * regexec.c, regex.h, regex_internal.c, regcomp.c, regex_internal.h,
+ regex.c: Reapply any portability patches specific to gawk.
+ * getopt.c: Sync with GLIBC.
+
+ Base versions:
+ getopt.c 1.57 Thu Jan 8 20:02:05 2009
+ getopt.h 1.21 Fri Mar 19 00:19:32 2004
+ getopt1.c 1.10 Tue Mar 9 10:35:37 2004
+ getopt_int.h 1.1 Tue Mar 9 10:31:19 2004
+ regex.c 1.129 Tue Sep 6 20:49:44 2005
+ regexec.c 1.99 Thu Jan 8 20:02:06 2009
+ regexec.c 1.99 Thu Jan 8 20:02:06 2009
+ regex.h 1.43 Wed Jan 16 10:09:47 2008
+ regex_internal.c 1.69 Thu Jan 8 20:02:06 2009
+ regex_internal.h 1.76 Thu Jan 8 20:02:06 2009
+ regcomp.c 1.120 Thu Jan 8 20:02:06 2009
+
+Mon Jan 5 23:07:58 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (devopen): Add a retry to calls to socketopen. Tunable
+ via undocumented GAWK_SOCK_RETRIES environment variable. Based
+ on code from Juergen Kahrs <Juergen.Kahrs@vr-web.de> after a
+ suggestion from Hermann Peifer <peifer@gmx.eu>.
+
+Mon Jan 5 22:48:39 2009 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): A getline from a directory is no longer
+ fatal; instead it returns -1. Thanks to Paolo <oopla@users.sf.net>
+ for the report.
+
+Mon Dec 29 22:04:57 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): Case for 's', improve logic for setting
+ the number of characters to copy, also at pr_tail. Based on
+ bug report by Hermann Peifer <peifer@gmx.net>.
+
+Thu Dec 11 21:23:50 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_length): If the wide string has zero length
+ but the bytes are more than zero, use the number of bytes.
+ (do_index): Similar also: fall back to byte count if the
+ bytes don't make a wide-character string.
+ Bug reported by "Carlos G." <charlie.brown.uy@gmail.com>
+
+ (do_substr): If defaulting to length of rest of the string,
+ do it based on the wide char string if it's valid.
+
+Fri Dec 5 11:12:11 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (free_rp): New function.
+ (redirect): Improved logic for yesterday's change, including
+ use of free_rp.
+ (close_redir): Use free_rp.
+
+Thu Dec 4 22:35:05 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): Only put the new struct redirect into
+ the list if the file or pipe could actually be opened. Fixes
+ a bug with the wrong return value of close, noticed by
+ Seb <sbb@tuxfamily.org>.
+ * dfa.c (parse_bracket_exp_mb): Don't zero out work_mbc->chars
+ after we malloc'ed it. Fixes a leak found by valgrind when
+ using UTF-8. (Hmmm. This got fixed in January 2007; It seems
+ to have crept back into the code in the August 2007 merge with
+ GNU grep. Sigh.)
+
+Mon Oct 20 11:47:59 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add -g3 and -gdwarf-2 to CFLAGS if compiling with
+ GCC and doing development. Should have done this ages ago.
+
+Sun Aug 31 22:03:55 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_BINMODE): Tighten up the code even more so
+ that it matches the documentation.
+
+Mon Aug 25 22:41:47 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_BINMODE): Tighten up the code to only allow
+ certain reasonable values when setting BINMODE.
+
+Fri Aug 22 14:43:49 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (nextfile): Users Strong In The Ways Of The Source can use
+ non-existant files on the command line without it being a fatal error.
+
+Wed Jul 30 23:10:51 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (research): Don't ever use DFA if need_start. It can
+ break on some weird cases. Reported by
+ "T. X. G." <leopardie333@yahoo.com>.
+
+Wed Jul 30 22:27:20 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_match): Add MAYBE_NUM flag to elements of array
+ created by `match' since data could come from user. Similar
+ semantics to `split'. Thanks to Dr. Dirk Zimoch <dirk.zimoch@psi.ch>
+ for reporting the bug.
+
+Tue Jun 24 07:44:06 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (insert): Reworked for significant speed improvement
+ by Johan Walles <johan.walles@gmail.com>. Imported from grep
+ bug list.
+ * profile.c (tree_eval): Do a return after all the built-in
+ variables instead of a break. Thanks again to Hermann Peifer
+ <peifer@gmx.eu> for finding the problem.
+
+Sun Jun 22 23:08:14 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (format_val): Restore old code to use %ld when the value
+ is within the range of a long; improves performance noticably for
+ applications that convert integers to strings. Use %.0f only for
+ integral values that are outside the range of a long. Thanks to
+ Hermann Peifer <peifer@gmx.eu> for pointing out the existence
+ of a problem.
+
+Fri May 23 12:08:24 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (epsclosure): Change type of `visited' from int to char for
+ potential speedup. Based on bug report to bug-grep list from
+ Johan Walles <johan.walles@gmail.com>.
+
+Wed May 14 05:55:48 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): For `%c' case, add a lint warning
+ if the value is greater than 255.
+ (mbc_byte_count, mbc_char_count): Remove unused variable `i'.
+
+Thu Apr 24 20:31:03 2008 Bruno Haible <bruno@clisp.org>
+
+ * main.c (main): Move call to catch SIGBUS to before installation of
+ libsigsegv handler, since on some systems libsigsegv installs its
+ own handler for SIGBUS.
+ [STACK_SIZE]: Add a constant instead of inline. ADR.
+
+Wed Apr 23 22:30:27 2008 Duncan Moore <duncan.m00re@btinternet.com>
+
+ * builtin.c (state): Do as an integer array for systems that need it.
+ (do_rand, init_rand): Modify call to `initstate' as needed.
+
+Wed Apr 23 22:22:06 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (prednames): Add an extra zero to final initializer to
+ silence a compiler warning. Reported by Duncan Moore
+ <duncan.m00re@btinternet.com>.
+
+Wed Apr 23 21:36:06 2008 Steffen Schuler <schuler.steffen@googlemail.com>
+
+ * field.c (fw_parse_field): Add code for multibyte case.
+
+Sat Mar 15 22:17:21 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_length): Handle the case of the parameter being
+ an array that was a function parameter.
+
+Tue Mar 11 22:49:11 2008 Kimura Koichi <kimura.koichi@canon.co.jp>
+
+ * builtin.c (format_tree): Fix call to mbc_byte_count to pass the
+ right number of characters based on the format type.
+
+Tue Mar 11 22:31:58 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * libsigsegv: Incorporated into the dist.
+ * Makefile.am (SUBDIRS): Added. Make it first so that the library
+ is built before gawk is.
+ (LDADD): Add the library.
+ (AM_CPPFLAGS): Add -I option to find <sigsegv.h> header.
+ * configure.ac: Add call to AC_CONFIG_SUBDIRS for libsigsegv.
+ * main.c (catchsegv, catchstackoverflow): New functions.
+ (main): Call into sigsegv library with them.
+
+Tue Mar 4 21:02:25 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (mbc_char_count, mbc_byte_count): New functions to return
+ the number of m.b. chars there are and the number of bytes needed to
+ copy them.
+ (format_tree): Use them for %s and %c cases to adjust precision and
+ for copying characters at pr_tail label.
+
+Thu Feb 14 14:05:01 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (init_args): Adjust type of third arg to remove warning from
+ GCC 4.2, add cast in call to make_string. Bleah.
+
+Fri Jan 25 12:13:39 2008 Dave Pitts <dpitts@cozx.com>
+
+ * README_d/README.zos: New file.
+ * Makefile.am: Add sed on y.tab.c to convert older Bison "parse error"
+ messages to "syntax error" messages.
+ * configure.ac: Added ZOS_USS changes.
+ * m4/arch.m4: Added ZOS_USS changes.
+ * m4/inttypes_h.m4: Added ZOS_USS changes.
+ * m4/inttypes.m4: Added ZOS_USS changes.
+ * m4/stdint_h.m4: Added ZOS_USS changes.
+ * awkgram.y: Added USE_EBCDIC changes for EBCDIC collating sequence.
+ * awk.h: Added ZOS_USS compile changes.
+ * eval.c: Added EBCDIC casetable and ZOS_USS changes.
+ * regcomp.c: Added btowc function for ZOS_USS.
+ * regex.h: Changed __string to __cstring to avoid ZOS_USS header usage.
+ * regex_internal.h: Added ZOS_USS changes and type defines.
+
+Sun Jan 13 08:16:38 2008 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (epsclosure): Replace MALLOC + zero-out-loop with CALLOC for
+ large potential speedup, based on bug report to bug-grep list from
+ Johan Walles <johan.walles@gmail.com>.
+ (dfaanalyze): Made a similar change.
+
+Fri Dec 21 11:22:16 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pprint): Add a missing `#ifdef PROFILING'.
+
+Thu Dec 13 22:19:19 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (parenthesize): Remove "!" from output string.
+ (tree_eval): Fix quotes for delete array case.
+ (pp_var): New function, call it as appropriate everywhere else.
+
+Fri Nov 30 11:11:52 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Use NULL as first argument to `getaddrinfo'
+ if any_remote_host is true. Should help on Non-GLIBC systems.
+
+Thu Nov 15 22:01:36 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (two_way_open): Case for ptys. Change search for letters
+ to avoid ASCII / EBCDIC problems.
+
+Mon Oct 22 08:49:05 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.6: Release tar file made.
+
+Sun Oct 14 23:19:12 2007 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am: Avoid GNU make-specific `make -C'.
+
+Sun Oct 14 19:37:01 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add check for `atexit', needed by replacement
+ version of `snprintf'.
+
+Sun Sep 30 21:50:59 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Rationalize locale's influence on %'g, strtonum, and input.
+
+ * awk.h (use_lc_numeric): Add declaration.
+ * builtin.c (format_tree): Add check for quote_flag and set
+ LC_NUMERIC so that The Right Thing gets done, then reset it.
+ (do_strtonum): Pass use_lc_numeric as second arg to isnondecimal.
+ * main.c (main): Have do_posix set use_lc_numeric also.
+
+Thu Sep 27 21:36:23 2007 Stepan Kasal <skasal@redhat.com>
+
+ * configure.ac: Do not instantiate version.c; remove the hack
+ to keep version.c from being removed upon `make distclean'.
+ * Makefile.am (version.c): New rule.
+ (.c.i, SUFFIXES): Remove, `.i' is unused.
+ (MAINTAINERCLEANFILES): Remove awkgram.c; Automake takes care of that.
+
+Wed Sep 26 14:40:13 2007 Eli Zaretskii <eliz@gnu.org>
+
+ * builtin.c (format_tree): Handle non-standard snprintf that
+ returns a negative value when the buffer is too small.
+
+Tue Sep 25 23:27:41 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ChangeLog: Removed all leading spaces. Fixed up formatting of
+ entries to have capital letter after the colon. Fixed a number of
+ entries to have the '*' in the right place. ASCII instead of ascii.
+ Capitalize Linux. (Is this anal-retentive or what? Sheesh.)
+
+Tue Sep 25 08:24:11 2007 KIMURA Koichi <kimura.koichi@canon.co.jp>
+
+ * awk.h: Add include of <io.h> for Visual Studio.
+ * regex_internal.h: Do the right thing for replacing alloca.
+
+Sat Sep 22 23:26:27 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_FIELDWIDTHS): Restore behavior of 3.1.4 that allowed
+ FIELDWIDTHS to be "" without crashing, and such a value has NF = 0.
+ Yet Another Dark Corner. Thanks to Glenn Zazulia <gnu@t1.zazu.com>
+ for pointing out the problem.
+
+ Unrelated:
+
+ * builtin.c (format_free): Make `quote_flag' not sticky. Thanks to
+ Ulrich Drepper for pointing this out.
+ * main.c (main): Adjust calls to `setlocale' and `localeconv' so that
+ the %'d flag will work even if not using the locale's decimal point.
+
+Thu Sep 20 21:02:41 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (hash, awk_hash, gst_hash_string): Add fourth argument
+ pointer to retrieve code. Only assign a value if not NULL.
+ Fix most places to pass NULL for fourth argument.
+ (assoc_lookup): Save the code in the node for use in growing the
+ array later.
+ (grow_table): Use the saved code instead of recomputing each time.
+ * awk.h (NODE hash): Add `code' member and `ahcode' macro.
+ (hash): Revise declaration.
+ * awkgram.y: Revise calls to `hash'.
+
+Tue Aug 21 17:47:07 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (copyleft): Cite version 3 of the license.
+ * dfa.c: Minor edits to sync with grep 2.5.3.
+
+Sat Aug 11 22:48:11 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * COPYING: Replaced with GPL 3.
+ * All other relevent files: Upgraded to GPL 3.
+
+Fri Aug 3 15:01:38 2007 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ * builtin.c (format_tree): Free `obuf' before call to `fatal'
+ to keep valgrind happy.
+
+Mon Jun 4 01:12:21 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * All relevant files: Updated copyright year to 2007.
+
+Mon May 28 08:06:15 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (use_lc_numeric): New variable, true for new
+ option `--use-lc-numeric'.
+ (optab): Add option "use-lc-numeric".
+ (usage): Add to usage message.
+ (main): Allow the --use-lc-numeric option to also use the
+ local decimal point.
+
+Fri May 18 16:26:00 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (_TANDME_SOURCE): Add test for ! _SCO_DS for
+ SCO systems. Thanks to John DuBois <spcecdt@armory.com>
+
+Tue May 15 13:14:04 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ General capability suggested by Michael May <mmlpz@t-online.de>.
+
+ * configure.ac: New option --disable-directories-fatal. Makes gawk
+ silently skip directories on the command line.
+ * io.c (iop_open): Add fourth parameter, pointer to flag which is set
+ to true if the file is a directory. In this case, close the fd and
+ return NULL.
+ (nextfile): Modify call to iop_open. Add logic to check for directory
+ and skip if --disable-directories-fatal was used. If the configure flag
+ was not used, then if do_traditional also skip.
+ (redirect): Modify call to iop_open and call fatal if isdir is true.
+
+Mon May 7 14:51:54 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * POSIX.STD: Updated.
+
+Wed May 2 19:29:56 2007 Stepan Kasal <kasal@ucw.cz>
+
+ Revert precedence of concatenation and | getline.
+ From mail dated 2005-10-31.
+
+ * awkgram.y (common_exp): Move the two rules for naked regexp and
+ the rule for "(...) in arr" to ...
+ (non_post_simp_exp): ... here ...
+ (simp_exp): ... and here, respectively. Fixes test/parsefld.awk/.
+ (simp_exp_nc): New nonterminal, needed to fix the
+ precedence of concatenation over "|getline".
+ (common_exp): Can also start with simp_exp_nc.
+
+Tue May 1 19:53:11 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Work around problem with /ab{0}c/.
+ * dfa.h (struct dfa): Add member `broken'.
+ * dfa.c (dfainit): Initialize it to false.
+ (lex): Set it if `minrep == maxrep && minrep == 0'.
+ * re.c (avoid_dfa): Check flag and return TRUE if set.
+
+Tue May 1 05:34:53 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add calls to AM_LANGINFO_CODESET, and gt_LC_MESSAGES.
+ Thanks to Matthew Burgess <matthew@linuxfromscratch.org>.
+
+Sun Apr 29 22:55:12 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (utf8_sb_map): Remove const if not __GNUC__ >= 3.
+ * regex_internal.h (re_dfa_t): Bracket bizarre macro call with
+ check for _LIBC.
+ Thanks to Nelson Beebe for finding both problems.
+
+Sun Apr 29 13:10:31 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_strftime): Add optional third argument to strftime()
+ which if non-zero or non-null means to use UTC.
+ * awkgram.y (tokentab): Allow three arguments to strftime.
+
+Fri Apr 27 11:44:27 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * README.cvs, bootstrap.sh: Added to CVS archive, not for
+ inclusion in tarballs.
+
+Fri Apr 20 16:48:30 2007 Pat Rankin <rankin@pactechdata.com>
+
+ * awk.h: Move inclusion of redirect.h before HAVE_func blocks.
+
+Tue Apr 24 21:55:36 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (research): In the multibyte case, fall back to the full
+ matcher if need_start, since there are bugs in the dfa matcher
+ in some obscure cases. Sigh.
+ * builtin.c (format_tree): When using %.0f instead of %d, assert
+ that we're not malloc-ing zero.
+
+Tue Apr 17 21:51:40 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Portability fixes for lsbcc from Nelson Beebe.
+
+ * configure.ac: Check for stddef.h header.
+ * regex.h: Use check and include header to get size_t definition.
+ * main.c: Update UPDATE_YEAR, add #ifdef for HAVE_MTRACE.
+
+Tue Apr 17 13:49:13 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add test for struct sockaddr_storage.
+ * io.c: Add macro to redefine sockaddr_storage as sockaddr.
+
+Tue Apr 17 05:45:19 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Make it static, to match declaration at the
+ top of the file. (Thank you GCC for not reporting this. Grr.)
+
+Fri Apr 13 00:29:24 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * replace.c: Only include missing/getaddrinfo.c if HAVE_SOCKETS
+ is defined. Avoids problems on VMS. Thanks to Pat Rankin.
+
+Tue Apr 10 18:53:04 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y, builtin.c, eval.c, ext.c, field.c, io.c,
+ node.c: Added some sanity to the lint warnings, to only
+ print them once if they are syntactic or of the type where
+ they don't need to be repeated. Switch to `short' instead
+ of `int', and in general use a variable named `warned', for
+ consistency.
+
+Sun Apr 8 16:49:28 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Add guard code to ifdef out "signed" for VMS. Thanks for
+ the heads-up to Pat Rankin.
+ * regcomp.c (utf8_sb_map, init_dfa): Move non-GCC code to initialize
+ this array into code, to preserve word-size independance.
+ * configure.ac: Add check for <arpa/inet.h>.
+ * io.c: Include <arpa/inet.h> if we have it, instead of keyed off
+ Tandem, needed on some Unix systems.
+ * awk.h, main.c, msg.c, awkgram.y: Move to use of CAN_USE_STDARG_H
+ instead of continuously repeating check for header and defined STDC
+ and STDC. Thanks to Pat Rankin.
+
+Fri Apr 6 15:28:09 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_length): Only print `length(array)' lint warning once.
+ * node.c (dump_wstr): Restore from being ifdef'ed out. Useful in case
+ it needs to be called from a debugger.
+ * regcomp.c (utf8_sb_map): Fix gcc-specific code.
+ * awk.h (snprintf): Add declaration in case not available on the system.
+ (Ceil, Floor): Add macros changing the name for VMS, in an attempt to
+ fix linkage problems.
+ * io.c: Simplify includes for internet headers and for getaddrinfo
+ defines.
+
+Wed Apr 4 23:38:24 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c [AI_ADDRCONFIG]: Add a definition in case it's not available.
+ * main.c (usage): Add comment for translators to add translation
+ bug report address.
+
+Wed Apr 4 18:26:45 2007 Pat Rankin <rankin@pactechdata.com>
+
+ * regexec.c (build_trtrable): Add missing #if HAVE_ALLOCA.
+
+Thu Mar 29 19:30:20 2007 Pat Rankin <rankin@pactechdata.com>
+
+ * re.c (make_regexp): Cast casetable to RE_TRANSLATE_TYPE.
+
+Mon Mar 19 12:35:00 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Finish removing references to STRTOD_NOT_C89.
+
+ * awk.h (gawk_strtod): Use now if there is no strtod.
+ * replace.c (strtod.c): Include if there is no strtod.
+ * configure.ac [GAWK_AC_FUNC_STRTOD_C89]: Removed.
+
+Mon Mar 19 12:17:16 2007 Kimura Koichi <kimura.koichi@canon.co.jp>
+
+ * dfa.c (dfaexec): Add check for half-width katakana characters in
+ character classes in ShiftJIS locale.
+ From mail originally sent Mon, 01 Aug 2005 09:07:55 +0900
+
+Fri Mar 9 11:53:25 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (rebuild_record): Assert that wide string is off when
+ creating new fields. Inspired by Karel Zak.
+
+Fri Mar 9 11:26:01 2007 Matthew Woehlke <mwoehlke@tibco.com>
+
+ * io.c (get_a_record): Limit the max amount read to SSIZE_MAX. Needed
+ on Tandem systems where this amount is incredibly small.
+
+Tue Mar 6 08:17:49 2007 Paul Eggert <eggert@cs.ucla.edu>
+
+ * node.c (is_ieee_magic_val): Don't rely on strncasecmp; it mishandles
+ ASCII bytes in some locales.
+ (get_ieee_magic_val): Use strtod if it works, relying on our handbuilt
+ code only if it doesn't work. This is more likely to do the right
+ thing with strings like "-nan".
+
+Tue Feb 27 20:51:29 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (AM_PROG_CC_STDC): Removed, per email suggestion
+ from Stepan Kasal some time ago.
+
+Tue Feb 27 20:44:07 2007 Aleksey Cheusov <vle@gmx.net>
+
+ * awk.h: Revise checks for MEMCPY_ULONG and MEMSET_ULONG
+ for MS Interix using MSVC.
+ * configure.ac (AC_CHECK_FUNCS): Add checks for memcopy_ulong
+ and memset_ulong.
+ From mail dated Tue Aug 30 12:38:39 2005.
+
+Mon Feb 26 12:47:10 2007 Tony Leneis <tleneis@cvrreg.com>
+
+ * dfa.c (dfacomp): Check that regexp is non-zero in length
+ also. Avoids problems with empty regex and IGNORECASE on
+ systems where `malloc(0)' returns a non-NULL pointer.
+ From mail dated Wed, 26 Oct 2005 15:42:07 -0700.
+
+Wed Feb 21 10:23:12 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * floatcomp.c (Floor, Ceil): Restore correct expression for Cray.
+ Then ifdef out the whole business, since it's likely to be obsolete.
+ Thanks to Paul Eggert.
+
+Mon Feb 19 12:28:47 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (format_val): Simplify code: always format the value
+ ourselves. Use %.0f if the value is integral.
+ * floatcomp.c (dval_out_of_range): Remove function, not needed.
+ (awknum_fraction_bits): Removed.
+ (adjust_uint): New function, defined IFF have uintmax_t.
+ * builtin.c (tmp_integer): Use adjust_uint.
+ Move include of <inttypes.h> and <stdint.h> ...
+ * awk.h: to here.
+ (awknum_fraction_bits): Removed.
+ (adjust_uint): Declare, or define as do-nothing macro.
+
+Sun Feb 18 17:43:33 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c, floatcomp.c: Add include of <math.h> to get
+ correct declarations of math functions.
+ * configure.ac: If doing development, add -DYYDEBUG and also
+ -fno-builtin for GCC.
+
+Wed Feb 14 19:42:08 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Add support for special infinity and NaN values in non-POSIX
+ mode, and in POSIX mode, just call system `strtod'.
+
+ * configure.ac [GAWK_AC_FUNC_STRTOD_C89]: Comment out.
+ * node.c (is_ieee_magic_val, get_ieee_magic_val): New functions.
+ (r_force_number): Adapt logic and use new functions.
+
+Tue Feb 13 13:02:32 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Move Paul's numeric stuff to a separate file to make code cleaner.
+
+ * floatcomp.c (awknum_fraction_bits): New variable.
+ (Floor, Ceil): Functions, moved here from macros in builtin.c.
+ (dval_out_of_range): New function for checking if double is in range
+ of long.
+ (FLT_RADIX, FLT_MANT_DIG, DBL_MANT_DIG, AWKSMALL_MANT_DIG,
+ AWKNUM_MANT_DIG, AWKNUM_FRACTION_BITS): Moved here from awk.h.
+ * awk.h: Add decls of stuff now in floatcomp.c.
+ * Makefile.am[base_sources]: Add floatcomp.c.
+ * builtin.c (tmp_integer): Refer to `awknum_fraction_bits'
+ instead of AWKNUM_FRACTION_BITS.
+ * node.c (format_val): Call `dval_out_of_range' instead of
+ inline coding the test.
+
+2007-02-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * node.c (format_val): Fix bug when handling numbers close to
+ LONG_MIN and LONG_MAX.
+ * awk.h (FLT_RADIX, FLT_MANT_DIG, DBL_MANT_DIG, AWKSMALL_MANT_DIG,
+ AWKNUM_MANT_DIG, AWKNUM_FRACTION_BITS): Moved here from builtin.c.
+ * builtin.c: Move those macros to awk.h.
+ * awk.h (DBL_FRACTION_BITS): New macro.
+
+Fri Feb 9 13:40:10 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
+
+ More Tandem fixes.
+
+ * configure.ac: Check in Tandem's zrldsrl library for dlopen.
+ * regex_internal.h: Move <alloca.h> include into ifdef.
+ * regexec.c: Bracket alloca uses. Fix GCC use of `?:'.
+
+Fri Feb 9 13:30:15 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * replace.c: Add include of snprintf.c. Ooops!
+ * configure.ac: Add check for mkstemp and tmpfile for replacement
+ snprintf.c.
+
+Tue Feb 6 14:33:51 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (format_val): Restructure a bit to remove need for and
+ use of goto.
+
+Sun Feb 4 16:35:21 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (field_spec, opt_incdec): New terminals.
+ (variable): Change definition of field reference to use field_spec.
+ See test/parse1.awk.
+
+Thu Feb 1 17:38:38 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c: Allow YYDEBUG to enable the `-D' option, not just
+ GAWKDEBUG.
+
+Wed Jan 31 19:30:26 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (format_val): Restore my test for numeric values
+ being representable, as it includes more conditions than
+ Andrew's, pending a thorough review of undealt-with emails on
+ the topic.
+ * regexec.c (proceed_next_node): Move check for NULL to after
+ variable declarations inside initial `if'.
+
+Wed Jan 31 19:25:21 2007 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ * configure.ac (getaddrinfo): Improve test, since this function
+ can be in libsocket on some systems.
+
+Mon Jan 29 15:33:10 2007 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ * Makefile.am (valgrind): Also call new valgrind-scan target.
+
+Mon Jan 29 12:44:54 2007 Andreas Schwab <schwab@suse.de>
+
+ * dfa.c (copytoks): Adjust index into multibyte csets when
+ copying an MBCSET token.
+
+Fri Jan 26 20:01:38 2007 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ * node.c (format_val): Test whether a numeric value is integral
+ simply by converting it to long and then back again, and checking
+ if the value matches. That's more robust than trying to test
+ whether the floating-point value is representable as a long.
+ * builtin.c (format_tree): Fix buffer overflow bug, off-by-one errors
+ in checking snprintf return codes, and use "%.0f" to implement "%d"
+ formatting. For octal or hex formatting, test whether the value
+ is integral by trying to convert back to floating point and seeing
+ if the value matches. This is more robust than trying to test
+ whether the floating-point value is representable as an integer.
+
+Tue Jan 23 17:49:28 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Initialize socketfd to avoid "may be used
+ uninitialized" warning.
+ * regexec.c (regexec, re_search_stub): Removed unused variable `dfa'.
+ * builtin.c (wide_tolower_toupper): Fix signedness of pointer in
+ allocation calls and in call to make_str_node.
+
+Mon Jan 22 12:57:19 2007 Kimura Koichi <kimura.koichi@canon.co.jp>
+
+ Deal with halfwidth katakana in SJIS locale inside character ranges.
+ Based on http://sources.redhat.com/bugzilla/show_bug.cgi?id=1149.
+ Changes affect non-__LIBC code only.
+
+ * regcomp.c (re_compile_fastmap_iter): Handle half-size characters.
+ * regexec.c (check_node_accept_bytes): Same.
+
+Thu Jan 18 22:19:01 2007 Karel Zak <kzak@redhat.com>
+
+ * node.c (free_wstr): Assert that type is Node_val.
+
+Thu Jan 18 12:18:47 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (re_compile_fastmap_iter): Declare `dfa' to be
+ be volatile. Fixes valgrind problem with the ignrcase test.
+ Sheesh. Gawk should now be valgrind-clean. We hope.
+
+Mon Jan 15 14:28:04 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Use getaddrinfo instead of gethostbyname, to handle IPV6
+ format addresses. Based on patch submitted by
+ Jan Pazdziora <jpazdziora@redhat.com>.
+
+ * configure.ac: Add getaddrinfo to list of checked functions.
+ * configh.in, configure: Regenerated.
+ * io.c: Rework includes based on HAVE_GETADDRINFO.
+ (socketopen): Reworked for getaddrinfo.
+ (devopen): Modified for new socketopen.
+ * replace.c: Include getaddrinfo.c if necessary.
+
+Sun Jan 14 12:19:53 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: For bad name in array subscripting, build a
+ valid node anyway to avoid invalid reads reported by valgrind.
+ * dfa.c (parse_bracket_exp_mb): Remove assignment of NULL
+ to work_mbc->chars, was losing data malloc'ed earlier. Thanks
+ to valgrind.
+ (state_index): Alway initialize d->states[i].mbps elements to zero.
+ (dfafree): Free allocated d->states[i].mbps.elems if needed.
+ * regex.c: Try harder to undef alloca.
+ * regex_internal.h (__mempcpy): Undef before redefinining for
+ more recent versions of GLIBC.
+
+Sat Jan 13 22:10:43 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (str2wstr): For count of zero from mbrtowc, set count to 1
+ and fall through to code that copies. Originally from Paul Eggert.
+
+ Unrelated:
+ * configure.ac: Add call to AC_USE_SYSTEM_EXTENSIONS, should help
+ on Tandem. This lets us remove AC_AIX and AC_MINIX.
+
+ From Matthew Woehlke <mwoehlke@tibco.com> for Tandem:
+
+ * awk.h (_TANDEM_SOURCE): Also define _XOPEN_SOURCE_EXTENDED.
+ * io.c (_TANDEM_SOURCE): Include more headers.
+
+Sat Jan 13 21:53:48 2007 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * field.c (set_FIELDWIDTHS): Avoid writing one past the end of
+ the array.
+ * node.c (r_force_number): Avoid reading uninitialized variable.
+
+Sat Jan 13 21:37:15 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (valgrind): New target based on idea from
+ Ralf Wildenhues for running valgrind on test suite.
+
+Sat Jan 13 21:24:54 2007 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ Enable more `--lint-old' warnings.
+ * awkgram.y: Warning about multiple BEGIN or END rules,
+ `index in array' outside of for loops, multidimensional arrays.
+ * field.c (set_FS): Warn about regex FS.
+ * node.c (parse_escape): Warn about `\b', `\f', `\r'.
+
+Sat Jan 13 20:56:56 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (wcasestrstr): Revert use of continue, reinstate goto.
+ Thanks to Andrew Schorr.
+ (free_wstr): Move zeroing of wsptr and wslen and clearing of flag
+ back outside the if.
+ * field.c (rebuild_record): In loop that copies fields to new record,
+ add call to `free_wstr'. This ensures that flag values are correct
+ and avoids double free later. Thanks to Karel Zak for pointing out
+ the problem.
+
+Fri Jan 12 14:01:51 2007 Dmitry V. Levin <ldv@altlinux.org>
+
+ * builtin.c (do_match): In addition to "gawk_mb_cur_max > 1" check,
+ check for positive string length.
+
+Fri Jan 12 13:57:20 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ Sync with GLIBC. Bi-annual this time.
+
+ * regexec.c, regex.h, regex_internal.c, regcomp.c:
+ Reapply any portability patches specific to gawk.
+ * regex_internal.h (build_wcs_upper_buffer): Fix return type
+ in declaration. Reapply any portability patches specific to gawk.
+ * regex.c: Add definitions for `bool', `true' and `false'.
+ Define `alloca' to something invalid to keep it from linking
+ in case a usage of `alloca' slipped through. Reapply any portability
+ patches specific to gawk.
+
+ Base versions:
+ getopt1.c 1.10 Tue Mar 9 10:35:37 2004
+ getopt.c 1.55 Fri Mar 24 10:59:56 2006
+ getopt.h 1.21 Fri Mar 19 00:19:32 2004
+ getopt_int.h 1.1 Tue Mar 9 10:31:19 2004
+ regex.c 1.129 Fri Mar 24 10:59:57 2006
+ regexec.c 1.97 Fri Mar 24 10:59:57 2006
+ regex.h 1.40 Mon Sep 25 20:03:05 2006
+ regex_internal.c 1.67 Mon Sep 25 20:03:05 2006
+ regex_internal.h 1.73 Fri Mar 24 10:59:57 2006
+ regcomp.c 1.112 Fri Mar 24 10:59:57 2006
+
+Fri Jan 12 12:28:51 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ABOUT-NLS, INSTALL, Makefile.in, aclocal.m4, config.guess,
+ config.rpath, config.sub, configh.in, configure, configure.ac,
+ depcomp, gettext.h, install-sh, missing, mkinstalldirs, ylwrap:
+ Updated to current autotools, Autoconf 2.61, Automake 1.10,
+ gettext 0.16.1.
+
+Thu Jan 4 18:23:50 2007 Dmitry V. Levin <ldv@altlinux.org>
+
+ * node.c (free_wstr): Zero wstptr and wstlen only if WSTRCUR
+ flag is set.
+ (str2wstr): Replace invalid `free' call with `free_wstr' call.
+
+Thu Jan 4 16:49:21 2007 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_match): Move freeing of wc_indices to outside if.
+ Thanks to Sven Wegener <swegener@gentoo.org> for the report.
+
+Thu Dec 21 14:32:13 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (arg_assign): Reassign the '=' only if not initing.
+ * profile.c (varname): Deleted.
+ (pp_concat): New function to print concatenations.
+ (tree_eval): Don't use `varname' anymore. Use `pp_concat'.
+
+Mon Dec 11 12:43:04 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (sub_common): Clear numeric flags on result
+ unconditionally.
+ * node.c (wcasestr): Replace `goto' with `continue'.
+
+Thu Nov 30 15:54:07 2006 Bruno Haible <bruno@clisp.org>.
+
+ * builtin.c: Change use of HAVE_LC_MESSAGES to defined(LC_MESSAGES).
+ Bruno suggested only for dcngettext, I did it everywhere (ADR).
+
+Wed Sep 6 02:04:32 2006 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * awkgram.y (get_src_buf): Adjust `source' and `sourceline' to
+ correctly handle mixed -f and --source options.
+
+Mon Aug 28 21:17:20 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * AUTHORS, FUTURES, LIMITATIONS, NEWS, POSIX.STD, PROBLEMS, README:
+ Added FSF copyright for no other reason than to satisfy the flunkies
+ running Savannah.
+ * Makefile.am: Removed `ansi2knr' from AUTOMAKE_OPTIONS also.
+
+Fri Aug 11 15:07:45 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_field, rebuild_record, set_record): Remove calls to
+ `free_wstr' since they're not needed.
+
+Sat Aug 5 22:04:24 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (unref): Call `free_wstr' for fields also. Thanks to
+ Andrew Schorr.
+
+Tue Jul 4 22:43:05 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (interpret): Node_assign_concat case: Turn off NUMBER and
+ NUMCUR flags in result. Sheesh. Thanks to
+ <Heiner.Marxen@DrB.Insel.DE> for finding the problem.
+
+Mon Jul 3 22:49:44 2006 Pat Rankin <rankin@pactechdata.com>
+
+ * main.c (load_environ): When AWKPATH is missing from ENVIRON[],
+ try to find it with getenv("AWKPATH") before resorting to DEFPATH.
+ Suggested by Galen Tackett.
+
+Mon Jul 3 00:27:59 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (INTERNAL_HANDLE): New constant for use by `iop_alloc'
+ when allocating an internal IOBUF.
+ (pidopen, useropen): Use it.
+ (iop_alloc): Add check for it and just return iop.
+
+Fri Jun 23 15:48:34 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (subn): At end for `do_sprintf' check, verify
+ that lnode is not NULL before using it to assign through.
+
+Sun Jun 18 22:27:25 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ Repair internal names like /dev/user, /dev/pid, as well as /dev/fd/N,
+ which have been broken for a long time but noone noticed.
+
+ * io.c (is_internal): New macro to check for internal file like
+ `/dev/user'.
+ (spec_setup): Reduce to two parameters, allocate logic is always true.
+ Add IOP_NO_FREE to flag.
+ (pidopen, useropen): Return `IOBUF *' instead of int. Fix
+ logic to test if `iop' parameter is NULL and if so to allocate it.
+ (specfdopen,): Return `IOBUF *' instead of int. Fix
+ logic to test if `iop' parameter is NULL and if so to allocate it.
+ Don't set IOP_NO_FREE in flag.
+ (iop_open): Remove `IOBUF iob' field from `struct internal' and its use
+ and the use of `spec_setup' from the code here. Change the check in the
+ call to the open function to look for NULL.
+ (get_a_record): Use `is_internal' in initial check for filling the
+ buffer to not try to call `read' on internal files. If true, set
+ the IOP_AT_EOF in the flag and return EOF.
+
+Fri Mar 24 13:05:56 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (get_src_buf): Remove function argument types from
+ declaration of `readfunc' to avoid bugaboos with VMS declaration
+ of `read' system call.
+
+Fri Mar 10 06:28:23 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (free_wstr): New declaration if MBS_SUPPORT, empty macro
+ otherwise.
+ * node.c (free_wstr): New function, inside MBS_SUPPORT. Frees the wide
+ string part of a node. Provided so that it can be used consistently
+ everywhere.
+ (format_val, r_dupnode, mk_number, make_str_node, unref): Use it.
+ * builtin.c (sub_common): Call `free_wstr' instead of doing it manually.
+ * eval.c (r_tree_eval): Same in Node_assign_concat case.
+ * field.c (set_field, rebuild_record, set_record): Add calls to
+ `free_wstr'.
+
+Mon Feb 13 22:45:34 2006 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_tree_eval): Node_assign_concat. Release any
+ wide string value and reset the WSTRCUR flag. Based on
+ bug report by Karel Zak.
+
+2006-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (awkgram.c): Use $(AWK), not awk, so that the rule
+ works on Solaris too (e.g., Solaris 10). Problem reported by
+ Andrew J. Schorr.
+
+Mon Dec 19 05:39:46 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (format_val): Account for overlow of conversion
+ from double to long. Shows up worse on 64-bit systems.
+
+Wed Dec 14 18:57:34 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_BINMODE): Fix logic of test for no numeric value.
+ Makes `gawk -v BINMODE=1 ...' work again. Thanks to Eli Zaretskii
+ <eliz@gnu.org> for pointing out the problem.
+
+Wed Oct 19 10:58:27 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main, arg_init): Only use the locale's decimal
+ point if do_posix is set. Too many people the world over
+ have complained about this.
+
+Fri Oct 7 13:54:09 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Enhancement to fix from 23 Sept 2005, suggested by Pat Rankin.
+
+ * awkgram.y (one_line_close): New function, closes open FILE * used
+ by `read_one_line'.
+ (fp): Static FILE * used by `read_one_line' and `one_line_close'.
+ * awkgram.y (read_one_line): Simplify check for call to `fdopen'.
+ (get_src_buf): New variable `closefunc' which is a pointer to a
+ function implementing the `close' system call interface.
+
+Fri Oct 7 13:23:29 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_FIELDWIDTHS): Fix off-by-one error in assignment
+ of sentinel value at end of FIELDWIDTHS array.
+
+Fri Sep 23 16:05:13 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (read_one_line): New function, mainly for debugging,
+ that reads one line of data at a time to pass back as a buffer.
+ Emulates the variable-length record filesystem of VMS, where
+ we first saw the problem fixed here.
+ (get_src_buf): New variable `readfunc' which is a pointer to a
+ function implementing the `read' system call interface. Based on
+ an environment variable, use `read_one_line' instead of `read'
+ for testing. Make the test for expanding the buffer smarter,
+ so that it doesn't grow unnecessarily.
+
+ Thanks to Galen Tackett (tackett_galen@bah.com) for reporting
+ the problem and to Anders Wallin and Pat Rankin for help
+ tracing and reproducing the problem and testing the fix.
+
+Fri Sep 9 15:06:07 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * hard-locale.h (xmalloc): Move declaration to file scope
+ for non-glibc systems and gcc 4. Thanks to Kito Danya Dietrich
+ <kito@gentoo.org>.
+
+Thu Aug 25 22:40:40 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (build_range_exp): Avoid `btowc' for single-byte
+ characters. Fedora Core 2, maybe others, have a broken version
+ that can't handle values > 127.
+
+Fri Aug 19 16:13:28 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regexec.c (proceed_next_node): Added a band-aid check at the
+ top of the first `if' to make sure that `mctx->state_log[*pidx]'
+ isn't NULL.
+
+Fri Aug 12 13:10:33 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (iop_alloc): Only free `iop' if it was malloc'ed in
+ the first place.
+
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Tue Jul 26 21:44:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Copyright dates on all relevant files updated to 2005.
+
+Wed Jul 6 17:09:02 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Minor cleanups:
+
+ * io.c (do_index): Remove unused variables `mbclen', `mbs1' and `mbs2'.
+ * node.c (wstrstr): Remove unsed variable `j'.
+ (dump_wstr): `#ifdef' out, not currently needed.
+ * eval.c (op_assign): Move decl of `t1' and `t2' into a separate block
+ for the `! HAVE_FMOD' case. Keeps the compiler quiet. Similar for
+ `ltemp'.
+
+Wed Jul 6 16:51:31 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (close_io): Now takes pointer to boolean parameter indicating
+ if there was a problem closing standard output or standard error.
+ Update it in the right places.
+ * awk.h (close_io): Update the declaration.
+ * main.c (main): New variable `stdio_problem'. Pass it to `close_io'.
+ Check the result and exit non-zero if there was a problem.
+ (usage, version): Print warning message if problems with stdout.
+
+ Unrelated:
+
+ * main.c (main): For call to `setlocale' for LC_MESSAGES, just use
+ `#ifdef LC_MESSAGES'. Per Bruno Haible <bruno@clisp.org>.
+
+Wed Jul 6 16:44:58 2005 Jim Meyering <jim@meyering.net>
+
+ * main.c (init_fds): If any of the STDIN_FILENO, STDOUT_FILENO,
+ STDERR_FILENO are initially closed, reopen them with permissions
+ contrary to common usage so that any reasonable attempt to use
+ them will evoke the same sort of error as reading or writing to
+ a closed file descriptor would.
+
+Mon Jul 4 09:38:29 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ More multibyte fixes from Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+ * node.c (format_val, r_dupnode): Spell `wstptr' correctly.
+ * regex_internal.c (build_wcs_upper_buffer): Label `offsets_needed'
+ should not be inside `#ifdef _LIBC'.
+ * regcomp.c (build_charclass): Fix declaration of `class_name' in
+ prototype to not be unsigned.
+
+Thu Jun 30 11:52:34 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (tree_eval): Node_not: Remember to print the exclamation
+ point! Thanks to Dan Nielsen <Dan.Nielsen@corporate.ge.com>
+ for the bug report.
+ * mbsupport.h: Fix spelling of HAVE_ISWUPPER. Thanks to
+ Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+Sun Jun 26 16:37:59 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Unrelated changes:
+
+ * builtin.c (do_length): Allow array argument to length().
+ Returns number of elements in array.
+
+ * awkgram.y (yylex): Ignore carriage returns in source code. Sigh.
+
+Wed Jun 15 22:12:15 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (isnondecimal): Check loc.decimal_point before using it.
+ Avoids problems with command line assignment when locale info may
+ not be set up all the way yet.
+
+Wed Jun 15 21:59:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (make_str_node): If working with multibyte characters, while
+ parsing string constants, keep multibyte characters together. This
+ avoids problems in cases where one of the bytes is backslash. Initial
+ patch supplied by Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+Tue Jun 14 21:50:37 2005 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ Use Exponentiation By Squaring for integer powers for ^ and ^=.
+
+ * eval.c (calc_exp, cal_exp_posint): New functions.
+ (r_tree_eval): Use them.
+
+Fri Jun 3 12:15:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Further change the hack at the end so that
+ it works on Mac OS X `sed'. Sigh.
+
+Thu Jun 2 22:44:01 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (TYPE_SOCKLEN_T): Use `int' as default type if can't
+ figure one out.
+ * awkgram.y: Warn that `//' is not a C++ comment. (:-)
+
+Thu Jun 2 20:55:27 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ From: Benno Schulenberg <benno@nietvergeten.nl>
+
+ * eval.c (func_call): Take message out of gettext call since it's for
+ debugging.
+ * ext.c (get_actual_argument): Fix formatting of message.
+
+Wed May 25 09:19:37 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Change hack at end that fixes Makefile to keep
+ version.c to use `sed' and not `ed'. More portable to OS/2, probably
+ other systems.
+
+Mon May 23 09:01:26 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Portability help from Jim Meyering.
+
+ * io.c: Rework ifdefs for <inttypes.h> and <stdint.h>. Test them
+ individually.
+ * configure.ac: Add AC_C_RESTRICT and code for socklen_t from rsync.
+ Check for isascii and btowc for regex.
+
+Sat May 14 22:49:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * wait_any (errno): Remove decl.
+ * gawk_popen: The pipe-simulated but not VMS or DOS version. Remove
+ decl/use of `strdup' in favor of `emalloc' and `strcpy'.
+
+Wed May 11 18:33:30 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ All files: Updated address of FSF to:
+
+ 51 Franklin Street, Fifth Floor
+ Cambridge, MA 02110-1301
+
+Wed May 11 18:19:03 2005 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use AM_GNU_GETTEXT([external]).
+ Reflect upgrade to gettext-0.14.4.
+ Reflect renaming of `jm_'-prefixed macros.
+ (AC_CONFIG_FILES): Remove intl/Makefile.
+
+ * Makefile.am (SUBDIRS): Remove intl.
+ (AM_CPPFLAGS): Remove -Iintl.
+
+Wed May 11 11:42:06 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Straighten out mess with `isblank' which is C99 <ctype.h> function.
+
+ * configure.ac: Remove check for `isblank' in call to AC_CHECK_FUNCS.
+ * regex_internal.h: #ifdef out definition of `isblank' and provide
+ `is_blank' function a la dfa.c.
+ * field.c: Ditto.
+ * regcomp.c: #ifdef use of `isblank' and add `is_blank' use instead.
+
+Mon May 9 08:29:37 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add type check for `socklen_t', fixes compile
+ warning on AMD/64 Linux.
+ * io.c (socketopen): Change type of socket length variables
+ to `socklen_t' from `size_t'.
+
+Thu May 5 22:00:03 2005 John E. Haque <j.eh@mchsi.com>
+
+ * io.c (iop_alloc): Let an input processor hook installed via
+ `register_open_hooks' open its own fd in case gawk does not know
+ how to open it.
+ (iop_open): Call `os_close_on_exec' after `iop_alloc'.
+ ADR: If `iop_alloc' returns NULL but the fd is valid, close
+ the fd to avoid an fd leak.
+
+Mon May 2 08:05:59 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (update_ERRNO): Don't use `return' in a `void' function.
+ * awk.h (AWKNUM): Back out use of `long double' based on LDBL_MANT_DIG.
+ * builtin.c (tmp_integer): Back out extra ifdefs.
+
+Fri Apr 29 13:01:05 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Look for `isblank' function.
+ * field.c: Add define for `isblank' if we don't have it.
+
+Fri Apr 29 12:01:33 2005 Julian Foad <julianfoad@btopenworld.com>
+
+ From grep. Doesn't seem to affect awk.
+
+ * dfa.c (lex): Fix bug #9519: "echo do^re | grep do^re" was
+ failing to find a match. [Towards end, set `lasttok' before
+ returning `c'.]
+
+Fri Apr 29 00:28:46 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Jump through an amazingly convoluted hoop to get
+ config.status to keep version.c upon `make distclean'. Seems to
+ work though.
+
+Thu Apr 28 23:40:02 2005 Stepan Kasal <kasal@ucw.cz>
+
+ * configure.ac (PRINTF_HAS_F_FORMAT): Some cosmetic changes.
+ (custom.h): Don't cat custom.h at the end of config.h; instead, use
+ AH_BOTTOM([#include "custom.h"])
+ * awklib/Makefile.am (AM_CPPFLAGS): Add $(top_srcdir) so that
+ custom.h can be found.
+
+Thu Apr 28 23:21:22 2005 Jim Meyering <jim@meyering.net>
+
+ * field.c (set_FIELDWIDTHS): Tighten up the code to accept FIELDWIDTHS
+ values in [1..INT_MAX], e.g., detect overflow and invalid strings,
+ and reject strings starting with `-'.
+
+Thu Apr 28 23:05:33 2005 Stepan Kasal <kasal@ucw.cz>
+
+ * dfa.c (parse_bracket_exp_mb): Shorten one part of the code, to get
+ closer to grep's copy.
+
+Thu Apr 28 23:00:58 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * builtin.c (format_tree) [#if VAXCRTL]: For floating point
+ formatting, reject zero_flag if using old VAXCRTL run-time
+ library to avoid getting erroneous results which appear as if
+ numerically incorrect (due to an embedded space in some cases,
+ extra trailing zeroes in others) rather than just misformatted.
+ `hsprint' test still fails, but not as badly.
+
+Thu Apr 28 19:12:03 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (reflags2str): Add three new RE_ flags from current regex.h
+ to bring the table up to date.
+
+ * builtin.c (format_tree): Save 2 spare bytes instead of one. Suggested
+ by Stepan Kasal.
+
+Thu Apr 28 18:16:09 2005 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ * awk.h (IOBUF): Add new fields `opaque', `get_record', and
+ *close_func', to support insertion of an alternate input processor.
+ This is used by the XML extension.
+ (register_deferred_variable, register_open_hook, update_ERRNO_saved):
+ Declare new functions.
+ (load_environ, load_procinfo): Remove declarations -- these functions
+ are no longer global, since we use register_deferred_variable instead.
+ * awkgram.y (register_deferred_variable): New function to allow
+ calling code to register special variable names that trigger a callback
+ upon the first reference. This is now used to implement ENVIRON
+ and PROCINFO.
+ (variable): Search the list of deferred variables instead of hardcoded
+ tests for ENVIRON and PROCINFO.
+ * eval.c (set_BINMODE): Fix spelling of "arbitrary" in warning message.
+ (update_ERRNO_saved): New function that allows the caller to specify
+ the errno value instead of using the current value.
+ (update_ERRNO): Implement by calling update_ERRNO_saved(errno).
+ * io.c (iop_close): Call `iop->close_func' if non-NULL.
+ (close_redir): Should save `errno' value, otherwise `lintwarn' messages
+ might update it. Then use `update_ERRNO_saved' to set ERRNO.
+ (do_getline): Call `update_ERRNO_saved' to set ERRNO based on the
+ error code returned by the redirect function (instead of the current
+ value of errno). Similarly, use `update_ERRNO_saved' to set ERRNO
+ based on the value returned by `get_a_record'. But add a special
+ check to avoid updating ERRNO if `get_a_record' returns an error
+ code value of -1 (this is used by the XML extension which already
+ sets ERRNO before returning).
+ (register_open_hook): New function to register a function to be
+ called whenever a new data file is opened. This can be used to
+ install a special input processor (as in the XML extension).
+ (iop_alloc): Call registered open hook.
+ (get_a_record): If a `get_record' method has been set, call that instead.
+ * main.c (init_vars): Use `register_deferred_variable' to implement
+ ENVIRON and PROCINFO.
+ (load_environ, load_procinfo): Now static instead of global.
+ * doc/gawk.texi: Document new internal functions `update_ERRNO_saved',
+ `register_deferred_variable', and `register_open_hook'.
+
+Thu Apr 28 10:50:10 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_find, do_delete): Change incorrect uses of STREQN
+ to memcmp.
+ * builtin.c (do_index): Same.
+ * field.c (set_FS): Same.
+ * io.c (redirect, getredirect, do_close, set_RS): Same.
+ * re.c (reisstring): Same.
+
+Wed Apr 27 21:35:57 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Allow for long double. Initial changes from Jean-Marc Saffroy
+ <jean-marc.saffroy@ext.bull.net>.
+
+ * awk.h (AWKNUM): If have long doubles (LDBL_MANT_DIG), define AWKNUM
+ as long double, otherwise just use double.
+ * builtin.c (format_tree): Change type of tmpval to double.
+ (do_strtonum): Same for `d' and types used in casts.
+ (tmp_integer): Don't do bit shifting if have long doubles.
+
+ Unrelated, from Andrew J. Schorr:
+
+ * io.c (close_one): Check for RED_FILE|RED_WRITE, not just RED_FILE.
+
+Mon Apr 25 12:23:18 2005 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * eval.c (r_tree_eval): In Node_assign_concat case, when copying string
+ constants, include the terminating zero byte.
+
+Fri Apr 1 06:26:31 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Automake 1.9.5.
+
+ * INSTALL, aclocal.m4, depcomp, install-sh, missing,
+ mkinstalldirs, ylwrap: Updated.
+
+ Unrelated:
+
+ * builtin.c (do_tolower, do_toupper): Remove old code
+ based on 8-bit character table.
+
+Wed Feb 23 08:23:22 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bisonfix.awk: New file, fixes continued #ifdef for dumb compilers.
+ * Makefile.am (awkgram.c): Fix rule to use it.
+ (EXTRA_DIST): Include bisonfix.awk.
+
+Tue Feb 22 21:18:50 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.h: Remove include of config.h and move it to ...
+ * random.c: Here. Move include of random.h back to where it was.
+
+ * regcomp.c, regex.c, regexec.c: NUKED all use of alloca not inside
+ `_LIBC' ifdef. Hooray!
+
+Sat Feb 19 20:13:28 2005 Pat Rankin <rankin@pactechdata.com>
+
+ Workarounds for bugs and missing C89 features in old VAX C compiler.
+
+ * regex_internal.h "mbsupport.h": Suppress inclusion if NO_MBSUPPORT
+ is defined.
+ [MB_CUR_MAX]: Define as 1 if mbsupport.h hasn't defined it.
+ [ER_ERRMSG, ERRMSG_TYPE, ERRMSG_OFFSET, ERRMSG_SEPARATOR]: New macros
+ conditionalized upon gawk's NO_TOKEN_PASTING macro.
+ * regcomp.c: Use them.
+ (parse_dup_op): Use alternate initialization of start_token if
+ RE_TOKEN_INIT_BUG is defined.
+ * regexec.c (proceed_next_node): Compare push_fail_stack() result
+ explicitly against REG_NOERROR rather than implicitly against 0.
+
+Sat Feb 19 20:05:50 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * dfa.c "mbsupport.h": Suppress inclusion if NO_MBSUPPORT is defined.
+
+Wed Feb 16 20:43:07 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * awk.h "mbsupport.h": Suppress inclusion if NO_MBSUPPORT is defined.
+ * regex.h <sys/types.h>: Guard inclusion with HAVE_SYS_TYPES_H.
+ * regex.c <sys/types.h>: Likewise.
+ * random.c "random.h": Include this first to get config.h setup.
+ <fcntl.h>: Guard inclusion with HAVE_FCNTL_H.
+ <unistd.h>: Guard inclusion with HAVE_UNISTD_H.
+ * io.c [#if defined(MSDOS) ||... defined(__CYGWIN__)]: Splice the
+ backslash continuation back into one long line.
+
+Wed Feb 16 10:11:21 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (unref, format_val): Add assertions checking that both
+ `tmp->wstptr != NULL' and `(tmp->flags & WSTRCUR) != 0' before
+ freeing `tmp->wstptr'. Thanks to kimura.koichi@canon.co.jp.
+
+ * random.c (HAVE_UNISTD_H): Conditionalize include of <unistd.h>.
+ Thanks to Scott Deifik <scottd@amgen.com>.
+
+Sun Feb 13 18:24:50 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Move `#ifdef MSG_PEEK' up to above
+ declarations too. Thanks to Michal Jaegermann.
+
+ * config.guess, config.sub: Updated from Savannah.
+
+Thu Feb 10 15:48:48 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.c (re_dfa_add_node): Remove variable `type'
+ and just use `token.type' directly in RE_ENABLE_I18N code below.
+ Saves a compiler warning, and a good compiler will handle it anyway.
+ * regexec.c (check_arrival_add_next_nodes): Move decl of `err'
+ inside #ifdef RE_ENABLE_I18N code where it's used.
+ * awkgram.y (yylex): Add casts to int before use of `strlen' results
+ for printf-style precision. Avoid a compiler warning.
+ * io.c (redirect, do_close): Same for use of tmp->stlen.
+
+ Thanks to Michal Jaegermann <michal@harddata.com>.
+
+Wed Feb 9 10:19:15 2005 Stepan Kasal <kasal@ucw.cz>
+
+ * Makefile.am (datadir, libexecdir): Removed.
+ (awkdatadir): Renamed to pkgdatadir.
+ (pkgdatadir, LDADD): Use the make syntax to refer to other variables,
+ not @...@.
+
+Wed Feb 9 10:05:46 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (r_dupnode): Assign NULL to r->wstr after `getnode'.
+ Fix count of bytes to copy in call to `memcpy'.
+ Thanks to Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+Tue Feb 8 19:26:22 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * regcomp.c (init_dfa): Avoid strcasecmp() since regex.c doesn't
+ use awk.h and none of the assorted other included header files
+ are guaranteed to declare it.
+ (parse_expression): Modify casts for the string arguments passed to
+ build_charclass_op() to fix char * vs unsigned char * mismatch.
+ (parse_bracket_exp): Likewise add cast for the string argument
+ passed to build_charclass().
+
+Mon Feb 7 15:04:09 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (make_scalar): Don't use P() macro in definition.
+ Thanks to Juergen Kahrs <Juergen.Kahrs@barco.com>.
+
+Wed Feb 2 16:36:19 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Call `close_io', without its result affecting
+ the exit status. Super small, super dark corner.
+
+ See test/exitval2.awk.
+
+Tue Feb 1 11:58:29 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.h (__APPLE_CC__): Removed test and definition of __restrict.
+ Not needed for current MacOS X compiler.
+
+Sun Jan 30 13:56:37 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fresh merge with CVS regex routines. Fixes handling of \B.
+ See tests/gnureop3.awk and also
+ http://sources.redhat.com/bugzilla/show_bug.cgi?id=693.
+
+ CVS base versions:
+
+ * regcomp.c: Version 1.92, Thu Jan 27 19:05:20 2005.
+ * regexec.c: Version 1.77, Thu Jan 27 19:06:34 2005.
+ * regex_internal.c: Version 1.49, Thu Jan 27 19:07:15 2005.
+ * regex_internal.h: Version 1.60, Wed Jan 26 22:40:50 2005.
+ * regexec.c: Version 1.77, Thu Jan 27 19:06:34 2005.
+
+Sat Jan 22 22:30:40 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Reinstate patch of 18 Nov 2001, for VMS, at least:
+
+ * random.c (srandomdev): ifdef-out. Lots of compile time
+ problems on multiple platforms, and gawk doesn't even
+ use the routine. The heck with fine-grained solutions.
+
+Thu Jan 20 14:15:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (LEX_FOR): Free NAME tokens in transformation of
+ `for (iggy in foo) delete foo[iggy]' into `delete foo'.
+ Thanks and a tip of the hatlo to Valgrind.
+
+ * dfa.c (_): Clean up stuff here by just including "gettext.h".
+ Per Bruno Haible.
+
+Wed Jan 19 18:29:23 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Improve parsing of numeric constants
+ and hex values, via a push from Paul Eggert. See test/hex.awk.
+
+ * regex_internal.c (re_node_set_alloc): If `size' is 0, just
+ zero out the structure. From valgrind.
+
+Tue Jan 18 17:23:25 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Make gawk multibyte aware. This means that index(), length(),
+ substr() and match() all work in terms of characters, not bytes.
+
+ * awk.h (NODE): Add `wsp' and `wslen' elements to value for wide
+ string.
+ (WSTRCUR, wstptr, wstlen, force_wstring): New macros.
+ (str2wstr, wstrstr, wcasestrstr): New declarations.
+ * builtin.c (do_index, do_length, do_substr, do_match): Handle wide
+ strings.
+ * eval.c (flags2str): Add WSTRCUR.
+ * node.c (format_val, r_dupnode, mk_number, make_str_node, unref):
+ Add code to deal with wide strings.
+ (str2wstr, dump_wstr, wstrstr, wcasestrstr): New functions.
+
+Sun Jan 16 15:10:35 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.h (int32_t): Define this type.
+
+Thu Jan 13 14:38:13 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Cause `configure --disable-nls' to still allow locale-correct
+ formating of numeric values.
+
+ * builtin.c (format_tree): Change #ifdefs to only test HAVE_LOCALE_H.
+ Improve code for ' flag so that extraneous separator is not included if
+ number of digits is multiple of locale separater count (3, 6, 9, etc.)
+ * dfa.c (dfaparse): Change ifdef to only test #ifdef LC_COLLATE.
+ * eval.c (fmt_ok): Remove ENABLE_NLS from #ifdef test.
+ * gettext.h: Include <locale.h> on both sides of test. Should really
+ be factored out.
+ * main.c (loc): Remove ENABLE_NLS from #ifdef test.
+ (main): Same in call to localeconv().
+ * node.c (isnondecimal): Remove ENABLE_NLS from #ifdef test.
+
+ Unrelated:
+
+ * regcomp.c (init_dfa): Change `codeset' to `codeset_name' in two
+ places.
+
+Mon Jan 10 11:49:56 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Annual sync with glibc.
+
+ * getopt_int.h: New file.
+ * Makefile.am (base_sources): Add it.
+ * getopt.h, getopt.c, getopt1.c: Updated.
+ * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h,
+ regexec.c: Updated.
+
+ Original versions:
+
+ getopt_int.h, 1.1, Tue Mar 9 10:31:19 2004
+ getopt1.c, 1.10, Tue Mar 9 10:35:37 2004
+ getopt.h, 1.21, Fri Mar 19 00:19:32 2004
+ getopt.c, 1.53, Wed Mar 10 23:13:26 2004
+ regcomp.c, 1.87, Mon Dec 6 02:56:42 2004
+ regex.c, 1.126, Fri Jan 30 05:19:58 2004
+ regex.h, 1.33, Thu Nov 18 23:50:57 2004
+ regex_internal.c, 1.46, Thu Jan 6 20:59:49 2005
+ regex_internal.h, 1.57, Mon Dec 27 16:29:05 2004
+ regexec.c, 1.75, Mon Dec 27 16:29:52 2004
+
+ * regex.h: Add check for __APPLE_CC__ and definition of __restrict.
+ * regex.c: Add check for _MSC_VER and include <stdio.h>.
+ * regex_internal.h (_RE_ENABLE_I18N): Change test.
+ (re_realloc): Add check/fix for SunOS 4.1.x.
+ * regex_internal.c (build_wcs_upper_buffer): ifdef label
+ `offsets_needed', add cast in call to `wcrtomb'.
+ * regcomp.c (build_charclass, build_charclass_op): Remove `unsigned'
+ from declarations of `char *' params.
+ (regerror): Remove use of mempcpy.
+ (peek_token): Disallow \s and \S for gawk.
+ (build_charclass): Change decl of `class_name' and use it directly.
+ Nuke variable `name'.
+ (build_charclass_op): Change decl of `class_name' and `extra'.
+
+Thu Jan 6 16:44:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Improve autoconfiscation stuff for wide character use.
+
+ * builtin.c (do_tolower, do_toupper): Conditionally compile
+ call to `wide_tolower_toupper'.
+ (wide_tolower_toupper): Conditionally compile typedefs and function.
+ * mbsupport.h: Add check for having `wint_t', and `iswlower',
+ `iswupper', `towlower' and `towupper'.
+ * configure.ac (HAVE_WINT_T): Add test.
+ (AC_CHECK_FUNCS): Add `wint_t', `iswlower', `iswupper', `towlower'
+ and `towupper'.
+
+ Unrelated change:
+
+ * hard-locale.h (hard_locale): Add decl of `xmalloc' to prevent
+ redeclaration problems on some compilers.
+
+Wed Jan 5 10:20:17 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Bison 2.0.
+
+ * bisonfix.sed: Removed, no longer needed.
+ * Makefile.am (EXTRA_DIST): Removed bisonfix.sed.
+ (awkgram.c): Fix build rule.
+ * awkgram.c: Regenerated.
+
+Tue Jan 4 18:47:56 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Automake 1.9.4.
+
+ * alocal.m4, config.guess, config.sub, install-sh: Updated.
+
+Mon Jan 3 14:08:27 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Automake 1.9.3.
+
+ * INSTALL, alocal.m4, config.guess, config.sub, depcomp,
+ install-sh, missing, ylwrap: Updated.
+
+Mon Jan 3 11:23:36 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix obscure issue. ^ in RS should only match at the very
+ beginning of the input. Essentially, the file is one long
+ string. To do this, use the `not_bol' flag in the `struct
+ pattern_buffer'. Thanks to Stepan Kasal for pointing out the
+ problem and to Andreas Schwab for pointing out the mechanism
+ for a solution.
+
+ * awk.h (RE_NEED_START, RE_NO_BOL): New flags for `research'.
+ (IOP_AT_START): New flag for IOBUF.
+ (research): Last parameter is now `flags'.
+ * builtin.c (do_match, sub_common): Change calls to `research'.
+ * eval.c (interpret, match_op): Same.
+ * field.c (re_parse_field): Same.
+ * io.c (spec_setup): Add IOP_AT_START flag.
+ (iop_alloc): Same.
+ (rsrescan): Modify logic to check IOP_AT_START and if not on to
+ add RE_NO_BOL to flags value in call to `research'.
+ (get_a_record): Clear IOP_AT_START upon return from `*matchrec'.
+ (iopflags2str): Add IOP_AT_START to table. Also IOP_CLOSED,
+ which was missing. (Ooops.)
+ * re.c (research): Last paramater is now flags. Modify logic to
+ handle RE_NO_BOL case by setting the right bit initially. Clean
+ up control flow so that it's cleared before returning. If RE_NO_BOL,
+ don't bother with the dfa matcher, as it doesn't have an analogous
+ capability.
+
+Wed Dec 22 12:33:48 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ For --exec, don't allow x=y assignments where filenames would be.
+ Do allow -v. This is because we assume --exec is used mainly for
+ CGI stuff and we don't want var assigns to affect the code.
+
+ Suggested by Stepan Kasal; motivated by reading about web security.
+
+ * main.c (disallow_var_assigns): New variable.
+ (main): Set the var for --exec.
+ (arg_assign): Check it appropriately.
+
+Sun Dec 19 17:27:09 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_gensub): Make `global' flag smarter, such that
+ a string numeric constant (e.g., "3") acts like a numeric
+ constant.
+ * node.c (r_force_number): Not really related: Only set NUMCUR
+ if we actually convert some digits.
+
+Sun Dec 19 16:08:50 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Synchronize with what's happening in GNU grep
+ development. Effectively only minor whitespace changes and some
+ slight code motion of ifdefs and includes.
+ * hard-locale.h: New file, extracted from old dfa.c.
+ * Makefile.am (base_sources): Add hard-locale.h.
+
+Sun Dec 19 11:13:45 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Change type of `readle' and `namelen'
+ variables to size_t. For QNX, but a good idea anyway. Thanks
+ to `Anthony' (rz1a@mail.ru).
+
+Mon Dec 6 11:11:22 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Undid change of Mar 9 2004, to add gofast patch. It gets things
+ wrong for gawk. This removes the bandaid of ifdef-ing out the
+ main check. Eventually this'll all get straightened out in the
+ GNU grep code.
+
+ * dfa.c (buf_offset): Removed.
+ (SKIP_REMAINS_MB_IF_INITIAL_STATE): Removed use of buf_offset, do
+ free `mblen_buf', `inputwcs'.
+ (match_anychar, match_mb_charset, transit_state_consume_1char,
+ transit_state): Remove use of buf_offset in mblen_buf.
+ (dfaexec): Use `free' and `malloc', not `realloc'.
+
+Mon Dec 6 10:55:37 2004 Fumitoshi UKAI <ukai@debian.or.jp>
+
+ Forwarded from james@nocrew.org, the Debian contact.
+
+ * dfa.c (parse_bracket_exp_mb):
+ 1. Build range correctly when IGNORECASE for [a-a] to also get 'A'.
+ 2. For [:lower:] and [:upper:], if ignoring case, set type string
+ to "alpha". This parallels code in the regex routines.
+ 3. Reset wc1 to EOF when parsing bracket expressions.
+
+Mon Nov 29 18:36:25 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): When allocating a new struct redirect, set
+ rp->pid to -1, not 0, so that code checking for EOF on an
+ input pipe works correctly.
+
+Thu Nov 25 14:22:41 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * Makefile.am (MAINTAINERCLEANFILES): Add.
+ * version.in (version_string): Use PACKAGE_STRING.
+
+Tue Nov 23 17:27:38 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * re.c: Fix a typo in a comment.
+
+Mon Nov 22 16:47:00 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Add lint check for tawk style modifiers on
+ regexes, /.../i and /.../s. Not that it'll help anyone.
+
+Wed Oct 27 14:25:18 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * builtin.c (do_tolower, do_toupper): Fix the wide char handling,
+ especially when the lowercased char doesn't ocuppy the same
+ number of bytes as its uppercase equivalent. Make use of ...
+ (wide_tolower_toupper): ... this new static function.
+
+Mon Oct 25 11:51:14 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (bchunk, bchunk_one, cksize): Change type of `olen'
+ to size_t from long. It is the 21st century now, after all...
+ Thanks to Stepan Kasal.
+
+Mon Oct 11 10:49:09 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Improve lint warnings for non-decimal constants.
+ * node.c (isnondecimal): Made a little smarter, thanks to Stepan Kasal.
+
+Thu Oct 7 21:59:38 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfamust): Redo fix of 22 Sep to match code from
+ current GNU grep.
+
+Sun Oct 3 23:06:00 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (isnondecimal): Made smarter, so that 0xEE does
+ register as non-decimal. Added parameter to indicate use of
+ locale's decimal point and changed declaration and callers.
+
+Tue Sep 28 18:38:17 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (isnondecimal): New function, now smarter.
+ * awk.h (isnondecimal): Changed from macro to function.
+
+Wed Sep 22 11:24:46 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfamust): At end, check results of `malloc'.
+ Based on bug report from Sorav Bansal <sbansal@stanford.edu>
+ for grep.
+
+Mon Sep 20 13:18:18 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ New --exec option. Needed for gawk CGI scripts to prevent
+ arbitrary options and/or source getting passed in from the web.
+
+ * main.c (optab): New long option, --exec.
+ (main): Catch it. Like -f but end option processing.
+ (usage): Add it to the usage message.
+
+ Thanks to John DuBois and Don Stokes for their input.
+
+ Unrelated:
+
+ * dfa.c (dfaexec): Disabled caching into buffer that bypasses
+ multibyte initialization, since it can get things wrong. Thanks
+ to Andreas Schwab <schwab@suse.de>.
+
+Mon Sep 20 12:59:42 2004 Andreas Schwab <schwab@suse.de>
+
+ * awkgram.y (nextc): Check for end of lexer buffer before
+ advancing ring buffer index.
+
+Wed Sep 8 09:54:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Force LC_NUMERIC locale to "C" before parsing
+ the program, since a variable assignment with -v can leave the
+ locale set incorrectly.
+
+ Thanks to Sirix <sirix@poczta.onet.pl> for reporting the problem.
+
+Wed Aug 25 18:55:30 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (UPDATE_YEAR): New constant at top of file, where we
+ won't miss it.
+ (copyleft): Use it.
+
+Sun Aug 22 17:26:39 2004 Stepan Kasal <kasal@ucw.cz>
+
+ Define gawk_mb_cur_max even if there is no mbs support, as
+ ``const int'' and assign 1 to it.
+ This fixes a bug in re.c where #ifdef MBS_SUPPORT was missing.
+
+ * awk.h (gawk_mb_cur_max): Declare.
+ * main.c (gawk_mb_cur_max): Define.
+ * awkgram.y (nextc_is_1stbyte): Without mbs support, define to 1.
+ * builtin.c (index_multibyte_buffer): Define a dummy function
+ when there is no mbs support.
+ * awkgram.y, builtin.c, re.c: Remove some `#ifdef MBS_SUPPORT'.
+
+Sun Aug 15 22:08:04 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Import current FreeBSD random.c. Make it work for gawk.
+ Needed for cases where long is more than 32 bits.
+
+ * random.c: Imported from FreeBSD. Header includes tweaked.
+ * random.h: Typdef gawk_uint32_t appropriately and #define uint32_t
+ to it.
+ * configure.ac: Add calls to AC_CHECK_SIZEOF for unsigned int
+ and unsigned long.
+
+ Started with
+ http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/random.c
+ Thanks to Andreas Schwab <schwab@suse.de> for the pointer.
+
+Thu Aug 12 13:09:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (copyleft): Fix copyright year.
+
+Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.4: Release tar file made.
+
+Mon Aug 2 12:17:40 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Fix the hack. Do the sed on `Makefile',
+ not `Makefile.in'. Sigh.
+
+Sun Aug 1 14:48:30 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: MAJOR HACK: At end, remove version.c from Makefile.in
+ variable `CONFIG_CLEAN_FILES' so that `make distclean' doesn't
+ remove version.c.
+
+Mon Jul 19 17:07:27 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess, config.sub: Updated from Savannah CVS.
+
+Fri Jul 16 10:59:07 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (make_regexp): Bracket code using `gawk_mb_cur_max'
+ inside `#ifdef MBS_SUPPORT'.
+
+Thu Jul 15 12:36:25 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (parse_bracket_exp_mb): If doing case folding,
+ include the other case for regular characters inside [...].
+
+ * re.c (make_regexp): Smarten up handling of IGNORECASE,
+ particularly for multibyte character sets. Sigh.
+
+Wed Jul 14 16:25:23 2004 John Haque <mary1john8@earthlink.net>
+
+ * eval.c (interpret): For `Node_K_return', use `copynode'
+ and not `dupnode' for non-PERM, non-TEMP values.
+ (func_call): Don't add TEMP flag to returned value.
+
+ These two fix a problem uncovered by the July 8 change in
+ `assoc_lookup'.
+
+Wed Jul 14 16:14:09 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (node_common): Add check `lexeme >= lexptr_begin',
+ from valgrind run.
+
+Wed Jul 14 16:00:51 2004 John Haque <mary1john8@earthlink.net>
+
+ * io.c (rsrescan): Fix off by one error at end of record.
+
+Thu Jul 8 16:59:51 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * awkgram.y (output_redir): Make sure not to dereference NULL
+ pointer. The bug was triggered by the following code:
+
+ gawk 'BEGIN{print "date" |& getline}'
+
+ No test case created, beacuse of the following:
+ Correct interpretation involves executing "1" or "0" -- as the user
+ may have defined this, we would have to override this in the test
+ script. It's not worth the hassle.
+
+Thu Jul 8 12:59:49 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (load_casetable): Name changed from `load_ignorecase'.
+ * eval.c (load_casetable): Name changed from `load_ignorecase'.
+ Fix all uses.
+
+Thu Jul 8 12:32:13 2004 John Haque <mary1john8@earthlink.net>
+
+ * awkgram.y (get_src_buf): Fix off-by-one error to avoid "does not end
+ in newline" messages.
+ * array.c (assoc_lookup): Small performance hack: for TEMP subs nodes,
+ use its string memory for ahname.
+ * ext.c (get_actual_argument): Minor code cleanup.
+ * builtin.c (do_lshift, do_rshift, do_and, do_or, do_xor, do_compl):
+ fixed to issue "non-numeric argument" lint warnings before using
+ `force_number'.
+
+Mon Jun 21 16:53:35 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ More changes from John Haque to rationalize extension functions.
+
+ * awk.h (get_curfunc_arg_count): Name changed from
+ `get_curfunc_parm_count'.
+ * eval.c (get_curfunc_arg_count): Ditto, body redone to count actual
+ args passed at call time.
+ * ext.c (get_argument): Update range check.
+ (get_actual_argument): Simplify the code.
+
+Mon Jun 14 14:01:16 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes from John Haque and ADR to rationalize extension functions.
+
+ * awk.h (check_special, get_curfunc_parm_count, get_actual_argument):
+ new function declarations.
+ (get_scalar_argument, get_array_argument): New macros.
+ * awkgram.y (check_special): New function.
+ (yylex): Use `check_special' to search `tokentab'.
+ (dump_funcs): Always count functions, in order to get dynamic ones.
+ Removed bogus use of `static' on `tab' variable.
+ * eval.c (struct fcall): Change type of `count' to `size_t'.
+ (get_curfunc_parm_count): New function.
+ (push_args): Set `r->rnode' to NULL for local variable.
+ * ext.c (make_builtin): Add sanity checking for presence and
+ name of new function, and that it's not a redefinition.
+ (get_argument): Check that requested arg is within range of actual
+ number of parameters. Also clean up logic for Node_var_new,
+ Node_var_array, Node_array_ref.
+ (get_actual_argument): New function.
+ * profile.c (pp_builtin): Better handling of dynamic extension function.
+
+Sun Jun 13 14:32:22 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): Conditionalize checking for process recovery
+ on `#ifdef PIPES_SIMULATED'. Needed for MS-DOS and VMS.
+ * builtin.c (tmp_integer): Change bracketing of magic test to
+ `#ifdef HAVE_UINTMAX_T' which is more general and more correct.
+
+Wed Jun 9 21:36:01 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (make_regexp): Add dfa matching into IGNORECASE handling.
+
+Tue Jun 8 15:38:56 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (casetable): Remove `const'.
+ * eval.c (casetable): Remove `const'.
+ (load_ignorecase): New function. Loads locale-correct values in
+ upper 128 bytes.
+ (set_IGNORECASE): Call `load_ignorecase'.
+
+Tue Jun 8 14:04:19 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (get_src_buf): Make sure that value from
+ `optimal_bufsize' is reasonable. Increase it if not.
+
+Tue Jun 8 13:54:28 2004 John E. Haque <mary1john8@earthlink.net>
+
+ * awkgram.y (statement:LEX_FOR): Fix bug in loop to `delete a'
+ optimization.
+ * io.c (format_tree): Check for out of range values for
+ positional specifiers.
+
+Mon Jun 7 17:02:48 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (tmp_integer): Bracket the magic test inside
+ `#ifndef VMS'.
+
+ * awk.h (child_catcher): Remove declaration.
+ * main.c (main): Remove `signal' calls for SIGCLD, SIGCHLD.
+ * io.c (child_died, child_signo, child_catcher): Removed.
+ (get_a_record): Remove code checking for death of child.
+ (redirect): If `rp' matches and is at EOF and type is input
+ pipe, and `rp->pid' is not -1, call `wait_any' to reap the
+ child. This is a heuristic, but it works pretty well.
+
+Sun Jun 6 18:35:17 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Restore use of `memmove' instead of
+ memcpy. Otherwise some tests break on some systems. We think.
+ (child_died): Don't reset signal handler; breaks on some S5 systems.
+ (get_a_record): Reset handler if child_died. Still flaky on Solaris.
+ * configure.ac (version.c): Made from version.in again, for
+ non-Unix systems.
+ * Makefile.am (base_sources): Add version.c back.
+ * version.in: Include config.h for definition of const.
+ * main.c (version_string): Add back declaration, don't
+ include "version.i".
+ (main): Don't install child_catcher on Sun. (HACK)
+
+Thu Jun 3 14:06:06 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (version_string): Removed declaration, since
+ version.i is included directly.
+ * version.in: Removed test for definition of const.
+
+Tue Jun 1 19:23:53 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * Makefile.am (base_sources): Don't mention version.c, so that
+ it doesn't get distributed.
+ * po/POTFILES.in: Remove version.c
+ * configure.ac: Create version.i from version.in.
+ * main.c: Include version.i.
+
+Tue Jun 1 18:33:32 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix problem reported by Stephen Marchant <Stephen.Marchant@Cognex.com>
+ on Thu, 30 Oct 2003 13:11:42 -0500.
+
+ * regex_internal.h (re_realloc): Allow for SunOS pre-Standard C
+ `realloc' which doesn't accept NULL pointers.
+ * awk.h (erealloc): Same.
+
+ Unrelated. Change suggested by Peter Sobisch <petersob@gmx.net>, have
+ PROCINFO["version"] be the version of gawk:
+
+ * main.c (load_procinfo): Add in version.
+
+ Unrelated: Avoid warning:
+
+ * main.c (main): Cast calls to `bindtextdomain' and `textdomain' to
+ void. Avoids diagnostic with `configure --disable-nls'.
+ * dfa.c (check_matching_with_multibyte_ops): Remove unneeded nested
+ #ifdef, per Scott Deifik (scottd@amgen.com). Also fix some spelling
+ errors in comments.
+
+Tue Jun 1 18:26:45 2004 Paul Eggert <eggert@twinsun.com>
+
+ Fix a bug reported by Mike Romaniw <msr@micromonumental.com>
+ to bug-gnu-utils on 2003-09-27: compl(compl(0xf0f)) returned 0xfff
+ on hosts with 64-bit uintmax_t and 64-bit IEEE-764 double, due to
+ rounding errors.
+
+ * doc/gawk.texi (Bitwise Functions): Leading nonzero bits are
+ removed in order to fit the result into a C 'double' without rounding
+ error.
+ * builtin.c: Include <float.h> if available.
+ (FLT_RADIX, FLT_MANT_DIG, DBL_MANT_DIG): Define if not already defined.
+ (AWKSMALL_MANT_DIG, AWKNUM_MANT_DIG, AWKNUM_FRACTION_BITS): New macros.
+ (tmp_integer): New function.
+ (do_lshift, do_rshift, do_and, do_or, do_xor, do_compl): Use them.
+
+Tue Jun 1 17:40:47 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * eval.c (push_args): Set var_value to Nnull_string for
+ local variables.
+
+Mon May 31 11:49:20 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * replace.c: #undef DEBUG before including mktime.c, it has
+ different meaning there.
+
+Mon May 31 08:25:30 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (get_actual): Add extra error message for `delete f'
+ inside body of function `f'.
+
+Mon May 3 09:53:34 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in, */Makefile.in: Updated to automake 1.8.4.
+ * config.guess, config.sub: Same.
+ * aclocal.m4, depcomp, install-sh: Same.
+
+Mon May 3 09:24:45 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Look for missing `strtoul'.
+ * replace.c: Include missing_d/stroul.c if not HAVE_STRTOUL.
+ * io.c (devopen): Use `strtoul' instead of `strtod' for
+ extracting fd number from "/dev/fd/N". (Thanks to Jim Meyering.)
+ * field.c (set_FIELDWIDTHS): Use `strtoul' instead of `strtod'
+ when parsing FIELDWIDTHS values. (Thanks to Jim Meyering.)
+
+Mon Apr 19 20:12:57 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in, */Makefile.in: Updated to automake 1.8.3.
+ * config.guess, config.sub: Same.
+
+2004-03-18 Stepan Kasal <kasal@ucw.cz>
+
+ * eval.c (make_scalar): Comment clarification.
+
+ * array.c (get_actual): Remove the condition ``canfatal''
+ before ``cant_happen()''; if the data are consistent, we
+ simply cannot get there with a non-func Node_param_list,
+ no matter whether we are called via get_array or not.
+
+ * awkgram.y (variable): Make one longer message, to help translators.
+
+Tue Mar 9 17:34:10 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Adapted `gofast' patch from Redhat Enterprise version of grep
+ to current dfa.c.
+
+ * dfa.c (buf_offset): New variable.
+ (SKIP_REMAINS_MB_IF_INITIAL_STATE): Modified to use it, don't
+ free `mblen_buf', `inputwcs'.
+ (match_anychar, match_mb_charset, transit_state_consume_1char,
+ transit_state): Use buf_offset in mblen_buf.
+ (dfaexec): Realloc things instead of free and malloc.
+
+Thu Mar 4 16:46:55 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (AC_FUNC_MBRTOWC): Added.
+ (AC_CHECK_FUNCS): Removed `mbrtwoc'.
+ (REGEX_MALLOC): Removed. Not needed for new regex* routines.
+
+ * re.c (research): Removed comment and check for return of -2
+ since that was for old regex using alloca or REGEX_MALLOC.
+
+Wed Mar 3 17:10:16 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (close_one): Don't close stdout or stderr; can happen if
+ /dev/stdout or /dev/stderr are used in redirection and all the
+ open files get used.
+
+Sun Feb 29 12:17:37 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (build_charclass, build_charclass_op): Change type of
+ `class_name' parameter to `const char *' from `const unsigned char *'
+ and adjust callers.
+
+Thu Feb 26 15:20:22 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (get_src_buf): Rewritten to better manage input and
+ supplying newlines on command line programs. Fixes problems reading
+ source files on Cygwin.
+
+ Unrelated fixes from mary1john8@earthlink.net:
+
+ * node.c (format_val): For no malloc case, free s->stptr if necessary.
+ * io.c (nextfile): Add missing call to `unref(FILENAME_node->var_value)'
+ for no files case.
+ (close_redir): Remove file from redirection list even if fp is
+ stdout or stderr.
+
+Tue Feb 24 12:11:34 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.c (build_wcs_upper_buffer): Enclose `offsets_needed'
+ label in `#ifdef _LIBC' to silence `unused label' compiler warning.
+
+Tue Feb 24 11:57:18 2004 Nelson H.F. Beebe <beebe@math.utah.edu>
+
+ * regcomp.c (parse_expression): Add cast to (unsigned char *) in calls
+ to `build_charclass_op'.
+ * regex_internal.c (build_wcs_buffer): Add cast to char* in call to
+ `wcrtomb'.
+ * regex_internal.h (bitset_not, bitset_merge, bitset_not_merge,
+ bitset_mask, re_string_char_size_a, re_string_wchar_at,
+ re_string_elem_size_at): Change to use prototypes.
+ (re_string_char_size_at, re_string_wchar_at, re_string_elem_size_at):
+ Declare as `internal_function'.
+
+ * Makefile.am: Add rule to make .i files. This assists in debugging.
+ * awk.h (m_tree_eval): Add casts to NULL. (Some compilers are just
+ dumb. ADR)
+
+Mon Feb 23 15:58:39 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Clean up occupied process slots of children that have died:
+
+ * awk.h (child_catcher): New function, declare it.
+ * main.c (main): Catch SIGCHLD/SIGCLD with `child_catcher'.
+ * io.c (child_died): New static variable.
+ (child_catcher): New function, sets `child_died', reinstalls self
+ as signal handler.
+ (close_rp): New function: isolates actual fp/iop closing logic.
+ (close_redir): Call `close_rp'.
+ (get_a_record): Check `child_died' and call `wait_any(0)' if so.
+ Add descriptive comment.
+
+ Unrelated clean up:
+
+ * eval.c (fcalls): Renamed from `fcall_list'. All uses changed.
+ (pop_fcall, push_args, dump_fcall_stack): Adjusted to use indexing
+ on `fcalls' instead of a pointer into it. Avoids hassles if `fcalls'
+ is realloc-ed during recursive tree_evals. Thanks to BWK.
+
+ * config.guess, config.sub: Updated from Savannah.
+
+2004-02-19 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.1.
+
+Wed Feb 18 12:40:09 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (rule): Use `msg' not `warning' for `must have an
+ an action part' message. `warning' is wrong, since it's a real error.
+
+Mon Feb 16 12:17:39 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c, eval.c, builtin.c: Change test for `#ifdef HAVE_LOCALE_H'
+ to `#if ENABLE_NLS && defined(HAVE_LOCALE_H)' so that builds with
+ `configure --disable-nls' will actually work on non-glibc systems.
+
+Thu Feb 12 02:05:34 2004 Stepan Kasal <kasal@ucw.cz>
+
+ Lots of misc changes from Stepan Kasal integrated.
+
+ * array.c: Various variables and parameters of static functions
+ changed from int to long, in order to prevent overflow.
+
+ * eval.c (make_scalar): New function; takes care of everything
+ that has to be done when a node of type Node_var_new or
+ Node_array_ref changes to a scalar variable.
+ (tree_eval, get_lhs): Call it.
+ (tree_eval): From now on, tree_eval(NULL) doesn't work;
+ it reports an internal error.
+ * awk.h (m_tree_eval): Likewise for the two macro versions.
+ * awkgram.y (statement): Make sure the Node_K_return's lnode is
+ always the return value, never NULL.
+
+ * Makefile.am (install-exec-hook, uninstall-links): Make use of
+ $(VERSION).
+ (INCLUDES): Renamed to AM_CPPFLAGS.
+ (AM_CPPFLAGS): The file libintl.h is generated in the
+ build subdirectory intl, not in the directory $(srcdir)/intl.
+ (diffout): New target is an alias for ``make -C test diffout.''
+ * awklib/Makefile.am (INCLUDES): Renamed to AM_CPPFLAGS.
+
+ * README_d/README.hpux: Change the whitespace in the appended patch,
+ so that it applies to the current source.
+ * posix/gawkmisc.c: Change a tab to a space (needed for the above).
+
+ Make version control more in the style of current autotools:
+
+ * configure.ac: Remove obsolete versions of macros:
+ AM_INIT_AUTOMAKE doesn't need any parameters.
+ AC_OUTPUT shouldn't have any parameters either.
+ Its parameters go to a new macro: AC_CONFIG_FILES.
+ AC_CONFIG_HEADERS moved near the end of the file.
+ * configure.ac: Add [version.c:version.in] to AC_CONFIG_FILES
+ * version.in: Modify for autoconf substitutions.
+ * version.c: Remove, it's generated at configure time now.
+ * fixvers, patchlev.h, unsupported/tandem/ptchlvl.h: Nuke and ...
+ * Makefile.am, main.c: ... forget them.
+
+Mon Feb 9 12:57:00 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h builtin.c eval.c field.c (HUGE): Changed to `UNLIMITED'.
+ Avoids possible conflict with constant in svid-mode math.h. Thanks to
+ Roman.Putanowicz@iecn.u-nancy.fr for pointing out the problem.
+
+Fri Feb 6 12:09:55 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Check for `wctype', `wcscoll' and `iswctype'.
+ * mbsupport.h: New file. Merges and centralizes testing for MBS support.
+ * Makefile.am (base_sources): Add mbsupport.h to list.
+ * dfa.c, dfa.h, awk.h (MBS_SUPPORT): Include "mbsupport.h" and use the
+ test there.
+ * regex_internal (RE_ENABLE_I18N): Same.
+
+ * Makefile.am (CLEANFILES): Added.
+
+Thu Feb 5 18:05:12 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (HAVE_WCTYPE_T): New test code added.
+ * dfa.h (wctype_t): Define if system doesn't. Needed here too
+ for other files that include dfa.h.
+ * dfa.c (wctype_t): Define if system doesn't.
+ (lex): Manually fill in arrays used for char class range testing
+ so will work on c89 and older compilers.
+ (parse_bracket_exp_mb): Split up an assignment to avoid type complaints.
+
+ * main.c (main): When checking for `close_io' failure, only set
+ `exit_val' to 1 if not already exiting.
+
+ * regcomp.c (regerror): Remove use of mempcpy. Generates too
+ many compiler warnings.
+ * configure.ac (AC_CHECK_FUNCS): Don't bother checking for it.
+
+Wed Feb 4 17:34:47 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.h (__THROW): Only define it if C++. The __GNU_PREREQ
+ macro is a major headache.
+
+2004-02-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * regexec.c (check_matching): Add P_MATCH_FIRST parameter.
+ (re_search_internal): Pass new parameter to check_matching.
+ (check_matching): Unless a parenthesized group is found at the
+ beginning of the regexp, advance P_MATCH_FIRST until we entered
+ a state different from the initial state.
+
+Mon Feb 2 15:52:37 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (research): Change last param to re_search to pass
+ NULL if `need_start' is false. May give us a marginal speed gain.
+
+Thu Jan 29 17:04:51 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (sub_common): Fix logic for `&' in replacement for
+ multibyte case. Simplify code a bit.
+
+Tue Jan 20 10:41:45 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add check for `memmove'.
+ * replace.c: Include missing_d/memmove.c if don't have `memmove'.
+
+Sun Jan 18 12:01:29 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (sub_common): Add comment and support for 2001 POSIX
+ behavior when --posix in effect. The masses have been
+ clamoring for this one.
+
+2004-01-16 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.13.1.
+ * intl/*: Updated to 0.13.1.
+
+Fri Jan 16 08:16:38 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.h, getopt.c, getopt1.c: Synced to GLIBC version:
+ getopt.c: 1.51
+ getopt.h: 1.18
+ getopt1.c: 1.9
+
+Thu Jan 15 15:28:48 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Here we go again:
+
+ * regcomp.c, regex.h, regex.c, regex_internal.h, regex_internal.c,
+ regexec.c: Sync to GLIBC version, but with bug fixes. GLIBC
+ CVS versions:
+
+ regcomp.c: 1.76
+ regexec.c: 1.55
+ regex.c: 1.125
+ regex.h: 1.30
+ regex_internal.c: 1.39
+ regex_internal.h: 1.45
+ regexec.c: 1.55
+
+ * acinclude.m4: Removed, not needed for automake 1.8.x.
+ * configure.ac: Updated to autoconf 2.59.
+
+ Everything else updated to automake 1.8x and autoconf 2.59.
+
+Wed Jan 14 14:26:36 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c, dfa.h: Updated manually with most of the changes in
+ grep 2.5.1. That version lost the ability to match newlines
+ in the data, so the merge had to be done by hand. Sigh.
+
+2004-01-12 Paolo Bonzini <bonzini@gnu.org>
+
+ ALLOCA patch from
+ http://sources.redhat.com/ml/libc-alpha/2004-01/msg00099.html
+ added.
+
+ * regcomp.c [_LIBC && !RE_ENABLE_I18N]:
+ Drop code to support this, it is never true.
+ (build_range_exp) [!_LIBC]: Do not create a range
+ in MBCSET for a single-byte character set.
+ (build_range_exp) [_LIBC]: Do not create a range
+ in MBCSET for a single-byte character set without
+ collation elements.
+ (init_dfa): Do not conditionalize on _LIBC, it
+ just makes the code less clear.
+ (parse_bracket_exp): Use NON_MATCH variable in
+ addition to "mbcset->non_match", not as an
+ alternative.
+ (build_charclass_op): Rename NOT parameter to
+ NON_MATCH, use it instead of declaring a variable.
+ (parse_bracket_exp) [!_LIBC]: Pass NULL for MBCSET
+ if the character set is single-byte.
+
+Wed Jan 7 15:23:04 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (mk_rexp): Set n->re_cnt to 1. Makes reinstated
+ dfa code actually take effect! Don't know how I missed this.
+
+ Unrelated: sync regex code to glibc.
+
+ * regcomp.c, regex.h, regex.c, regex_internal.h, regex_internal.c,
+ regexec.c: Sync to GLIBC version, but with bug fixes. GLIBC
+ CVS versions:
+
+ regcomp.c: 1.74
+ regex.c: 1.124
+ regex.h: 1.30
+ regex_internal.c: 1.39
+ regex_internal.h: 1.43
+ regexec.c: 1.55
+
+ * regcomp.c (peek_token): Temporarily, we hope, disable \s and \S
+ operators. Too much trouble to document right now.
+ * dfa.c (lex): Add code for \s and \S but disable it until
+ next release.
+
+Wed Dec 24 15:28:57 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_tree_eval): For Node_assign_concat, add
+ call `free_temp(r)'. Thanks to mary1john8@earthlink.net.
+
+Mon Dec 1 10:25:52 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ CONSTVAL not needed if we test PERM instead. Thanks to
+ mary1john8@earthlink.net. See test/concat3.awk.
+
+ * awk.h [CONSTVAL]: Removed.
+ * eval.c (flag2str): Removed CONSTVAL from table.
+ (r_tree_eval): For Node_assign_concat, it's enough to check
+ if l->flags has PERM clear.
+ * awkgram.y (yylex): Removed use of CONSTVAL for YSTRING and YNUMBER.
+
+Mon Nov 3 16:33:26 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (get_src_buf): Replace `memmove' with `memcpy' for
+ marginal portability gain to older systems.
+ * io.c (get_a_record): Ditto.
+
+Sun Nov 2 15:59:27 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [CONSTVAL]: Renamed from `STRCONST'.
+ * eval.c (flags2str): Fix in table.
+ (r_tree_eval): For Node_assign_concat, check for the flag for
+ both left and right hand sides. Also add a `force_string' call
+ for the right hand side and the left hand side.
+ * awkgram.y (yylex): Change flag value for YSTRING and add use
+ of flag for YNUMBER.
+
+Wed Oct 29 14:23:29 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [STRCONST]: New flag value.
+ * eval.c (flags2str): Add it to table.
+ (r_tree_eval): For Node_assign_concat, check for the flag so that
+ we don't clobber string constants given:
+ s = ""
+ s = s something
+ * awkgram.y (yylex): For YSTRING, set STRCONST flag.
+
+Tue Oct 28 18:00:00 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Force SUBSEP to always have a string value. Per bug report
+ from mary1john8@earthlink.net.
+
+ * awk.h (NODETYPE): New type, Node_SUBSEP.
+ (set_SUBSEP): Add declaration.
+ * awkgram.y (isnoeffect, isassignable): Add Node_SUBSPEP case.
+ * array.c (set_SUBSEP): New function.
+ * eval.c (nodetypes): Add Node_SUBSEP.
+ (r_tree_eval, r_get_lhs): Add code for Node_SUBSEP.
+ * main.c (varinit): Use Node_SUBSEP as type for SUBSEP.
+ * profile.c (tree_eval, pp_lhs, is_scalar, prec_level): Handle
+ Node_SUBSEP.
+
+Tue Oct 7 09:26:33 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (NODETYPE): New member `Node_assign_concat'.
+ * awkgram.y (exp): Look for case of `x = x y' and if so, create a
+ Node_assign_concat.
+ * eval.c (interpret): Add case for Node_assign_concat.
+ * profile.c (prec_level): Ditto.
+ (tree_eval): Ditto. For variables, call new function `vname' to
+ print name; handles varname field for -v variables, which end up
+ including the value.
+ (vname): New function.
+
+Wed Sep 24 17:32:31 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Speed up `avoid_dfa' kludge, at least a little:
+
+ * awk.h (struct Regexp): Add `has_anchor' member. Make it and
+ `dfa' member shorts; keeps space the same.
+ * re.c (make_regexp): Set `has_anchor' member correctly.
+ (avoid_dfa): Test for `has_anchor' member instead of searching
+ for it each time.
+
+Sun Sep 21 18:34:32 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (state): Only needs to be 256 bytes, initstate() can't
+ use any more than that. Well whadayaknow.
+ (do_rand, do_srand): Call `setstate' after calling `initstate'.
+
+Tue Sep 16 15:44:29 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (interpret): For Node_K_switch, add kludge_need_start stuff
+ as used in `match_op'. Sigh.
+ * re.c (make_regexp): Add `no_dfa' variable, which is true if
+ GAWK_NO_DFA exists in the environment. This enables run time
+ testing of things with/without the dfa matcher.
+
+Mon Sep 15 18:36:38 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ After much soul searching, reinstated old dfa code. The performance
+ of the new regex is just disastrous. Sigh.
+
+ * awk.h (re_cnt): Reinstated old definition.
+ (struct Regexp): Added `dfareg' and `dfa' members.
+ (make_regexp): New last parameter in function, changed decl.
+ (avoid_dfa): Added declaration.
+ * awkgram.y (regexp, mk_rexp): Added use of `re_cnt'. Fixed call
+ to `make_regexp'.
+ * Makefile.am: Add dfa.h and dfa.c.
+ * eval.c (match_op): Complexified: added call to `avoid_dfa' and
+ `kludge_need_start' variable where used to pass FALSE as last parameter
+ of research().
+ * field.c (set_FS): Fixed call to `make_regexp'.
+ * io.c (get_a_record, set_RS): Fixed calls to `make_regexp'.
+ * re.c (make_regexp): Added last paramter (`dfa') to function.
+ Complexified the code.
+ (re_update): Fixed call to `make_regexp'.
+ (research): Complexified the code, added calls to dfa stuff.
+ (dfaerror): New function.
+ (re_update): Fixed call to `make_regexp'.
+ (avoid_dfa): New function.
+
+Tue Sep 9 15:57:38 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (get_src_buf): Fix calculation of `offset' when shifting
+ source lines around. In general, improve handling of things when
+ moving the source code line around. What a mess this code is.
+
+Mon Sep 8 19:08:55 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (fmt_ok): Make provision for %F format and printf %'f flag
+ here too.
+
+2003-07-23 Christophe Bisiere <bisiere@univ-tlse1.fr> (tiny change)
+
+ * posix/regex.h (RE_TRANSLATE_TYPE): Define it to "unsigned char,"
+ to avoid problems at hosts with signed char.
+ * posix/regexec.c (re_search_internal): Don't say
+ "unsigned RE_TRANSLATE_TYPE."
+
+Thu Aug 28 11:09:41 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (nextfile): Change use of variable `files' to make it
+ clearer that it's a boolean flag.
+
+Tue Aug 26 22:58:15 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (useropen): Add `defined (HAVE_GETGROUPS)' as first test
+ in `#ifdef'. Brings things in sync with same test in main.c and awk.h.
+
+Tue Aug 26 22:49:37 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dbug.h: New file.
+
+ * array.c, awkgram.y, builtin.c, eval.c, ext.c, field.c, io.c,
+ main.c, msg.c, node.c, profile.c, re.c: Converted to use
+ Fred Fish's `dbug' library. By default compiled out, thus
+ not affecting speed.
+
+ For the nonce, the `dbug' library itself is not shipped with
+ gawk, since I expect no-one else but me to be using it.
+
+Thu Aug 21 23:15:36 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (numfiles): Change extern decl to long, to match what's
+ in main.c. Keeps things working on 64-bit systems. Thanks to bug
+ report from Jan Oravec <jan.oravec@6com.sk>.
+
+Wed Aug 20 14:53:47 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (genflags2str): Move test for out-of-space inside test
+ for is the bit set.
+
+Mon Aug 11 11:26:51 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (parse_bracket_exp): If `build_charclass' fails, just pass
+ its value on as the return value.
+
+Sun Aug 10 16:59:14 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c (build_range_exp): Make sure we don't
+ get WEOF on range characters.
+
+Tue Aug 5 21:49:32 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (get_actual): In `case Node_param_list' add test for
+ `&& (symbol->flags & FUNC) == 0' to the if.
+
+Sun Jul 13 18:28:38 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Further bug fix:
+
+ * awkgram.y (variable): Give the new variable an lnode
+ of Nnull_string if it's not an array, even if it is
+ a Node_var_new.
+
+Fri Jul 11 09:32:21 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Bug fix:
+
+ * eval.c (r_tree_eval): For Node_array_ref, set
+ tree->orig_array->var_value to Nnull_string too.
+
+ Unrelated i18n and POSIX change:
+
+ * configure.ac: Add check for local printf supporting %F format.
+ * awk.h (loc): New variable declaration.
+ * main.c (loc): Defined.
+ (main): Call `localeconv' to set loc.
+ * io.c (format_tree): Add support for printf quote flag, %'d for
+ decimal formats (not %e, %E), adds thousand separator into value.
+
+2003-07-10 Paul Eggert <eggert@twinsun.com>
+
+ * io.c (two_way_open): If /bin/sh cannot be executed, exit
+ with status 126 consistently.
+
+Mon Jul 7 11:01:43 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.3: Release tar file made.
+
+Mon Jul 7 09:55:49 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (copyleft, usage): Make sure to fflush output fp. Per Jim
+ Meyering, if error, exit non-zero.
+ * ext.c (get_argument): Fix array paramater handling.
+
+2003-07-06 Paul Eggert <eggert@twinsun.com>
+
+ * builtin.c (do_substr): Issue better diagnostics when
+ d_substr and d_length are NaN, or when 0 < d_length < 1.
+ Be careful when comparing double to SIZE_MAX, as
+ the comparison might return the "wrong" answer when
+ `(double) SIZE_MAX' is a number that is not equal to
+ SIZE_MAX.
+ (do_gensub): Watch out for HOW values that are out of range
+ or are NaN.
+ (do_dcngettext): dcngettext wants an argument of type
+ unsigned long, not long, so use a value of that type.
+
+Fri Jul 4 10:58:02 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Make option letter 'D' fall through into default
+ unknown case if not debugging. Let's us have just one version of
+ `optlist'.
+
+Thu Jun 26 15:25:57 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (get_actual): Undo Stepan Kasal change of 2003-06-17.
+ See test/match2.awk.
+
+Wed Jun 25 15:26:08 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_rand): Change calculation so that result
+ obeys constraint: 0 <= N < 1. This is per history and POSIX.
+ Thanks to Nelson Beebe (beebe@math.utah.edu) for reporting
+ this issue.
+
+Mon Jun 23 15:13:39 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (rs1scan): Per advice from Bruno Haible, it's safe
+ to skip the multibyte checking code if RS is '\n'. See
+ the comment in the code. Big performance improvement for
+ multibyte locales.
+
+2003-06-20 Stepan Kasal <kasal@ucw.cz>
+
+ * eval.c (comp_func): If memcmp returns 0, we have to compare
+ the lengths.
+
+2003-06-19 Stepan Kasal <kasal@ucw.cz>
+
+ * eval.c (interpret) <Node_K_arrayfor>: Use NULL, not 0, to
+ initialize the variable list.
+ (comp_func): Array indices no longer are string values,
+ you have to use ahname_str, ahname_len.
+
+Tue Jun 17 11:53:46 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (get_actual): Make check for isparam
+ smarter: also check for FUNC flag.
+
+2003-06-17 Stepan Kasal <kasal@ucw.cz>
+
+ * array.c (get_actual): Even if canfatal is FALSE, don't
+ tolerate existence of things which can't happen.
+
+Mon Jun 16 16:21:44 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Removed m4/Makefile.
+ * m4/Makefile.am: Removed.
+
+2003-06-16 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AC_OUTPUT): Add m4/Makefile.
+ (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1.
+
+Sun Jun 15 20:45:43 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Enhance logic to fill buffers to include
+ `|| no_data_left(iop)'.
+ (rs1scan): Fix logic for setting recm fields for multibyte
+ character case.
+
+2003-06-10 Stepan Kasal <kasal@ucw.cz>
+
+ * awkgram.y (release_all_vars): Do not try to release a value of
+ Node_var_new; after get_lhs, use the lhs directly, do not try
+ to do (*lhs)->var_value; the Node_var case doesn't need
+ special treatment.
+ * builtin.c (do_match): `get_param' is successful iff it returns
+ Node_var_array---if the variable was new, get_param has already
+ changed the type.
+ * field.c (do_split): Likewise.
+
+Sun Jun 15 19:36:35 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (r_dupnode): Typo fix in hash tables: stptr -> ahname_str.
+ Thanks to mary1john8@earthlink.net.
+ * array.c (get_actual): Add `if (canfatal)' before call to
+ `cant_happen'.
+
+Sun Jun 15 19:25:49 2003 Patrick T.J. McPhee <ptjm@interlog.com>
+
+ * awk.h (memcpy_ulong): Add ! WIN32 to ifdefs.
+
+Mon Jun 9 18:38:20 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h (hpux): Added stuff to (hopefully) get `tzset'
+ declared on HP/UX 10 and up.
+
+Mon Jun 9 17:12:24 2003 Patrick T.J. McPhee <ptjm@interlog.com>
+
+ * awk.h (ATTRIBUTE_EXPORTED): New macro for dynamic libs on Windows32.
+ * CONVMFTidx, stack_ptr, do_lint, lintfunc: Now have this attribute.
+
+Mon Jun 9 13:11:33 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Clean up of Stepan's patches.
+
+ * array.c (get_actual): Renamed from r_get_array. Added second
+ param canfatal if routine should print fatal message when not an array.
+ (get_actual): Renamed 'prm' to `isparam'.
+ (array_vname): Add static msglen var; only realloc string if it grows.
+ Don't use `s += sprintf(...)'. No good on old systems where sprintf
+ returns char *. Minor formatting cleanups.
+ (do_adump): Restored separate `a' and `r' variables; helps for debugging.
+
+ * awk.h (SCALAR, UNINITIALIZED): Removed entirely, renumbered other flags.
+ (get_array, get_param): New macros, calls get_actual.
+ (get_actual): Declaration changed from that of r_get_array.
+
+ * awkgram.y (release_all_vars): Restored previous version of code; new
+ version isn't right for Node_xx variables.
+ (variable): Minor code cleanup for readability.
+
+ * builtin.c (do_match): Use get_param and print our own message when
+ third parameter is not an array.
+
+ * eval.c: Added a few comments here and there, removed some no longer
+ needed comments.
+
+ * field.c (do_split): Use get_param and print our own message when
+ second parameter is not an array.
+
+Mon Jun 9 11:46:21 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (do_delete): Initialize hash1 and last to keep gcc -Wall happy.
+ * io.c (rsnullscan): Comment out label skip_leading for same reason.
+
+Wed May 28 08:31:23 CEST 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * eval.c (forloops_active, in_function): Nuked.
+ (pop_all_forloops, pop_fcall_stack): Are now inline.
+
+Wed May 28 07:58:35 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * field.c, awk.h (Null_field): No longer static.
+ * field.c (init_fields): Initial value of $0 can be Nnull_string,
+ no need to copy it.
+ * eval.c (r_get_lhs) <Node_field_spec>: Test for uninitialized field,
+ which is Nnull_string for $0 and Null_field for $(>0).
+ * builtin.c (do_print_rec): Test for uninitialized $0.
+
+Tue May 27 17:03:02 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * awk.h (Node_var_new): New node type for variables which can be
+ either scalar or array. From now on, Node_var is always scalar.
+ (Node_gvar_ref): Nuked, its role can be taken by Node_array_ref.
+ (orig_var): Removed, orig_array is enough.
+ (SCALAR, UNINITIALIZED): Flags nuked.
+ (var_uninitialized): New macro to distinguish uninitialized vars;
+ used in several other macros.
+ * array.c (r_get_array, array_vname, do_adump): Adapt to the
+ above changes.
+ * awkgram.y, eval.c, field.c, main.c, node.c, profile.c: Ditto.
+
+Tue May 27 14:27:50 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * array.c (r_get_array): New function, which goes all the way
+ through Node_param_list to actual Node_var_array; if it encounters
+ non scalar Node_var, it changes it to Node_var_array.
+ (in_array, do_delete, do_delete_loop, do_adump, assoc_sort_inplace):
+ Use get_array.
+ (assoc_lookup): The parameter must be a Node_var_array.
+ * awk.h (get_array, r_get_array): Declare the new function and define
+ a macro to speed it up.
+ * builtin.c (do_match): Use get_array.
+ * eval.c (interpret) <Node_K_arrayfor>: Ditto.
+ (r_get_lhs) <Node_K_arrayfor>: Ditto.
+ * field.c (do_split): Ditto.
+
+Tue May 27 08:23:51 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ Changed node->vname meaning for type Node_array_ref and Node_gvar_ref.
+ It contains only the reference name; one has to (recursively) follow
+ node->prev_array to find out the call history for the array.
+
+ * array.c (array_vname): New function to print the array name.
+ (assoc_lookup, do_delete): Use array_vname.
+ * eval.c (interpret, r_tree_eval, r_get_lhs): Use array_vname.
+ (push_args, pop_fcall): Things have simplified.
+ * awk.h (array_vname): Declare.
+ (prev_array): Define.
+
+Sun Jun 8 11:25:36 2003 Stepan Kasal <kasal@ucw.cz>
+
+ * awkgram.y (append_right): When using savetail, remember that it
+ is not necessarily the tail of the list---it's just a pointer to
+ the last chunk appended.
+
+Thu Jun 5 12:01:41 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_strtonum): Make `strtonum(13)' work.
+
+Wed Jun 4 17:07:06 2003 Corinna Vinschen <vinschen@redhat.com>
+
+ * io.c (binmode): Include function for __CYGWIN__ too.
+
+Tue Jun 3 12:40:50 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (interpret): Node_K_switch. For regex case, don't
+ call `free_temp' on the result of `force_string' if it's equal to
+ switch_value. Thanks to John DuBois <spcecdt@armory.com>
+ for finding the problem.
+
+Sun Jun 1 13:08:22 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): For %c, force precision to 1.
+
+Wed May 28 11:55:48 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (isnoeffect, isassignable): Add Node_TEXTDOMAIN to
+ switches in both functions.
+
+Wed May 28 11:38:59 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * awkgram.y (switch_body): Remove rule ``switch_body:/*empty/''
+ as ``switch_body:case_statements'' covers it---this disambiguation
+ fixes a reduce/reduce conflict.
+
+Sun May 25 16:23:43 2003 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.ac: Remove linking against /usr/lib/automode.o.
+ * configure: Regenerate.
+
+Sun May 25 15:19:19 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * awk.h (get_lhs): For an initialized Node_var, you may return
+ the address of var_value pointer, no matter whether reference
+ bit was set or not. We were silly slowing down most of the
+ assignements.
+
+ * (get_a_record): After grow_iop_buffer, move recm.rt_start even
+ if recm.len == 0.
+
+Mon May 19 16:55:59 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Code for C-style switch statements. Initial version contributed by
+ Michael Benzinger <Michael.Benzinger@sabre-holdings.com>.
+
+ Disabled by default, use `configure --enable-switch' to turn it on.
+
+ * configure.ac: New AC_ARG_ENABLE for switch statements.
+ * awk.h (NODETYPE): New types for switch, case, default keywords
+ and respective lists.
+ * awkgram.y: New productions for switch statement. Does checking to
+ avoid duplicate cases.
+ * eval.c (nodetypes): New entries for new NODETYPEs.
+ (interpret): New code to do switch execution.
+ * profile.c (pprint): New code to print switch statements.
+
+Mon May 19 15:05:43 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Renamed from configure.in.
+ * fixvers: Now looks in configure.ac.
+ * Makefile.am: Now cites configure.ac.
+
+ * Misc other: Updated to Automake 1.7.5.
+
+Sun May 18 12:03:56 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (do_delete_loop): Fix bracing of logic for
+ tests.
+
+Wed May 14 09:01:16 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ Misc patches:
+
+ * builtin.c (do_match): If third parameter to `match' is supplied,
+ store all subexpressions which are applicable, even though there
+ are some unused between them.
+
+ * awkgram.y (yylex): When returning from unterminated REGEXP
+ (which is /* kludge */), take care to fake a yylval, to
+ prevent ``internal error'' later.
+
+Sun May 11 15:51:00 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * io.c (rsnullscan, get_a_record): Boundary condition bug fixes.
+
+Sun May 11 15:15:20 2003 Scott Deifik <scottd@amgen.com>
+
+ * awk.h: Add decls for `memcpy_ulong', `memset_ulong', and
+ MSC defines.
+ * regex.c: Include <stdio.h> if MSC for size_t.
+
+Mon May 5 15:11:06 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Only tweak RT's value in place if the current
+ RS scanner is the same as the last one. Bug report submitted by
+ John DuBois (<spcecdt@armory.com>).
+
+Fri May 2 14:39:48 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Add logic at end to be smart about setting
+ RT. Saves considerable time, esp for default case where RS = "\n".
+
+Wed Apr 30 11:44:38 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (do_split): Add check and code for Node_gvar_ref.
+ * array.c (in_array, do_delete, asort_actual): Same.
+ * builtin.c (do_split): Same for 3rd arg array parameter.
+ * eval.c (interpret): Same for Node_K_array_for.
+ (push_args): Same for evaluating extra args.
+
+Tue Apr 29 15:54:28 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Record reading code redone/simplified considerably.
+
+ * awk.h (IOBUF): Removed total field, no longer used.
+ * io.c (at_eof, has_data, no_data_left): New macros.
+ (RECVALUE, SCANSTATE): New enumerated types.
+ (rs1get_a_record, rsnull_get_a_record, rsre_get_a_record): Removed.
+ (get_a_record): Rewritten, again. Now contains just buffer and
+ record code; searching code moved into these functions:
+ (rs1scan, rsnullscan, rsrescan): New functions to scan a buffer
+ for record contents and terminator. Fill in values in:
+ (struct recmatch): Holds found record and terminator.
+ (spec_setup): Set iop->dataend to indicate data is already in buffer.
+ (nextfile, inrec): Use new macros instead of flag and pointer tests.
+ (set_RS): Set scanning function instead of record function.
+
+ FWIW, it all passes `make test'.
+
+Sun Apr 27 21:02:39 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (do_close): At end, if do_posix return 0. See comment in code.
+
+Tue Apr 15 09:56:03 2003 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * configure.in: Check existence of wcrtomb, and wcscoll.
+ * configh.in: Likewise.
+ * configure: Re-generate.
+ Thanks to Kimura Koichi <kimura.koichi@canon.co.jp> for reporting.
+
+Sun Apr 13 16:02:10 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Add call to `setlocale' for LC_NUMERIC after program is
+ parsed.
+ (arg_assign): Switch back to "C" locale for LC_NUMERIC for command
+ line assignments; this is per POSIX that period is decimal point for
+ program and command line assignments and the locale's separator
+ applies for input, output, and string to number conversion.
+
+2003-03-26 Paul Eggert <eggert@twinsun.com>
+
+ * builtin.c [HAVE_INTTYPES_H]: Include <inttypes.h>.
+ [!HAVE_INTTYPES_H && HAVE_STDINT_H]: Include <stdint.h>.
+ (CHAR_BIT, INTMAX_MIN, UINTMAX_MAX): Define if the system does not.
+ (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): New macros, taken from
+ coreutils and many other GNU utilities.
+ (format_tree): When formatting, use widest possible integers
+ rather than settling with 'long'.
+ (do_lshift, do_rshift, do_and, do_or, do_xor, do_compl): Likewise,
+ when doing bitwise operations.
+ * configure.in (jm_AC_TYPE_LONG_LONG, jm_AC_TYPE_UNSIGNED_LONG_LONG,
+ jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Add, since the mainline
+ code now needs this.
+ * doc/gawk.texi (Control Letters, Bitwise Functions): Document this.
+ * m4/intmax_t.m4: New file, taken from coreutils (but renamed to
+ avoid collision with our m4/inttypes.m4).
+ * m4/longlong.m4: New file, taken from coreutils.
+ * m4/uintmax_t.m4, m4/ulonglong.m4: Remove; superseded by the above
+ new m4 files.
+
+ * builtin.c (BITS_PER_BYTE): Remove; use CHAR_BIT instead, since
+ it's the standard name.
+ (do_lshift, do_rshift): Complain if the shift width is exactly equal
+ to the word size, too.
+
+Thu Mar 27 10:44:11 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (rs1_get_a_record, rsnull_get_a_record, rsre_get_a_record):
+ Enhance check for no data left in file to be only if file has
+ non-zero size. Linux files such as /proc/filesystems stat as a
+ regular file of size 0, but actually have contents. Ugh.
+ Thanks to Martin Schlemmer <azarah@gentoo.org> for the bug report.
+
+Wed Mar 26 12:19:32 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): Add a lint warning at label `out_of_range'.
+
+Tue Mar 25 12:24:38 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (variable): For array subscript, if NAME is in the
+ symbol table, but not a variable, array, or parameter, generate
+ a syntax error.
+ (isarray): New function, tests if a symbol can be an array.
+
+ * custom.h: Add check for HP/UX, needed for GCC.
+
+Mon Mar 17 09:21:09 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Allow simultaneous manipulation of a global array directly
+ and when passed as a parameter.
+
+ * awk.h (Node_gvar_ref): New nodetype.
+ [orig_var]: New macro.
+ * array.c (do_delete_loop, do_delete): Add logic to handle
+ seeing Node_gvar_ref.
+ * eval.c (nodetypes): Add Node_gvar_ref.
+ (r_tree_eval, r_get_lhs): Add Node_gvar_ref case.
+
+Wed Mar 19 14:10:31 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ This time for sure.
+ -- Bullwinkle
+
+ * Release 3.1.2: Release tar file made.
+
+Wed Mar 19 14:08:11 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Production `program --> program error'. Add a return so
+ that we don't produce an infinite stream of error messages.
+ Thanks to Michael Mauch <michael.mauch@gmx.de> for pointing this out.
+
+Wed Mar 19 13:45:50 2003 Corinna Vinschen <vinschen@redhat.com>
+
+ * regex.c [RE_ENBABLE_I18N]: Remove definition; the one in
+ regex_internal.h is better and makes things work with Cygwin.
+
+Tue Mar 11 11:54:20 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.h: Don't include <limits.h> after <regex.h> was
+ included in regex.c, since it could redefine RE_DUP_MAX to a lower
+ value.
+ (bitset_set, bitset_clear, bitset_contain): Use 1UL instead of 1 in
+ left shift operations.
+ * regex.c: Include <limits.h> before <regex.h>
+ * regcomp.c (re_compile_fastmap_iter, init_word_char, parse_expression):
+ Use 1UL instead of 1 in left shift operations.
+
+Mon Mar 10 15:45:37 2003 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.in: Update CYGWIN case to add /usr/lib/automode.o.
+
+Thu Mar 6 11:07:36 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Updated to automake 1.7.3.
+
+ * config.guess, config.sub: Updated from prep.
+ * Makefile.am (AUTOMAKE_OPTIONS): Add dist-bzip2 to get .bz2 files.
+
+Tue Mar 4 10:40:46 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * version.in: Added goop for K&R compilers; forgot that I have to fix
+ this file which then is used to create version.c.
+
+Mon Mar 3 17:00:44 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: New option --disable-lint.
+ * awk.h (do_lint, do_lint_old): Conditionally declare based on NO_LINT.
+ * eval.c (set_LINT): Ifdef out body if NO_LINT.
+ * main.c (do_lint, do_lint_old): Conditionally compile properly.
+ (main): Handle --lint argument code.
+
+Fri Feb 28 10:43:07 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Add LC_TIME to the things that get set with
+ setlocale().
+ * builtin.c (format_tree): Change test of `n0-- <= 0' to ==, avoids
+ VMS diagnostic.
+
+Thu Feb 27 17:48:29 2003 Pat Rankin <rankin@pactechdata.com>
+
+ * regexec.c (proceed_next_node): Cast re_string_get_buffer to char *.
+ (get_subexp): Likewise.
+
+Tue Feb 25 12:33:41 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.h, regex_internal.c, regcomp.c, regexec.c:
+ Make MB_CUR_MAX into thread local variable re_mb_cur_max.
+
+ Unrelated, from Scott Deifik:
+
+ * io.c (grow_iop_buffer): Add checks for overflow of new buffer size.
+
+Mon Feb 24 13:30:59 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (gawk_mb_cur_max): Declared:
+ * main.c (gawk_mb_cur_max): Defined, init to 1.
+ (main): Initialize gawk_mb_cur_max.
+ * awkgram.y, builtin.c, eval.c, field.c, io.c, re.c (mb_cur_max):
+ Replaces all instances of MB_CUR_MAX, which is a function call (!)
+ in glibc. Big speed up, especially for -Fx case, where x is a
+ single character.
+
+ Unrelated:
+
+ * awkgram.y (rule): For non-existent action, use a Node_K_print_rec
+ node.
+
+Sun Feb 23 15:45:20 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Speed up plain `print' and `print $0':
+
+ * awk.h (Node_K_print_rec): New node type.
+ (do_print_rec): Declare function.
+ * awkgram.y (simple_stmt): Create humongous test for plain `print'
+ or `print $0', and if so, use a Node_K_print_rec for it. Modify
+ test for lint message.
+ * builtin.c (redirect_to_fp): New function for common code to get fp
+ and rp for do_print{,f,_rec} functions.
+ (do_print): Use redirect_to_fp().
+ (do_printf): Use redirect_to_fp().
+ (do_print_rec): New function to just print $0 from field_arr[0]
+ directly; will rebuild the record first if necessary.
+ * eval.c (nodetypes): Add Node_K_print_rec.
+ (interpret): Add Node_K_print_rec case.
+ * profile.c (pprint): Add Node_K_print_rec case.
+ (pp_print_stmt): If null lnode, print "$0" else print the lnode.
+
+ Unrelated:
+
+ * regex_internal.h: Add ENABLE_NLS to the condition for using
+ gettext so that --disable-nls really disables it.
+
+Sat Feb 23 22:46:00 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (rs1_get_a_record, rsnull_get_a_record, rsre_get_a_record):
+ Modify buffer-filling algorithm to always read one or more multiples
+ of the blocksize (iop->readsize).
+ (grow_iop_buffer): Make sure there's room for the current partially
+ read record and one disk block buffer.
+
+Thu Feb 20 22:02:00 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (research): Fix typo in cast of precision value to int.
+ * regex.h, regex.c, re_internal.h, re_internal.c, regcomp.c, regexec.c:
+ synced to GLIBC source, maintaining K&R portability changes, and bug
+ fixes, although losing ability to compile each file separately.
+ * Makefile.am (SOURCES): Moved placement of regex source files from here ...
+ (EXTRA_DIST): ... to here.
+
+Tue Feb 18 14:17:33 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (research): Cast precision value to int.
+ * builtin.c (format_tree): For toofew, cast field width value to int.
+ * io.c (rsre_get_a_record): Initialize restart and reend. Add a variable
+ to make sure they're set before used at end of function.
+ (iopflags2str): Removed decl at top and made not static so that GCC
+ stops complaining that it's defined but not used. Bleah.
+
+Mon Feb 17 11:02:34 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess, config.sub: Updated from prep.
+
+Sun Feb 16 15:47:15 2003 Scott Deifik <scottd@amgen.com>
+
+ * awk.h (format_tree, make_str_node): Changed decls to match how
+ they are called.
+ * builtin.c (format_tree, sub_common): Same.
+ * node.c (make_str_node): Same.
+
+Wed Feb 5 14:18:01 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Removed duplicate decl of set_prof_file(). Removed
+ undef of const for non-ANSI C; config.h should handle it.
+ * msg.c (set_loc): Use srcfile and srcline in regular code to shut up
+ stupid SGI compiler.
+
+Tue Feb 4 14:28:06 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ All relevant files: Copyright year updated to 2003.
+
+Tue Feb 4 13:40:41 2003 Martin C. Brown <mc@whoever.com>
+
+ * intl/libgnuintl.h: Preprocessor fixes for MacOS X.
+ * regex.h: Ditto.
+
+Tue Feb 4 13:39:37 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (builtin_func): New string for use in rationalizing
+ function parsing and installation code.
+
+Sun Feb 2 16:00:55 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Cache function body code pointer so that only have to find it the
+ first time a function is called. This potential for optimization
+ brought to my attention by Stepan Kasal.
+
+ * awk.h [funcbody]: New macro.
+ * awkgram.y (FUNC_CALL): Set $$->funcbody to NULL.
+ * eval.c (func_call): Changed to take top-level Node_func_call as the
+ single parameter. Do the lookup and caching.
+ (r_tree_eval): Change how func_call() is called in switch.
+ * profile.c (pp_func_call): Similar changes.
+ (tree_eval): Ditto.
+
+Sun Feb 2 15:32:42 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ ADR: More grammar rationalization/repair from Stepan.
+
+ * awkgram.y (common_exp, simp_exp): The rule from getline (without
+ pipe) has been moved from common_exp to simp_exp.
+
+ The redirection of print statements reworked. The idea comes from
+ mawk-1.3.3; much thanks to Michael Brennan!
+
+ * awkgram.y (IO_OUT, IO_IN): New tokens.
+ (APPEND_OP, TWOWAYIO): Swallowed by the above ones.
+ (in_print, in_parens): New static variables, to trace whether
+ IO_OUT is expected.
+ (yylex): Emit the new tokens, update in_parens on '(' and ')'.
+ (exp): The print command(s) reworked.
+ (oputput_redir): Reworked.
+ (print_expression_list): New non-terminal.
+ (rexp, rexpression_list opt_rexpression_list): Nuked.
+ (exp, simp_exp): ``cmd|getline'' rule changed to
+ ``cmd IO_IN getline'' and moved from exp to simp_exp.
+
+ Unrelated:
+
+ * awkgram.y (variable): Don't return Node_func, issue a fatal
+ error instead.
+ * eval.c (r_tree_eval, r_get_lhs): Omit special checks for Node_func,
+ nodes of this type cannot get into the program tree.
+ * profile.c (tree_eval, pp_lhs): Likewise.
+
+Thu Jan 30 17:42:05 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ ADR: Applied lots of patches from Stepan.
+
+ * array.c (do_delete_loop): Call after_assign for the loop index.
+ * field.c (do_split): The third argument to split(), sep, has to be
+ evaluated and the result dupnoded before assoc_clear is called,
+ similarily as src. And we needn't to evaluate the third argument
+ if it's CONSTant regex and the first parameter is null string.
+ * awk.h (dupnode): Changed to macro, function renamed to r_dupnode.
+ * node.c (dupnode, r_dupnode): Rename.
+ * awkgram.y (parms_shadow): Return bool value, ...
+ (shadow_funcs): ... which will enable us to end the program if
+ lintfunc is fatal.
+ (program): Cleanup of the rules defining the ``program'' non-terminal.
+ (start, program, rule): No value associated,
+ expression_value is now treated similarily as begin_block and end_block.
+ (pattern, rule): Bison actions for non-terminal `pattern' now
+ add a new rule to the appropriate Node_rule_list, action for
+ non-terminal `rule' now only adds the associated code block
+ to the rnode of Node_rule_node.
+ (io_allowed): Renamed to !begin_or_end_rule.
+ (append_pattern): New function, adds new Node_rule_node to a rule_list.
+ (mkrangenode): Deleted, this tiny function was called only once.
+ (function_body): Non-terminal replaced by `action'.
+ (statements, action, statement): `statements' can now be empty;
+ both callers had to accomodate to this.
+ (statements): Don't call isnoeffect($2->type) if
+ $2 happens to be NULL.
+
+Mon Jan 27 14:12:19 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (iop_close): Based on report by Stepan Kasal and because of
+ his changes, don't call reset_record() when saving a copy of contents
+ of $0.
+ * awkgram.y: Improved function parsing error messages for case where
+ user uses a builtin name as a function name. Based on error report
+ by Stepan Kasal.
+ * ext.c (make_builtin): Set FUNC flag for new function. Based on error
+ report by Stepan Kasal.
+
+Mon Jan 27 14:06:20 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * field.c (reset_record): No longer call set_record(), the code is
+ moved to the function body. Do not set MAYBE_NUM.
+ (set_record): Call reset_record() to perform the common tasks.
+ The prototype has changed, change awk.h and all callers.
+
+Mon Jan 27 10:50:03 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (NODE): `proc' renamed to `builtin,' to fix a conflict
+ on some systems. Replaced on all spots where it was used.
+
+Sun Jan 26 11:52:01 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [NUMSUBPATS]: New macro.
+ * builtin.c (do_match): Use it in loop that fills in subpattern info.
+ * eval.c (r_tree_eval): For Node_assign, don't call free_temp(),
+ as assign_val() contains dupnode(), which would clear the TEMP
+ flag. From Stepan Kasal <kasal@math.cas.cz>.
+ * config.sub: Updated from prep.
+
+Sun Jan 19 22:34:01 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (do_asorti): Add declaration.
+ * awkgram.y (tokentab): Add asorti() function to table.
+ * array.c (ASORT_TYPE): New enumerated type for VALUE or INDEX array
+ sorting.
+ (assoc_sort_inplace): New second arg of type ASORT_TYPE. Additional code
+ to rearrange array so rest of merge-sorting works; basically values are
+ tossed and index moved into value spot.
+ (asort_actual): Renamed from do_asort(). Takes new ASORT_TYPE argument.
+ (do_asort): Calls asort_actual(tree, VALUE).
+ (do_asorti): Calls asort_actual(tree, INDEX).
+
+ * main.c (load_procinfo): Free groupset array when done with it.
+
+Thu Jan 16 18:30:50 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_match): Revised to provide start and length
+ indices in array 3rd parameter.
+ * config.guess, config.sub: Updated from prep.
+
+Thu Jan 2 11:09:12 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ Updated to bison 1.875.
+
+Tue Dec 31 17:14:45 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Updated things to automake 1.7.2 and autoconf 2.57.
+
+Tue Dec 31 16:54:44 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [IOP_CLOSED]: New flag.
+ * io.c (iop_close): Set IOP_CLOSED flag.
+ (inrec): Check for IOP_CLOSED; if set return EOF.
+ (rs1_get_a_record, rsnull_get_a_record): Check for EOF before
+ refilling buffers.
+ (rsre_get_a_record): Ditto. Also, set RT before updating pointers in IOP.
+ * Makefile.am (efence): New target to compile with Electric Fence.
+
+2002-12-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * awk.h (catchsig): Delete prototype.
+ * main.c (catchsig): Make static and remove excess argument.
+ (main): Delete unnecessary casts.
+ * io.c (rs1_get_a_record, rsnull_get_a_record): Mark parameter
+ with ATTRIBUTE_UNUSED.
+
+Mon Dec 23 11:54:07 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.h, regex_internal.c, regcomp.c, regexec.c, version.c:
+ Fixed to compile, once again, under K&R compilers.
+ * io.c (grow_iop_buffer): Fix calculation of new size to
+ first subtract 2, double, then add 2 back in.
+
+Fri Dec 20 11:48:42 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ get_a_record split into three routines.
+
+ * awk.h (IOBUF): Structure reworked for new code.
+ * io.c (get_a_record): Now a pointer to different functions.
+ (rs1_get_a_record, rsnull_get_a_record, rsre_get_a_record): New functions.
+ (iop_alloc, iop_close): Reworked for new structure.
+ (do_getline, inrec): Modifiend for new EOF condition.
+ (iopflags2str): New routine.
+
+Fri Dec 20 11:05:50 2002 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c, regex_internal.c, regex_internal.h: Changes to allow separate
+ compilation of the reg*c files.
+ * regcomp.c: Fix bug in using translation tables with [[:upper:]] etc.
+ * Makefile.am: Move regex files into sources from EXTRA_DIST. (ADR)
+
+Mon Dec 9 14:20:42 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * main.c (main): When processing option '-f' don't ignore spaces
+ if optarg points at the beginning of the current argument
+ (like ``gawk -f " " file'').
+
+2002-11-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * awkgram.y (stopme): Mark parameter with ATTRIBUTE_UNUSED.
+ (yyerror): Add ATTRIBUTE_PRINTF_1.
+ * builtin.c (do_systime, do_rand): Likewise.
+ * field.c (set_field, re_parse_field, def_parse_field,
+ posix_def_parse_field, null_parse_field, sc_parse_field,
+ fw_parse_field): Likewise.
+ * io.c (pidopen, useropen): Likewise.
+ * main.c (catchsig): Likewise.
+ * profile.c (init_profiling): Likewise.
+ * awk.h (err): Add ATTRIBUTE_PRINTF.
+ * msg.c (err): Delete redundant prototype. Fix format specifier.
+
+Wed Nov 27 06:04:20 2002 Pat Rankin <rankin@pactechdata.com>
+
+ * ext.c [#if !DYNAMIC] (do_ext): Cast string value for error node.
+
+Sun Nov 24 18:23:29 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ From Paul Eggert, with some edits by me.
+
+ * builtin.c (do_substr): Consistently use floating point
+ values for lint messages, so they should be printed pretty
+ much as the user saw them. Check for overflow before
+ converting floating point to integer. Do the right thing with
+ NaNs.
+
+ Check for index out-of-range before checking for length
+ out-of-range, to avoid some nasty effects if address
+ arithmetic overflows (e.g., indx + length < index).
+
+ Allow zero-length substrings when checking for lint if
+ do_lint == LINT_INVALID.
+
+Sun Nov 24 18:21:06 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (LINT_ALL, LINT_INVALID): New constants.
+ * main.c (main): Allow --lint=invalid which restricts warning to
+ things that aren't valid.
+ * eval.c (set_LINT): Update setting logic.
+
+Wed Nov 20 13:14:58 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (lintfunc): Improve ifdef for attribute to only
+ work for GCC 3.2 and later.
+ * io.c (PIPES_SIMULATED): Don't define if on AIX, which
+ does define TANDEM in one of its header files. Ugh.
+
+Tue Nov 19 15:33:55 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_substr): Use %lu in warnings instead of %d.
+
+Mon Nov 18 14:42:53 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * config.guess: Synced from ftp.gnu.org.
+ * config.sub: Ditto.
+
+Sun Nov 17 21:32:49 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Updated things to automake 1.7.1.
+
+Sun Nov 3 14:33:30 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_get_lhs): For variables, always clear UNINITIALIZED,
+ since the variable is about to be assigned to. From Stepan Kasal.
+
+Fri Nov 1 11:19:01 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (lintfunc): Can only supply attributes for a function
+ pointer if GCC >= 3. Added ifdefs. Bah, humbug.
+
+2002-10-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * array.c (array_init, concat_exp, assoc_find, do_delete):
+ Const-ify.
+ * awk.h (redirect, set_record, pp_func, pp_string_fp, format_val,
+ parse_escape, make_regexp, research, reisstring, remaybelong):
+ Likewise.
+ * awkgram.y (dumpintlstr, dumpintlstr2, func_use, dup_parms,
+ var_comp, finfo, fcompare, func_use, dumpintlstr, dumpintlstr2):
+ Likewise.
+ * builtin.c (stdfile, do_fflush, do_index, category_table):
+ Likewise.
+ * eval.c (push_forloop, push_args, PUSH_BINDING, RESTORE_BINDING,
+ cmp_nodes, op_assign, loop_info, fcall, fmt_ok, set_LINT,
+ comp_func): Likewise.
+ * ext.c (do_ext): Likewise.
+ * field.c (set_record): Likewise.
+ * io.c (gawk_popen, two_way_open, binmode, redirect, getredirect,
+ fatal): Likewise.
+ * node.c (values, format_val, make_str_node, parse_escape): Likewise.
+ * profile.c (pp_string, pp_match_op, pp_func, pp_string,
+ pp_string_fp): Likewise.
+ * re.c (make_regexp, research, reisstring, remaybelong): Likewise.
+
+2002-10-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * awk.h (__attribute__, ATTRIBUTE_UNUSED, ATTRIBUTE_NORETURN,
+ ATTRIBUTE_PRINTF, ATTRIBUTE_PRINTF_1, __extension__): Define.
+ (emalloc, erealloc): Fix format specifier warnings.
+ (do_nextfile):Mark with ATTRIBUTE_NORETURN.
+ (getredirect): Const-ify.
+ (msg, error, warning, r_fatal, lintfunc): Mark with
+ ATTRIBUTE_PRINTF_1.
+ (r_fatal): Mark with ATTRIBUTE_NORETURN.
+ * builtin.c (format_tree): Fix format specifier warning.
+ * eval.c (interpret): Likewise.
+ * main.c (usage, copyleft, catchsig, nostalgia, version): Mark
+ with ATTRIBUTE_NORETURN.
+ * profile.c (dump_and_exit): Likewise.
+
+2002-10-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * array.c (array_init): Use ISDIGIT, not isdigit.
+ * awk.h (m_tree_eval, force_number, force_string): Use
+ __extension__ in statement expressions.
+ * main.c (lintfunc): Fix !__SDTC__ case.
+ * regex_internal.c (calc_state_hash): Fix inline declaration.
+ * regexec.c (proceed_next_node): Cast assignment to correct type.
+
+2002-10-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * awk.h (exp_node, Func_ptr): Add prototype arguments.
+ * awkgram.y (yystype, token, getfname, nextc, pushback,
+ allow_newline, yylex): Likewise.
+ * io.c (wait_any): Likewise.
+ * profile.c (indent_in, indent_out): Likewise.
+ * random.h (random): Likewise.
+
+2002-10-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * array.c (grow_table): Const-ify.
+ * awk.h (RE_TRANSLATE_TYPE): Define.
+ (flagtab, casetable): Const-ify.
+ (getfname, shadow_funcs, redflags2str): Prototype.
+ (flags2str, genflags2str, nodetype2str, redflags2str, set_loc,
+ msg, error, warning, r_fatal): Const-ify.
+ * awkgram.y (tokentab, snode): Likewise.
+ * builtin.c (format_tree, do_strftime,
+ localecategory_from_argument): Likewise.
+ * eval.c (casetable, nodetypes, nodetype2str, flags2str,
+ genflags2str): Likewise.
+ * io.c (redflags2str, socketopen): Likewise.
+ * main.c (varfile, version_string, lintfunc, optab, copyleft,
+ varinit, init_vars): Likewise.
+ * msg.c (srcfile, msg, warning, error, set_loc, r_fatal):
+ Likewise.
+ * profile.c (pp_op_assign, pp_match_op, pp_redir): Likewise.
+ * random.c (sccsid): Likewise.
+ * version.c, version.in (version_string): Likewise.
+
+Tue Oct 29 10:50:52 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Update version in AC_INIT and AM_INIT_AUTOMAKE
+ * fixvers: Make grep for pattern a little smarter.
+
+Mon Oct 28 16:35:39 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (hash): Now a function pointer.
+ * array.c (gst_hash_string, scramble): New functions.
+ (awk_hash): Renamed from hash.
+ (hash): Now a function pointer.
+ (array_init): Change hash function based on environment for
+ experimentation.
+
+Mon Oct 28 13:21:20 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Applied lots of patches from Stepan Kasal, tweaked as needed
+ for current code base.
+
+ * node.c (dupnode): When n->stref overfows, flag the node as PERM.
+ Same for n->ahname_ref.
+ (unref): Remove the check for n->stref == LONG_MAX and
+ n->ahname_ref == LONG_MAX.
+ * awk.h (make_string): The third argument to make_str_node changed
+ from FALSE to 0, it's not Boolean.
+ (free_temp): Evaluate the argument only once, so that we
+ can call free_temp(tree_eval(n)) for achieving side effects.
+ (load_environ, load_procinfo): Changed return type to NODE *.
+ * main.c (load_environ): The ENVIRON_node should be created with type
+ Node_var_array and lnode set to NULL. Return pointer to the created node
+ and create an empty hash even on TANDEM.
+ (load_procinfo): Same mods for PROCINFO_node.
+ (init_args): ARGV_node should also have lnode set to NULL.
+ * eval.c (r_tree_eval): case Node_assign moved just above the other
+ assignment cases.
+ (op_assign): ++ and -- cases merged with += and -=, respectively.
+ (push_args): Evaluate all args, even in cases where more args are
+ supplied then required.
+ (interpret): In case Node_K_forarray, flag the variable
+ num_elems also as volatile, so that it survives longjmp() and
+ can be trusted when linting code.
+ (r_get_lhs): Case Node_param_list was unreachable (unless
+ something breaks really badly), remove it;
+ (r_tree_eval): Case Node_var_array removed from the last switch,
+ it was caught in the first switch above.
+ * profile.c (tree_eval): Again, case Node_var_array was caught above.
+ * awkgram.y (variable): Code simplified, making use of the above
+ changes.
+ * field.c (sc_parse_field): IGNORECASE only applies to regex based
+ field-splitting, so remove code that pays attention to it.
+ (do_split): Don't use parse_field if RS_is_null.
+ (set_FS): Beware of FS == "\\" even if RS_is_null.
+
+ Code changes to make things work better:
+ * field.c (set_FS): Don't use cmp_nodes() to compare old and new
+ value of FS, that uses IGNORECASE, which is a bad idea. Improve
+ logic for choosing sc_parse_field. Ensure that when RS_is_null
+ but using a single character, that we do pay attention to
+ case when doing regex splitting.
+ * io.c (set_RS): Don't use cmp_nodes() to compare old and new
+ value of RS, that uses IGNORECASE, which is a bad idea.
+
+Mon Oct 28 09:43:14 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * recomp.c (parse_expression): Change return statement into
+ two so it'll compile for SGI cc.
+
+ * awk.h (STR, CUR): Changed to STRCUR and NUMCUR respectively,
+ to avoid conflict with STR on some System V systems. Changed
+ in all source files.
+
+Thu Oct 24 16:14:34 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (AVG_CHAIN_MAX): Now a variable, to allow easy experimentation.
+ (array_init): Pulls a new value from env var AVG_CHAIN_MAX if it
+ exists and sets the variable.
+ * awk.h: Add declaration for array_init().
+ * main.c (main): Call array_init().
+
+Tue Oct 22 11:23:56 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bisonfix.sed: Updated for current bison. Death to alloca!
+
+2002-10-21 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * builtin.c (tolower, toupper): Add casts to char* to fix some
+ compiler warnings.
+ * eval.c (cmp_nodes): Ditto.
+ * regcomp.c (peek_token_bracket): Skip the byte already read.
+
+Wed Oct 16 15:02:09 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (set_RS): Make sure to always call set_FS().
+
+2002-10-11 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regcomp.c (re_compile_fastmap_iter): Remove the handling
+ OP_CONTEXT_NODE.
+ (regfree): Likewise.
+ (create_initial_state): Likewise.
+ (analyze): Remove the substitutions which became useless.
+ (calc_first): Likewise.
+ (calc_epsdest): Use edests of OP_BACK_REF in case that it has
+ epsilon destination.
+ (duplicate_node_closure): New function.
+ (duplicate_node): Remove the handling OP_CONTEXT_NODE.
+ (calc_inveclosure): Likewise.
+ (calc_eclosure): Likewise.
+ (calc_eclosure_iter): Invoke duplicate_node_closure instead of
+ direct invocation of duplicate_node.
+ (parse): Don't use comma operator in the return to avoid compiler
+ warning.
+ (parse_reg_exp): Likewise.
+ (parse_branch): Likewise.
+ (parse_expression): Likewise.
+ (parse_sub_exp): Likewise.
+ (parse_dup_op): Likewise.
+ * regex_internal.c (re_dfa_add_node): Remove the substitutions
+ which became useless.
+ (create_ci_newstate): Remove the handling OP_CONTEXT_NODE.
+ (create_cd_newstate): Likewise.
+ * posix/regex_internal.h (re_token_type_t): Remove the obsolete type.
+ (re_token_t): Likewise.
+ (re_dfa_t): Likewise.
+ (re_node_set_remove): New macro.
+ * regexec.c (check_matching): Remove the handling
+ OP_CONTEXT_NODE.
+ (check_halt_node_context): Likewise.
+ (proceed_next_node): Likewise.
+ (pop_fail_stack): Fix the memory leak.
+ (set_regs): Likewise.
+ (free_fail_stack_return): New function.
+ (sift_states_backward): Fix the memory leak. Remove the handling
+ OP_CONTEXT_NODE.
+ (update_cur_sifted_state): Append some if clause to avoid redundant
+ call.
+ (sub_epsilon_src_nodes): Use IS_EPSILON_NODE since it might be a
+ back reference.
+ (check_dst_limits): Remove the handling OP_CONTEXT_NODE.
+ (check_subexp_limits): Likewise.
+ (search_subexp): Likewise.
+ (sift_states_bkref): Likewise.
+ (transit_state_mb): Likewise.
+ (transit_state_bkref_loop): Likewise.
+ (transit_state_bkref_loop): Likewise.
+ (group_nodes_into_DFAstates): Likewise.
+ (check_node_accept): Likewise.
+ (sift_ctx_init): Add initializing.
+
+Tue Oct 15 14:18:53 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_IGNORECASE): Call set_RS() instead of
+ set_FS_if_not_FIELDWIDTHS(). The former calls the latter
+ for us, and also makes IGNORECASE affect RS like it's supposed to.
+ * field.c (FS_re_yes_case, FS_re_no_case): New variables.
+ (set_FS): Smarten up routine to not recompile FS_regexp if all
+ that's changed is IGNORECASE or if switching back to FS from
+ FIELDWIDTHS. Significant speed-up for cases where IGNORECASE
+ is assigned to for every record.
+ * io.c (RS_re_yes_case, RS_re_no_case): New variables.
+ (set_RS): Similar changes as to set_FS(). In particular,
+ IGNORECASE changing now affects record splitting too.
+ * re.c (refree): Set rp->pat.tranaslate to NULL. It comes
+ from casetable and shouldn't be freed. (Strictly necessary
+ only for old regex, but a good idea anyway).
+ Also, call regfree(& rp->pat) instead of manually free()ing
+ things, since there's dynamically allocated stuff hiding in
+ the buffer. Avoids a memory leak.
+
+Mon Oct 14 12:02:39 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Major space reduction in array management. Overhead reduced
+ to two NODE's per element from three.
+
+ * awk.h (ahash): Union is gone.
+ (hash.ref): New union member.
+ (ahnext): New definition into hash union.
+ (ahvalue): New definition into hash union.
+ (ahname_str): New member, points into hash union.
+ (ahname_len): New member, points into hash union.
+ (ahname_ref): New member, points into hash union.
+ * array.c: Replaces uses of ahname member with string and
+ length. Set the reference count correctly to 1 on new nodes.
+ * eval.c (interpret): Case for Node_K_arrayfor. dupnode() the
+ array indices, and set loop variable to new value made via
+ make_string().
+ * node.c (unref, dupnode): Node_ahash nodes are now also
+ reference counted, a la strings. Similar code is used to
+ increment/decrement the counts, and/or copy nodes as
+ needed.
+
+ Unrelated:
+ * awk.h (forsub): Removed. Not used.
+
+Sun Oct 13 16:58:27 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * profile.c (pprint): #undef the temporary defines at the end
+ of the case.
+ * eval.c (interpret): Likewise.
+ (assign_val): We can unref() before doing dupnode().
+ Also, move the check for NF < 0 from here ...
+ * field.c (set_NF): ... to here.
+ * main.c (varinit): No need to call set_NF().
+ * awkgram.y (statements): Don't be so generous when concatenating
+ `statements' with a `statement'.
+
+
+2002-10-13 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regcomp.c: Synced with development sources.
+ * regex_internal.c: Synced with development sources.
+ * regex_internal.h: Synced with development sources.
+ * regexec.c: Synced with development sources.
+
+Sun Oct 13 21:35:35 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (NODE): Reflags is now unsigned long for:
+ (exec_count): Defined to be sub.nodep.reflags. Using `number'
+ broke pgawk.
+ * profile.c (Node_K_delete_loop): Print out as a for loop
+ with a comment that it's internally the same as `delete array'.
+ * eval.c (Node_K_delete_loop): Increment the exec_count. Ooops.
+ * configure.in (AM_GNU_GETTEXT_VERSION): New macro call.
+ * custom.h: Updated description of the file at the top.
+
+Thu Oct 10 16:39:51 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (vname, exec_count): Now macros into different
+ parts of the NODE structure that can be safely used for them.
+ Saves 16 bytes per NODE.
+ * eval.c: Changed use of `vname' to `varname' to avoid new
+ macro.
+ * main.c (lintfunc): Made ifdefed decls match awk.h.
+ * eval.c (comp_func): Use memcmp instead of strcmp.
+ * configure.in (AC_CONFIG_HEADER): Physically append custom.h
+ to config.h to avoid subdir compiliation problems.
+
+Sun Oct 6 17:36:15 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Updated to automake 1.7 and bison 1.50.
+
+ * INSTALL: Replaced with current version from automake 1.7.
+ * config.guess: Replaced with current version from automake 1.7.
+ * config.sub: Replaced with current version from automake 1.7.
+ * depcomp: Replaced with current version from automake 1.7.
+ * doc/texinfo.tex: Replaced with current version from automake 1.7.
+ * install-sh: Replaced with current version from automake 1.7.
+ * missing: Replaced with current version from automake 1.7.
+ * mkinstalldirs: Replaced with current version from automake 1.7.
+ * ylwrap: Replaced with current version from automake 1.7.
+
+ * configure.in (DYNAMIC): Updated AC_DEFINE(DYNAMIC) to
+ three-argument form for autoheader.
+ * acinclude.m4: Removed includes of jm-mktime.m4 and
+ largefile.m4, which are now standard parts of Autoconf.
+
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Regenerated.
+ * awkgram.c: Regenerated.
+ * awklib/Makefile.in: Regenerated.
+ * configure: Regenerated.
+ * doc/Makefile.in: Regenerated.
+ * test/Makefile.in: Regenerated.
+
+Sun Sep 29 16:47:49 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h (__WIN32__): Added from gnuwin32 project, via
+ Stepan Kasal.
+
+ * awkgram.y: For tawk compatibility, added `delete(array)'.
+ To remain undocumented, since it's WAY non-standard.
+
+Sun Sep 22 22:23:50 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (re_cnt): Removed, not needed since no dfa code.
+ * awkgram.y (regexp, a_regexp): Removed use of re_cnt.
+ * re.c (re_update): Ditto.
+
+Thu Sep 19 10:55:37 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (binmode): Create function if defined(WIN32) also.
+
+ Updated to gettext 0.11.5, autoconf 2.54 and automake 1.6.3.
+
+ * aclocal.m4: Regenerated.
+ * m4/codeset.m4: Updated.
+ * m4/gettext.m4: Updated.
+ * m4/glibc21.m4: Updated.
+ * m4/iconv.m4: Updated.
+ * m4/lcmessage.m4: Updated.
+ * m4/lib-ld.m4: Updated.
+ * m4/lib-link.m4: Updated.
+ * m4/lib-prefix.m4: Updated.
+ * m4/progtest.m4: Updated.
+ * po/Makefile.in.in: Updated.
+ * po/Rules-quot: Updated.
+ * po/boldquot.sed: Updated.
+ * po/en@boldquot.header: Updated.
+ * po/en@quot.header: Updated.
+ * po/insert-header.sin: Updated.
+ * po/quot.sed: Updated.
+ * po/remove-potcdate.sin: Updated.
+
+Tue Sep 17 23:46:01 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Moved override of INSTALL to just after
+ AC_INIT so that it takes effect. Necessary for Autoconf 2.5x.
+
+Mon Sep 16 16:40:57 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * awkgram.y (want_assign): Removed.
+ (SLASH_BEFORE_EQUAL, ASSIGN): New terminals; ``/='' is now
+ formed from these two.
+ (a_slash): New non-terminal, representing either '/' or
+ SLASH_BEFORE_EQUAL.
+ (assign_operator): New non-terminal, replaces ASSIGNOP.
+ (REGEXP): yylex now eats the terminating '/' before
+ returning REGEXP token.
+ (exp): The check for C-like comments moved from here
+ (regexp): ... to here.
+ (common_exp): New non-terminal; contains common parts of exp
+ and rexp. (a_relop, relop_or_less): New non-terminals.
+ (rexp): Some rules updated to be analogous to exp.
+ (output_redir): Can contain only common_exp, not exp in general.
+
+Mon Sep 16 22:51:51 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (two_way_open): Move label use_pipes outsidef of ifdef,
+ just in case.
+
+Thu Sep 12 15:11:28 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (getfname): Return NULL if not found, remove
+ fatal error. Could be an extension function.
+ (dump_funcs): Walk symbol table counting functions before
+ mallocing table, since there could be extension functions,
+ func_count could be too small.
+ * profile.c (pp_builtin): Handle NULL return from getfname().
+ Print it as "extension_function()" if so.
+
+Tue Sep 10 17:33:48 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Minor code simplification.
+
+ * awk.h (in_array): Change return type to NODE*.
+ (assoc_exists): Remove declaration.
+ * array.c (in_array): Change return type to NODE *.
+ Return value is pointer to element value or NULL.
+ (assoc_exists): Removed function.
+ * eval.c (r_tree_eval): Case Node_in_array, change value
+ to test return of in_array() against NULL.
+ * io.c (pty_vs_pipes): Change test to make a tmp_string()
+ of the index and call in_array(). Add free_temp() of
+ subscript and free() of full_index (oops).
+
+2002-09-10 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * posix/regcomp.c: Wrap #include wchar.h and wctype.h in #if.
+ (build_range_exp): Add castings to strlen invocations.
+ (build_collating_symbol): Restore the type of characters from "char"
+ to "unsigned char", and supplement castings.
+ (build_collating_symbol): Likewise.
+ (build_equiv_class): Likewise.
+ (build_charclass): Likewise.
+ (seek_collating_symbol_entry): Likewise.
+ (parse_bracket_exp): Likewise.
+ (build_word_op): Supplement a casting.
+ * posix/regex_internal.c: Wrap #include wchar.h and wctype.h in #if.
+ (re_string_allocate): Fix castings.
+ (re_string_construct): Likewise.
+ (re_string_construct_common): Likewise.
+ (re_string_realloc_buffers): Likewise.
+ (build_wcs_buffer): Likewise.
+ (build_wcs_upper_buffer): Likewise.
+ (re_string_skip_chars): Likewise.
+ (re_string_reconstruct): Likewise.
+ * posix/regex_internal.h: Restore the type of characters in
+ re_string_t and bracket_elem_t from "char" to "unsigned char".
+ (re_string_elem_size_at): Fix castings.
+ * posix/regexec.c: Wrap #include wchar.h and wctype.h in #if.
+ (transit_state_bkref_loop): Restore the type of characters from
+ "char" to "unsigned char", and append a cast to "char*" pointer in
+ array subscript.
+ (check_node_accept_bytes): Likewise.
+ (find_collation_sequence_value): Likewise.
+
+Thu Sep 5 13:15:09 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (remaybelong): New routine.
+ (reisstring): Simplified the code a bit.
+ * awk.h (remaybelong): Declaration added.
+ * io.c (get_a_record): Change fourth grungy special case to
+ use remaybelong() instead of strchr() on last character.
+
+Wed Sep 4 13:20:26 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (do_input): Recode guts of main loop to be easier
+ to trace with a debugger.
+ (get_a_record): Fourth grungy special case for RE-based
+ record splitting added. See explanatory comments there
+ and test/rebuf.awk.
+
+2002-09-03 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * posix/regcomp.c (regcomp): Append "__restrict" modifier to avoid
+ warnings of some compilers.
+ (build_collating_symbol): Change the type of characters from
+ "unsigned char" to "char", and append a cast to "char*" pointer in
+ array subscript.
+ (build_collating_symbol): Likewise.
+ (build_equiv_class): Likewise.
+ (build_charclass): Likewise.
+ (re_compile_pattern): Remove incorrect cast.
+ (re_compile_fastmap_iter): Change the type of characters from
+ "unsigned char" to "char", and append a cast to "char*" pointer
+ in array subscript.
+ (parse_bracket_exp): Likewise.
+ * posix/regex_internal.c (re_string_construct_common): Likewise.
+ (re_string_allocate): Likewise.
+ (re_string_construct): Likewise.
+ (re_string_realloc_buffers): Likewise.
+ (build_wcs_buffer): Likewise.
+ (re_string_reconstruct): Likewise.
+ * posix/regex_internal.h: Change the type of characters in
+ re_string_t and bracket_elem_t from "unsigned char" to "char".
+ * posix/regexec.c (regexec): Append "__restrict" modifier to avoid
+ warnings of some compilers.
+ (transit_state_bkref_loop): Change the type of characters from
+ "unsigned char" to "char", and append a cast to "char*" pointer in
+ array subscript.
+ (check_node_accept_bytes): Likewise.
+ (find_collation_sequence_value): Likewise.
+
+Wed Aug 21 15:40:36 2002 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.in: Define --without-libintl-prefix and
+ --without-libiconv-prefix for Cygwin by default.
+ * Makefile.am: Call fixvers from $(srcdir).
+ * awk.h: Don't define O_BINARY on Cygwin.
+
+Wed Aug 21 15:31:57 2002 Andreas Buening <andreas.buening@nexgo.de>
+
+ * configure.in (AC_OBJEXT, AC_EXEEXT): Added. Removed OS/2 goo.
+ * Makefile.am (check-local): Add $(EXEEXT) suffixes, remove OS/2 goo.
+ * regcomp.c, regex_internal.c, regexec.c: Conditionalize include of
+ <wchar.h> and <wctype.h> on RE_ENABLE_I18N.
+
+Wed Aug 21 14:43:57 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gettext.h (ENABLE_NLS): Add include of locale.h so that things
+ compile even without optimization. Sheesh.
+ * io.c (two_way_open, pty_vs_pipes): Conditionalize pty code on
+ HAVE_TERMIOS_H.
+
+Thu Aug 8 22:16:10 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Force LC_NUMERIC locale to "C", esp. for
+ M$ systems. Ugh.
+
+Wed Aug 7 13:42:01 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Improve test for newlines at beginning of
+ record but with nothing following it. See test/nulrsend.
+
+Mon Aug 5 10:12:39 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Add option to use ptys instead of pipes for |&.
+ Basic plumbing originally from Paolo Bonzini <bonzini@gnu.org>.
+
+ * awk.h (RED_PTY): New flag.
+ (assoc_exists): Add declaration.
+ * array.c (in_array): Use FALSE not zero for return value.
+ (assoc_exists): New routine to find and return value for an index
+ in an array.
+ * configure.in: Test for termios.h and stropts.h, and grantpt function.
+ * io.c: Include termios.h and stropts.h if available.
+ (redflags2str): Add RED_PTY to table.
+ (redirect): Add RED_PTY to flags turned off when searching.
+ (close_redir): Close write channel for two-way pipes
+ that use ptys by sending an EOF.
+ (two_way_open): If pty_vs_pipe(), use pty's to open two-way pipes as
+ they are line-buffered by default --> alleviates deadlock problems.
+ If fails, fall back to using pipes.
+ (pty_vs_pipe): New function.
+ * main.c (arg_assign): Clean up English in some of the error messages.
+
+Sun Aug 4 00:37:38 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * re.c (make_regexp): Don't pass the error message returned by
+ re_compile_pattern() to gettext(); it's already gettextized.
+ (make_regexp): Minor reformat of code.
+
+Wed Jul 31 23:50:31 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Removed dfa code from gawk since not really needed with new regex.
+
+ * Makefile.am: Removed dfa.h and dfa.c.
+ * awk.h (struct Regexp): Removed `dfareg' and `dfa' members.
+ (make_regexp): Last parameter in function went away, changed decl.
+ (avoid_dfa): Removed declaration.
+ * awkgram.y: Fixed call to make_regexp().
+ * eval.c (match_op): Simplified: removed call to avoid_dfa() and
+ `kludge_need_start' variable. Instead, pass FALSE as last parameter
+ of research().
+ * field.c (set_FS): Fixed call to make_regexp().
+ * io.c (get_a_record, set_RS): Fixed calls to make_regexp().
+ * re.c (make_regexp): Removed last paramter (`dfa') from function.
+ Simplified the code.
+ (research): Simplified the code, removed calls to dfa stuff.
+ (dfaerror): Removed function.
+ (re_update): Fixed call to make_regexp().
+ (avoid_dfa): Removed function.
+
+Thu Jul 25 21:55:45 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regcomp.c, regex_internal.c, regex_internal.h, regexec.c: Bug
+ fixes from Isamu Hasegawa <isamu@yamato.ibm.com> and Stepan Kasal
+ <kasal@math.cas.cz> applied.
+
+Sat Jul 6 23:28:37 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yyerror): Change text of unexpected newline message to
+ include end of string.
+
+Mon Jun 17 17:58:55 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (do_split): Per Michal Jaegermann, move free_temp(fs)
+ above label `out'.
+
+Tue Jun 11 23:26:09 2002 Paul Eggert <eggert@twinsun.com>
+
+ Update to autoconf 2.53 and automake 1.6.1.
+
+ * acconfig.h: Removed.
+ * m4/isc-posix.m4: Removed.
+ * m4/jm-mktime.m4: Removed.
+ * m4/largefile.m4: Removed.
+ * m4/ssize_t.m4: Removed.
+ * ansi2knr.c: Updated.
+ * depcomp: Updated.
+ * install-sh: Updated.
+ * missing: Updated.
+ * mkinstalldirs: Updated.
+ * ylwrap: Updated.
+
+ * configure.in: Improved quoting.
+ * acinclude.m4: Use `m4_sinclude', not antiquated `sinclude'.
+
+Tue Jun 11 23:08:40 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Add `getgrent' to list of functions checked
+ so that awklib/grcat is compiled correctly.
+
+Tue Jun 11 22:18:42 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ Improve argument parsing and -v assignment.
+
+ * awk.h (struct src): Add additional enum values.
+ (arg_assign): Return type and arg list changes.
+ * io.c (nextfile): Add extra arg in call to `arg_assign'.
+ * main.c (pre_assign): Nuked.
+ (allocfiles): New variable.
+ (srcfiles_add, preassigns_add): New macros.
+ (main): Logic cleaned up.
+ (add_src): New function.
+
+ Use `size_t' for optimal_bufsize function.
+
+ * awkgram.y (yylex): `len' is now size_t.
+ * pc/gawkmisc.pc (optimal_bufsize): Change return type to size_t.
+ * posix/gawkmisc.c (optimal_bufsize): Change return type to size_t.
+ * unsupported/atari/gawkmisc.atr (optimal_bufsize): Change return type
+ to size_t.
+ * unsupported/tandem/tmisc.c (optimal_bufsize): Change return type to size_t.
+ * vms/gawkmisc.vms (optimal_bufsize): Change return type to size_t.
+ * README_d/README.hpux: New file.
+
+Fri May 24 12:23:01 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (init_profiling): Remove default initialization
+ of `prof_fp' to stderr. Per Stepan Kasal <kasal@math.cas.cz>.
+
+Wed May 15 15:39:17 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Work through builtin operations to make sure that
+ anything that might have side effects gets dealt with.
+
+ * array.c (do_delete): Evaluate subscript first before
+ checking if something is or isn't an array.
+ * builtin.c (sub_common): Evaluate replacement text, and
+ free it if no match of regex in source text.
+
+Wed May 15 15:30:34 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Switch to new version of regex from IBM Japan.
+
+ * regcomp.c: New file.
+ * regex.c: Replaced with new version.
+ * regex.h: Replaced with new version.
+ * regex_internal.c: New file.
+ * regex_internal.h: New file.
+ * regexec.c: New file.
+ * Makefile.am (EXTRA_SOURCES): New files added.
+
+Tue May 14 17:04:05 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (<locale.h>): Move check and include into gettext.h.
+ * gettext.h (<locale.h>): Add check and include per patch from
+ Bruno Haible.
+
+ * field.c (do_split): When checking for split of null string,
+ evaluate seperator if it's not FS, since could have side effects.
+ At end, free_temp(fs), not free_temp(sep).
+ Both of these thanks to Stepan Kasal <kasal@math.cas.cz>.
+
+Mon May 13 00:41:31 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h (ultrix): Add define GETGROUPS_NOT_STANDARD.
+ * main.c (init_groupset): For GETGROUPS_NOT_STANDARD, use old way
+ to set `ngroups'.
+
+2002-05-10 Andreas Schwab <schwab@suse.de>
+
+ * dfa.c (parse_bracket_exp_mb): Fix warning.
+
+Thu May 9 22:28:32 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (sub_common): Fix logic for match of null strings to
+ get correct semantics. See test/gsubtst2.*.
+ * field.c (do_split): Minor code cleanup; the third arg to split()
+ is set to be FS by the grammar, so don't need to check it for NULL.
+ Thanks to Stepan Kasal <kasal@math.cas.cz>.
+ * awk.h (locale.h): Move include before that of "gettext.h" for systems
+ that define functions that gettext.h would use when NLS is disabled.
+ Per bug report from Ayamura Kikuchi <ayamura@ayamura.org>.
+
+Tue May 7 17:31:01 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Miscellanious patches courtesy of Stepan Kasal <kasal@math.cas.cz>.
+
+ * field.c, main.c: Tidy up some comments.
+ * field.c (set_FIELDWIDTHS): Init fw_alloc to 4 so it isn't
+ immediately realloced.
+ * main.c (load_procinfo): Check value of FS/FIELDWIDTHS for
+ value of PROCINFO["FS"].
+ * awk.h (set_FS_if_not_FIELDWIDTHS): Removed decl.
+ * field.c (set_FS_if_not_FIELDWIDTHS): Removed function.
+ * eval.c (set_IGNORECASE): Use inline code checking `using_fieldwidths()'.
+ * io.c (set_IGNORECASE): Ditto.
+
+Sun May 5 14:28:34 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix a memory leak in array for loops if the body contains a
+ `next' or `nextfile' statement. The changes maintain a stack
+ of active for loops that is pushed and popped for each loop,
+ and popped entirely for `next', `nextfile', etc.
+
+ * eval.c (forloops_active, pop_forloop, pop_all_forloops, push_forloop):
+ new functions.
+ (interpret): Case Node_K_arrayfor, call push and pop functions.
+ Case Node_rule_list: Pop loops and pop fcalls after longjmp.
+ Cases Node_K_next, Node_K_nextfile, Node_K_break and
+ Node_K_continue, removed check before longjmp.
+ Case Node_K_exit: Add loop check.
+ (loop_stack, nloops, nloops_active): New variables that implement
+ the stack.
+
+Wed May 1 16:41:32 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.1: Release tar file made.
+
+Wed May 1 16:07:49 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.c: Installed latest version from glibc.
+
+Sun Apr 28 17:19:07 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * fixvers: Changed patterns to allow test versions of the
+ form `gawk-3.1.1a'.
+ * patchlev.h: Patchlevel is now a string constant.
+ * main.c (version): Print patchlevel using %s, not %d.
+ * Makefile.am: Rework DEFPATH stuff and datadir stuff yet again.
+
+ * config.sub: Updated with current version from ftp.gnu.org.
+ * config.guess: Ditto.
+
+ Upgrade to gettext-0.11.2:
+
+ * ABOUT-NLS: Replaced with version from gettext 0.11.2.
+ * config.rpath: Replaced with version from gettext 0.11.2.
+ * intl/*: Replaced with version from gettext 0.11.2.
+ * po/Makefile.in.in: Replaced with version from gettext 0.11.2.
+ * po/Makevars.template: Replaced with version from gettext 0.11.2.
+ * po/Rules-quot: Replaced with version from gettext 0.11.2.
+ * po/boldquot.sed: Replaced with version from gettext 0.11.2.
+ * po/en@boldquot.header: Replaced with version from gettext 0.11.2.
+ * po/en@quot.header: Replaced with version from gettext 0.11.2.
+ * po/insert-header.sin: Replaced with version from gettext 0.11.2.
+ * po/quot.sed: Replaced with version from gettext 0.11.2.
+ * po/remove-potcdate.sin: Replaced with version from gettext 0.11.2.
+ * m4/codeset.m4: Replaced with version from gettext 0.11.2.
+ * m4/gettext.m4: Replaced with version from gettext 0.11.2.
+ * m4/glibc21.m4: Replaced with version from gettext 0.11.2.
+ * m4/iconv.m4: Replaced with version from gettext 0.11.2.
+ * m4/isc-posix.m4: Replaced with version from gettext 0.11.2.
+ * m4/lcmessage.m4: Replaced with version from gettext 0.11.2.
+ * m4/lib-ld.m4: Replaced with version from gettext 0.11.2.
+ * m4/lib-link.m4: Replaced with version from gettext 0.11.2.
+ * m4/lib-prefix.m4: Replaced with version from gettext 0.11.2.
+ * m4/progtest.m4: Replaced with version from gettext 0.11.2.
+
+Wed Apr 17 15:09:45 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.c (PREFIX): Change test for token concatenation ability
+ to `#ifdef HAVE_STRINGIZE'. If a cpp has one, it ought to have
+ the other.
+
+Tue Apr 16 12:26:06 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (tree_eval): Make unary minus case smarter,
+ use is_scalar test and if false parenthesize expression.
+ Add Node_TEXTDOMAIN case.
+ (pp_lhs, is_scalar, prec_level): Add Node_TEXTDOMAIN cases.
+
+Thu Apr 11 21:28:33 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (do_adump): Spelling fix in output message.
+ * builtin.c: Ditto, in multiple routines.
+ (do_toupper, do_tolower): Add cast to size_t in assigment to mbclen
+ for some compilers.
+ * re.c (research): Fix way returning is done to silence some
+ compiler diagnostics.
+
+Wed Apr 10 19:30:51 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (datadir): Set directly to have `/awk'.
+ (DEFPATH): Go back to using $(datadir) for path.
+
+Tue Apr 9 17:34:09 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Upgraded to gettext 0.11.1.
+
+ * Makefile.am (LDADD): Use @LIBINTL@ instead of @INTLLIBS@.
+ * ABOUT-NLS: Version from 0.11.1.
+ * config.rpath: Version from 0.11.1.
+ * aclocal.m4: Regenerated based on new files.
+ * intl/*: Replaced with version from 0.11.1.
+ * m4/ChangeLog: New file.
+ * m4/codeset.m4: New file.
+ * m4/gettext.m4: Version from 0.11.1.
+ * po/ChangeLog: New file.
+ * po/Makefile.in.in: Version from 0.11.1.
+ * po/remove-potcdate.sin: New file.
+
+Mon Apr 8 22:22:58 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (libexecdir): Set directly to have `/awk'.
+ (DEFPATH): Use $(pkgdatadir) for path.
+ (install-exec-hook): Add version link for pgawk.
+ (uninstall-links): Remove pgawk version link.
+
+Wed Mar 20 13:44:21 2002 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c (__alignof__): Definition for non-GCC compilers.
+
+Sun Mar 17 17:41:55 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (do_pathopen): Malloc buffers to hold constructed
+ filenames: No Arbitrary Limits! Thanks to keoki@techie.com
+ for the bug report.
+
+Sun Mar 10 16:59:06 2002 Scott Deifik <scottd@amgen.com>
+
+ * awk.h (LOCALEDIR): Provide a definition in case not using
+ i18n stuff.
+
+Wed Mar 6 18:14:44 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (usage): Add some explanatory text and examples at end.
+
+Sun Mar 3 16:42:50 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.h, getopt.c, getopt1.c: Update to current version
+ from glibc CVS.
+
+Fri Feb 22 15:53:38 2002 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * dfa.c (fetch_wc): Fix type from wchar_t to wint_t.
+ (parse_bracket_exp_mb): Likewise.
+ * regex.c (extract_number): Retrieve the sign information from
+ byte-code in case of AIX.
+
+Thu Feb 21 16:44:24 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (resetup): Moved setting re_max_failures into regex.c.
+ * regex.c (re_max_failures): Set to really big if REGEX_MALLOC
+ defined. Do this in both places that define re_max_failures.
+
+Thu Feb 21 19:02:22 2002 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * builtin.c (sub_common): Avoid index_multibyte_buffer invocation
+ in single byte character environments.
+
+Thu Feb 21 10:08:56 2002 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * dfa.c (parse_bracket_exp_mb): For ':', use wctype_t in MALLOC,
+ not wchar_t.
+
+Thu Feb 21 09:52:16 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Upgraded to automake 1.5 and gettext-0.11.
+ Also bug fix to multibyte code.
+
+ * ABOUT-NLS: Upgraded.
+ * config.guess, config.sub, config.rpath, gettext.h, ylwrap: New files.
+ * Makefile.am: Added above to appropriate places.
+ * awk.h: Replace libintl.h and macros with include of gettext.h.
+ (emalloc, erealloc): Add num bytes to error message, put string inside _().
+ (index_multibyte_buffer): Removed decl.
+ * awklib/Makefile.am: Use $(EXEEXT) for grcat and pwcat targets.
+ * builtin.c (index_multibyte_buffer): Made static to this file.
+ (sub_common): Add checks that replacement string is length > 0 so
+ that we don't try to malloc(0): this fails on some systems.
+ * configure.in (AM_GNU_GETTEXT): Update macro for gettext 0.11.
+ (ALL_LINGUAS): Removed.
+ * m4/codeset.m4: New file.
+ * m4/gettext.m4: Updated.
+ * m4/glibc21.m4: New file.
+ * m4/iconv.m4: New file.
+ * m4/isc-posix.m4: New file.
+ * m4/lcmessage.m4: Updated.
+ * m4/lib-ld.m4: New file.
+ * m4/lib-link.m4: New file.
+ * m4/lib-prefix.m4: New file.
+ * m4/progtest.m4: Updated.
+ * intl/*: Replaced with version from gettext 0.11.
+ * po/*: Revised for gettext 0.11.
+
+Mon Feb 18 14:42:39 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (nondec2awknum): Change assert to runtime check
+ in case user passed in bad data.
+
+2002-02-17 Paul Eggert <eggert@twinsun.com>
+
+ * re.c (resetup): Try to avoid silly limitation of regex.c by
+ setting re_max_failures to the largest reasonable value.
+
+Sun Feb 17 14:57:43 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (research): If re_search() returns -2, the
+ match failed since regex couldn't allocate enough memory
+ for what it needed. Fail with a fatal message instead.
+ This is a workaround, not a fix, but I don't mess with
+ regex.[ch].
+
+Fri Feb 8 16:01:11 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (LEX_FOR): Fix case of array loop with body of single
+ delete statement to actually check the right things to make the
+ optimization.
+ * profile.c (tree_eval): Add case for Node_K_delete_loop.
+ (prec_level): Ditto.
+
+Mon Feb 4 10:38:00 2002 Bruno Haible <bruno@clisp.org>
+
+ * awk.h (dcngettext): New macro.
+ (do_dcngettext): New declaration.
+ * awkgram.y (tokentab): Add dcngettext.
+ (snode): Add a warning for incorrect use of dcngettext.
+ (dumpintlstr): fflush at the end, not in the middle.
+ (dumpintlstr2): New function.
+ * builtin.c (localecategory_from_argument): New function, extracted
+ from do_dcgettext.
+ (do_dcgettext): Call it.
+ (do_dcngettext): New function.
+
+Sun Feb 3 17:56:20 2002 Bruno Haible <bruno@clisp.org>
+
+ * builtin.c (do_bindtextdomain): Don't free the same variable twice.
+ * main.c (main): Call setlocale for LC_MESSAGE, to make dcgettext
+ function work on glibc systems.
+
+Wed Jan 23 15:03:36 2002 Andreas Buening <andreas.buening@nexgo.de>
+
+ * configure.in (PATH_SEPARATOR): Code added for OS/2.
+ Makefile.am (PATH_SEPARATOR): Added.
+ (DEFPATH): Make use of PATH_SEPARATOR.
+
+Wed Jan 23 14:46:04 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Add test for lasttok != '$' when looking
+ at _"...". See comments in code.
+
+Wed Aug 15 07:43:10 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c : Implements the codes for exactn_bin to work correctly
+ in multibyte environments, in case of invalid multibyte sequence.
+
+Wed Aug 15 07:36:56 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c : Implements the codes for charset/charset_not to
+ work in multibyte environments.
+
+Wed Aug 15 05:04:34 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c : Add some comments.
+
+Wed Aug 15 05:04:15 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c (count_mbs_length): New function, check the mutibyte
+ strings and count how many wchar_t the substring occupy.
+ (CHAR_T): New macro, character type depending on
+ environments(singlebyte/multibyte).
+ (UCHAR_T): New macro, unsigned character type.
+ (COMPILED_BUFFER_VAR): New macro, the buffer containing
+ the compiled buffer.
+ Adapt singlebyte/multibyte environments with CHAR_T, UCHAR_T,
+ and COMPILED_BUFFER_VAR.
+
+Mon Jun 25 09:00:41 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c : Reorganize code to build code twice. byte_* are
+ for single byte, wcs_* are for multibyte character sets.
+ Chose functions according to current locale dynamically.
+ * regex.c (convert_mbs_to_wcs): New function, convert multibyte
+ strings to wide character strings for multibyte environments.
+
+Fri Jun 22 05:43:50 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * regex.c (MBS_SUPPORT): New macro, defined if the environment
+ can handle multibyte characters.
+ (OFFSET_ADDRESS_SIZE): Offset address size in the
+ compiled buffer.
+ Rewrite offset addresses with OFFSET_ADDRESS_SIZE.
+
+Thu Apr 26 08:03:17 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * builtin.c (index_multibyte_buffer): Inspect the buffer and write
+ the index.
+ (sub_common): In multibyte environment, skip multibyte characters
+ when we check special characters.
+ * awk.h (index_multibyte_buffer): Add prototype.
+ * eval.c (cmp_nodes): In multibyte environment, compare per character.
+ * field.c (re_parse_field): In multibyte environment, avoid to
+ call research() on invalid boundary.
+ (sc_parse_field): In multibyte environment, avoid to compare on
+ invalid boundary.
+ (null_parse_field): In multibyte environment, split per
+ character, not per byte.
+ * io.c (get_a_record): In multibyte environment, avoid to compare
+ on invalid boundary.
+
+Wed Apr 25 08:29:47 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * awk.h (strncasecmpmbs): Add prototype.
+ * builtin.c (strncasecmpmbs): New function like strncasecmp but for
+ multibyte strings.
+ (do_index): In multibyte environment, compare per character.
+ * builtin.c (do_tolower): In multibyte environment, user towlower
+ instead of TOLOWER.
+ (do_toupper): In multibyte environment, user towupper instead
+ of TOUPPER.
+
+Tue Apr 24 10:38:06 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ In multibyte environments, handle multibyte characters as single
+ characters in bracket expressions.
+
+ * dfa.h (mb_char_classes): New structure.
+ (mbcsets): New variable.
+ (nmbcsets): New variable.
+ (mbcsets_alloc): New variable.
+ * dfa.c (prtok): Handle MBCSET.
+ (fetch_wc): New function to fetch a wide character.
+ (parse_bracket_exp_mb): New function to handle multibyte character
+ in lex().
+ (lex): Invoke parse_bracket_exp_mb() for multibyte bracket expression.
+ (atom): Handle MBCSET.
+ (epsclosure): Likewise.
+ (dfaanalyze): Likewise.
+ (dfastate): Likewise.
+ (match_mb_charset): New function to judge whether a bracket match
+ with a multibyte character.
+ (check_matching_with_multibyte_ops): Handle MBCSET.
+ (dfainit): Initialize new variables.
+ (dfafree): Free new variables.
+
+Mon Apr 23 01:40:09 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ Implement the mechanism to match with multibyte characters,
+ and use it for `period' in multibyte environments.
+
+ * dfa.h (mbps): New variable.
+ * dfa.c (prtok): Handle ANYCHAR.
+ (lex): Use ANYCHAR for `period' in multibyte environments.
+ (atom): Handle ANYCHAR.
+ (state_index): Initialize mbps in multibyte environments.
+ (epsclosure): Handle ANYCHAR.
+ (dfaanalyze): Handle ANYCHAR.
+ (dfastate): Handle ANYCHAR.
+ (realloc_trans_if_necessary): New function.
+ (transit_state_singlebyte): New function.
+ (match_anychar): New function.
+ (check_matching_with_multibyte_ops): New function.
+ (transit_state_consume_1char): New function.
+ (transit_state): New function.
+ (dfaexec): Invoke transit_state if expression can match with
+ a multibyte character in multibyte environments.
+ (dfamust): Handle ANYCHAR.
+
+Fri Apr 20 11:31:24 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ Avoid incorrect state transition in multibyte environments.
+
+ * dfa.h (nmultibyte_prop): New variable.
+ (multibyte_prop): New variable.
+ * dfa.c (addtok): Set inputwcs.
+ (dfastate): Avoid incorrect state transition in multibyte
+ environments.
+ (dfaexec): Likewise.
+ (dfainit): Init multibyte_prop.
+ (dfafree): Free multibyte_prop.
+ (inputwcs): New variable.
+ (mblen_buf): New variable contains the amount of remain byte
+ of corresponding multibyte character in the input string.
+
+Fri Apr 20 06:28:59 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ Handle a multibyte character followed by '*', '+', and '{n,m}'
+ correctly.
+
+ * dfa.c (update_mb_len_index): New function.
+ Support for multibyte string.
+ (FETCH): Call update_mb_len_index.
+ (lex): Check cur_mb_index not to misunderstand multibyte characters.
+ (atom): Make a tree from a multibyte character.
+ (dfaparse): Initialize new variables.
+ (mbs): New variable.
+ (cur_mb_len): New variable.
+ (cur_mb_index): New variable.
+
+Thu Apr 19 09:32:47 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * awkgram.y (cur_mbstate): New varialble containing means current
+ shift state.
+ (cur_char_ring): New varialbe reffering the buffer which contains
+ last some character from the buffer.
+ (cur_ring_idx): New variable containing the current index on
+ cur_char_ring.
+ (nextc_is_1stbyte): New macro, means that last nextc() return a
+ singlebyte character or 1st byte of a multibyte character.
+ (nextc): Check the buffer and update cur_ring_char in multibyte
+ environments.
+ (pushback): Adjust cur_ring_idx in multibyte environments.
+ (yylex): Add check whether nextc() returned 1st-byte in multibyte
+ environments.
+ * re.c (make_regexp): In multibyte environment, skip multibyte
+ characters when we check special characters.
+
+Wed Apr 18 07:58:20 2001 Isamu Hasegawa <isamu@yamato.ibm.com>
+
+ * awk.h (MBS_SUPPORT): New flag, means supporting multibyte strings.
+ * configure.in : Add check for wchar.h, wctype.h, mbrtowc, and mbrlen.
+
+Wed Jan 16 16:32:40 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_strtonum): Simplified. Check first if the
+ value matches a non-decimal number, and if so convert it.
+ Otherwise do a regular force_number.
+
+Mon Jan 7 22:12:15 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (statement): Moved delete, print, and expressions into
+ new non-terminal `simple_stmt'. Allow opt_simple_stmt in the
+ first and third part of a for loop, per latest POSIX, which documents
+ an otherwise undocumented historical oddity in Unix awk. This has
+ the pleasant side effect of making line numbers more accurate for
+ messages involving delete statements.
+ (opt_simple_stmt, simple_stmt): New non-terminals.
+
+ Based on bug report from drj@pobox.com.
+
+Mon Dec 24 14:04:02 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Changes for VMS with new strftime:
+ (AC_HEADER_TIME): Added.
+ (AC_CHECK_HEADERS): Check for sys/time.h.
+ (TIME_T_IN_SYS_TYPES_H): Add header check.
+ * acconfig.h (TIME_T_IN_SYS_TYPES_H): Added.
+
+Wed Dec 19 16:01:58 2001 Peter J. Farley III <pjfarley@dorsai.org>
+
+ * configure.in: Add MS-DOS to getpgrp special case.
+ * dfa.c, getopt.c, regex.c: Fix code to work with --disable-nls.
+
+Wed Dec 19 15:59:25 2001 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * profile.c (init_profiling_signals) [__DJGPP__]: Use SIGINT
+ instead of SIGHUP and SIGQUIT instead of SIGUSR1.
+
+Tue Dec 18 20:56:07 2001 Andreas Buening <andreas.buening@nexgo.de>
+
+ More OS/2 stuff.
+
+ * awk.h (O_BINARY): Don't redefine for EMX.
+ * io.c (gawk_popen): Add __EMX__ in case compiling DOS executable.
+ * configure.in: Add OS/2 to case for manual GETPGRP_VOID.
+
+Tue Dec 4 17:54:30 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ New configure time option, --with-whiny-user-strftime.
+
+ * configure.in (AC_ARG_WITH): Add appropriate code for autoconf.
+ * accondig.h (USE_INCLUDED_STRFTIME): Add #undef for it.
+ * custom.h (USE_INCLUDED_STRFTIME): Set things up write.
+
+Tue Dec 4 16:44:07 2001 Andreas Buening <andreas.buening@nexgo.de>
+
+ Mongo patch for updated OS/2 support.
+
+ * awk.h (TOUPPER, TOLOWER): Define only if not already defined.
+ * awkgram.y (extproc feature): Add ifdef for __EMX__.
+ * gawkmisc.c (__EMX__): Include pc/gawkmisc.c directly.
+ * io.c (__EMX__): Added for a number of places in addition to OS2 def.
+ (two_way_open): Added OS/2 specific code added that uses spawn.
+ (gawk_popen): Ditto.
+
+Mon Dec 3 14:07:56 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix use of getgroups to use dynamic memory, solves
+ problem of systems where NGROUPS_MAX lies.
+
+ * awk.h (groupset, ngroups): New extern variables.
+ * configure.in (AC_CHECK_FUNCS): Add getgroups to list.
+ * io.c (user_open): Use global ngroups and groupset variables,
+ don't call getgroups here.
+ * main.c (init_groupset): New function to init global
+ vars using malloc. Declare it at top.
+ (main): Call init_groupset().
+ (load_procinfo): Use global ngroups and groupset variables.
+
+Sun Nov 18 11:56:01 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.c (srandomdev): ifdef-out. Lots of compile time
+ problems on multiple platforms, and gawk doesn't even
+ use the routine. The heck with fine-grained solutions.
+
+Wed Nov 14 16:12:40 2001 Pat Rankin <rankin@eql.caltech.edu>
+
+ * builtin.c (bchunk_one): Use `ofre < 1' instead of `ofre <= 0'
+ to avoid compiler complaint about suspicious comparison for
+ unsigned variable. (`ofre == 0' ought to suffice...)
+
+Tue Nov 13 17:27:52 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yyerror): Fix the code to behave like it
+ used to. Keep "no arbitrary limits" by mallocing the
+ buffer and freeing it.
+
+Wed Nov 7 16:46:20 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yyerror): Remove dependency upon buf[] to
+ hold prepended space and `^' pointer. Avoids core dumps
+ for long source lines.
+
+Sat Nov 3 22:27:21 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * m4/strtod.m4: Add missing `#endif'. Oops.
+
+Mon Oct 29 14:53:57 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Add semicolons in calls to count_args().
+ Apparently bisoon adds a semicolon to each body
+ automatically and byacc doesn't.
+
+Sun Oct 28 16:53:18 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): Fix off-by-one error in "ran out
+ for this one" diagnostic. Also fix lint check for too many
+ arguments vs. count in format string.
+
+Wed Oct 10 11:01:47 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * fixvers: Check that files exist before doing `cmp', in
+ case they're in a source code system and aren't there.
+ Fix from Grant Erickson (gerickson@brocade.com).
+
+Thu Oct 4 18:20:36 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_tree_eval): For comparison, dupnode() results of
+ evaluation so that we can hang on to them and avoid memory
+ corruption. Change calls to free_temp() to unref().
+
+Tue Sep 25 15:19:53 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (iop_open): Only call os_close_on_exec() for
+ fd > fileno(stderr).
+
+2001-09-07 Paul Eggert <eggert@twinsun.com>
+
+ * io.c (redirect): When deciding to use the fdopen bug hack,
+ use "__sun" rather than "solaris". No compilers predefine
+ "solaris", but both GCC and Sun C predefine "__sun".
+
+Thu Aug 30 15:17:12 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (copyleft): Use a printf %d for last year of update
+ to avoid translation strings changing when the file
+ is updated from now on. Suggestion from Ulrich Drepper.
+
+Thu Aug 23 14:01:14 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (unary minus production): Add check that value
+ isn't a string. Based on bug report from drj@pobox.com.
+ * profile.c (tree_eval): For node_val, only test NUMBER
+ to see if value is numeric, not NUM|NUMBER.
+
+Thu Aug 16 12:21:28 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in (ALL_LINGUAS): Added `fr' and `tr'.
+ * po/fr.po, po/tr.fo: New files.
+
+2001-08-13 Paul Eggert <eggert@twinsun.com>
+
+ This patch fixes a bug that causes gawk to rewind standard
+ input incorrectly. It also removes all instances of fseek,
+ from the gawk source proper, which should make gawk a bit
+ more portable.
+
+ (The original patch removed off_t & lseek too, but I need
+ that for something else. ADR.)
+
+ * posix/gawkmisc.c (optimal_bufsize):
+ Don't use lseek on the input, because that might change
+ its state. Instead, just check whether it is a regular file.
+ This obviates the need to invoke isatty.
+ (Also, fix a spelling error in the first line of the source.)
+ * pc/gawkmisc.pc, unsupported/atari/gawkmisc.atr: Likewise.
+
+ * awk.h (S_ISREG): Move this macro here ...
+ * io.c (S_ISREG): from here.
+
+ * protos.h (fseek): Remove prototype; no longer used.
+
+Fri Aug 3 13:38:54 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Change assert test on type to real test
+ to protect against FS[1] = "x" kinds of things. It'd be better
+ to do this in the grammar, but this is easier and just as
+ effective.
+
+ Undid BECAMEARRAY changes of 25 June 2001 in favor of correct code:
+ * eval.c (pop_fcall): Change test and comment for freeing n->vname.
+ (flags2str): Removed BECAMEARRAY entry.
+ * awk.h (BECAMEARRAY): Removed define.
+ * array.c (assoc_lookup): Removed setting of BECAMEARRAY flag.
+
+Mon Jul 23 17:33:13 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Handle case where RS = "" and input file
+ is only newlines. See test/onlynl. Bug report by
+ Michel Jouvin <jouvin@lal.in2p3.fr>.
+
+Wed Jul 4 18:34:19 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (assign_val): Don't allow negative values for NF.
+ * field.c (set_NF): Robustify field-freeing code to make sure
+ values are always positive.
+
+Sun Jul 1 19:15:01 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_index): If second string is "", return 1.
+
+Mon Jun 25 19:34:24 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ Further rationalization of treatment of dynamic regexes,
+ so that profiling code works correctly.
+
+ * awk.h (NODETYPE): New type, Node_dynregex.
+ * awkgram.y (mk_rexp): Use Node_dynregex.
+ * eval.c (nodetypes): Add Node_dynregex.
+ (r_tree_eval): Add Node_dynregex to case for match_op().
+ * profile.c (tree_eval): Add Node_dynregex to case for pp_match_op().
+ (pp_match_op): Handle Node_dynregex, simplify cases for ~ and !~.
+ * re.c (re_update): Add assertion that type is Node_regex when flags
+ indicate CONST.
+
+ New lint warning.
+
+ * awkgram.y (yylex): Added lint warning that constant with leading
+ zero is treated as octal or hex.
+
+ Generalized code for those who are Strong In The Ways of the Source.
+
+ * awk.h: New boolean variable.
+ * main.c (main): Set it.
+ * eval.c (interpret): For arrays, check it. Remove variable 'first',
+ not needed anymore.
+ * profile.c (pp_string_fp): Enable printing of non-ASCII characters
+ verbatim if variable set.
+
+ Fix memory corruption on SCO for array vars as params changed globally.
+
+ * awk.h (BECAMEARRAY): New flag.
+ * array.c (assoc_lookup): Set the flag as appropriate.
+ * eval.c (flags2str): Add the flag.
+ (pop_fcall): Check the flag, don't free memory if set.
+
+Wed Jun 13 18:07:06 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (fmt_index): Actually call erealloc() to grow fmt_list
+ if that's really necessary. Bug report from David Jones,
+ djones@zoonami.com.
+
+Sun Jun 10 14:24:48 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pp_match_op): Rationalized the code.
+
+Thu Jun 7 11:54:36 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (O_BINARY): Don't define if already defined
+ (as is true for cygwin/gcc --- oops).
+
+Sun Jun 3 13:04:44 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.0: Release tar file made. And there was
+ rejoicing.
+
+Wed Apr 25 11:44:07 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (AM_MAKEFLAGS): Add definition per advice from
+ Nelson Beebe.
+
+Tue Apr 24 14:28:00 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * io.c (devopen): Patch from Jeurgen to robustify pulling
+ out hostname, port numbers, etc, to avoid any buffer overrun
+ problems.
+
+Mon Apr 23 10:26:38 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * awkgram.y: Fix grammar so that `print ... |& ".." |& getline'
+ dies with a parse-time error message.
+
+Sun Apr 22 16:46:48 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Fix from Juergen in recursive call.
+
+Thu Apr 19 18:39:20 2001 Pat Rankin <rankin@eql.caltech.edu>
+
+ * awk.h: Really fix logic around include of <sys/types.h>.
+
+ * awk.h (callresult): New name for `result' macro.
+ * eval.c (r_get_lhs, case Node_builtin): Use it.
+
+Thu Apr 19 16:31:09 2001 Pat Rankin <rankin@eql.caltech.edu>
+
+ * io.c: Move code around to allow compilation with DEC C.
+
+Thu Apr 19 16:21:56 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.h: Move decl of random() here.
+ * random.c: Remove decl of random().
+
+Mon Apr 9 11:41:58 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfainit): Initialize more members in the structure,
+ based on bug report in bug.gnu.utils by aaronl@vitelus.com
+ (Aaron Lehmann).
+ * awk.h: Fix logic around include of <sys/types.h>.
+
+Thu Apr 5 20:12:05 2001 Pat Rankin <rankin@eql.caltech.edu>
+
+ * dfa.c: For VMS, #include <stddef.h> instead of <sys/types.h>.
+ * missing_d/mktime.c: Likewise.
+
+ * random.c: Reorder include directives to get gawk config info
+ from random.h sooner.
+ [fcntl.h]: Guard #include with HAVE_FCNTL_H test.
+ [unistd.h]: Guard #include with HAVE_UNISTD_H test.
+
+ * random.c (srandomdev): Skip /dev/urandom usage if O_RDONLY
+ is not defined.
+
+Tue Mar 20 11:07:11 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (function_body): Add opt_nls to end of production.
+
+Tue Mar 20 09:30:32 2001 Pat Rankin <rankin@eql.caltech.edu>
+
+ * awk.h (BROKEN_STRNCASECMP): Add decl of strcasecmp.
+ * io.c (two_way_open): Add `return FALSE;' for fussy compilers.
+
+Sun Mar 18 15:10:56 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (gawk_pclose): Set the exit value for close correctly
+ if the pipe died with a signal.
+
+Wed Mar 7 11:28:52 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (get_a_record): Correctly handle the case of a leading
+ single newline at the front of the file when RS = "".
+
+2001-02-26 Paul Eggert <eggert@twinsun.com>
+
+ * COPYING: Incorporate latest version from FSF, which fixes a Y2k bug.
+
+ * builtin.c (do_mktime): Allow the user to specify the
+ tm_isdst member as an optional trailing integer, and to
+ specify "out-of-range" members. Check for overflow when
+ subtracting 1 from month or 1900 from year. Allow years just
+ past INT_MAX, as they work on some hosts when INT_MAX - 1900
+ is representable as an int.
+
+ * doc/gawk.1, doc/gawk.texi: Document the above changes.
+ Also, document that the origin-zero Gregorian calendar is used.
+ Fix confusing wording about "midnight" by replacing it with 00:00
+ ("midnight" is also 24:00, the end of the day).
+ Mention the typical range for time stamps.
+ Do not assume that years are nonnegative and are less than 10,000.
+ Suggest TZ=UTC0 instead of TZ=GMT0, as that's how recent versions
+ of GNU date behave.
+ GMT is not always the time of day in Greenwich these days.
+ Fix typos: "Emporer/Era", "1980's", "1970's".
+
+ * m4/largefile.m4: Synchronized with latest version.
+
+Tue Feb 27 12:10:11 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pp_in_array): Change test to tree->type == Node_expression_list.
+
+Wed Feb 7 14:46:50 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (LEX_FOR): Allow newline after `;' in for loops.
+ Per bug report from Brian Kernighan, bwk@research.bell-labs.com.
+
+Tue Feb 6 18:35:27 2001 Martin C. Brown <mc@whoever.com>
+
+ * io.c (socket_open): Conditionalize various options based on
+ ifdef. Needed for BeOS port.
+
+Tue Feb 6 18:17:13 2001 Michal Jaegermann <michal@ellpspace.math.ualberta.ca>
+
+ * regex.c (re_match_2_internal): Case maybe_pop_jump, for
+ charset and not_charset: Change cast from (unsigned char)
+ to (unsigned). Catches last 8 chars with high bit set
+ if backtracking. See test/rebt8b1.awk, test/rebt8b2.awk.
+
+Tue Feb 6 11:20:21 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ Have `for (iggy in foo)' save the elements and loop over them.
+ Make sorted for loops a dynamic test instead of a compile time test.
+ Still requires being Strong In The Ways Of The Source.
+
+ * awk.h: (struct search): Removed.
+ (assoc_scan, assoc_next): Removed declarations.
+ * array.c (assoc_scan, assoc_next): Removed functions.
+ * eval.c (interpret): Remove Node_K_array_sorted_for. Change code
+ at Node_K_arrayfor.
+ (nodetypes): Remove Node_K_array_sorted_for.
+ * configure.in: Removed array sorting test.
+ * awkgram.y: Removed sorted_in keyword and associated code.
+
+Sun Feb 4 14:57:49 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (interpret): Use tree->rnode->exec_count to hold count of
+ times if was true.
+ profile.c (interpret): Ditto.
+ * main.c (pre_assign): Gross hack. malloc fresh copy of assign so can
+ clear the '=', otherwise screws up profiling print out.
+
+Sun Jan 28 16:16:02 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ Per request from Nelson Beebe, SIGHUP to pgawk dumps profile
+ and function call stack and exits, SIGUSR1 dumps and continues
+ running.
+
+ * eval.c (dump_fcall_stack): New function, dumps awk function call
+ stack.
+ * awk.h (dump_fcall_stack): Add declaration.
+ (init_profiling_signals): Ditto.
+ * main.c (main): Call init_profiling_signals.
+ * profile.c (init_profiling_signals, dump_and_exit, just_dump): New
+ functions.
+
+Sun Jan 28 15:50:02 2001 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * io.c (gawk_popen): Restore the mode of stdin before running the
+ child process and switch it back if BINMODE is in effect after the
+ child returns.
+ (redirect): Restore the mode of stdin before running the child
+ process.
+ (close_redir): Switch mode of stdin back to binary if BINMODE is
+ in effect, after the child returns.
+
+ * builtin.c (do_system): Restore the mode of stdin before running
+ the child process and switch it back if BINMODE is in effect after
+ the child returns.
+
+ * awk.h (os_restore_mode): Add prototype.
+
+Thu Jan 18 14:03:06 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h, README_d/README.ultrix: Fixes for Ultrix
+ from Juergen Kahrs.
+
+Wed Jan 17 11:03:40 2001 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * io.c (redirect) [F_GETFL && O_APPEND]: Use binmode in the call
+ to fdopen.
+
+Mon Jan 15 16:29:52 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (prec_level): Made Node_K_getline higher than <
+ but lower than others. Allows use of getline with redirection
+ inside an if.
+
+Wed Jan 10 15:35:06 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_BINMODE): Rationalized string assignment.
+
+Sun Jan 7 15:26:16 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * getopt.h: Removed names in prototypes for getopt_long
+ and getopt_long_only, fixes problems on MINGW32.
+
+Thu Jan 4 10:13:46 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Add check for mcheck.h
+ * main.c: Include mcheck.h if have it.
+ (main): If TIDYMEM turned on in environment, also call mtrace().
+
+Wed Jan 3 16:41:33 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fixed minor memory leaks.
+ * re.c (re_update): When IGNORECASE changed, unref(t->re_text).
+ * eval.c (pop_fcall): Fix the logic to correctly free the vname
+ when copying array args back to their underlying source.
+
+ Fixed massive memory leaks.
+ * node.c (dupnode): If PERM is set, do nothing.
+ (unref): Fix logic. Always turn off TEMP. Check just for MALLOC
+ when incrementing the stref.
+ * array.c (assoc_lookup): Turn off PERM also when saving subscript.
+ * builtin.c (sub_common): Turn off PERM also when making private copy
+ of string.
+
+ Add a minor memory cleanup facility (undocumented):
+ * awk.h (do_tidy_mem, release_all_vars): Add declarations.
+ * main.c (do_tidy_mem): Add declaration.
+ (main): If $TIDYMEM exists, do_tidy_mem is true, and call mtrace().
+ * awkgram.y (release_all_vars): New function.
+
+Sun Dec 31 10:47:37 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (in_end_rule): Renamed `parsing_end_rule' to avoid
+ conflict with global var of same name.
+
+Sun Dec 24 10:36:54 2000 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * awkgram.y (snode): Reword the error message about the number of
+ arguments for a builtin, so as not to use the English `s' as a
+ plural suffix.
+
+Tue Dec 12 08:38:03 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ext.c (do_ext): ifdef out use of `dummy'. Duh.
+ * regex.c (re_error_msgid): Revert to array of `char *' so that can
+ compile on K&R compilers. Fix all uses appropriately.
+ (re_error_msgid_idx): Removed.
+
+Fri Dec 8 11:47:26 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ext.c (dummy): Make gcc specific via ifdef.
+ * builtin.c (do_dcgettext): Make conditional compilation smarter.
+ * msg.c (warning, error, r_fatal): Finish switching back to
+ multi-version function header.
+
+Wed Dec 6 13:28:58 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.h: Include <config.h> to get ssize_t definition.
+ * awkgram.y (yyerror): Restore multi-version function header,
+ it seems that what ansi2knr produces doesn't quite do the
+ job on old compilers.
+ msg.c (msg): Ditto.
+
+Tue Dec 5 15:05:35 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in (AC_C_INLINE): Added macro call.
+ * Makefile.am (LN): Define it for install hooks.
+
+Sun Dec 3 17:28:53 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (os_setbinmode): Declare new function.
+ (setmode): Remove definition: conflicts with MacOS X.
+ * main.c (main): Change call of setmode to os_setbindmode.
+
+ * builtin.c (do_dcgettext): Improve ifdef for code, fixes MacOS X.
+ * custom.h (__APPLE__): Force definition of HAVE_MKTIME, won't
+ link otherwise. Harumph.
+
+Sun Nov 26 11:58:52 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_dcgettext, do_bindtextdomain): Add calls to
+ free_temp the various arguments. Sigh.
+ * io.c (yylex): Nuked bstart variable, put all uses of mend variable
+ into TANDEM ifdef.
+ * main.c (load_environ): Removed cp variable, value never used.
+ * random.c: Remvoed uses of `inline' keyword.
+ * Makefile.am (install-exec-hook, uninstall-local): New targets.
+ Adds creation of gawk-X.Y.Z and awk links, as in 3.0.x.
+ * configure.in (GAWK_AC_TYPE_SSIZE_T): Added.
+ m4/ssize_t.m4: New file.
+
+Wed Nov 22 14:47:18 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ After consultation with Brian Kernighan and Michael Brennan,
+ nuked the abort keyword.
+
+ * awk.h (Node_K_abort): Removed.
+ * eval.c (aborting): Removed decl.
+ (interpret): Removed Node_K_abort case.
+ * io.c (do_input): Removed checks for aborting.
+ * main.c (aborting): Removed.
+ (main): Removed checks for aborting.
+ * profile.c (pprint): Removed Node_K_abort case.
+ * awk.y (LEX_ABORT): All stuff removed.
+
+Wed Nov 22 10:45:57 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ext.c (dummy): Move inside #ifdef DYNAMIC. Helps on
+ PCs and other platforms that don't do dynamic loading.
+ * awk.h (RED_TCP): New flag, means use shutdown.
+ io.c (redflags2str): Add RED_TCP.
+ (SHUT_RD, SHUT_WR, SHUT_RDWR): Add conditional defines.
+ (redirect): Add RED_TCP to tflag if appropriate. Add more
+ #ifdef HAVE_SOCKETS as needed.
+ (close_redir): If RED_TCP set, shutdown(2) on each end of the socket.
+
+Tue Nov 21 16:25:41 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y: for (iggy in foo) loops: Add test that index
+ in delete statement is a simple variable.
+
+Tue Nov 14 16:11:39 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Add appropriate conditional versions of the gettext
+ functions if we don't have <libintl.h> or if ENABLE_NLS
+ is not defined or zero.
+ * configure.in: Add check for libintl.h header.
+
+ From Scott Deifik for PCs.
+ * awk.h (lintwarn): Call set_loc unconditionally, makes
+ compilation work on PCs.
+ * builtin.c (do_dcgettext): Compile out cat_tab and code
+ if not ENABLE_NLS.
+ * ext.c: For MSC, no long long variable.
+ * random.c: Use clock() instead of gettimeofday().
+ * builtin.c: Fixed prototypes for new random functions (ADR).
+
+Sun Nov 12 17:45:44 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (parse_next_arg): Fix call to >= num_args so
+ running out of args check is correct, instead of core dumping.
+ (format_tree): Save and restore `the_args' and `args_size'
+ if a nested call is in progress, see explanatory comment.
+ See also tests/addcomma.
+ * Makefile.am: Fix things so that gawk/pgawk built first,
+ even if `make check' called before make. Add some
+ commentary.
+
+Wed Nov 8 14:39:20 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Only add -rdynamic for Linux.
+ * dfa.h, dfa.c: Upgraded to versions in grep 2.4.2.
+
+Tue Nov 7 18:17:17 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * All: Switched to ANSI function headers and added
+ `ansi2knr' automake option. Really cool.
+
+Tue Nov 7 16:57:49 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): Check for O_APPEND in flags when doing
+ fdopen() of /dev/fd/N. Thanks to bug report from
+ "John H. DuBois III" <spcecdt@armory.com>.
+
+Tue Nov 7 14:09:14 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (os_is_setuid): Declare function.
+ * main.c (main): Call it if do_lint and warn if true.
+ * awkgram.y (tokentab):
+ - Made sure all extensions are actually marked as such. Ouch.
+ - Changed "sort" to "asort". Potential to break too much old code.
+ * getopt.h, getopt.c, getopt1.c: Replaced with current versions
+ from glibc CVS archive.
+
+Mon Nov 6 18:14:33 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.c: Replaced with recent version from FreeBSD.
+
+Mon Nov 6 15:37:12 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ Major simplification of automake machinery.
+
+ * configure.in:
+ - INSTALL is forced only if not provided in environment
+ - lots of Makefile.in files removed since move to automake 1.4a
+ * Makefile.am, */Makefile.am: Moved directories that don't need
+ the automake machinery into EXTRA_DIST as appropriate and
+ removed the Makefile{,.am,.in} files as needed.
+ * eval_p.c, profile_p.c: New files to make it easier with automake
+ to compile pgawk.
+
+Tue Oct 24 12:20:18 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (valinfo, var_comp, dump_vars): New functions to dump
+ the list of global variables.
+ * awk.h: Declare dump_vars.
+ * main.c (optab): New option "dump-variables".
+ (main): Code to handle it, set the output file and then call
+ dump_vars() at the end.
+ (usage): New option added to usage message.
+
+Sat Oct 21 22:59:59 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (parms_shadow): For a function, check if any
+ parameters shadow global variables and print a warning.
+ (shadow_funcs): Go through all functions and call parms_shadow().
+ (isnoeffect, isassignable): Add Node_LINT and NODE_BINMODE.
+ * main.c (main): If do_lint, call shadow_funcs().
+ * awk.h: Add declaration of shadow_funcs().
+ * configure.in: Added m4/Makefile and awklib/eg/network/Makefile
+ to list of generated makefiles.
+
+Tue Oct 17 10:47:35 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Reverted change that did dupnode of
+ array indices. Creates significant problems if index is
+ numeric value and CONVFMT changes. Added fix to set
+ bucket->ahname->stfmt to -1 so that force_string never recalculates
+ the string value, and also turned off NUM and turned on STR.
+ See test/arynasty.awk.
+
+Mon Oct 16 12:21:26 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * All: Cleaned up various lint warnings for consistent phrasing.
+ * awk.y (in_end_rule): New variable for warning about unredirected
+ getline. It's ok in a BEGIN, but not in an END.
+
+Sun Oct 15 14:14:05 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_FS): Add lint warning for FS = "".
+ (do_split): Ditto for 3rd arg = "".
+
+Fri Oct 13 09:17:04 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (close_redir): Clear rp->fp on all closes. Remove
+ rp from list if either closing both ends or both ends
+ have been closed separately. Add exitwarn message for
+ co-process.
+ (flush_io): Add warning message if fflush of co-process
+ fails. Rationalize return value to either 0 or -1.
+ * builtin.c (do_gensub): 3rd arg of zero generates a
+ warning.
+ (do_fflush): Rationalize return value: -1 for unopen or read-only
+ redirection, status of fflush otherwise.
+
+Wed Oct 11 22:11:19 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y (for loop): Check that there is a body as
+ part of the `is it a delete statement' check.
+
+Thu Oct 5 11:56:42 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h, awkgram.y, configure.in, eval.c: Enabled
+ `for (i in_sorted array)' loops for those who
+ are Strong In The Way Of The Source. So there.
+
+Mon Oct 2 10:09:32 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (do_close): Make close(x) for non-open x return -1
+ and update ERRNO. close(FILENAME) no longer does anything
+ magic; this is all for better consistency with other awks
+ and is more logical, anyway.
+
+Thu Sep 28 17:27:16 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (close_one): Added a lint warning if it becomes
+ necessary to start multiplexing fd's, per ancient suggestion
+ from Scott Deifik, <scottd@amgen.com>.
+
+Tue Sep 26 14:41:41 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c: Move enum for redirection placement to top
+ of file, and make the value a parameter to pp_redir.
+ Fix all the calls. This gets `|&' right everywhere.
+
+Sun Sep 24 16:38:04 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (freenode): Set the flags straight to UNINITIALIZED.
+ * node.c (unref): Fix test for MALLOC|TEMP to test the
+ actual flags, not zero.
+ * builtin.c (format_tree): ala print and concat, dupnode
+ the temp nodes from tree_evaling the arguments. See
+ test/nasty2.awk.
+
+Mon Sep 18 10:16:58 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (snode): Make match 3rd arg and close 2nd arg fatal
+ errors if --tradtional.
+
+Thu Sep 14 12:22:42 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (update_ERRNO): Call gettext on result of strerror.
+ i18n rules.
+
+Wed Sep 13 14:56:11 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_tree_eval): Case for Node_concat. Dupnode the
+ strings ala do_print to get more consistent results.
+ Compare gawk 3.0.6 to nawk/mawk on test/nasty.awk.
+ Thanks to Andrew Sumner (andrewsumner@yahoo.com) for
+ pointing this one out.
+
+Wed Sep 13 10:06:47 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (two_way_close_type): New enumerated type.
+ (close_redir): New third param of type two_way_close_type.
+ Add smarts to two-way case for different close types.
+ Only remove it from the redir list if closing is for both ends.
+ (gawk_pclose): Check that rp->iop != NULL before closing,
+ all three versions.
+ * awkgram.y (tokentab): Allow 2nd argument to close.
+ (snode): Add lint warning.
+
+Sun Sep 10 14:16:10 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_FIELDWIDTHS): Generate a fatal error upon
+ encountering a negative width.
+
+Sun Sep 10 10:37:35 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (snode): If first argument to dcgettext is a
+ string constant and --gen-po, dump the string constant to
+ the .po file too.
+ * main.c (nostalgia): Add call to fflush(stderr).
+ * eval.c (r_tree_eval): Add entries for Node_LINT and for
+ NODE_TEXTDOMAIN.
+
+Thu Sep 7 10:46:20 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_dcgettext): Per suggestion from Ulrich Drepper,
+ make the awk interface:
+
+ str = dcgettext(string [, domain [, category]])
+
+Wed Sep 6 16:28:12 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ Bring gettext features out to the awk level!
+
+ * awk.h: Add declarations of new functions `do_dcgettext'
+ `do_bindtextdomain', `set_TEXTDOMAIN' and variables
+ `TEXTDOMAIN', `TEXTDOMAIN_node'. New NODETYPE enum
+ `Node_TEXTDOMAIN'.
+ * eval.c (nodetypes): Add Node_TEXTDOMAIN at end.
+ (set_TEXTDOMAIN): New function.
+ (r_get_lhs): Add case for Node_TEXTDOMAIN.
+ * main.c (varinit): Add entry for TEXTDOMAIN.
+ * node.c (format_val): If INTLSTR use dcgettext of string
+ and TEXTDOMAIN.
+ * awkgram.y (tokentab): Add entries for "dcgettext" and
+ "bindtextdomain".
+ * builtin.c (do_dcgettext, do_bindtextdomain): New functions.
+
+Tue Sep 5 17:01:34 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (pp_string_fp): Use lower case versions of
+ isascii and isprint to avoid printing high-bit-set
+ characters. Make it smarter to break strings at 70
+ chars or after embedded newline, for --gen-po.
+ Fix the calls to it everywhere for new boolean option
+ to yes/no break lines.
+ * m4/strtod.m4: New file, defines GAWK_AC_FUNC_STRTOD_C89.
+ * configure.in: GAWK_AC_FUNC_STRTOD_C89 call added
+ * acinclude.m4: Include strtod.m4.
+ * acconfig.h: Add entry for STRTOD_NOT_C89.
+ Remove entries for BITOPS and NON_DEC_DATA.
+ * missing/missing.c: Add check for STRTOD_NOT_C89, use ours
+ if set.
+ * missing/strtod.c: Make smarter for input like 0x345.
+ * awk.h: [STRTOD_NOT_C89]: Define strtod gawk_strtod to get
+ our version. Avoids linker weirdness.
+
+Mon Sep 4 09:16:43 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_record): Fix from Utz-Uwe Haus
+ <haus@saturn.Math.Uni-Magdeburg.DE> to make sure there's
+ always enough room in the record.
+ * builtin.c (nondec2awknum): Fix octal conversions to exit
+ when hitting a non-digit, and not go to decimal. Make
+ check for non-octal better. Based on bug report from
+ Morris_Lee@tvratings.com.
+
+Sun Sep 3 13:52:11 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): Allow positional parameters for
+ %*.* kinds of things.
+
+ Made octal/hex constants and strtonum on by default. Made
+ --enable-non-decimal-data a runtime switch `--non-decimal-data'.
+
+ * configure.in: Removed AC_ARG_ENABLE for --enable-bitops and
+ --enable-non-decimal-data.
+ In .developing check, remove the AC_DEFINEs.
+ * awk.h: Decls for bitwise functions now there by default.
+ Add decl of `do_non_decimal_data'.
+ * main.c (do_non_decimal_data): New variable
+ (optlist): Add new entry for `--non-decimal-data'.
+ (main): Turn off `do_non_decimal_data' if `do_traditional'.
+ (usage): Add the new option.
+ * node.c (r_force_number): Make check for non-decimal data a
+ runtime check based on do_non_decimal_data.
+ * awkgram.y (yylex): Make non-decimal constants a runtime check.
+ * builtin.c: Remove the ifdefs around the bit functions and
+ nondec2awknum.
+
+Tue Aug 29 18:45:56 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Go back to ARRAYDEBUG if .developing set.
+ * awkgram.y: Use ARRAYDEBUG for adump(), use multiple tests
+ for stopme().
+
+Mon Aug 28 17:09:06 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (do_split): Add check for first arg is null string,
+ if so, skip the work and return zero.
+
+Mon Aug 14 23:01:55 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ Add %COUNT$... handling to printf.
+
+ * awk.h (printf_count): New define in NODE structure.
+ (format_tree): Added decl.
+ * awkgram.y (count_args): New function to set printf_count in
+ a node.
+ [print productions]: Call the function.
+ * (snode): For do_sprintf, call count_args, set the count
+ in the lnode.
+ * builtin.c (format_tree): New fourth arg is argument count.
+ Add smarts to handle the `$' in a format.
+ * (do_sprintf): Use new argument to format_tree.
+ node.c (format_val): Ditto.
+
+Sun Aug 13 11:10:41 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes from Alan J. Broder (ajb@woti.com):
+ - Array third arg to match puts subtexts into the array:
+
+ * awk.y (tokentab): "match" gets third arg, and lint warning
+ * builtin.c (do_match): If third arg there, fill it with subtexts
+
+ - New builtin sort function:
+
+ * awk.h (do_sort): Declared.
+ * array.c (do_sort, dup_table, merge, merge_sort, assoc_from_list,
+ assoc_sort_inplace): New functions.
+
+ * eval.c (tree_eval): In debug code, make uninitialized var
+ a warning, not a fatal error. Breaks too many things.
+
+Wed Aug 9 10:51:41 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (func_call): Increment the exec_count on the
+ function's node; this allows printing a call count for
+ functions.
+ profile.c (pp_func): Print the count for functions.
+ * ALL: Changed DEBUG to GAWKDEBUG in all gawk files, so that
+ I don't get regex/dfa debugging. In some cases, changed
+ memory-related stuff to MEMDEBUG. Still have work to do.
+ * awk.h, node.c, profile.c: Removed exec_count_init variable;
+ code has been cleaned up to not need different values for
+ profiling/not profiling.
+
+Thu Jul 5 21:10:59 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (casetable): Removed the USE_PURE_ASCII stuff; it
+ was never documented. Latin 1 forever.
+ * main.c (main): Only call `init_profiling' after arg parsing
+ if `do_profiling' is still false. Avoids resetting `prof_fp'
+ back to stderr.
+
+2000-02-17 Akim Demaille <akim@epita.fr>
+
+ * m4: New directory.
+ * acinclude.m4: Removed, replaced by m4/*.m4.
+ * Makefile.am: Adjusted.
+ Added ACLOCAL_AMFLAGS.
+ * configure.in Adjusted.
+ Use AC_SYS_LARGEFILE not GAWK_AC_SYS_LARGEFILE, jm_FUNC_MKTIME,
+ not GAWK_FUNC_MKTIME.
+ * acconfig.h: Removed _FILE_OFFSET_BITS, _LARGEFILE_SOURCE and
+ _LARGE_FILES now templated by m4/largefile.m4.
+
+2000-02-15 Arnold Robbins <arnold@skeeve.com>
+
+ * MOVED TO AUTOMAKE AND GETTEXT.
+ Just about every file touched. Work done by Arno Peters.
+
+Sun Jan 2 14:48:23 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ First edit of the new millenium!
+ * awk.y (yylex): If lint checking, be obnoxious about gotos.
+
+Mon Oct 25 19:12:02 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Remove C_ALLOCA ifdef.
+ * main.c (main): Remove C_ALLOCA code.
+ * io.c (do_input): Ditto.
+
+Mon Aug 9 17:36:24 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bisonfix.sed: Unconditionally #undef YYSTACK_USE_ALLOCA.
+ * configure.in: Remove all alloca and ALLOCA related stuff.
+ * Makefile.in: Ditto.
+
+Thu Jul 29 18:32:05 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (NODE): exec_count now in #ifndef NO_PROFILING.
+ * Makefile.in: Changes to only recompile eval.c and profile.c to a
+ special version for profiling.
+ * custom.h [MSC_VER]: Turn on NO_PROFILING to omit the exec_count
+ and save space.
+ * node.c (more_nodes): Move setting of exec_count to
+ #ifndef NO_PROFILING.
+
+Thu Jul 1 12:12:05 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in (AC_PREREQ): Update to 2.13.
+ GAWK_AC_C_STRINGIZE: convert to AC_C_STRINGIZE.
+ * aclocal.m4 (GAWK_AC_C_STRINGIZE): Remove definition, now
+ part of autoconf.
+ * acconfig.h (HAVE_STRINGIZE): Ditto.
+
+Wed Apr 28 11:08:05 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Fix call to free_temp(subs) to after
+ last use of subs.
+
+Sun Apr 25 16:48:06 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): Add lint warning when same file is used for
+ > and >>.
+
+Thu Apr 22 15:05:30 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Fix call to fatal to lintwarn instead.
+ * node.c (r_force_number): Use `0 &&' to disable warnings about
+ conversions: they're overzealous, methinks.
+
+Thu Apr 8 14:27:58 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ New features for profiling:
+
+ * awk.h (NODE): Add `exec_count' member.
+ (freenode): Clear `exec_count' upon free.
+ * awk.y (func_count): New variable, counts total number of functions.
+ (func_install): Increment func_count.
+ (struct finfo): Information for use in sorting functions when
+ pretty printing.
+ (fcompare): Compare two finfo structures.
+ (dump_funcs): Print the functions in sorted order for profiling.
+ (getfname): Return the name of a builtin function.
+ * eval.c (INCREMENT): New macro for counting execution of nodes.
+ (interpret): Call INCREMENT() appropriately.
+ * main.c (do_profiling): New flag if doing profiling.
+ `--profiling': New option added to getopt_long machinery.
+ (main): For profiled version, set do_profile and output file.
+ Call `dump_prog' and `dump_funcs' if do_profiling at end.
+ (usage): Add new argument.
+ * node.c (more_nodes, freenode): Set exec_count to zero.
+ * profile.c: New file, does pretty printing and prints counts.
+ * Makefile.in: Update to create two versions of gawk, regular
+ and `pgawk' which does profiling.
+
+Wed Mar 10 21:38:14 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (close_redir): Use update_ERRNO() instead of manually
+ doing it.
+
+Mon Dec 21 15:58:21 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Add BeOS to list of cases where we hardwire
+ GETPGRP_VOID.
+ custom.h: Remove the #define from __be_os case. Cleaner to
+ do it all in configure. Based on email from Martin C. Brown,
+ mc@whoever.com.
+
+Mon Nov 30 20:52:52 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (update_ERRNO): New function, mainly for use by
+ extension functions.
+ * awk.h: Add decl.
+
+Tue Nov 24 18:13:29 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Changes based on submission from Christos Zoulas at D.E. Shaw
+ that adds the following features:
+ - checking for use of uninitialized variables
+ - checking if a string that's not a number converts to 0
+ - ability to load a dynamic library to add built-ins
+ - VERSION variable (may or may not stay)
+ Additional change:
+ - --lint=fatal makes lint errors become fatal
+ - LINT="fatal" has the same effect, any other positive
+ value makes lint errors be just warnings
+ * Makefile.in (includedir): New variable for gawk header files
+ (ext.c, ext.o): New source and object files
+ (OTHERS, extension): New directory for macro with example extension
+ (install): Install header files
+ * acconfig.h (DYNAMIC): New macro, true if can do dynamic loading
+ * array.c (assoc_lookup): New parameter `reference' is true if we
+ want to do reference checking. Add appropriate reference checking
+ code.
+ * awk.h (UNITITIALIZED): New flag
+ (lintfunc): Function pointer for correct function to use
+ (lintwarn): New macro to produce warnings
+ (result): New macro for func call result, used in commented out
+ code in eval.c.
+ (getnode, freenode): Revised to set UNINITIALIZED.
+ (get_lhs): Third arg for reference checking, change all calls
+ -- Add appropriate decls of new/changed functions
+ * awk.y (tokentab): New builtin "extension" for adding extensions
+ (node_common): Set flags to UNINITIALIZED for Node_var.
+ * configure.in (dynamic linking): New check. Probably should
+ be a separate macro.
+ * eval.c (flag2str): Add UNINITIALIZED to the table.
+ (r_tree_eval): Add checks for UNINITIALIZED.
+ (push_args): Appropriate changes for UNINITIALIZED to work.
+ (r_get_lhs): New third argument for reference checking.
+ (set_LINT): Add code to handle setting `lintfunc' appropriately.
+ * ext.c: New file, for doing dynamic library extensions.
+ * extension/*: New directory with simple example code.
+ * main.c (VERSION_node, EXTENSION_node): New nodes for new vars.
+ (optab): Change for "lint" to allow optional argument.
+ (lintfunc): Definition.
+ (main): Add case in option processing for --lint.
+ (varinit): Add entries for VERSION and EXTENSION.
+ * node.c (r_force_number): Checks that string really is a number.
+ (morenodes): Set UNITIALIZED in the flags.
+ * re.c (all): Change `result' to `res' globally to avoid conflict
+ with new macro.
+ * GLOBAL: Change lint calls to warning() to lintwarn().
+ * GLOBAL: Change all calls to get_lhs() to have 3rd arg.
+ * GLOBAL: Change all calls to assoc_lookup() to have 3rd arg.
+
+Sun Nov 22 17:07:39 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * patchlev.h: Renamed from patchlevel.h to make life
+ easier for the PC guys.
+ (main.c): Changed to include patchlev.h.
+ (Makefile.in): Changed to ref patchlev.h where needed.
+
+Sat Nov 7 21:29:52 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_get_lhs): case Node_field_spec. Fix the lint
+ warnings for field reference of null string or non-numeric value.
+ When turned on, $0 generated a warning! Oops.
+
+Thu Nov 5 16:58:38 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (init_fds): New function to pre-open 0, 1, and 2 on
+ /dev/null if they're not open. Robustness, more or less.
+ (main): Call init_fds.
+ * io.c (str2mode): Add smarts for two-letter strings
+ such as "rw", "r+", "wr", "w+" and "a+".
+
+Mon Nov 2 16:55:46 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_*): Added lint checks for non-numeric
+ and/or non-string arguments, as appropriate. This should
+ have been done long ago.
+
+Tue Oct 20 21:56:06 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (LINT_node): New variable for LINT special var
+ (Node_LINT): New node type.
+ (set_LINT): Declare function.
+ * main.c (varinit): Add LINT variable.
+ (usage): Print an emphatic pointer to the manual for bug reports.
+ * eval.c (nodetypes): New entry for Node_LINT.
+ (r_get_lhs): Case added for Node_LINT.
+ (set_LINT): Set do_lint from LINT variable.
+
+Mon Oct 19 22:35:46 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: For GCC, add -Wall to get warnings for development.
+ * Makefile.in (awktab.c): Move sed stuff to separate script.
+ * bisonfix.sed: New script, with old fix and Solaris x86 fix.
+ * awk.h (nodetype2str): Add declaration.
+ (load_procinfo): Add declaration.
+
+Tue Oct 13 22:28:56 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes to make PROCINFO["FS"] reflect the use of FIELDWIDTHS or FS.
+
+ * eval.c (assign_val): New function that does the mechanics of
+ assignment
+ * main.c (load_procinfo): Add setting of PROCINFO["FS"] to "FS".
+ * field.c (update_PROCINFO): New function to update the array.
+ (set_FS): Call update_PROCINFO.
+ (set_FIELDWIDTHS): Ditto.
+
+Sun Sep 27 10:18:05 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (reisstring): New prototype.
+ * re.c (reisstring): New function, returns true if the re did
+ a simple string match. This is rather simplistic in its logic.
+ * io.c (get_a_record): In the case that RS is a regexp, AND
+ the re matched at the exact end of the buffer, add a call to
+ `reisstring' in case it's a simple string match. If so, we
+ don't need to read more into the buffer because we don't
+ have a regex like `x.*y' that might extend longer.
+ This should be very helpful for interactive /inet clients
+ where something like `RS = "\r\n"' happens.
+
+Thu Aug 13 22:07:40 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Fixes from Juergen Kahrs to socket
+ opening code for "any host".
+
+Tue Jul 14 19:02:33 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * aclocal.m4 (GAWK_AC_LIB_SOCKETS): Removed the caching;
+ configure gave different results the second time it was run!
+
+Fri Jul 10 09:11:06 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (interpret): Minor cleanups: add variable name to
+ fatal error Node_K_array_for and other minor changes.
+
+Mon Jun 22 16:53:34 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (tags, TAGS): Add $(LIBSRC).
+
+Tue Jun 2 15:23:05 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (devopen): Relax previous change, don't require "any",
+ just that a port be there. The user can put 0 if they
+ don't care.
+
+Wed May 27 21:33:45 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (devopen): For /inet, require that local and remote
+ ports and the remote hostname be there, and that `any'
+ be used for a port if they don't care.
+
+Thu May 21 14:13:46 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (parse_escape): Add warning that is always on
+ for \q for any unknown q inside string or regex constant.
+ I got bit by this myself once too often. Or else I'm
+ just getting old and senile.
+
+Mon May 4 12:42:49 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (NODETYPE): Sorted the Node_xxx entries for the
+ builtin variables. Gotta look nice, don't we?
+ * eval.c (nodetypes): Ditto.
+ (genflags2str): Added code to check that we don't
+ overflow the static buffer. This is just a debugging
+ routine, not worth the hassle of dynamic allocation.
+
+Mon Mar 2 16:06:16 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (dist): Remove any embedded copied RCS or CVS
+ directories.
+
+Mon Feb 23 00:09:52 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (genflags2str): Add declaration.
+ * eval.c (genflags2str): New function.
+ (flags2str): Use new general purpose function.
+ * io.c (redflags2str): Same.
+
+Sun Feb 22 23:57:29 1998 Arnold D. Robbins <arnold@skeeve.com>
+
+ Significant changes to add two-way i/o and sockets!!!
+
+ * Makefile.in: Add @SOCKET_LIBS@ to LIBS variable.
+ * acconfig.h: Add HAVE_SOCKETS and HAVE_PORTALS defs.
+ * aclocal.m4: New macro GAWK_AC_LIB_SOCKETS.
+ * awk.h: New node type, Node_redirect_twoway, and new redirection
+ flags: RED_TWOWAY, and RED_SOCKET.
+ * awk.y (parser): Add TWOWAYIO token and appropriate productions.
+ (yylex): Recognize `|&' token if not traditional.
+ * builtin.c (do_print, do_printf): Flush buffer if TWOWAYIO.
+ * configure.in: Add header checks for networking header files,
+ add --enable-portals switch, call GAWK_AC_LIB_SOCKETS
+ * eval.c (nodetypes): Add string constant for Node_redirect_twoway.
+ * io.c (redflags2str): New function.
+ (redirect): Better error message in default case, add code for
+ Node_redirect_twoway.
+ (socketopen): New function.
+ (iop_open, devopen): Add recognition of `/inet/...'.
+ (two_way_open): New function.
+
+Sat Dec 13 21:15:07 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (struct node): New member, `param_list' in union `x', becomes
+ `node->parmlist' in the code.
+ * awk.y (func_install): Rearranged a bit, to build up a list of
+ the function parameter names and to save it in the `parmlist' field.
+ * eval.c (push_args): New parameter, `varnames', which is the list
+ of variable names. Use this to set the vname field of each
+ parameter's value as it's created. Special case arrays to include
+ where they came from, mainly for array vs. scalar diagnostics.
+ (r_tree_eval): Don't set the `vname' field for parameters.
+ (pop_fcall): Free the `vname' field if it's an array.
+ (func_call): Pass in the `parmlist' field to call of push_args().
+ (r_get_lhs): For Node_subscript, change error message to use
+ the `vname' field.
+ (stopme): New do-nothing function for use with debugging code
+ and setting breakpoints.
+
+Thu Dec 4 15:18:17 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y: Fixed several lint checks and moved some into
+ test for do_lint_old.
+ * eval.c (fmt_index): Add value of bad format spec to
+ error message.
+
+Tue Nov 18 22:19:02 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (install): Strip the installed binary.
+ From Anatoly A. Orehovsky (tolik@mpeks.tomsk.su).
+
+Sun Nov 16 22:12:39 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (in_array, assoc_lookup): Add symbol->vname to
+ fatal calls for scalar in array context.
+
+Wed Nov 12 22:18:33 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h [ISASCII]: On all IS* macros, add cast to unsigned char.
+ [TOUPPER, TOLOWER]: New macros using unsigned char.
+ * awk.y: Change to use of IS* vs. is* macros.
+ * builtin.c (nondec2awknum): Change to use of IS* vs. is* macros,
+ change casts for casetable[] from int to unsigned char.
+ use new TOLOWER, TOUPPER macros
+ * dfa.c [ISASCII]: On all IS* macros, add cast to unsigned char.
+ (lex): Change isdigit to ISDIGIT.
+ [TOUPPER, TOLOWER]: New macros using unsigned char, now used.
+ * eval.c (fmt_ok): Change to use of IS* vs. is* macros.
+ * field.c (sc_parse_field): Change to use of IS* vs. is* macros,
+ change casts for casetable[] from int to unsigned char.
+ (set_FS): Change to use of IS* vs. is* macros.
+ * io.c (get_a_record): Change to use of IS* vs. is* macros,
+ change casts for casetable[] from int to unsigned char.
+ * main.c (main): Change to use of IS* vs. is* macros.
+ * node.c (r_force_number, parse_escape): Change to use of IS* vs.
+ is* macros.
+ * re.c (make_regexp): Change to use of IS* vs. is* macros.
+ * regex.c [ISASCII]: On all IS* macros, add cast to unsigned char.
+
+Sun Oct 19 12:36:47 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * ALL: Change email address to arnold@gnu.org in all relevant places.
+
+Wed Oct 15 03:38:12 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y (yylex): Don't allow newlines after ? or : if do_posix.
+
+Thu Oct 9 19:28:39 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h [SEQUENT]: Removed; not needed any more since the
+ mmap code was ripped out.
+
+Wed Oct 8 17:22:03 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in: Remove check for madvise; don't need it any more
+ after nuking use of mmap.
+
+Tue Oct 7 11:14:21 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (flags2str): Made the code table driven. Shortened a lot.
+
+Tue Sep 30 20:59:17 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (r_get_lhs): case Node_field_spec. Add lint warnings
+ for field reference of null string or non-numeric value.
+ Based on patch submitted by Alan Broder, ajb@dtmr.com.
+
+Wed Sep 24 20:47:59 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h [TANDEM]: New changes. Finishes up Tandem
+ integration.
+
+Mon Sep 22 00:42:34 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * custom.h [__be_os]: Remove BROKEN_TOKEN definition.
+ * dfa.c, dfa.h: Change `token' to `dfa_token' to avoid BeOS
+ compile problems.
+
+Thu Aug 7 22:35:17 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes for BeOS from mc@whoever.com
+
+ * awk.h (strncasecmp): Bracket prototype.
+ custom.h [__be_os]: New stuff.
+ dfa.h, dfa.c [BROKEN_TOK]: New ifdefs to use dfa_token, not token.
+
+Fri Aug 1 13:32:49 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ Tandem changes:
+
+ * awk.h [TANDEM]: Misc additions, as needed.
+ * io.c (get_a_record): Changes for fixed length records; not used
+ on other systems.
+ * main.c (MRL): New variable, TANDEM specific.
+ (main): Update handling -mr option for TANDEM.
+ (load_environ): Comment out whole routine if TANDEM.
+ missing.c [TANDEM]: New includes.
+ gawkmisc.c [TANDEM]: Include `tmiscc'.
+
+Wed Jul 30 19:53:52 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ Close-on-exec changes:
+
+ * awk.h: (os_close_on_exec, os_isdir): New functions.
+ * gawkmisc.c: Add include fcntl.h.
+ * configure.in [AC_CHECK_HEADERS]: Add fcntl.h.
+ * io.c (devopen, iop_open): Change to use os_isdir(), not S_IFDIR().
+ (redirect, devopen, iop_open, gawk_popen): Change all calls to
+ fcntl() to os_close_on_exec().
+
+Tue Jul 29 11:09:45 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_BINMODE): Fixed check for digits to use isdigit()
+ instead of looping over digits and using strchr(). Duh.
+
+Sat Jul 26 22:52:08 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (set_BINMODE): Fix so that `-v BINMODE=w' works.
+ * node.c (r_force_number): Add decl of strtod(); makes things
+ work on MIPS.
+ * Makefile.in (install-strip): New target.
+
+Fri Jul 18 13:28:05 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect, devopen, iop_open, gawk_popen): Set the
+ close-on-exec flag on all files and pipes opened for I/O.
+ Keeps children run via system() or other pipes from running out
+ of file descriptors.
+
+ (Reported by Kenny McCormack, gazelle@yin.interaccess.com.)
+
+Tue Jul 8 22:18:00 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y [LEX_NEXT]: Removed support for `next file' as two words.
+
+Tue Jul 8 06:46:32 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c: Changes from pjr@jet.UK (Paul J Rippin) from an old
+ bug report against 2.14.0 that speed up initialization and
+ rewrite the inner loop into readable code.
+
+Thu Jul 3 11:44:50 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Atari support moved into new `unsupported' directory.
+ awk.h, Makefile.in, gawkmisc.c, and missing.c modified.
+
+Sun Jun 29 14:17:37 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y (exp): Fixed warning about `x = /foo/'.
+
+Wed Jun 25 09:07:57 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * PORTS: Removed from distribution.
+ * Makefile.in (MISC): Removed PORTS.
+
+Sun Jun 22 11:52:57 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ BINMODE changes.
+
+ * awk.h (Node_BINMODE): Added.
+ (struct redirect): Added mode field to save for io.c:close_one().
+ (BINMODE, BINMODE_node, set_BINMODE): Add declarations.
+ * awk.y (isnoeffect): Add Node_BINMODE.
+ * eval.c (nodetypes): Add Node_BINMODE string.
+ (r_tree_eval, r_get_lhs): Add cases for Node_BINMODE.
+ (set_BINMODE): New function.
+ * io.c (binmode): New function.
+ (nextfile, redirect, gawk_popen): Add calls to binmode().
+ * main.c (BINMODE, BINMODE_node): Add decls.
+ (main): Add call to setmode() if BINMODE is set.
+ (varinit): Add entry for BINMODE.
+
+Wed Jun 4 21:52:25 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.in [AC_FUNC_MMAP]: Removed call.
+ * awk.h [struct iobuf]: Removed IOP_MMAPED flag and `getrec' member.
+ * io.c: Removed all mmap related code.
+
+Sun Apr 27 16:23:56 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * aclocal.m4 [GAWK_AC_FUNC_MKTIME]: New macro.
+ * configure.in (GAWK_AC_FUNC_MKTIME): Call it.
+
+Thu Apr 24 23:25:06 1997 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (devopen): Remove stat test for /dev/foo files. Finally.
+
+Fri Jul 26 09:23:15 1996 Arnold D. Robbins <arnold@skeeve.com>
+
+ Changes to add an abort statement, a la tawk.
+
+ * awk.h (Node_K_abort): New enum value for NODETYPE.
+ * main.c (aborting): New flag variable.
+ (main): Add logic to handle aborting.
+ * eval.c (interpret): Add case for Node_K_abort.
+ * io.c (do_input): If aborting, break loop.
+ * awk.y (tokentab): Add entry for "abort" keyword
+ (PRODUCTIONS): Add production for LEX_ABORT.
+
+Wed Jul 24 12:49:52 1996 Arnold D. Robbins <arnold@skeeve.com>
+
+ First cut at changes for i18n.
+
+ * awk.h (do_intl): Declare new flag variable.
+ [INTLSTR]: New flag def.
+ (m_tree_eval): Fix definitions for INTLSTR.
+ (force_string): Fix definitions for INTLSTR.
+ * awk.y (yylex): Add _"..." for international strings.
+ (dumpintlstr): New function.
+ * main.c (do_intl): Define new flag variable.
+ (optab): Add "gen-po" entry.
+ (main): If do_intl, exit, don't run the program.
+ (gawkoption): Add "gen-po" entry.
+ * node.c (r_force_string): Call gettext if flags indicate INTLSTR.
+
+Thu Mar 14 06:29:42 1996 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (do_mktime): Added declaration of new function.
+ * builtin.c (do_mktime): New function.
+ * awk.y (tokentab): Added "mktime" to list of gawk extensions.
+ * missing.c [HAVE_MKTIME]: Added include of mktime.c if needed.
+
+Mon Feb 26 22:32:19 1996 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (pidopen, useropen): Added warnings to use PROCINFO[],
+ not special files.
+ * main.c (load_procinfo): New function.
+ * awk.y (variable): Added call to load_procinfo() function.
+
+Mon Aug 7 15:23:00 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.0.6: Release tar file made.
+
+Thu Aug 3 17:47:53 2000 Greg McGary <greg@mcgary.org>
+
+ * regex.c: Patches for gcc bounded pointer handling.
+
+Thu Aug 3 13:09:09 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (in_array, do_delete): Fix tests for index equality
+ when searching through the array to work correctly when
+ index is "".
+
+Fri Jul 14 21:40:17 2000 Pat Rankin <rankin@eql.caltech.edu>
+
+ * builtin.c (format_tree): Workaround a DEC C V5.7 bug by
+ splitting `strcpy() + 3' into two expressions (the builtin
+ inline strcpy evidently has erroneous return type of void *
+ instead of char *; reputedly fixed in V6.1).
+
+ * eval.c (C): New macro.
+ [casetable]: Use it to add explicit casts for the character
+ values outside the range of 0 to 127.
+ * missing/strncasecmp.c [C, charmap]: Likewise.
+
+ * io.c (redirect): Add EIO check on failed open for VMS.
+
+Fri Jul 14 11:57:23 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ Efficiency hack: turn `for (iggy in foo) delete foo[iggy]'
+ into moral equivalent of `delete foo'.
+
+ * array.c (do_delete_loop): New routine.
+ * awk.h [NODETYPE]: New Node_K_delete_loop value.
+ Add declaration of do_delete_loop.
+ * awk.y [LEX_FOR]: Fix code to recognize special case.
+ * eval.c (nodetypes): New entry for Node_K_delete_loop.
+ (interpret): Add case for Node_K_delete_loop, add more
+ diagnostic info in default (cant_happen) case.
+
+Tue Jul 11 22:15:10 2000 Pat Rankin <rankin@eql.caltech.edu>
+
+ * awk.y (nextc): Recast unsigned char values back to int to
+ prevent VAX C from truncating EOF to 255.
+
+Tue Jul 11 14:08:23 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (do_delete): Switch to string comparison, not
+ cmp_nodes.
+ (assoc_find): Add call to force_string on subscript.
+ * eval.c (interpret): Case Node_K_arrayfor: check for
+ Node_array_ref and fetch original_array. Yowser.
+
+Fri Jun 30 21:57:00 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Don't force the subscript
+ to be a string. Not a good idea after the change
+ to using dupnode.
+
+Sun Jun 25 15:08:19 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.0.5: Release tar file made.
+
+Wed Jun 14 13:03:45 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * field.c (set_record): Manage a private buffer for $0.
+ Keeps things safe in case `getline var' rearranges the
+ IOBUF's contents that $0 is still pointing into.
+
+Tue Jun 13 16:27:55 2000 Paul Eggert <eggert@twinsun.com>
+
+ Upgrade to latest and greatest version of largefile code.
+
+ * configure.in (AC_CANONICAL_HOST): Remove.
+ (GAWK_AC_SYS_LARGEFILE): Defer until after AC_MINIX,
+ to avoid autoconf warnings.
+
+ Rewrite largefile configuration so that we don't need to run
+ getconf and don't need AC_CANONICAL_HOST.
+ * config.guess, config.sub: Remove these files.
+ * Makefile.in (MISC): Remove config.guess, config.sub.
+ * m4/largefile.m4 (GAWK_AC_SYS_LARGEFILE_FLAGS,
+ GAWK_AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
+ (GAWK_AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
+ (GAWK_AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
+ CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY.
+ All uses changed.
+ Instead of inspecting the output of getconf, try to compile the
+ test program without and with the macro definition.
+ (GAWK_AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check
+ for getconf. Instead, check for the needed flags by compiling
+ test programs.
+
+ (GAWK_AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to be 500 to
+ work around glibc 2.1.3 bug.
+
+ (GAWK_AC_SYS_LARGEFILE_FLAGS): Don't use -n32 on IRIX if the
+ installer said otherwise.
+
+ (GAWK_AC_SYS_LARGEFILE_FLAGS): Work around a bug in the QNX shell,
+ which doesn't propagate exit status of failed commands inside
+ shell assignments.
+
+Wed Jun 7 13:23:09 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Updated copyright dates in appropriate files.
+
+Mon May 22 17:29:43 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (clean): Get `*/core' too.
+
+Sun May 7 16:33:05 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (concat_exp): Change ref to `lnode->stlen' and
+ `lnode->stptr' for SUBSEP to use `var_value->...'.
+
+Tue May 2 09:54:29 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix referencing freed memory as shown by test/arynocls.* tests.
+ * awk.h [Node_array_ref]: New node type.
+ [orig_array]: New macro element in NODE structure.
+ * field.c (do_split): Handle case for Node_array_ref, fetch
+ the original array.
+ * array.c (in_array, do_delete): Ditto.
+ * eval.c (nodetypes[]): Add Node_array_ref string.
+ (r_tree_eval): Handle case for Node_array_ref.
+ (push_args): Push arrays as Node_array_ref, and pass them on.
+ (pop_fcall): Don't unref lnode if it's an array when releasing
+ local arguments. Check for both Node_array and Node_array_ref.
+ (r_get_lhs): Choke on Node_array_ref as for Node_array.
+ For Node_subscript, handle Node_array_ref.
+
+Tue May 2 09:52:12 2000 Bruno Haible <haible@clisp.cons.org>
+
+ * io.c (redirect): After reopening a `struct redirect', move it to
+ the head of the list.
+
+Sun Apr 2 17:51:40 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (re_update): Check if IGNORECASE has changed, and
+ if so recompute the re. See test/igncdym.awk.
+
+Mon Mar 20 16:18:34 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (set_RS): Added a lint warning about multicharacter RS,
+ per suggestion from Akim DeMaille (akim@epita.fr).
+
+Sun Feb 13 14:40:32 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (push_args): Fix from Nide Naoyuki <nide@ics.nara-wu.ac.jp>,
+ re-assign `f' in case tree_eval moved fcall_list around.
+
+Sun Feb 6 11:39:33 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (op_assign): Fix it right. For ++ and --, get the lhs
+ in the operations, do the op, and then return. For += etc,
+ get the rhs FIRST, since the lhs can move around as a result,
+ *then* get the lhs and do the operation. See test/opasnidx.awk.
+
+Tue Feb 1 18:41:40 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (op_assign): Reget the rval after regetting
+ the left hand side. See test/opasnslf.awk for why.
+
+Thu Jan 27 18:06:31 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y (yylex): Made ']' not one of the characters
+ that sets `want_assign' to false. `a[i] /= 2' was
+ broken. Per bug report from Kristofer T. Karas
+ <ktk@ktk.bidmc.harvard.edu>.
+
+Wed Dec 22 15:06:37 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y: Removed declarations of functions before
+ definition of `tokentab[]'. They're redundant with
+ what's in awk.h.
+
+Thu Dec 9 17:01:07 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (parse_escape): Add lint warning for unrecognized
+ escape sequences.
+
+Mon Dec 6 15:17:34 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (usage): Changed bug reporting email addresses to
+ be a reference to `Bugs' node in the online and printed
+ doc, instead.
+
+Thu Dec 2 13:08:18 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_compl): Test `d' for negative inside the do_lint
+ test, not uval. Ooops.
+
+Fri Nov 26 10:58:36 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_find): ALWAYS compare indexes as strings,
+ don't use cmp_nodes in case they are numeric. Oh my.
+ Talk about a Day 1 bug!
+
+Tue Nov 23 11:58:53 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.c (SYNTAX): Cast argument to `unsigned char' instead of
+ &-ing with 0xFF. Hopefully somewhat more portable, ala 21 Nov 99
+ changes to awk.y.
+
+Sun Nov 21 22:25:27 1999 Paul Eggert <eggert@twinsun.com>
+
+ * aclocal.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a
+ problem with the QNX 4.25 shell, which doesn't propagate exit
+ status of failed commands inside shell assignments.
+
+Sun Nov 21 20:33:35 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h (nextc): Remove declaration, don't need it here.
+ awk.y (nextc): Cast values to unsigned char so that latin-1
+ characters in strings don't turn themselves into EOF.
+ Most notably y-umlaut, which is decimal 255.
+
+Mon Nov 1 20:00:25 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.c (init_syntax_once): Move below definition of
+ ISALNUM etc., then use ISALNUM to init the table, so that
+ the word ops will work if i18n'ed.
+ (SYNTAX): And subscript with 0xFF for Latin-1 characters.
+
+Mon Oct 25 18:37:13 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h, main.c, io.c: Undo previous changes (22 Oct 1999).
+ * main.c (main): Move call to `init_fields()' to before
+ arg parsing. This allows `-v NF=blah' to work ok.
+
+Fri Oct 22 17:43:40 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (arg_assign): Add new arg, `initing' for icky special
+ casing of -v of special variables. Use it to check for NF.
+ May need to add other cases later.
+ (pre_assign): Change call arg_assign, passing initing=TRUE;
+ io.c (nextfile): Change call arg_assign, passing initing=FALSE;
+ awk.h: Change prototype for arg_assign.
+
+Tue Oct 19 16:06:48 1999 Paul Eggert <eggert@twinsun.com>
+
+ * io.c (close_redir): Don't munge errno between setting it and
+ using it.
+
+Wed Oct 6 17:47:47 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (arg_assign): Return NULL on bad variable. Allows
+ things like `./3x=stuff' to work as a filename.
+
+Thu Sep 23 21:35:46 1999 Paul Eggert <eggert@twinsun.com>
+
+ * aclocal.m4 (GAWK_AC_SYS_LARGEFILE_FLAGS): Work around GCC
+ 2.95.1 bug in HP-UX 10.20 or later. (Had to fix the fix. ADR. :-)
+
+Tue Sep 21 13:31:36 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (format_tree): For '0', only set zero_flag if we
+ haven't seen the field width or precision yet.
+
+Mon Aug 9 13:06:01 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_lookup): Removed code that gave each array
+ a private copy of each index. Balloons memory usage for
+ no good reason that I can see. Just use dupnode in all
+ cases.
+ * configure.in: Check for $srcdir/.developing adds extra
+ defines for my testing/debugging use. Yes, hack alert.
+
+Sun Aug 1 11:02:02 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (dupnode): Turn off FIELD when copying nodes.
+ * array.c (do_adump, assoc_dump): New functions for array debugging.
+ * awk.y (tokentab): Conditionally add "adump" function for debugging.
+ * awk.h: Delcare new functions.
+
+Thu Jul 29 23:26:40 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ From wsanchez@apple.com:
+ * Makefile.in (install-strip): New target, coding stds. compatibility.
+ * config.guess, config.sub: Add MacOS X recognition.
+
+Thu Jul 29 19:09:19 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.y (func_install): Make `function foo(foo)' a fatal error.
+ eval.c (r_tree_eval): Diagnose use of a function name as a
+ variable inside the function.
+
+Sun Jul 4 16:53:14 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (eval_condition): Add extra braces to avoid
+ gcc warning. I'm not going to bother for the library
+ code like dfa and regex.
+
+Wed Jun 30 16:14:36 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Release 3.0.4: Release tar file made. This time for sure.
+
+Wed Jun 30 16:10:11 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * awk.h: Add include of <assert.h>, and comment about config.h
+ having to be included before any system headers. Otherwise,
+ with egcs-2.91.66 and later on Linux systems, and possibly
+ others, things break badly, due to the LFS macros.
+ * awk.y, builtin.c, eval.c, field.c, io.c: Removed include
+ of assert.h
+
+Wed Jun 9 11:39:19 1999 Paul Eggert <eggert@twinsun.com>
+
+ Port the large-file code to AIX, HP-UX, and IRIX.
+ Add cross-compilation support for large files.
+
+ * config.guess, config.sub: New files.
+
+ * configure.in (AC_CANONICAL_HOST):
+ Add; GAWK_AC_SYS_LARGEFILE needs this.
+ (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
+
+ * aclocal.m4 (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
+ Add support for AIX and HP-UX.
+ (GAWK_AC_SYS_LARGEFILE_FLAGS, GAWK_AC_SYS_LARGEFILE_SPACE_APPEND,
+ GAWK_AC_SYS_LARGEFILE_MACRO_VALUE): New macros.
+
+ * acconfig.h (_FILE_OFFSET_BITS, _LARGEFILE_SOURCE, _LARGE_FILES):
+ New macros.
+
+ * Makefile.in (MISC): Add config.guess and config.sub so they get
+ included in the distribution.
+
+Wed Jun 9 11:29:29 1999 Paul Eggert <eggert@twinsun.com>
+
+ * io.c (iop_alloc): Don't mmap files whose sizes don't fit in `int'.
+ [ This isn't really needed, as HAVE_MMAP is #undef'ed at the top,
+ but it's there in case people want to take their life in their hands. ]
+
+Sun Jun 6 11:28:07 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.46: Release tar file made.
+
+Wed Jun 2 14:36:24 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * PORTS: Updated with a more recent list of systems
+ that gawk compiles and tests ok on.
+
+Tue Jun 1 14:24:59 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.45: Release tar file made.
+
+Tue May 25 16:32:37 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * builtin.c (format_tree): More smarts for weird cases, such as
+ zero precisions and zero values used with the `#' flag.
+ Thanks to Andreas Schwab (schwab@gnu.org) for pointing these out.
+
+Wed May 19 14:02:54 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * io.c (do_close): Move test for `close(FILENAME)' to after
+ loop through all open redirections. Fixes problems in obscure
+ cases with redirections in END rules.
+
+Sun May 16 14:08:39 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * awk.y (yylex): Fix group of characters including ',' to
+ set want_assign = FALSE. Fixes bizarre parsing problems in
+ function call lists, for example.
+ * io.c (get_a_record): Repair logic for single-leading-newline
+ case.
+
+Tue May 11 16:48:11 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * aclocal.m4 (GAWK_AC_AIX_TWEAK): New macro.
+ * configure.in: Call it
+ * Makefile.in: (awklib/all): Pass CFLAGS on to sub-make so
+ that password programs will get AIX magic defines. Avoids
+ having to tweak program code for those in doc/gawk.texi.
+
+Mon May 3 16:56:23 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * array.c (do_delete): Don't free_temp(subs) until after all
+ references to it are finished.
+
+Mon May 3 13:41:16 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.44: Release tar file made.
+
+Sun May 2 18:25:43 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * io.c (get_a_record): Do a really good job of stripping newlines
+ from the front of records when RS = "" and there's only one
+ newline at the front of the file, which the regex didn't catch.
+
+Wed Apr 28 12:27:49 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * configure.in: More HP stuff: fix the manual alloca code so that
+ gawk will compile and link on HP systems. See the comments.
+
+Sun Apr 25 13:39:16 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (gawk): Add $(CFLAGS) to linking step.
+ * configure.in: Correctly do AC_FUNC_GETPGRP on HP systems too.
+
+Tue Apr 13 20:21:00 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.43: Release tar file made.
+
+Tue Apr 13 19:02:20 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * io.c (useropen, pidopen): Add casts to int on arguments to
+ silence gcc warnings.
+ * regex.c (regcomp,regexec,regfree): Add ifdef for APPLE.
+
+Thu Feb 4 10:38:02 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * custom.h: Hacks for BeOS. Not documented in the manual right now.
+ * configure.in: Hacks for BeOS. Check for HP-UX and define C_ALLOCA
+ if not using gcc. I wish they'd just fix bison already.
+
+Sun Dec 20 16:57:38 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.42: Release tar file made.
+
+Sun Nov 15 21:05:39 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * io.c (gawk_popen): Add WIN32 to list of systems that use
+ the non-real-pipe version. From the PC gawk guys.
+
+Wed Nov 4 11:32:24 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.41: Release tar file made.
+
+Tue Nov 3 16:24:35 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * eval.c (r_get_lhs): Fix the cases for the special variables,
+ don't unref their current value if it's the same as the internal
+ copy; perhaps the current one is used in a concatenation or some
+ other expression somewhere higher up in the call chain. Ouch.
+ See test/getnr2tm.awk.
+
+Sun Nov 1 15:24:52 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * builtin.c (format_tree): Improve handling of zero-fill
+ when a precision is present. See test/zeroflag.awk.
+
+Wed Oct 28 20:40:17 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * eval.c (r_tree_eval): Case for Node_concat. Get lengths
+ separately, in case one expression has a side effect that
+ that changes another. Ugly, but it keeps gawk from core
+ dumping. See test/nasty.awk.
+
+Sun Oct 18 21:27:24 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * awk.y (append_right): Bug fix, if `list' or `new' are NULL,
+ return `list', so that things don't break too badly.
+ * regex.c (re_compile_fastmap): Remove unused variable `num_regs'.
+
+Thu Oct 8 19:36:57 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * BETA Release 3.0.40: Release tar file made.
+
+Mon Jul 27 10:14:33 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * node.c (parse_escape): Remove assignment with side effects
+ from ISXDIGIT test. Thanks to "Mihai T. LAZARESCU"
+ <mihai@ccmserv.polito.it> for pointing this out.
+
+Mon Apr 27 11:31:32 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * main.c (usage): Fix the email address for the bug list.
+ (copyleft): Update the copyright year.
+
+Mon Mar 23 21:22:32 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * eval.c (r_get_lhs): Make sure that values of type
+ Node_param_list don't have the FUNC flag set. This means
+ we don't allow the use of a function name as a variable or
+ array from within the function.
+
+Sun Mar 22 19:12:32 1998 Paul Eggert <eggert@twinsun.com>
+
+ * aclocal.m4 (GAWK_AC_LARGE_FILES): New macro that checks for
+ large file support, and updates CPPFLAGS, LDFLAGS, LIBS as
+ needed.
+ * configure.in: Call GAWK_AC_LARGE_FILES.
+ * Makefile.in (CPPFLAGS, LDFLAGS): Let autoconf configure.
+ (COMPFLAGS): Add $(CPPFLAGS).
+
+Mon Mar 16 14:06:41 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * field.c (using_FIELDWIDTHS): New macro.
+ (using_fieldwidths): Use new macro.
+ (do_split): In case for FS_DFLT, also check that
+ we're not using FIELDWIDTHS. Otherwise, split() would use
+ FIELDWIDTHS, not current value of FS. Oops.
+
+Sun Nov 16 20:08:59 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * builtin.c (sub_common): Fix for count of matches in gsub
+ from Geert.Debyser@esat.kuleuven.ac.be.
+
+Wed Oct 15 03:38:12 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * field.c (set_FS): Use `sc_parsefield' if the value of FS is not
+ alphabetic OR if not ignoring case. Bug fix if IGNORECASE
+ is true and FS happens to be '^'. Sheesh, talk about obscure.
+ (rebuild_record): Add more smarts to the code that sets up the
+ fields. Thanks to Alan J. Broder (ajb@dtmr.com).
+
+Sun Oct 5 11:56:52 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * configure.in: If ISC add -D_SYSV3 to CFLAGS, per email from
+ Mario Vanoni (vanonim@dial.eunet.ch).
+
+Fri Sep 26 00:57:49 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * awk.y (append_right): Return if either list is NULL. Prevents
+ syntax errors from causing core dumps.
+
+Wed Sep 17 15:34:15 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * field.c (rebuild_record): Set things up so that all fields point
+ into the new record and release any changed fields without
+ causing memory leaks. Avoids problems when fields are extended
+ with the value of $0 or other fields and then $0 is assigned to.
+
+Mon Sep 15 16:12:55 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * builtin.c (do_print): When testing for NUMBER, make sure
+ it's not a string too. Thanks to Michael Brennan for
+ clarifying the semantics.
+
+Sun Sep 14 19:55:12 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * node.c (format_val): Always format values ourselves: avoids
+ problems if OFMT is bizarre, like %s.
+
+Sun Sep 14 00:08:53 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * io.c (get_a_record): Replace all occurrences of the test
+ `grRS == FALSE' with `RS_is_null' which makes ` RS = "\0" '
+ actually work, is clearer code, and actually makes use of
+ the `RS_is_null' variable!
+
+Sun Aug 17 07:15:12 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * field.c (set_FS): Change logic to always set parse_field, even
+ if FS hasn't changed. Thanks to Igor Sheyn for catching this.
+
+Wed Aug 6 21:04:37 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * io.c (VMS et al gawk_popen): Use pclose, not fclose, if
+ iop_alloc fails.
+
+Wed Jul 30 19:53:52 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * awk.y [variable]: Fix case for subscript if $3 == NULL.
+
+Sun Jul 27 22:47:30 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * awk.y (get_src_buf): Don't close file if it's stdin.
+
+Sun Jul 27 22:47:15 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * io.c (#if VMS: vmsrtl_fileno): New routine.
+ (#if VMS: fileno): New macro substituted for stdio one.
+
+Thu Jul 17 20:05:59 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * builtin.c (do_print): When OFMT != CONVFMT, create a new
+ temporary node with just the numeric value valid and format it,
+ and use that for printing. Avoids memory corruption.
+
+Wed Jul 16 10:01:16 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * regex.c: When SYNTAX_TABLE is defined, but not emacs, then
+ CHAR_SET_SIZE is not defined, though used in regcomp. It should
+ be taken out of #ifdef SYNTAX_TABLE. Fix from bug group, from
+ Akim Demaille, demaille@inf.enst.fr.
+ * awk.h (isnondecimal): Make test a little smarter.
+ * builtin.c (nondec2awknum): Add bailout for decimal numbers, e.g.
+ `00.1'. Fix from Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
+
+Thu Jun 19 19:00:40 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * eval.c (interpret): case Node_K_next, Node_K_nextfile: fatal
+ error if called from BEGIN or END.
+ (Fixed completely Mon May 3 13:31:42 1999.)
+
+Mon Jun 9 22:40:04 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * builtin.c (nondec2awknum): Allow `f' and `F' in hexadecimal numbers.
+ Gotta get more sleep...
+ * array.c (assoc_lookup): Fix from Tom Karzes (karzes@equator.com)
+ for memory leak when forcing type to Node_var_array.
+
+Thu May 15 12:49:08 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.3: Release tar file made.
+
+Wed May 14 08:06:08 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (do_close): Add lint warning if closing something that
+ isn't open.
+
+Tue May 13 12:14:12 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * random.c, builtin.c: Remove __GLIBC__ tests, since it breaks
+ `make test'. I prefer consistency across platforms.
+ * Makefile.in (gawk): Undid April 25 changes and added comment.
+ Putting COMPLAGS in breaks with -g on VMS POSIX.
+
+Sun May 11 14:48:04 1997 Darrell Hankerson <hankedr@mail.auburn.edu>
+
+ * io.c [MSC_VER]: Add cases for WIN32.
+ * regex.c [MSC_VER]: Add cases for WIN32.
+
+Sun May 11 07:04:01 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_print): In the loop that evaluates each expression
+ to be printed, do a dupnode to avoid bizarre output. Thanks to
+ Michal for finding this problem.
+ * awk.y (yylex): Fix scanning of hexadecimal constants.
+
+Wed May 7 15:09:25 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (get_a_record): Fix casetable indexing with cast to int.
+ Keeps Michal happy.
+
+Tue May 6 16:40:19 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (func_call): Removed unneeded variables.
+
+Mon May 5 21:17:37 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * missing/strftime.c [case 'v', VMS_EXT]: For VMS date format, two
+ digit day of month should not be zero padded on the 1st through
+ the 9th.
+
+Mon May 5 06:33:47 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * regex.h, regex.c: Merge with current GLIBC version.
+
+Mon May 5 06:33:47 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * io.c (nextfile): Move the check for null return from iop_open
+ in the normal case and add one for the "no args" case.
+
+Fri Apr 25 16:52:33 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * array.c (grow_table): Add a bunch more large primes so arrays
+ can get really big. Thanks to christos@deshaw.com.
+ * all files: Remove ifdef'ed out code and update copyrights.
+ * Makefile.in (gawk): Add $(COMPFLAGS) to command line.
+ * eval.c (flags2str): Added case for FIELD.
+
+Thu Apr 24 22:39:23 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * COPYING: Changed to current official version from FSF.
+ * regex.c: Merge with GLIBC version.
+ * awk.h [_GNU_SOURCE]: Bracket definition inside ifdef.
+ (NODE.source_line): Move name member out of `x' union and
+ into `nodep'; avoids problems doing diagnostics.
+ (nondec2num): Put decl into #if BITOPS || NONDECDATA
+ * posix/gawkmisc.c, missing/system.c, missing/strtod.c,
+ missing/strerror.c: Move to generic GPL statement at top.
+ * builtin.c (nondec2num): Put into #if BITOPS || NONDECDATA
+
+Wed Apr 23 22:14:14 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * dfa.c: Misc changes for really pedantic SGI compilers.
+ * builtin.c: Bracket defs of random() etc for GLIBC.
+ * random.c: Bracket whole file for GLIBC.
+ * configure.in: Extra goop for GETPGRP test for VMS POSIX.
+ * custom.h [VMS]: Remove hard definition of GETPGRP_VOID.
+
+Fri Apr 18 07:55:47 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * BETA Release 3.0.34: Release tar file made.
+
+Tue Apr 15 21:35:45 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ NEW UNDOCUMENTED FEATURE. USE THE SOURCE LUKE!
+ * acconfig.h [NONDECDATA]: New macro.
+ * awk.h: Add decl of do_strtonum.
+ * awk.y (tokentab): Add entry for strtonum function.
+ * builtin.c (do_strtonum): New function.
+ * configure.in (non-decimal-data): New --enable-* option.
+ * node.c (r_force_number): Change to allow non-decimal data inside
+ ifdef NONDECDATA.
+
+Tue Apr 15 06:32:50 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * missing/strftime.c (malloc, realloc, getenv, strchr): Only
+ declare these when STDC_HEADERS is not defined.
+ <stdlib.h, string.h>: Include these when STDC_HEADERS is defined.
+ * awk.h (freenode, tree_eval, m_tree_eval): Reorganize definitions.
+ * alloca.c (malloc): If malloc is already defined as a macro,
+ presumeably by config.h, don't define or declare it.
+
+Wed Apr 9 22:45:27 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in [COMPFLAGS]: Per suggestion from Karl Berry, put
+ $(CFLAGS) last.
+
+Tue Apr 8 23:54:46 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (interpret): For Node_K_break and Node_K_continue, if
+ treating them like `next', also check the function call stack
+ and pop it if necessary.
+
+Mon Apr 7 18:22:37 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h: Add decls of new routines do_compl() and set_loc().
+ * awk.y (tokentab): Add entry for "compl" function.
+ * builtin.c (do_compl): New function to do ones complement.
+ (do_substr): Rationalized yet again, now notices negative start
+ and length parameters.
+ * eval.c (push_args): Fix if call_list gets realloc'ed in the
+ middle of things. Avoids crash for deeply nested function calls.
+ * main.c (catch_sig): Add call to set_loc().
+ * msg.c (set_loc, srcfile, srcline): New function and private
+ variables to help out in tracing down source of error messages.
+
+Fri Mar 28 08:42:27 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (iop_alloc, iop_close): Undo changes of Feb 11, apparently
+ other cleanups in io.c made mmap stuff start working again.
+ BAH! It's a mess, the test suite still fails. I'm leaving the
+ mmap stuff undefined for now. It'll probably get ripped out in 3.1.
+
+Thu Mar 27 08:48:57 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * custom.h [_SEQUENT_]: Undef HAVE_MMAP.
+
+Wed Mar 26 09:08:16 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (iop_alloc): Fix definition to make it static.
+
+Mon Mar 24 23:09:07 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * field.c (init_fields, etc..): More clean up use of Null_field
+ and the various flags.
+ * node.c (unref): If a field, free the node itself. Fixes
+ memory leak problems.
+
+Sun Mar 23 22:51:09 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h [FIELD]: New flag for node->flags field.
+ * builtin.c (sub_common): If FIELD is set, dup the string.
+ * field.c (init_fields): Set up a new Null_field global var.
+ (init_fields, set_field, set_record) use the FIELD flag.
+ (getfield): Use Null_field instead of private variable.
+ * io.c (wait_any): Comment out calls to pclose and iop_close,
+ caused weird race conditions. See test/pipeio1.awk. Thanks
+ to Darrell Hankerson for tracing this one down.
+
+Tue Mar 18 20:57:18 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * dfa.c (inboth): Free templist; plugs memory leak.
+ * field.c (init_fields, grow_fields_arr, set_field, rebuild_record,
+ set_record): Remove PERM flag from entries in fields_arr[]. Fixes
+ nasty memory leak.
+
+Tue Mar 18 06:33:00 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.y (dup_parms): Robustified against parameter errors.
+
+Sun Mar 16 21:31:40 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ NEW UNDOCUMENTED FEATURE. USE THE SOURCE LUKE!
+ * acconfig.h [BITOPS]: New macro. If set, do octal & hex and bit ops.
+ * awk.h [isnondecimal]: New macro, and decl of new functions.
+ * awk.y (yylex): Add recognition of octal and hex constants.
+ * builtin.c (do_and, do_or, do_xor, do_lshift, do_rshift): New
+ functions that do bit operations.
+ (nondec2awknum): New function to convert octal or hex to double.
+ * configure.in: Add AC_ARG_ENABLE for bit operations.
+ * node.c (r_force_number): Add octal and hex conversion.
+
+Sun Mar 16 21:28:56 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h [IOP_NOFREE_OBJ]: New macro.
+ * io.c (iop_open, iop_alloc): Add new third parameter, which is
+ either NULL, meaning allocate a new IOP, or the address of one
+ already allocated. Have a static one in the `nextfile'
+ routine, and use the IOP_NOFREE_OBJ flag for it. All of this
+ keeps us from reading freed memory. The `swaplns' test fails
+ otherwise.
+ (iop_close): If IOP_NOFREE_OBJ is set, don't free the IOBUF.
+
+Wed Feb 26 06:21:02 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (in_function, pop_fcall_stack, pop_fcall, push_args):
+ New functions. These manage "frames" of awk function call arguments.
+ The problem is that a `next' or a `nextfile' from a function
+ leaks memory. These changes allow us to free up that memory.
+ (interpret): for Node_K_next and Node_K_nextfile, check if in
+ a function call and free all function call frames.
+
+Fri Feb 21 06:23:19 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ Misc changes from Katsuyuki Okabe <HGC02147@niftyserve.or.jp>:
+
+ * builtin.c (do_substr): Change a %d to %ld in warning message.
+ * eval.c (op_assign): Fix format string for warning about %=.
+
+Wed Feb 19 23:29:02 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * main.c (main): Add do_intervals to condition that causes
+ resetup() to be called again. Makes the --re-interval option
+ actually work. What a concept.
+
+Fri Feb 14 09:47:31 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c [#include "awk.h"]: Undef HAVE_MMAP to just use the old code.
+ Something is causing a file descriptor leak, and this is getting to
+ be just too much hair. I reserve the right to rip out the mmap
+ code entirely at a future date.
+
+Tue Feb 11 06:28:29 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (iop_alloc): For an mmap'ed file, close the file descriptor,
+ and then touch each page to get a private copy. Fixes nasty case
+ of truncating our input file.
+ (iop_close): Don't call close on mmap'ed file.
+
+Wed Feb 5 17:59:04 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (interpret): For Node_K_delete, just call do_delete; let
+ it handle the case of `delete array'.
+ * array.c (do_delete): Changed to handle case of `delete array',
+ and made smarter if the array is actually an uninitialized
+ parameter.
+
+Sun Jan 26 22:58:29 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * getopt.h, getopt.c, getopt1.c: Replaced with new versions from
+ GLIBC 2.
+
+Sun Jan 19 23:37:03 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (nodetype2str): Not static, for debugging.
+ (flags2str): New function for debugging.
+ * field.c (get_field): Add new var that is like Nnull_string but
+ does not have numeric attributes, so that new fields are strings.
+ (set_record): Turn off PERM flag before unrefing fields and field 0.
+ * array.c (in_array): Always evaluate subscript, could have
+ side effects.
+ * builtin.c (do_strftime): Way increase size of buffer to make sure
+ we don't have overflow problem. Keeps Paul Eggert happy.
+ * custom.h [__amigaos__]: Define fork to vfork. From Fred Fish.
+ * dfa.c: Move include of config.h to top, for RSXNT. From Kai
+ Uwe Rommel.
+ (ISALPHA, etc): Change from Jacob Engelbrecht (jaen@novo.dk)
+ to better handle non-ASCII environments.
+ * gawkmisc.c: Remove amigados case, posix should now work fine.
+ * amiga/*: Nuked per previous entry.
+ * Makefile.in: Removed all references to amiga
+ * io.c [HAVE_SYS_PARAM_H]: Add #undef RE_DUP_MAX to avoid
+ spurious conflict with regex.h.
+ (flush_io): Remove amiga ifdefs, not needed anymore.
+ (spec_setup): Set getrec field for special files. Fix from
+ Mark Gray (markgray@pdt.net).
+ * node.c (more_nodes): Fix to get the last entry in the array.
+
+Wed Jan 8 17:42:37 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * io.c (mmap_get_record): Fix return value if file ends without
+ record separator.
+
+Fri Jan 3 19:57:16 1997 Pat Rankin <rankin@eql.caltech.edu>
+
+ * awk.y (get_src_buf): Test for an empty source file by detecting
+ an initial read of 0 bytes rather than by relying on info from
+ stat().
+
+Wed Dec 25 11:25:22 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.2: Release tar file made.
+
+Wed Dec 25 11:17:32 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (install, uninstall): Use $(srcdir)/patchlevel.h.
+ Thanks to Richard Levitte, LeViMS@stacken.kth.se.
+ (install): Remove chmod command; let $(INSTALL_PROGRAM) use -m.
+
+Mon Dec 23 20:36:59 1996 Pat Rankin <rankin@eql.caltech.edu>
+
+ * custom.h (#if VMS_POSIX): Define GETPGRP_VOID.
+
+Fri Dec 20 08:59:55 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * getopt.c, getopt1.c: Comment out the `#if defined (_LIBC) ||
+ !defined (__GNU_LIBRARY__)' and `#endif' to force use of this
+ getopt, even on systems like Linux. This will be handled
+ better in 3.1 / glibc 2.
+
+Thu Dec 19 22:52:39 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.y (yylex): In several places, after yyerror(), add call to
+ exit(). Otherwise, infinite messages. This should probably
+ be handled better.
+
+Wed Dec 18 22:42:10 1996 Darrel Hankerson <hankedr@mail.auburn.edu>
+
+ * getopt.c (_getopt_internal): If 'W' and ';', if optind == argc,
+ return c, don't fall through.
+
+Wed Dec 18 10:09:44 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * configure.in [AC_PREREQ]: Update to 2.12 in order to switch to
+ autoconf 2.12. Lots of other files will be rebuilt automatically.
+ [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
+ * aclocal.m4 [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
+
+Tue Dec 17 22:23:16 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_strftime): Fix case if format string is "".
+ Also fix it if format is not "" but result of strftime is "".
+ See comments in code.
+
+Tue Dec 10 23:09:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.1: Release tar file made.
+
+Tue Dec 10 22:39:41 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (dist): Add dependency on `info'. Remove line that
+ does makeinfo.
+ (install): Use $(LN) not $(LN_S) to link gawk gawk-version.
+
+Sun Dec 8 07:53:44 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (gawk): Took COMPFLAGS out of link line for help
+ on VMS posix. Shouldn't (I hope) affect anything else.
+
+Thu Nov 28 11:52:24 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * configure.in (AC_PROG_INSTALL): Set INSTALL to install-sh.
+
+Tue Nov 26 22:42:00 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * PORTS: Updated list of systems.
+ * Makefile.in (install): Fix some typos and add some improvements
+ for Ultrix.
+
+Sun Nov 24 22:16:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_printf): If no args, fatal error. Return silently
+ if --traditional.
+
+Thu Nov 7 20:54:43 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (inrec): Make sure EOF hasn't already happened before
+ trying to read; prevents accessing freed buffer. Thanks to
+ Michal Jaegermann.
+ * Makefile.in [AWKSRC]: Add random.h.
+ * random.h: New file, redefines names of the `random' functions.
+ * random.c, builtin.c: Add include of random.h.
+
+Thu Nov 7 09:06:21 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.y (snode): Undo 4 Oct change, put do_split code back.
+ * field.c (do_split): Restore old code; add test for CONST, so
+ that re_parse_field is used if third arg to split is a regexp
+ constant.
+
+Mon Nov 4 12:57:11 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * main.c (main): Research -m[fr] options don't need literal '='
+ characters. Brian's documentation was confusing. Fixed, not
+ that anyone actually uses these options with gawk.
+
+Sun Nov 3 11:23:21 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * field.c (def_parse_field): Add \n to list of acceptable white space.
+ (posix_def_parse_field): New routine, just like def_parse_field(),
+ but only allows space and tab as separators.
+ (do_split, set_FS): Make appropriate choice between the two
+ *def_parse_field() routines.
+
+Fri Oct 25 10:13:06 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * configure.in: Remove test for random.
+ * Makefile.in: Add random.c to list of files always compiled.
+ * missing.c: Remove HAVE_RANDOM test.
+ * builtin.c: Remove ifdef's for HAVE_RANDOM.
+ [GAWK_RAND_MAX]: Use constant we know works with our random().
+ * random.c: New file - moved from missing/ directory.
+
+Wed Oct 23 19:46:01 1996 Pat Rankin <rankin@eql.caltech.edu>
+
+ * builtin.c (do_tolower, do_toupper): Add `unsigned char *' casts.
+
+Tue Oct 22 21:27:52 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c [GAWK_RANDOM_MAX]: Try to make definition a bit
+ smarter; don't use RAND_MAX if it's equal to SHRT_MAX, blows
+ things up.
+
+Tue Oct 22 08:49:20 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * main.c (copyleft): Update copyright date to 1996.
+ * Too many files to list: Update copyright date to 1996.
+
+Sun Oct 20 12:21:09 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.y, dfa.c, eval.c, io.c, re.c: Added various FIXME comments.
+
+Sat Oct 19 22:06:42 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (nodetype2str): Make static, add prototype.
+ * field.c (sc_parse_field): Cast array subscripts to int to
+ shut up gcc warnings.
+ * gawkmisc.c: Add prototype for xmalloc.
+ * awk.h: Add prototype for getredirect.
+ * builtin.c (do_fflush): Remove extern decl of getredirect.
+ * io.c (get_a_record, mmap_get_record): Change decl of rs to int,
+ to shut up gcc warnings.
+ * awk.y (isassignable): Add a default to switch to quiet gcc.
+ * getopt.c (_getopt_internal): Give default value to `indfound'.
+
+Fri Oct 18 09:00:49 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * regex.h [RE_SYNTAX_AWK]: Add RE_CONTEXT_INDEP_ANCHORS.
+
+Thu Oct 17 22:32:55 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * aclocal.m4 [AM_SANITY_CHECK_CC]: Added.
+ * configure.in: Use it.
+
+Thu Oct 17 21:43:25 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * configure.in: Add checks for locale.h and setlocale().
+ * awk.h: Include locale.h and define out setlocale() if not available.
+ * main.c (main): Call setlocale().
+ * builtin.c (do_tolower, do_toupper): Use unsigned char pointers,
+ to get other charsets right in different locales.
+
+Wed Oct 16 21:32:53 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (format_tree): Change initial buffer size to 512
+ and use a constant. Allows large values of %f per bug report
+ from sheyn@cs.bu.edu.
+
+Wed Oct 16 21:22:08 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in [MISC]: Removed TAGS and tags.
+ (local-distclean): Added TAGS and tags.
+ (maintainer-clean): Removed TAGS and tags.
+
+Wed Oct 16 12:28:43 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * main.c (version): Add call to copyleft(), per new standards.
+ version.c: Fix text of version string to match new standards.
+
+Sun Oct 6 22:19:45 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * regex.c: Updated to Emacs 19.34b base.
+
+Sun Oct 6 21:57:34 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * re.c (make_regexp): Fixed to handle \8 and \9 in the middle
+ of a regexp.
+
+Fri Oct 4 10:26:16 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.y (snode): Remove case for do_split; always making the
+ third arg a Node_regex is wrong.
+ * field.c (do_split): Rationalized to distinguish `/ /' from `" "'.
+ Generally fixed up.
+ * node.c (parse_escape): Allow single digit \x escapes.
+
+1996-10-02 Paul Eggert <eggert@twinsun.com>
+
+ * builtin.c (format_tree): Fix bug in %d and %i format: NaNs, and
+ values in the range LONG_MAX+1 .. ULONG_MAX, were mishandled.
+ Don't assume that double values <= -1 are converted to unsigned
+ long in the expected way; the C Standard doesn't guarantee this.
+
+1996-10-02 Paul Eggert <eggert@twinsun.com>
+
+ * awk.h (INT_MAX): Remove unused symbol.
+
+Mon Sep 30 22:19:11 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * getopt.c (_getopt_internal): If 'W' is in the optstring followed
+ by a ';' then search through the long opts table. This makes
+ `-W foo=bar' same as `--foo=bar'.
+ * main.c (main): 'W' now prints an error message.
+ (gawk_option): Deleted the routine.
+
+Sun Sep 29 23:04:54 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (sub_common): Fix several bugs with gsub when
+ matching null strings. See test/gsubtest.awk.
+
+Fri Sep 20 17:35:54 1996 Pat Rankin <rankin@eql.caltech.edu>
+
+ * alloca.c (NULL): Don't define if <config.h> has already done so.
+
+Fri Sep 20 11:54:31 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_print): Evaluate all the expressions first and
+ then print them. Avoids surprising behavior. See test/prtoeval.awk
+ for an example.
+
+Tue Sep 10 06:21:40 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h [FUNC]: New flag, marks a Node_parameter_list as really
+ being the function name; allows more checking in awk.y.
+ * awk.y (isassignable): Now takes a NODE * instead of a type, to
+ check if a function parameter is marked FUNC, then it's the function
+ name, which is not assignable. Fix call from snode().
+ (function_prologue): Mark function name as FUNC.
+ (yyerror): Don't call exit() anymore; gawk will now report
+ all syntax errors.
+
+Sun Sep 1 19:36:30 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * field.c (rebuild_record): After building new field 0, go through
+ all old fields, and if they used to point into the old one,
+ have them point into the new one. Then turn off PERM flag before
+ unref-ing field 0.
+
+Wed Aug 28 19:13:34 1996 Arnold D. Robbins <arnold@math.utah.edu>
+
+ * eval.c (set_IGNORECASE): Correctly parenthesize bit operations
+ in test and fix logic for string value.
+
+Wed Aug 28 22:06:33 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * main.c (usage): Add email addresses for bug reporting, per
+ change in GNU Coding Standards from RMS.
+
+Sun Aug 11 23:13:22 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (install): Correct use of $(INSTALL_PROGRAM).
+
+Thu Aug 8 23:29:43 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * parse.y (isassignable): New function, checks in type can
+ be assigned to.
+ (snode): Changed checking for 3rd arg of gsub to be more
+ general, supersedes earlier change.
+
+Thu Aug 8 13:58:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * parse.y (snode): If third arg to sub or gsub is builtin
+ function, complain, since can't substitute into result.
+ * eval.c (r_get_lhs): Diagnose Node_builtin as an error, instead
+ of falling through into default case and using cant_happen().
+
+Thu Aug 1 07:13:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * regex.h [RE_DEBUG]: New macro.
+ [RE_SYNTAX_GNU_AWK]: Add RE_DEBUG.
+ [RE_SYNTAX_POSIX_AWK]: Add RE_INTERVALS.
+ * regex.c (re_set_syntax): Add #ifdef DEBUG code to turn on `debug'
+ flag if RE_DEBUG set, and turn off debug if not set and debug
+ was on.
+ * main.c (main): Remove `do_intervals = TRUE' from `if (do_posix)',
+ it's now handled in the definition of RE_SYNTAX_POSIX_AWK.
+
+Mon Jul 29 17:49:07 1996 Pat Rankin <rankin@eql.caltech.edu>
+
+ * io.c (O_ACCMODE): Define it if <fcntl.h> doesn't.
+
+Mon Jul 29 12:02:48 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (set_IGNORECASE): Made somewhat smarter. gawk -v IGNORECASE=0
+ was acting the same as -v IGNORECASE=1. Thanks to Darrell Hankerson
+ for the bug report.
+
+Fri Jul 26 12:04:43 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h (format_val): Add declaration of new routine.
+ * node.c (format_val): New routine, abstracts old guts of
+ r_forcestring; accepts format string and index as additional params.
+ (r_force_string): Changed to call format_val.
+ * builtin.c (do_print): Don't tree_eval the tree twice in case
+ OFMTidx != CONVFMTidx; doing so could cause side effects
+ (from bug report by Tobias Rettstadt, xassp@ipds.uni-kiel.de).
+ Instead, call format_val.
+
+Mon Jul 22 21:59:15 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (iop_close): Change check for "is $0 in the input buffer"
+ to use `< (iop->buf + iop->secsiz + iop->size)' instead of
+ `< iop->end'. The latter is bogus if EOF has been hit on the
+ file. Fix from Darrel Hankerson based on bug report by
+ Charles Howes (howes@grid.direct.ca). See test/eofsplit.awk.
+
+Thu Jul 18 19:43:20 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (sub_common): Backed out change of Feb 14 in favor of:
+ (do_gensub): Changed to use make_string and then to |= TEMP
+ flag, based on bug report and patch from Katsuyuki Okabe,
+ hgc02147@niftyserve.or.jp.
+
+Thu Jul 18 19:23:53 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * custom.h: Added ifdef for QNX, based on bug report from
+ Michael Hunter, mphunter@qnx.com.
+
+Mon Jul 15 09:31:01 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (redirect): When finding the rp pointer, if it's not
+ NULL, set str = rp->value. This gets the '\0' terminated
+ version. Motivated by bug report from John Hawkinson
+ (jhawk@bbnplanet.com).
+
+Sun Jul 14 18:40:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * configure.in: Added call to AC_CHECK_LIB(m, fmod), since
+ apparently some systems have fmod in the math library.
+ Portability: The Holy Grail. Sigh.
+
+Sun Jul 14 18:08:01 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h: Add Jim Meyerings ISASCII etc hacks for ctype macros.
+ * builtin.c (do_toupper, do_tolower, sub_common): Changed to use
+ upper-case versions of ctype macros.
+ * main.c (main): Ditto.
+ * node.c (r_force_number, parse_escape): Ditto.
+
+Sun Jul 14 06:34:18 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * field.c (set_record): Made it always do the PERM flag.
+ Fixes cases where $0 is assigned to, e.g. by gsub, keeps
+ the fields valid.
+ (get_field): Removed the call to reset_record in
+ case where ! field0_valid. We want to leave the fields alone
+ if they've been changed.
+
+Thu Jul 11 23:04:20 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (devopen): Change tests of (flag & O_fooONLY) to
+ (flag & O_ACCMODE) == O_fooONLY. Per (long standing) bug
+ report from Chapman Flack.
+ (close_redir): Change final conditional to just (status != 0)
+ so that ERRNO always set; the warning had its own `if (do_lint)'
+ anyway.
+ * eval.c (do_split): Force type of array to be Node_var_array
+ instead of Node_var. Per (long standing) bug report from
+ Chapman Flack.
+
+Thu Jul 11 22:17:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (install): Added symlink of gawk to awk if
+ no awk in $(bindir).
+ (LN_S): New variable for symlinking.
+ (uninstall): Remove awk if it's the same gawk.
+ * Configure.in: Added call to AC_PROG_LN_S for Makefile.in.
+
+Sun Jul 7 15:47:13 1996 Arnold D. Robbins <arnold@infographix.com>
+
+ * main.c (main): Made `--posix' turn on interval expressions.
+ Gawk now matches its documentation. (What a concept!)
+
+Wed Jul 3 15:02:48 1996 Arnold D. Robbins <arnold@infographix.com>
+
+ * regex.h, regex.c: Upgraded to changes from Emacs 19.31.
+
+Fri May 17 08:46:07 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (get_a_record): Added `continued' flag. Fix from
+ Darrell Hankerson for when RS = "\n|something".
+
+Wed May 15 02:34:55 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (awklib/all): Now depends on gawk, fixes problem
+ with parallel make.
+
+Tue May 14 15:02:52 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (format_tree): Fix handling of '*' to deal with
+ negative value for fieldwidth -- make positive and turn on
+ left justify. Per bug report from Michael Brennan.
+
+Sun May 12 20:42:06 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * eval.c (r_get_lhs): case Node_subscript. Check if array name
+ is actually a function, fatal error if so.
+
+Sun May 5 10:11:52 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (redirect): Call flush_io() before creating a new output pipe,
+ per bug report from Brian Kernighan (bwk@research.bell-labs.com).
+
+Fri Mar 15 06:38:33 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (install): Use $(INSTALL_PROGRAM), not $(INSTALL).
+ (local-distclean): Add `*~' to list of files to be removed.
+ (CFLAGS): Now contains just @CFLAGS@.
+ (COMPFLAGS): Replaces use of CFLAGS, has CFLAGS plus all the
+ other stuff.
+
+Wed Mar 13 14:19:38 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (mmap_get_record): Fixed to not place sentinel at end
+ of mmap'ed object. Won't work if file is exact multiple of
+ disk block size. See comments in code for more info.
+ Thanks to Rick Adams (rick@uunet.uu.net) for help in testing.
+
+Sun Mar 10 22:50:23 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * io.c (do_close): Notice if we were called as `close(FILENAME)'
+ and arrange to close the current input file. This turns out
+ to be easy to do, just call `nextfile(TRUE)'. Based on bug report
+ from Pascal A. Dupuis, <dupuis@lei.ucl.ac.be>.
+
+Thu Mar 7 08:08:51 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * field.c (init_fields, grow_fields, set_field, rebuild_record):
+ Nuke the `nodes' array everywhere. Anytime a field is unref'ed,
+ allocate a new node that is a copy of Nnull_string. This avoids
+ subtle memory management problems when doing a lot of assignment
+ to fields, and tweaking of NF. Make sure that fields_arr[0] always
+ has a type of Node_val!
+ * field.c (set_NF): If NF is decremented, clear fields between
+ NF and parse_high_water, otherwise if NF incremented, clear
+ fields between parse_high_water and NF.
+ * eval.c (nodetype2str): New function, used for diagnostics.
+ (interpret): Use nodetype2str when finding invalid node.
+
+Mon Mar 4 09:02:28 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_toupper, do_tolower): Use isascii along with
+ isupper/islower before changing case, in case characters have
+ the high bit set. This is a hack.
+
+Mon Feb 26 22:24:44 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (sub_common): If no match, and called from gensub,
+ don't free the temporary string, since the tmp_number then
+ writes over it.
+
+Sun Feb 25 23:13:01 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (format_tree): Fixed %c to treat user input as
+ numeric also by adding test for MAYBE_NUM.
+
+Tue Feb 20 12:25:50 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * configure.in: Added AC_FUNC_MMAP call and add madvise to
+ list of functions to look for.
+ * awk.h [IOP_ISMAPPED]: New flag value for mmap support and new
+ `getrec' structure member in struct iobuf.
+ * io.c (iop_alloc, iop_close): Changed to map/unmap input file
+ into memory if possible.
+ (mmap_get_record): New function to actually retrieve the
+ record from mmaped file.
+
+Thu Feb 1 08:56:46 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_substr): Fixed lint message to use indx+1 when
+ start position is past end of string.
+
+Sun Jan 28 07:00:56 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_substr): Rationalized handling of missing length
+ argument, as well as various accompanying lint warnings. Previous
+ code was slightly bogus. Talk about your Day 1 bugs.
+
+Thu Jan 25 14:09:11 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * builtin.c (do_substr): If length exceeds length of actual
+ string, do computation of needed substring length *after*
+ the lint warning.
+
+Wed Jan 24 10:06:16 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (gawk): Add $(CFLAGS) to link line.
+ (Makefile): Target depends on the Makefile.in files.
+ (OTHERS): Added TAGS and tags to the distribution.
+ (local-distclean): New rule.
+ (distclean): Use it.
+ (maintainer-clean): Don't `make distclean' before running submakes,
+ since that removes makefiles needed for the submakes.
+ * builtin.c (do_strftime): Remove hard coded limit on length of result.
+ Based on code from Paul Eggert (eggert@twinsun.com).
+
+Mon Jan 22 13:16:37 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * main.c (usage): Takes new fp parameter which is either
+ stdout for `--help' (per the GNU Coding Standards) or stderr
+ if an error occurs. Fix all calls.
+ (version): Prints to stdout per the coding stds.
+ (copyleft): Prints to stdout now, not stderr, and exits.
+
+Fri Jan 19 08:10:29 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * regex.h [RE_GNU_AWK]: Added RE_CONTEXT_INDEP_OPS to set of
+ bits we turn off for regular operation. Breaks things like
+ /^+[0-9]+/ to match a literal `+' at the beginning of, say,
+ a phone number.
+
+Wed Jan 10 23:19:36 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * 3.0.0 polished up and release tar file made.
+
+Wed Dec 27 11:46:16 1995 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * 2.94.0 released to porting group (no, I haven't been good
+ about this file; I'll do better once 3.0 is released).
+
+Mon Aug 28 23:04:30 1995 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * awk.h updated for NeXT - bracket TRUE/FALSE
+ * io.c (get_a_record): Removed shadowing of 'start' in
+ * Makefile.in and doc/Makefile.in: Fixed to use gawk.1 and gawk.texi,
+ instead of gawk.1.in and gawk.texi.in.
+
+Mon Aug 25 11:04:30 1995 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * 2.90.0 released to porting group.
+
+Fri Aug 18 12:43:31 1995 Arnold D. Robbins <arnold@puny.ssc.com>
+
+ * ChangeLog created.