2013-05-09         Arnold D. Robbins     <arnold@skeeve.com>

	* 4.1.0: Release tar ball made.

2013-05-09         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (snode): Make it a fatal error to use a regexp constant
	as the second argument of index(). Thanks to Christopher Durant
	<christopher.durant@marquesa.net> and Brian Kernighan for the report
	and the advice.

2013-04-28  Eli Zaretskii  <eliz@gnu.org>

	* io.c (redirect): Remove the HACK that called close_one when
	errno was zero in the MinGW build.  This prevents failure in
	several tests in the test suite, e.g., closebad.

2013-04-28         Arnold D. Robbins     <arnold@skeeve.com>

	* bootstrap.sh: Fix a comment.

2013-04-24         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (do_getline_redir): Fix the leading comment.

2013-04-23         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (load_procinfo): Add PROCINFO entries for API major
	and minor versions.

2013-04-21         Arnold D. Robbins     <arnold@skeeve.com>

	* missing: Update from Automake 1.13.1.

2013-04-18         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Fix a typo.

2013-04-17         Corinna Vinschen      <vinschen@redhat.com>

	* configure.ac: Remove special casing for cygwin for libiconv
	and libintl.

2013-04-16         Arnold D. Robbins     <arnold@skeeve.com>

	* bootstrap.sh: Touch gawk.texi too. Update copyright.

2013-04-16         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.c: Regenerated from bison 2.7.1.
	* command.c: Ditto.
	* dfa.h, dfa.c: Minor edits to sync with GNU grep.
	* gettext.h: Sync with gettext 0.18.2.1.
	* random.h: Remove obsolete __P macro and use. Update copyright year.
	* Makefile.am, array.c, builtin.c, cint_array.c, cmd.h, debug.c,
	eval.c, ext.c, field.c, gawkapi.c, gawkapi.h, gettext.h, int_array.c,
	interpret.h, msg.c, node.c, profile.c, re.c, replace.c, str_array.c,
	symbol.c: Update copyright year.

	Update to automake 1.13.1:

	* configure.ac (AM_INIT_AUTOMAKE): Update version.
	* configure, Makefile.in, aclocal.m4, awklib/Makefile.in,
	doc/Makefile.in, test/Makefile.in: Regenerated.

	* getopt.c, getopt.h, getopt1.c, getopt_int.h: Sync with GLIBC.

2013-04-14         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (check_funcs): Fix logic of test for called but
	not defined warning. Thanks to Scott Deifik for the bug report.

2013-04-02         Arnold D. Robbins     <arnold@skeeve.com>

	* profile.c (print_lib_list): Send final newline to prof_fp
	instead of stdout.  Thanks to Hermann Peifer for the bug report.

2013-03-27         Arnold D. Robbins     <arnold@skeeve.com>

	* Makefile.am (SUBDIRS): Move extension back into the middle of
	the list so that `make check' without a prior `make' works.

	Unrelated:

	* main.c (main): Move env_lc into ifdef for LIBC_IS_BORKED.

2013-03-20         Arnold D. Robbins     <arnold@skeeve.com>

	For systems where libc is borked (MirBSD, maybe others).

	* dfa.c: Force use of gawk_mb_cur_max instead of MB_CUR_MAX and make
	mbrtowc a macro that always fails.
	(using_utf8): Force utf8 to be 0 if libc borked and gawk_mb_cur_max
	is one.
	* main.c (main): If libc is borked and LC_ALL or LANG exist in the
	environment and are set to "C" or "c", force gawk_mb_cur_max to one.

2013-03-11         Arnold D. Robbins     <arnold@skeeve.com>

	* re.c (check_bracket_exp): Make handling of embedded ] in
	regexp smarter. Thanks to Ed Morton <mortoneccc@comcast.net>
	for reporting the bug.

2013-03-01         Arnold D. Robbins     <arnold@skeeve.com>

	Don't build extensions if API isn't supported:

	* Makefile.am (SUBDIRS): Move extension directory to last in case
	building the extensions is not supported.
	* configure.ac: Add check for MirBSD and don't even try to run the
	checks for DYNAMIC if so.

	Check for systems (MirBSD) where libc doesn't understand not
	to use UTF-8 for LC_ALL=C.

	* configure.ac (LIBC_IS_BORKED): AC_DEFINE if needed.
	* regcomp.c (init_dfa): Change logic as needed if LIBC_IS_BORKED.

2013-02-28         Arnold D. Robbins     <arnold@skeeve.com>

	Cause profiling / pretty printing to include a list of
	loaded extensions. Thanks to Hermann Peifer for the bug report.

	* awk.h (srcfiles): Add declaration.
	* profile.c (print_lib_list): New function.
	(dump_prog): Call it.

2013-02-26         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (expression_list): In case of error return the list
	instead of NULL so that snode gets something it can count.

