diff options
Diffstat (limited to 'ChangeLog.0')
-rw-r--r-- | ChangeLog.0 | 9885 |
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. |