2013-02-12         Arnold D. Robbins     <arnold@skeeve.com>

	* bisonfix.awk: Comment out code for fixing contined #if
	statements. It is likely not needed anymore. Leave it there in
	case I'm wrong.

2013-02-06         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (printf_common): Move nargs > 0 check into assert.
	(do_sprintf): Add nargs check and fatal message to here.

2013-02-04         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (main): Remove undocumented -m option which was for
	compatibility with BWK awk. His awk dropped it back in 2007.

2013-02-03         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Add Automake test for cross compiling.

2013-01-31         Arnold D. Robbins     <arnold@skeeve.com>

	* regcomp.c, regex.c, regex_internal.c, regexec.c: Update
	copyright years to sync with GLIBC.

	From: http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html,
	by Andreas Schwab <schwab@suse.de>:

	* regexec.c (extend_buffers): Add parameter min_len.
	(check_matching): Pass minimum needed length.
	(clean_state_log_if_needed): Likewise.
	(get_subexp): Likewise.`

2013-01-31         Arnold D. Robbins     <arnold@skeeve.com>

	* dfa.c: Include "dfa.h" which includes regex.h after limits.h
	so that RE_DUP_MAX gets the correct value. Especially needed on
	OpenVMS. Thanks to Anders Wallin.

	* main.c (version): Print out API version numbers if DYNAMIC.
	Helpful also for knowing if to run the shlib tests.

	* configure: Regenerated after change in m4/readline.m4.

2013-01-31         Arnold D. Robbins     <arnold@skeeve.com>

	* PROBLEMS: Removed. It is no longer needed.
	* Makefile.am (EXTRA_DIST): Remove PROBLEMS from list.

2013-01-31         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* configure.ac: Remove TEST_MPFR conditional added in last patch.
	We will instead test for MPFR capability by looking at the output
	from gawk --version.

2013-01-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* configure.ac: Add MPFR test for use in test/Makefile.am.

2013-01-25         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (parms_shadow): Change int param to bool.
	* cmd.h (output_is_tty): Sync type with rest of code (is bool).
	* dfa.c (MALLOC): Undef first, for Irix.
	* Makefile.am (LDADD): Use LIBREADLINE and LIBMPFR instead of
	automake substitutions.
	* configure.ac (AC_INIT): Version bump.
	(GAWK_CHECK_READLINE): Renamed from GNUPG_CHECK_READLINE.

2013-01-23         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (list_functions): Change parameter to bool.
	* symbol.c (list_functions): Ditto.
	(get_symbols): Change sort parameter to bool. Additional
	code cleanup.

2013-01-22         Arnold D. Robbins     <arnold@skeeve.com>

	* symbol.c (get_symbols): Reset count after each loop to only
	sort the actual items retrieved. Thanks to Hermann Peifer (by
	way of Andrew Schorr) for reporting the bug.  Also add some
	commentary and fix function name in emalloc calls.

2013-01-20         Arnold D. Robbins     <arnold@skeeve.com>

	* re.c (regexflags2str): New routine.
	(resetup): If do_intervals, also turn on RE_NO_BK_BRACES.
	Thanks to Yan Lei <yanl.fnst@cn.fujitsu.com> for the
	bug report.

2013-01-18         Arnold D. Robbins     <arnold@skeeve.com>

	Fix a problem with include ordering to get ptrdiff_t definition,
	showed up on Debian Lenny. Reported by Manuel Collado.
	Fix brought over from grep.

	* dfa.h: Include regex.h and stddef.h directly.
	* dfa.c: Adjust includes.

2013-01-11         John Haque            <j.eh@mchsi.com>

	* awk.h (do_mpfr_rshift): Renamed from do_mpfr_rhift.
	* awkgram.y (do_mpfr_rshift): Renamed from do_mpfr_rhift.
	* mpfr.c (_tz1, _tz2, _mpz1, _mpz2, mpz1, mpz2, get_bit_ops,
	free_bit_ops): Removed.
	(init_mpfr): Remove calls to mpz_init.
	(get_intval, free_intval): New functions.
	(do_mpfr_rshift, do_mpfr_lshift): Rework code.
	(do_mpfr_and, do_mpfr_or, do_mpfr_xor): Accept two or more arguments
	to match regular functions.

2013-01-11         Arnold D. Robbins     <arnold@skeeve.com>

	* bisonfix.awk: Adjust ARGV / ARGC to force reading of standard
	input; apparently needed for Mac OS X. Thanks to Akim Demaille
	for the report.

2013-01-06         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (redirect, two_way_open): Set the name field in the
	awk_input_buf_t and awk_output_buf_t structures, as needed.
	Thanks to Manuel Collado for the report.

2013-01-05         Arnold D. Robbins     <arnold@skeeve.com>

	* regex_internal.h (struct re_dfa_t): Restore ifdefs around
	__libc_lock_define, they really were needed. Bleah.

2013-01-01         Arnold D. Robbins     <arnold@skeeve.com>

	Sync with GLIBC regex files.

	* regex_internal.h (struct re_dfa_t): Remove ifdefs around
	__libc_lock_define since it's already defined to empty in non-LIBC
	case.
	* regexec.c (check_node_accept_bytes): Restore decl with use from
	GLIBC code since this is LIBC case.

2012-12-27         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (do_print, do_printf): Use output_fp as default
	output for print/printf only if running under the debugger.
	Otherwise use stdout as Brian, Peter, and Al intended.

2012-12-25         Arnold D. Robbins     <arnold@skeeve.com>

	Remove sym-constant from API after discussions with John
	Haque and Andy Schorr.

	* gawkapi.h (api_sym_constant): Removed field in API struct.
	(sym_constant): Remove macro.
	* gawkapi.c (set_constant, api_sym_update, api_sym_constant): Removed.
	(sym_update_real): Renamed to api_sym_update(). is_const parameter
	removed and code adjusted.

2012-12-24         Arnold D. Robbins     <arnold@skeeve.com>

	* 4.0.2: Release tar ball made.

2012-12-23         John Haque      <j.eh@mchsi.com>

	* eval.c (r_get_lhs): Node_array_ref. If original is Node_var,
	don't assign null-string as value.
	* ext.c (get_argument): Node_array_ref. Check if already a scalar.

2011-12-23         John Haque      <j.eh@mchsi.com>

	* awkgram.y (is_deferred_variable): New function.
	(func_install): Call it.
	* eval.c (r_interpret): Op_push_arg. Check for uninitialized scalar.

2012-12-23         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (tokentab): Whitespace fix for "include".
	* builtin.c (printf_common): Do a fatal error if no args to printf()
	or sprintf().

2012-12-19         Arnold D. Robbins     <arnold@skeeve.com>

	* bootstrap.sh: Touch extension/aclocal.m4 also.

	Unrelated: Extend input parser API:

	* awk.h (IOBUF): Remove read_func pointer.
	* gawkapi.h (awk_input_buf_t): Move it to here.
	* io.c (iop_alloc, get_a_record, get_read_timeout): Adjust code.

	Unrelated: Make sure that variables like NF, NR, FNR are
	accessable correctly both through SYMTAB and through API.

	* gawkapi.c (api_sym_lookup): Call update_global_values().
	(api_sym_lookup_scalar): Ditto.
	* interpret.h (Op_subscript, Op_subscript_lhs): Ditto.
	* main.c (update_global_values): Adjust comment.

	Unrelated: Fix --disable-lint so that everything compiles.

	* main.c (main): Move case lable inside ifdef.
	* awkgram.y (isnoeffect): Add ifdefs around declaration, use,
	and function body.

	Unrelated: Restore building with tcc.

	* awk.h (AFUNC): Move to array.c which is the only place its used.
	(ainit_ind, atypeof_ind, etc.): New macros for use in array.c
	* array.c (AFUNC): Change to use F##_ind. Works with tcc and other
	compilers.
	* configure.ac: Only add -export-dynamic flag if compiling with gcc.

2012-12-18         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* gawkapi.c (sym_update_real): If setting a scalar variable that exists
	already in an undefined state with type set to Node_var_new, we must
	update the type to Node_var if the new value is not undefined.

2012-12-18         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (tokentab): "extension" needs to be inside ifdef DYNAMIC.
	Thanks to Anders Wallin for finding this.

2012-12-16         Arnold D. Robbins     <arnold@skeeve.com>

	* debug.c (do_set_var): Fix last remaining `*assoc_lookup() = x'.

2012-12-15         Arnold D. Robbins     <arnold@skeeve.com>

	Infrastructure Updates:

	* awkgram.c, command.c: Regenerated with bison 2.7.
	* config.guess, config.sub, depcomp: Updated from automake 1.12.6.

2012-12-09         Arnold D. Robbins     <arnold@skeeve.com>

	Clean up BINMODE to use symbolic values.

	* awk.h (enum binmode_values): New enum.
	* eval.c (set_BINMODE): Use them.
	* io.c (binmode, close_rp, gawk_popen): Ditto.
	* main.c (main): Ditto.
	* builtin.c (do_system): Ditto.

	Unrelated:

	* configure.ac: Look for posix_openpt
	* io.c (two_way_open): Use posix_openpt if it's available.
	Thanks to Christian Weisgerber <naddy@mips.inka.de> for
	the changes.

	Also unrelated:

	* regex.c: Don't include <sys/param.h> on VMS. Thanks to
	Anders Wallin.

	Also unrelated:

	* ext.c (is_letter, is_identifier_char): New functions. Don't use
	<ctype.h> functions since those could rely on the locale.
	(make_builtin): Adjust test for valid name to call the new
	functions and return false instead of throwing a fatal error.
	(make_old_builtin): Adjust test for valid name to call the new
	function.
	* awk.h (is_identchar): Move from here, ...
	* awkgram.y (is_identchar): ... to here. This is safe, since
	the locale is C during parsing the program.

	Also unrelated: Make all checks for bitflags being set consistent
	in case we should wish to switch them to macro calls:

	* awkgram.y, builtin.c, cint_array.c, debug.c, eval.c, gawkapi.c,
	int_array.c, io.c, mpfr.c, node.c, profile.c, str_array.c: Fix
	as needed.

2012-12-07         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (tokentab): `fflush()' is now in POSIX, remove the
	RESX flag. This was the last use, so delete the flag.
	(yylex): Don't check RESX.

	Thanks to Nathan Weeks <weeks@iastate.edu> for helping make this
	happen.

2012-12-01         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h: For op_assign_concat, if both strings
	have WSTRCUR, then do the realloc() and append for the
	wide string too.  Thanks to Janis Papanagnou
	<janis_papanagnou@hotmail.com> for the discussion in
	comp.lang.awk.

2012-11-30         Arnold D. Robbins     <arnold@skeeve.com>

	* regcomp.c, regex.c, regex_internal.h, regexec.c: Sync
	with GLIBC.  Why not.

	* gawkapi.c (awk_bool_t): Change into an enum with awk_false and
	awk_true values.

2012-01-30         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	Further cleanups of macros in awk.h

	* awk.h (_r, _t): Remove declarations.
	(unref, m_force_string): Remove macros.
	(r_unref): Move declaration.
	(r_force_string): Remove declaration.
	(DEREF, force_string, force_number, unref): Now inline functions.
	(POP_STRING, TOP_STRING): Back to macros.
	* eval.c (_t): Remove definition.
	* main.c (_r): Remove definition.
	* node.c (r_force_string): Remove.

2012-11-27         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (do_fflush): Make fflush() and fflush("") both
	flush everything. See the comment in the code.

2012-11-26         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (Node_old_ext_func, Op_old_ext_func): New enum values.
	* configure.ac: Use -export-dynamic if supported for old extension
	mechanism.
	* eval.c (nodeytpes): Add Node_old_ext_func.
	(optypetab): Add Op_old_ext_func.
	* ext.c (make_old_ext_builtin): "New" function.
	* interpret.h: Special case Op_old_ext_builtin. Add checks for
	Node_old_ext_func.
	* msg.c: Adjust placement of a comment.

2012-05-02         John Haque      <j.eh@mchsi.com>

	* str_array.c (str_copy): Initialize next pointer in the linked list
	to avoid memory corruption.
	* int_array.c (int_copy): Ditto.

2012-04-21         John Haque      <j.eh@mchsi.com>

	Shutdown routine for a dynamic extension.

	* awk.h (SRCFILE): New field fini_func.
	* ext.c (load_ext): Takes an additional argument to look up and
	save the clean up routine in SRCFILE struct. 
	(INIT_FUNC, FINI_FUNC): Defines for default init and fini routine
	names.
	(do_ext): Use default for the name of the init or fini routine if
	one is not supplied. Adjust call to load_ext().
	(close_extensions): Execute fini routines.
	* interpret.h (Op_at_exit): Call close_extensions().
	* msg.c (gawk_exit): Ditto.
	* debug.c (close_all): Ditto.
	* main.c (main): Adjust call to load_ext().
	* awkgram.y (tokentab): Specify 2nd and 3rd optional arguments
	for the extension() built-in.

	Unrelated:

	* interpret.h (Op_arrayfor_init): Use assoc_length for array size. 
	
2012-04-19         John Haque      <j.eh@mchsi.com>

	Enhanced array interface to support transparent implementation
	using external storage and ...

	* awk.h (astore): Optional post-assignment store routine for
	array subscripts.
	(Op_subscript_assign): New opcode to support the store routine.
	(alength): New array interface routine for array length.
	(assoc_length): New macro.
	(assoc_empty): Renamed from array_empty.
	* awkgram.y (snode): Append Op_subscript_assign opcode if
	(g)sub variable is an array element.
	(mk_getline): Same for getline variable.
	(mk_assignment): Same if assigning to an array element.
	* field.c (set_element): Call store routine if needed.
	* builtin.c (do_match): Ditto.
	(do_length): Use length routine for array size.
	* symbol.c (print_vars): Ditto.
	* array.c (null_length): Default function for array length interface.
	(asort_actual):	Call store routine if defined.
	(asort_actual, assoc_list): Use length routine for array size.
	(null_array_func): Add length and store routine entries.
	* str_array.c (str_array_func): Same.
	* cint_array.c (cint_array_func): Same.
	* int_array.c (int_array_func): Same. 
	* eval.c (optypetab): Add Op_subscript_assign.
	* profile.c (pprint): Add case Op_subscript_assign.
	* interpret.h (set_array, set_idx): New variables to keep track
	of an array element with store routine.
	(Op_sub_array, Op_subscript_lhs, Op_store_sub, Op_subscript_assign):
	Add code to handle array store routine.
	* debug.c (print_symbol, print_array, cmp_val, watchpoint_triggered,
	initialize_watch_item): Use length routine for array size.

	* awk.h (assoc_kind_t): New typedef for enum assoc_list_flags.
	(sort_context_t): Renamed from SORT_CONTEXT.
	* array.c (asort_actual, assoc_sort): Adjust.
	* cint_array.c (cint_list, tree_list, leaf_list): Adjust.
	* int_array.c (int_list): Adjust.
	* str_array.c (str_list): Adjust.

2012-04-18         John Haque      <j.eh@mchsi.com>

	* awk.h (atypeof, AFUNC): New macros.
	(afunc_t): Renamed typedef from array_ptr.
	* array.c (register_array_func, null_lookup): Use AFUNC macro
	instead of hard-coded index for array functions.
	(asort_actual): Unref null array elements before overwriting.
	(force_array): Renamed from get_array.
	(null_array): Renamed from init_array. Also initialize flags to 0.
	(array_types): Renamed from atypes.
	(num_array_types): Renamed from num_atypes.
	* interpret.h (r_interpret): In case Op_sub_array, unref null array element.
	* str_array.c (str_array_init): Reworked for (re)initialization of array.
	* int_array.c (int_array_init): Ditto.
	* cint_array.c (cint_array_init): Ditto.

2012-11-24         Arnold D. Robbins     <arnold@skeeve.com>

	Directory cleanup.

	* TODO.xgawk, FUTURES: Merged into TODO.
	* TODO: More stuff added.
	* Makefile.am (EXTRA_DIST): Updated.

2012-11-22         Arnold D. Robbins     <arnold@skeeve.com>

	Cleanup of awk.h.

	* array.c (r_in_array): Removed.
	* awk.h (MALLOC_ARG_T): Replaced with size_t everywhere.
	(S_ISREG, setsid): Moved to io.c.
	(__extension__): Removed.
	(INT32_BIT): Moved to cint_array.c.
	(_t): Always declare.
	(DO_LINT_INVALID, et al): Moved into an enum.
	(POP_ARRAY, POP_PARAM, POP_SCALAR, TOP_SCALAR, dupnode, in_array):
	Moved into inline functions.
	(force_number, force_string): Simplified.
	(ZOS_USS): Remove undef of DYNAMIC, it's handled in configure.ac.
	* io.c (S_ISREG, setsid): Moved to here.
	* cint_array.c (INT32_BIT): Moved to here.
	* eval.c (_t): Always define.
	* protos.h: Use size_t directly instead of MALLOC_ARG_T.

	Unrelated:

	* gawkapi.h: Add `awk_' prefix to structure tags where they
	were missing.  Document the full list of include files needed.

2012-11-14         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (do_find_source): On VMS, don't add the `/' separater.
	Thanks to Anders Wallin.

	MPFR minor cleanup:

	* awk.h (mpfr_unset): Declare new function.
	* mpfr.c (mpfr_unset): New function.
	* node.c (r_unref): Call it instead of inline code.
	* gawk_api.c (api_sym_update_scalar): Call it instead of inline code.

2012-11-13         Arnold D. Robbins     <arnold@skeeve.com>

	* symbol.c (get_symbols): Check type, not vname. Keeps
	valgrind happy. Thanks to Andrew Schorr for noticing the problem.

2012-11-10         Arnold D. Robbins     <arnold@skeeve.com>

	* Update to bison 2.6.5. Various files regenerated.
	* io.c (find_source): Add a default value for SHLIBEXT.
	(read_with_timeout): For VMS also, just use read().

2012-11-10         John Haque      <j.eh@mchsi.com>

	* int_array.c (int_copy): Initialize next pointer of newchain to null.
	* eval.c (eval_condition): Force string context for an integer used
	as array index.

2012-11-10         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.c (api_add_ext_func, api_awk_atexit, api_clear_array,
	api_create_array, api_create_value, api_register_ext_version,
	api_release_value, api_update_ERRNO_string, node_to_awk_value,
	remove_element, run_ext_exit_handlers): Add null pointer checks.
	Everywhere: Add / fixup leading comments.

	* interpret.h (Op_store_sub): If assigning to an unitialized variable
	through SYMTAB, change it to Node_var. Add explanatory comments.
	* symbol.c (get_symbol): Rationalized. Skip non-variables in SYMTAB.

2012-11-04         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Minor documentation edit.

2012-10-31         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (want_regexp): Use as a bool, not as an int.
	* field.c: Fix a comment.
	* gawkapi.h: Add comment to include <errno.h>.
	* symbol.c (load_symbols): ``No automatic aggregate initialization.''
	Here too. Sigh again.

	* gawkapi.h: Minor documentation edits.

2012-11-27         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (do_fflush): Make fflush() and fflush("") both
	flush everything. See the comment in the code.

2012-10-28         Arnold D. Robbins     <arnold@skeeve.com>

	* Update to bison 2.6.4. Various files regenerated.

2012-10-27         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Continuing the minor formatting / doc cleanups.

2012-10-26         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Continuing the minor formatting / doc cleanups.

2012-10-24         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Still more minor formatting / doc cleanups.

2012-10-23         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: More minor formatting / doc cleanups.

2012-10-21         Arnold D. Robbins     <arnold@skeeve.com>

	Fixes for z/OS from Dave Pitts.

	* awk.h (assoc_list_flags): No trailing comma on last enum value.
	* gawkapi.h (awk_valtype_t): Ditto.
	* symbol.c (lookup): ``No automatic aggregate initialization.'' Sigh.

	Unrelated:

	* gawkapi.h: Minor formatting / doc cleanups.

2012-10-19         Arnold D. Robbins     <arnold@skeeve.com>

	If SYMTAB is used, make sure ENVIRON and PROCINFO get loaded too.

	* awkgram.y (process_deferred): New function. Call it when program
	is completely parsed.
	(symtab_used): New variable.
	(variable): Set it to true if SYMTAB is looked up.
	* main.c (load_environ, load_procinfo): Make sure the routines are
	only called once.

	Unrelated fixes:

	* awkgram.y (yylex): Check continue_allowed and break_allowed as
	soon as they are seen in the scanner; the rules that check them
	can not be reduced until after a token that allows them is seen,
	leading to errors at execution time.
	* interpret.h (Op_K_break, Op_K_continue, Op_jmp): Add asssertion
	that pc->target_jmp is not NULL.

	* symbol.c (lookup): Correct a comment.

2012-10-14         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h (IOBUF_PUBLIC): Renamed awk_input_buf_t.
	(struct iobuf_public): Renamed struct awk_input.
	* awk.h: Adjust.

2012-10-13         Arnold D. Robbins     <arnold@skeeve.com>

	* Update to Automake 1.12.4. Various files regenerated.

2012-10-11         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (dup_ent): New member for Node_param_list.
	* symbol.c (install): For parameters, if this is a duplicate, chain
	it off the original using the dup_ent pointer.
	(remove_params): If there's a duplicate, remove it from the list.

	* awk.h: Fix flags to have unique numeric values. Oops.

2012-10-10         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Add considerably more documentation. Rearrange order
	of functions in the struct to make more sense, grouping related
	functions together in a more logical order.
	* gawkapi.c: Adjust as needed.
	* ext.c (make_builtin): Adjust for name change in struct member.

2012-10-05         Arnold D. Robbins     <arnold@skeeve.com>

	* mbsupport.h: Add a bunch of undefs for z/OS.

2012-10-04         Arnold D. Robbins     <arnold@skeeve.com>

	* TODO.xgawk: Update.
	* awk.h (make_str_node): Removed macro.
	(make_string): Modified to call make_str_node.
	(r_make_str_node): Renamed to make_str_node.
	* gawkapi.c: Changed r_make_str_node to make_str_node everywhere.
	* node.c (make_str_node): Renamed from make_str_node.

	Update to automake 1.12.4.

	* Makefile.in, aclocal.m4, awklib/Makefile.in, doc/Makefile.in,
	extension/Makefile.in, extension/aclocal.m4, test/Makefile.in:
	Regenerated.

	* interpret.h (Op_Subscript): Added lint warnings for FUNCTAB
	and SYMTAB.

2012-10-02         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (func_table): Declare.
	* awkgram.y: If do_posix or do_traditional, then check for
	delete on SYMTAB. Add check for delete on FUNCTAB, also.
	* interpret.h (Op_Subscript): For FUNCTAB, return the element name
	as its value too.  Avoids lots of weirdness and allows indirect calls
	after assignment from FUNCTAB["foo"] to work.
	(Op_store_sub): Disallow assignment to elements of FUNCTAB.
	(Op_indirect_func_all): Turn assert into check and fatal error.
	* symbol.c (func_table): No longer static.
	(lookup): If do_posix or do_traditional, skip the global table.
	(release_all_vars): Clear func_table too.

2012-09-25         Arnold D. Robbins     <arnold@skeeve.com>

	First cut at SYMTAB and FUNCTAB. This does the following:
	- Change symbol table handling to use gawk arrays.
	- Store symbols in SYMTAB array and allow indirect access
	  through SYMTAB to variables, both getting and setting.
	- List function names in FUNCTAB indexes; Values cannot be
	  used at the moment.
	- No documentation yet.

	* awk.h (Node_hashnode, hnext, hname, hlength, hcode, hvalue):
	Removed, not needed any more.
	(init_symbol_table, symbol_table): Add declarations.
	* awkgram.y: Disallow delete on SYMTAB, fix warning for tawk
	extension if traditional.
	* eval.c (nodetypes): Remove Node_hashnode element.
	* interpret.h (Op_subscript, Op_store_sub): Handle SYMTAB and go
	through to the actual value.
	* main.c (main): Init Nnull_string earlier. Add call to
	init_symbol_table().
	* profile.c (pp_str, pp_len): Change definitions.
	(pp_next): New macro.
	(pp_push, pp_pop): Adjust uses.
	* symbol.c (variables): Removed.
	(global_table, param_table, func_table, symbol_table,
	installing_specials): New variables.
	(lookup, make_params, install_params, remove_params, remove_symbol,
	make_symbol, install, get_symbols, release_all_vars, append_symbol,
	release_symbols, load_symbols): Rework logic considerably.
	(init_symbol_table): New function.

2012-09-23         Arnold D. Robbins     <arnold@skeeve.com>

	`delete array' and `nextfile' are now in POSIX.
	Thanks to Nathan Weeks <weeks@iastate.edu> for the
	initiative and letting us know about it.

	* awkgram.y: Make the right code changes for `delete array'
	and `nextfile'.
	(tokentab): Set flags to zero for nextfile.

2012-09-19         Arnold D. Robbins     <arnold@skeeve.com>

	* symbol.c (load_symbols): Zero out the new node. Prevents assertion
	failure on PPC Mac OS X.

2012-09-14         Arnold D. Robbins     <arnold@skeeve.com>

	Allow read-only access to built-in variables from extensions.

	* awk.h (NO_EXT_SET): New flag.
	* gawkapi.c (api_sym_lookup, api_sym_update_real): Set flag if off
	limits variable instead of failing. Adjust logic.
	(api_sym_update_scalar, api_set_array_element, api_del_array_element,
	api_release_flattened_array): Adjust logic.
	* gawkapi.h: Adjust documentation.

	Provide PROCINFO["identifiers"]. Undocumented for now.

	* awk.h (load_symbols): Add declaration.
	* awkgram.y (variable): Adjust comment formatting.
	* main.c (main): Call load_symbols().
	* symbol.c (load_symbols): New function.

2012-09-13         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Determination of DYNAMIC adjusted. Hopefully is
	smarter for z/OS.

2012-09-13         Dave Pitts            <dpitts@cozx.com>

	* awk.h: Add defines for z/OS for newer types.

2012-08-31         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.c: Wrap various bits in #ifdef DYNAMIC so that
	gawk will compile on systems without dynamic loading.

2012-08-24         Arnold D. Robbins     <arnold@skeeve.com>

	Add version facility to API. Thanks to Manuel Collado
	for the idea.

	* awk.h (print_ext_versions): Declare.
	Rearrange includes and decls to make more sense.
	* gawkapi.h (register_ext_version): New API.
	(dl_load_func): Add code for ext_version.
	* gawkapi.c (api_register_ext_version, print_ext_versions):
	New functions.
	* main.c (do_version): New variable.
	(optab): Set it for -v / --version.
	(main): Set it in arg parsing switch. Call version() after the
	extensions have been loaded.

2012-08-22         Arnold D. Robbins     <arnold@skeeve.com>

	Add output wrapper and two-way processor to extension API.

	* awk.h (struct redirect): Replace output FILE * with awk_output_buf_t.
	(register_output_wrapper, register_two_way_processor): Declare.
	* builtin.c (efwrite): Adjust logic to use rp->output data and
	functions if rp is not NULL. Remove redundant declaration of function.
	(do_fflush, do_printf, do_print, do_print_rec): Same adjustment.
	* ext.c (make_builtin): Adjust error messages.
	* gawkapi.c (api_register_output_wrapper,
	api_register_two_way_processor): New functions.
	(sym_update_real): Adjust code formatting.
	* gawkapi.h (awk_input_parser_t): Make next pointer awk_const.
	(awk_output_buf_t, awk_two_way_processor_t): New structs.
	(api_register_output_wrapper, api_register_two_way_processor): New APIs.
	(dl_load_func): Allow for empty function table (NULL elements).
	* io.c (find_output_wrapper, init_output_wrapper, find_two_processor,
	gawk_fwrite, gawk_ferror, gawk_fflush, gawk_fclose): New functions.
	(redirect): Call init_output_wrapper, find_output_wrapper as needed.
	Adjust use of rp->fp to rp->output.fp and also function calls.
	(close_rp, close_redir, flush_io): Same adjustment.
	(two_way_open): Same adjustment. Call find_two_way_processor, and
	find_output_wrapper, as needed.

2012-08-17         Arnold D. Robbins     <arnold@skeeve.com>

	* Update infrastructure: Automake 1.12.3 and bison 2.6.2.

2012-08-15         Arnold D. Robbins     <arnold@skeeve.com>

	* dfa.c: Sync w/GNU grep.

2012-08-12         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Make the versions enum constants instead of defines.

2012-08-11         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* awkgram.y (add_srcfile): It is now a fatal error to load the
	same file with -f and -i (or @include).
	* TODO.xgawk: Update to reflect this change.

2012-08-10         Arnold D. Robbins     <arnold@skeeve.com>

	* FUTURES, TODO.xgawk: Updates.

2012-08-08         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Add -DNDEBUG to remove asserts if not developing.

	* gawkapi.h: Document how to build up arrays.
	* gawkapi.c (api_sym_update): For an array, pass the new cookie
	back out to the extension.

	* awk.h (IOBUF): Move struct stat into IOBUF_PUBLIC.
	(os_isreadable): Change to take an IOBUF_PUBLIC.
	* gawkapi.h (IOBUF_PUBLIC): Received struct stat.
	(INVALID_HANDLE): Moves to here.
	* io.c (iop_alloc): Stat the fd and fill in stat buf.
	(iop_finish): Use passed in stat info.

2012-08-05         Arnold D. Robbins     <arnold@skeeve.com>

	* README.git: More stuff added.

2012-08-01         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (iop_finish): New function.
	(iop_alloc): Add errno_val parameter. Move code into iop_finish.
	Add large explanatory leading comment.
	(after_beginfile): Rework logic. Check for input parser first, then
	check for invalid iop.
	(nextfile): Organize code better. Call iop_alloc then iop_finish.
	(redirect): Call iop_alloc, find_input_parser, iop_finish.
	(two_way_open): Call iop_alloc, find_input_parser, iop_finish.
	(gawk_popen): Call iop_alloc, find_input_parser, iop_finish.
	(find_input_parser): Set iop->valid if input parser takes control.
	(get_a_record): Rework setting RT to use macros.

2012-07-29         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* awk.h (set_RT_to_null, set_RT): Removed.
	* gawkapi.h (api_set_RT): Removed.
	(get_record): Signature changed in input parser struct.
	* gawkapi.c (api_set_RT): Removed.
	* io.c (set_RT_to_null, set_RT): Removed.
	(get_a_record): Adjustments for new API for input parser.

2012-07-29         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (os_isreadable): Adjust declaration.
	(struct iobuf): Add new member `valid'.
	* io.c (iop_alloc): Remove do_input_parsers parameter, it's
	always true. Adjust logic to set things to invalid if could not
	find an input parser.
	(after_beginfile): Use valid member to check if iobuf is valid.
	Don't clear iop->errcode.
	(nextfile): Adjust logic to clear errcode if valid is true and
	also to update ERRNO.
	(redirect): Check iop->valid and cleanup as necessary, including
	setting ERRNO.
	(two_way_open): Ditto.
	(gawk_popen): Ditto.
	(devopen): Remove check for directory.

2012-07-27         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* io.c (find_input_parser): Issue a warning if take_control_of fails.

2012-07-27         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (set_RT): Change to take a NODE * parameter.
	* io.c (set_RT): Change to take a NODE * parameter.
	* gawkapi.h: Change open hook to input parser in comment.
	* gawkapi.c (api_set_RT): Adjust call to set_RT.

2012-07-26         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (set_RT_to_null, set_RT): Declare functions.
	(os_isreadable): Declare function.
	* io.c (set_RT_to_null, set_RT): New functions.
	(iop_close): Init ret to zero.
	* gawkapi.c (api_register_input_parser): Check for null pointer.
	(api_set_RT): New function.
	* gawkapi.h (api_set_RT): New function.

2012-07-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* gawkapi.h (IOBUF_PUBLIC): Document the get_record and close_func
	API.
	(awk_input_parser_t) Change can_take_file argument to const, and
	document the API.
	* io.c (get_a_record): Document that the caller initializes *errcode
	to 0, and remote the test for non-NULL errcode.

2012-07-26         Andrew J. Schorr     <aschorr@telemetry-investments.com>

	* gawkapi.c (api_sym_update_scalar): Fix some minor bugs.  Was
	not updating AWK_NUMBER when valref != 1.  And strings were not
	freeing MPFR values.

2012-07-25         Arnold D. Robbins     <arnold@skeeve.com>

	Start refactoring of IOBUF handling and turn "open hooks"
	into "input parsers".

	* awk.h (IOP_NOFREE_OBJ): Flag removed.
	(register_input_parser): Renamed from register_open_hook.
