-- $MawkId: CHANGES,v 1.441 2026/03/03 01:19:00 tom Exp $

20260302
	+ amend behavior if stdout is a terminal/tty: do not make -W
	  interactive "the default" because that interferes with setting RS and
	  FS.  Instead, simply use setbuf (report by Joerg van den Hoff).

20260129
	+ make -W interactive the default if stdout is a terminal/tty
	  (Original-Mawk #41).
	+ fix a regression in test case (Original-Mawk #78).
	+ modify relational operators to check for inf/nan (NetBSD #59332).
	+ improve loop unrolling in regex, needed for lower-limit check with
	  brace expressions (Original-Mawk #93).
	+ improve checks for size parameters of zmalloc and zrealloc
	  (Original-Mawk #91).
	+ improve precedence of operators (Original-Mawk #63, patch by jlp765).
	+ fix a for-in loop comparison (Original-Mawk #86, patch by jlp765).
	+ improve limit-checks for $n expressions, in case of sign extension
	  (report by Dima Kogan).
	+ improve portability of initialization of srand (Debian #1124627,
	  Original-Mawk #85).
	+ updated configure macros
	+ update install-sh,l config.guess, and config.sub

20250514
	+ improve makefile rule producing parse.c and parse.h from parse.y
	  (Debian #1105498).

20250131
	+ transform nested "+" repetitions to "{1,}" form, to work with the
	  runtime stack.
	+ modify M_ENTER to record its loop-level into a runtime stack, which
	  can be checked by failing operations to provide quick recovery.

20241231
	+ in-progress changes to improve regex brace expressions, using new
	  machine codes M_ENTER and M_LOOP.
	+ add a T_CAT in compiled regex to fix a panic (report by Dimitar
	  Dimitrov).

20241214
	+ fix stricter gcc15 warnings.

20241213
	+ disallow reading from a directory like a file (Original-Mawk #83).

20241212
	+ modify calls on stdtod() to disallow hexadecimal, infinite and
	  not-a-number values unless the "--posix" option is given (report by
	  Xose Vazquez Perez).
	+ fix a regression in rexp3.c for pattern /^.$/ (cf: 20240819)

20241209
	+ modify use of OFMT when given a format such as %c which cannot fully
	  represent a floating point value, like gawk/bwk.
	+ modify format for infinite values, showing plus/minus signs.
	+ allow format to contain an escaped '%'
	+ further printf/sprintf fixes, using line-coverage to guide testing

20241117
	+ improve printf/sprintf by handling special case of 2^64 which can be
	  represented as an exact value (Original-Mawk #78).
	+ modify use of mktemp in test-scripts to work with HPUX, which uses
	  a different interpretation of the "-d" option.
	+ update configure script

20240905
	+ update manual page discussing approved extensions.
	+ mask nonprintable characters when reporting errors in scripts
	+ fix for unmatchable pattern workaround in 20240819, in case the regex
	  also has a syntax error immediately after (report/testcase by Tyler
	  Hawkins).
	+ fix sign-extension in scan.c (report/testcase by Tyler Hawkins).

20240827
	+ amend fix for Original-Mawk #48, providing for deep function
	  recursion, but disallowing more than 255 parameters for printf, etc.
	+ add test-cases to test/mawkerrs
	+ update config.guess and config.sub

20240825
	+ modify struct declarations to simplify further changes to reduce use
	  of typeless pointers.
	+ reduce memory requirements for test/longlines.sh (discussion with
	  Boyuan Yang).
	+ fix compiler warning about out-of-bounds reference to eval_stack[]
	+ fix regression in ".*$" regex (Debian #1079389).

20240819
	+ several changes to improve results with lcov, increasing coverage
	  measured by line/function percentages from 82.3/89.2 to 90.5/96.0;
	  using new bundled and separate test-cases as well as some code fixes.
	  + some code-changes provide for overriding compiled-in limits to make
	    testing simpler, e.g., SP_SIZE, FB_SHIFT, SPRINTF_LIMIT.
	  + adjusted ifdef's based on coverage analysis which showed used code
	  + test package builds with "unused" cases in rexp*.c disabled
	  + new bundled test cases include cclass.awk and mawkerrs script.
	    The latter is invoked via the "mawk_errs" target in the makefile.
	  + correct a case in rexp3.c which addressed past end of string.
	  + improve regex handling of nul character.
	  + add a null pointer check to cell_destroy()
	  + show state value in the panic exit in rexp0.c
	  + add RE_bad_state, for panics in rexp2.c and rexp3.c
	  + add workaround in rexp.c for patterns like /{0}/ and /^{0]/ where
	    nothing could match, for now with a comment indicating that a
	    RE_none() along with a M_REJECT state seems the way to completely
	    resolve this.  The workaround was needed because trimming the {0}
	    caused out-of-bounds access.
	  + use C_NOINIT in bi_funct.c for readability
	  + address special-case in the trace call in execute.c, to avoid
	    calling da_type_name() when sp happens to be just before
	    eval_stack[] -- which happens in the first call from the main
	    program.
	  + add/use TRACE_FUNC2 for cases where we know the number of arguments
	    is not sp->type
	  + fix a regression in fin.c introduced by buffer-changes in 20230808
	  + fixes for is_string_split() function, making it work for both
	    internal and external regex.
	+ change ifdef in version.c to provide for test-package showing the
	  effective limit of sprintf buffer.
	+ correction to usage message: -W traditional rather than -W compat
	+ test/mawktest uses mktemp for the working files
	+ add test/longline.sh
	+ add test/hashbang-S.sh for later use in testing.
	+ add test/cclass.awk script for character-classes
	+ improve regular expression matching (Original-Mawk #76).

20240716
	+ add --enable-arc4random option to configure script; this is normally
	  disabled for mawk because the developer of arc4random did not provide
	  a useful method for initialization (Debian #1075717).
	+ improve configure-check for clock_gettime, checking for both
	  monotonic and realtime clocks, as well as adding a check for
	  clock_gettime in the "rt" library for Solaris

20240622
	+ ensure input buffer is null-terminated (patch by James Cowgill,
	  Original-Mawk #77).

20240123
	+ improve manpage style/formatting.
	+ improve conversion of parameter of srand() when using srandom()
	  (Original-Mawk #66).
	+ minor improvement for configure script

20231210
	+ correct interator type in REcompile (Original-Mawk #73)
	+ improve configure script check for arc4random
	+ reduce compiler warnings in configure script checks

20231126
	+ fix a couple of problems reported by Coverity:
	  + modify cell_destroy() to set the string pointer to NULL if zfree()
	    might have freed it.
	  + replace a couple of strcpy's with loop.
	  + eliminate a fixed-size array in re_cmpl.c
	+ change casts in strftime() and srand() to avoid truncation on 64-bit
	  machines (report by John Naman).

20231102
	+ environment-fixes for building with Solaris 10.

20231101
	+ repair parsing for comma-separated -W options used in "#" lines
	  (report by Leif Baron).
	+ updated makedeps.sh and examples/deps.awk, to update Makefile.in
	+ remove obsolete/incorrect zero-termination assignment from fillbuff()
	  (Original-Mawk #71).
	+ updated configure macros
	+ update config.guess and config.sub

20230816
	+ start work on _CALLX
	+ da.c:  replace most of the string-literals in fprintf's with result
	  from da_op_name()
	+ da.c, mawk.h:  simplify ifdef for da_op_name(), to reuse in
	  refactoring of _CALL
	+ da.c:  dumping the function name in front of the offset is
	  distracting, use just "@"
	+ da.c: make the trace show offsets like the -Wdump option
	+ da.c:  add traces to show which function is being dumped (and
	  possibly patched).  this improves on the fix for dump_funcs() as well,
	  freeing the linked-list
	+ code.c: fix a use-after-free when no-leaks and traces are combined.
	+ code.c: add trace to be_setup()
	+ parse.y: make trace message consistent with fcall.c
	+ execute.c: eliminate a couple of comparisons
	+ change SYMTAB_TYPES to mixed enum/masks, to reduce comparisons for
	  array types.
	+ some cleanup, using NUM_ARGS and SYM_TYPE typedefs.

20230808
	+ modify input buffer-resizing to improve performance with very long
	  lines (report/testcase by Leif LeBaron).

20230804
	> fixes for nulls (patches by Miguel Pineiro Jr).
	  + support nulls in toupper() and tolower().
	  + modify str_str() to ensure lengths for key/target are large enough
	    for the memcmp() call.
	+ treat special case of failure to open input file due to too many open
	  files as a fatal error (report/testcase by Christoph Brunhuber).
	+ fix a shift/reduce conflict for length vs length()
	+ quote string-parameter in a few error-messages
	+ add MinGW-code for system() calls (Original-Mawk #51).

20230730
	+ rexp.c: do not unroll repetition into loops if the repetition applies
	  to more than one character.
	+ rexp3.c: increment machine on completing M_2JC step to fix a case
	  with infinite loop.
	+ print.c: improve parameter-passing, eliminating a duplicate check.

20230726
	+ modify makefile to install mawk-array and mawk-code manpages.

20230725
	+ use da_string more consistently in dumps.
	+ improve scanner to some type-checks of arrays versus scalars by
	  deferring this into the runtime execution (report by Rajeev V Pillai).

20230716
	+ modify scanner to accommodate scripts which use the same name for
	  some function-parameters as for a function (report by Kaz Kylheku).
	+ amend/limit special case optimization for redundant wildwards
	  (Original-Mawk #36).
	+ regenerate parse.c using byacc 20230521

20230525
	+ fix a regression for big-endian machines caused by mismatch between
	  printf/sprintf format and long integer types (Original-Mawk #69, cf:
	  20200731).

20230404
	+ add a null-pointer check in bi_mktime() (Original-Mawk #57).
	+ cast parameter of srand() to double if it is not already (patch by
	  "q3cpma", Original-Mawk #66).   
	+ manpage fixes (report/suggested by David Apps).
	+ fix parsing of "--" token on command-line, from 20200828 changes
	  (report by Pavel Vinogradov).
	+ add a null-pointer check in the case for "-W" when parsing command
	  options (Original-Mawk #68).
	+ improve CF_XOPEN_SOURCE configure macro to avoid clearing the host's
	  definition for _XOPEN_SOURCE if _POSIX_C_SOURCE is defined (report
	  by A. Wilcox).
	+ modify makefile "clean" rule to remove ".i" files.
	+ modify configure script to allow for using clock_gettime vs
	  gettimeofday.

20230322
	+ remove an unwanted string/number conversion in print.c, from changes
	  in 20200717 (report by Jan Psota).
	+ reduce compiler-warnings in configure script checks.

20230215
	+ update URLs, changing ftp to https
	+ modify configure.in, moving checks for standard headers before the
	  options, to improve check for arc4random (Redhat #2167291).

20230203
	+ split up do_printf to fix build with fortified mingw stdio.h
	+ reduce compiler-warnings in configure script checks.

20221229
	+ fix shellcheck warnings in test-scripts.
	+ updated configure macros
	+ update config.guess, config.sub, and install-sh

20210824
	+ updated configure macros
	+ update config.guess and config.sub

20210528
	+ add FreeBSD build-scripts, for test-builds
	+ updated configure macros
	+ update config.guess and config.sub

20201023
	+ start work on experimental approach to interval-expressions which
	  does not involve loop-unrolling.
	+ improve type-checking for builtin-regex's by using PTR only for the
	  external-regex's.
	+ improve dump format, showing intervals in curly-brace format.

20201016
	+ improve dump format, showing the jump-targets rather than offsets.

20201009
	+ show limits for brace-expressions in dump.
	+ change RE_panic to stdarg, and log its message in trace file

20200925
	+ improve compatibility vs gawk/bwk in gsub handling of backslash by
	  only escaping backslash with itself if those backslashes happen to
	  precede a "&", e.g., "\\&" vs "\\" (Original-Mawk #14).
	+ fix a regression in recent command-line option parsing.
	+ modify configure/makefile to use .PHONY if available.
	+ review/improve example-scripts

20200918
	+ build-fix for HP-UX 11.23, which lacks #define's for maximum of
	  int64_t and uint64_t
	+ build-fix for OpenBSD, which mis-types int64_t, just like macOS.
	+ build-fix for macOS, which mis-types int64_t

20200911
	+ improve range of printf/sprintf for decimal formats by using the
	  unsigned limit if the value is positive.
	+ improve checks for command-line numeric options.
	+ allow long-options to be abbreviated.

20200828
	+ modify configure script to move gcc -Werror flags to EXTRA_CFLAGS
	  to avoid breaking configure-checks.
	+ use sprintf-buffer for intermediate output of strftime, to handle
	  extra-long format strings.
	+ modify MAWK_LONG_OPTIONS "ignore" to limit that to the "-xxx" options
	  in this set of changes, plus the existing --lint/--lint-old options.
	+ allow -Wxxx options to use long-option format as -xxx, for better
	  script-compatibility with gawk.
	+ use standard output for -Whelp, but show usage message in standard
	  error when no command arguments are given.
	+ print version for -Wversion consistently in standard output.
	+ improve use of const for making tables readonly.
	+ change -W compat to -W traditional for better script-compatibility
	  with gawk.

20200821
	+ completed first draft of mawk-code.7

20200807
	+ begin man/mawk-code.7
	+ drop noweb dependency, move docs to man/mawk-arrays.7

20200731
	+ amend fix for Debian #303825 to more closely match gawk and BWK.
	  Those use larger data types, e.g., long vs int, for limits, and also
	  provide for using int64_t and uint64_t.  Internally, mawk now uses
	  long long's where those are supported.
	+ add --help and --version options

20200724
	+ modify logic for "{0}" in rexp.c so that a left-parenthesis is not
	  trimmed when cancelling the previous token.
	+ modify RE_cat to add a dummy M_ACCEPT as a workaround for logic in
	  the new RE_init_it_cnt and RE_set_limit functions.
	+ modify regexp_system.c to work with interval-expressions.
	+ recognize gawk's --traditional and --posix as aliases for mawk's
	  -W options, as well as -r and --re-interval to improve scripting
	  compatibility.
	+ add -W compat and -W posix, using the former to replace
	  -W repetitions and the latter to replace -W posix_space
	+ enable interval-expressions by default.

20200717
	+ add configure option "--disable-interval-expr"
	> integrated/adapted changes by James Parkinson (jlp765):
	+ add regexp intervals, 
	+ add tests for intervals to test/mawktest and associated 
	  test/repetitions files, 
	+ add -W repetitions to enable r{m,n}
	+ add man page updates to man/mawk.1

20200708
	+ update manpage comment about "nextfile" (AustinGroup #607).
	+ amend manpage comment about "fflush" (AustinGroup #634).
	+ amend manpage comment about "delete array" (AustinGroup #544).
	+ updated configure macros
	+ update config.guess and config.sub

20200120
	+ resync with my-autoconf.
	+ fix typos found with codespell.
	+ when reading input in interactive mode, provide for extending the
	  buffer size for very long lines (Original-Mawk #59).

20200106
	+ correct line-number shown in too-many-arguments error message for
	  the case where the function is a forward reference (report by
	  "mukti").
	+ fix install for manpage when configure --srcdir option is used
	  (report by Rajeev V Pillai).
	+ use both CFLAGS/LDFLAGS when linking in makefile (report by
	  Rajeev V Pillai).
	+ fix clang-9 warning in bi_funct.c (report by Rajeev V Pillai).
	+ minor improvement to gcc warning options, from vile

20191231
	+ updated configure macros
	+ update config.guess and config.sub

20190203
	+ improve manpage formatting, e.g., for man2html
	+ improve debug-traces

20190129
	+ eliminate non-portable tdestroy() from zmalloc no-leaks code.
	+ updated configure macros
	+ update config.guess and config.sub

20181114
	+ revert a change for memory-leaks which made the forced-exit via a
	  user function inconsistent with earlier versions (report by Andre
	  Sihera).
	+ amend a change for memory-leaks to avoid a double-free (Original-Mawk
	  #56).

20171017
	+ add Debian compile/link flags to test-package.
	+ cleanup spurious warnings from latest gcc.
	+ changes for Original-Mawk #48:
	  + add checks for stack overflow and underflow
	  + increase stack limit to 1024
	+ updated configure macros
	+ update config.guess and config.sub

20161120
	+ add runtime check for assignments to OFMT and CONVFMT to ensure
	  they use a single parameter (Original-Mawk #47).
	+ repair build for --with-valgrind, broken in 20160930 const-fixes.

20161107
	+ correct sign-extension from 20160615 change to rand() (report by
	  Christian Neukirchen).

20160930
	+ optimize closes on regular expressions to filter out redundant
	  wildcards, fixing a special case leftover by changes in 20100224
	  (Original-Mawk #34).
	+ add regular-expressions to the -Wdump option when using mawk's
	  built-in regular expressions.
	+ fix a sign-extension in character-class parser (Original-Mawk #46).
	+ minor optimizations.
	+ improve use of const in tables.

20160927
	+ allow single-quote as a flag in printf, to complete the change
	  for LC_NUMERIC in 20121129 (report by Graham Monteith).  
	+ revert one of the fixes made for a Coverity warning about loss of
	  precision in 20121209, which unnecessarily exposed a different
	  problem (Original-Mawk #45).

20160918
	+ simplify "system()" function by calling C "system()" function, and
	  use POSIX macros for wait-status to provide a less-ambiguous return
	  value (suggested by Aharon Robbins).
	+ add a null-pointer check in bi_mktime (patch by Ismael Luceno).

20160905
	+ escape '/' in range for test/reg4.awk to allow test-comparison with
	  gawk and BWK.
	+ updated configure macros, e.g., for compiler warnings and static
	  analysis:
	  + CF_CC_ENV_FLAGS
	  + CF_GNU_SOURCE
	  + CF_PROG_LINT
	  + CF_RAND
	  + CF_XOPEN_SOURCE
	+ minor build-fix for HPUX 11.11 "make", which is confused by the
	  recursive use of "make" in clean/distclean rules.
	+ amend fix for Gentoo #424137 to eliminate a memory leak when opening
	  files (Original-Mawk #44).
	+ update config.guess and config.sub

20160615
	+ correct range when using system rand() function, which was 0..2
	  rather than 0..1 on BSD systems (report/patch by Masaki Waga).

20160313
	+ correct order of checks for machine state in REtest which caused an
	  out-of-bounds reference (Original-Mawk #36).

20160226
	+ update COPYING from
	  https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
	  (Original-Mawk #38).
	+ minor updates to configure script macros
	+ update config.guess and config.sub

20150503
	+ add --with-man2html configure option
	+ improve description of -W options and how they can be combined into
	  a comma-separated list (adapted from Leif LeBaron).
	+ modify parsing for -Wexec to permit its value to be separated by '='
	  in addition to a space, for consistency with the other -W options.
	+ cosmetic changes to configure script macros, from work on xterm.
	+ update config.guess and config.sub

20141206
	+ Mawk behaves incorrectly when using the nextfile statement.  It marks
	  the file as dead, but does not check such state and thus ends reading
	  from a closed fd (patch by Ismael Luceno).

20141027
	+ remove a special check for anchored regular expressions in gsub3
	  which did not handle expressions with "|" alternation (report by
	  "Ypnose").

20140914
	+ rename vs6.mak / vs6.h to vs2008 for Visual Studio 2008 compiles.
	+ remove MS-DOS support.
	+ add a check in split for empty regex, treating that the same as an
	  empty string (Original-Mawk #9).
	+ correct inconsistently-ifdef'd reset of errno in check_strnum()
	  function, which caused some values to be internally classified as
	  strings rather than strnums (Original-Mawk #26).
	+ add parameter to REmatch to control use of REG_NOTBOL and its
	  equivalent in mawk (prompted by discussion with Mike Brennan,
	  Original-Mawk #24).
	+ settle on "gsub3" implementation (suggested by Mike Brennan,
	  Original-Mawk #11).
	+ change default for configure option --enable-init-srand to enable
	  this (discussion with Mike Brennan).
	+ add -W random option to set initial srand() seed.
	+ add TraceVA, use to provide debug-traces for errmsg().
	+ add note in manpage about "nextfile", see for example:
	    http://www.opengroup.org/austin/docs/austin_578.txt
	    http://austingroupbugs.net/view.php?id=607
	+ make it possible to build with "bsd" library ported to Linux by
	  setting LIBS=-lbsd before running configure script.
	+ show random-function names in version message, as well as maximum
	  integer-value.
	+ modify initialization of srand default seed from time of day to use
	  gettimeofday, etc., so that successive runs of mawk are less likely
	  to use the same seed value (suggested by Mike Brennan).
	+ make a further refinement, "gsub3" which uses a single pass.
	+ change SType and SLen types to improve performance as well as
	  handling larger regular expressions (suggested by Mike Brennan).
	+ fix some minor issues reported by Coverity.
	+ regenerate parse.c using byacc 20140422
	+ modify makefile-rule for generating parse.c to keep the "#line"
	  preprocessor lines consistent with the actual filename.  This is
	  needed by lcov.
	+ add test/reg7.awk to help with recent testing.
	+ discard intermediate new_gsub used for regression-testing, will do
	  further improvements based on "gsub2".
	+ fix a comparison in rexp3.c to work with embedded nulls (patch by
	  Mike Brennan).
	+ in-progress changes to implement "gsub2", which will reduce copying.
	+ discard intermediate old_gsub used for regression-testing, using
	  original gsub function renamed to "gsub0" for that purpose.
	+ remove old compiler information from version message.
	+ remove NF value from version message.
	+ patches by Mike Brennan:
	  + changed the intermediate storage of STRINGS used by split.
	  + cleaned up the xxx_split() functions.
	    a) removed hand loop unrolling. What was an optimization for
            intel 8086/88 is silly today.
            b) consequence of a) some macros went away so the code is easier
            to read/understand.
            c) handles null in input string
	       Note:  re_split() does \x00 null correctly, but it calls
	       REmatch() which does not.  I have examples where REmatch works
	       with nulls and examples of not working.  That needs to be fixed.
	  + changed field allocation to support no upper limit.
	+ when comparing two strings, allow for embedded nulls.
	+ add checks in rexp3.c for infinite loop for testcase noloop.awk
	  (report by Tibor Palinkas).
	+ improve test-package for debian by adding postrm script to restore
	  "mawk-base" to its unalternatized configuration, as well as adding
	  messages to the other pre/post scripts.
	+ patches by Mike Brennan:
	  + increase some limits: NF is now 1048575, sprintf limit is 8192.
	  + updated array.w; mostly documentation improvements
	  + add array.pdf generated from array.w
	+ add -Wu / -Wusage / -Wh / -Whelp to show usage message, like gawk.
	  If long options are enabled, honor --help and --usage as well.
	+ if no command-line parameters are given, show usage message like
	  gawk and BWK (report by Michael Sanders).
	+ improve configure macros CF_ADD_CFLAGS, CF_ADD_LIBS, CF_XOPEN_SOURCE,
	  e.g., for Minix3.2 port.
	+ restore in-progress change to gsub; resolved problem handling its
	  internal use of vectors for second parameter when "&" marker is used.
	+ improve configure check for Intel compiler warnings; trim unwanted
	  -no-gcc option.
	+ for Solaris suppress the followup check for defining _XOPEN_SOURCE
	+ update config.guess and config.sub

20131226
	+ add configure check to work around recent breakage in Cygwin's math.h
	  which declares _LIB_VERSION without allowing it to be updated (report
	  by Gert Hulselmans).
	+ minor updates to configure script, for clang and mingw
	+ update config.guess and config.sub

20130803
	+ minor updates to configure script
	+ add limit-checks, improve index computation in scan.c to fix old
	  1.3.3 problems with very long string-literals in the parsed script
	  (report by Marcin Krol).
	+ update config.guess and config.sub

20130219
	+ modify missing-operand check in rexp.c to allow the case of empty
	  "()", matching behavior of gawk and BWK (report by Arkadiusz
	  Miskiewicz).
	+ revert in-progress change to gsub retain ifdef'd for additional
	  development since it did not handle array as the second parameter
	  (report by Arkadiusz Miskiewicz).

20121209
	+ build-fix for cygwin in matherr.c, which declares a different type
	  for _LIB_VERSION
	+ add missing "-f" option in examples/gdecl.awk
	+ fix a regression in fflush, ensuring that it returns an error if
	  the argument does not match any output filename (report by Nathan
	  Weeks).
	+ modify wording of configure --help message to make it clear that
	  the default for --with-builtin-regex uses the builtin regular
	  expression engine of mawk.
	+ fix issues reported by Coverity scan.  Most of these were minor,
	  and were addressed by modifying the source to allow Coverity to
	  improve its analysis of the code.
	+ amend support for LC_NUMERIC by translating period to the local
	  decimal separator as needed to work with strtod() which is used
	  to validate decimal constants when scanning source files.  This
	  fixes an infinite loop with
		mawk 'BEGIN { print 1.0 }'
	  (report by Jan Psota).
	+ regenerate man/mawk.doc, overlooked in previous updates.

20121129
	+ change behavior if internal fflush call fails: rather than exiting
	  with an error, propagate the return value to the script as -1, for
	  consistency with gawk and BWK (discussion with Aharon Robbins and
	  Nathan Weeks).
	+ add special case for forward reference to a function using an array
	  parameter, updating the function's parameter type so that the array
	  is passed properly.
	+ support length(array), as done in gawk and BWK awk (Original-Mawk #1).
	+ support LC_NUMERIC, which will modify the displayed decimal point in
	  some locales.  It does not modify the decimal point used for input,
	  matching the behavior of nawk and BWK awk (prompted by request from
	  Yechiel Bardov for thousands-separator).
	+ add configure option --enable-init-srand to allow choice whether to
	  initialize random numbers automatically at startup or not.  Not doing
	  this makes programs more predictable (Debian #63843, Original-Mawk
	  #3).
	+ add configure option --enable-builtin-srand, use that to deprecate
	  mawk's builtin srand/rand functions which generally are not as good
	  as the system-provided functions.
	+ extend --enable-trace configure option to show builtin functions.
	+ add systime and mktime functions
	+ when warning about unrecognized options, do not exit with error
	  on these gawk options:
		  --lint
		  --lint-old
		  --posix
		  --re-interval
		  --traditional
	+ integrate strftime function (patch by Dominic Letz, Original-Mawk #2).
	+ correct logic for "/dev/stdin" special device (GenToo #424137,
	  Original-Mawk #17).
	+ updates for configure script macros:
	  + modify configure script and makefile to support cross-compiles.
	  + remove Turbo C++ and Zortech C++ makefiles.
	  + remove obsolete function-checks: fmod, memcpy, strchr, strerror,
	    strtod, vfprintf.
	  + remove obsolete checks for some headers:  math.h, stdarg.h,
	    stdlib.h, string.h time.h
	  + support --datarootdir option.
	  + add 3rd parameter to AC_DEFINE's to allow autoheader to run.
	  + remove unused macros.
	+ update config.guess and config.sub
	+ add icons for webpage artwork

20120627
	+ add "/dev/stdin" name for stdin for consistency with other
	  implementations of awk (suggested by Aharon Robbins).
	+ improve overflow check in check_strnum() (Ubuntu #485574).
	+ implement gawk extension "nextfile" (suggested by Aharon Robbins).
	+ updates for configure macros CF_ANSI_CC_CHECK, CF_ENABLE_TRACE,
	  CF_GCC_ATTRIBUTES, CF_GCC_WARNINGS, CF_MAKE_TAGS, CF_MSG_LOG,
	  CF_REGEX, CF_XOPEN_SOURCE.
	+ update config.guess and config.sub

20101210
	+ update copyright notices to reflect changes made starting 20080909.
	  This commit was made in May 2012, updates only copyright notices
	  needed for project registration on Savannah as discussed in Debian
	  #554167.  However, since current policy on Savannah discriminates
	  against GPLv2, it will be hosted elsewhere.  See
		http://invisible-island.net/mawk/
		http://github.com/ThomasDickey

20101207
	+ add configure --enable-trace, to consolidate various debugging
	  traces which were written to stderr.  This writes to Trace.out.
	+ modify zmalloc.c to make it simpler to use the --disable-leaks
	  configure script option to analyze memory leaks.  The memory pool
	  which interferes with analysis can be disabled by defining
	  DEBUG_ZMALLOC.
	+ (IN-PROGRESS) convert gsub() function from recursive, to
	  non-recursive to lessen use of program stack (Debian #158481).
	+ escape some dashes in manpage, to work with groff.
	+ change section for Debian package to "interpreters" (Debian #442071).
	+ fix printable token value for SC_MATCH in scan.c (report by Heiner
	  Marxen).

20100625
	+ correct translation of octal and hex escapes for system regular
	  expression library.
	+ modify configure script to support --program-suffix, etc.
	+ add Debian package scripts, for "mawk-cur".
	+ add RPM spec-file.
	+ move release- and patch-level values from version.c to patchlev.h
	  to simplify packaging scripts.

20100618
	+ correct translation of "^{" pattern for system regular expression
	  library  (report by Elias Pipping).
	+ fix sentence fragment in README (report by Elias Pipping).

20100507
	+ cleanup gcc warnings for 64-bit platform, e.g., use size_t rather
	  than unsigned, etc.
	+ fix warnings from clang --analyze
	+ update/improve configure script
	  + modify CF_GCC_VERSION to ignore stderr, e.g., from c89 alias
	  + modify CF_GCC_WARNINGS, moving -W and -Wall into the list to check,
	    since c89 alias for gcc complains about these options.
	  + add --disable-leaks and related options, for testing.
	  + add lint rule to makefile.
	  + add configure-check for ctags to work with pkgsrc.
	+ amend change of array.w, fixes a regression in "delete" (report by
	  Heiner Marxen).

20100419
	+ modify split() to handle embedded nulls in the string to split, e.g.,
		BEGIN{s="a\0b"; print length(s); n = split(s,f,""); print n}
	  (report by Morris Lee).

	+ modify array.w to update table pointers in the special case where
	  an array is known to have string-indices, but is later indexed via
	  integers.  The problem occurs when the array grows large enough to
	  rehash it, e.g.,
		BEGIN{a["n"];for(i=1;i<1000;++i)printf "%d\n", a[i]; }
	  (report by Morris Lee).

	+ increase size of reference-count for strings to unsigned.  It was an
	  unsigned short, which prevented using arrays larger than 64k, e.g.,
		BEGIN{for(i = 1; i <= 65550; ++i){if(i >= 65534 && i<= 65537) print i; s[i] = "a"}; delete s;}
	  (report by Morris Lee).

	+ add special case for Solaris 10 (and up) to configure check
	  CF_XOPEN_SOURCE

	+ refactored configure check CF_REGEX

20100224
	+ add a configure check for large files (report by Sean Kumar).

	+ modify check in collect_RE() to show the actual limit value, e.g.,
	  MIN_SPRINTF-2 used for built-in regular expressions.

	+ increase MIN_SPRINTF, used as limit on regular-expression size, to
	  match the MAX_SPLIT value, i.e., slightly more than doubling the size
	  (report by Markus Gnam).

	+ further modify makefile to build outside the source-tree.

	+ modify makefile and mawktest to use relative path again, since the
	  existing script did not work with openSUSE's build (patch by Guido
	  Berhoerster).

	+ fix makefile's .c.i rule, which lacked CPP definition.

	+ update mawktest.bat script to more/less correspond with mawktest,
	  for Win32 console except where echo command does not handle the
	  required quoting syntax.

	+ add vs6.mak, for Visual Studio 6.

	+ modify mawktest script to report results from all tests, rather than
	  halting on the first failure.

	+ add limit-check after processing match(test, "[^0-9A-Za-z]") to
	  ensure the internal trailing null of the test-string is not mistaken
	  for part of the string, i.e., RSTART, RLENGTH are computed correctly
	  (report by Markus Gnam).

	+ modify parsing of -W option to use comma-separated values, e.g.,
	  "-Wi,e" for "-Winteractive" and "-Werror".

	+ add timestamp to scancode.c, to help manage revisions.

	+ improve configure macro CF_XOPEN_SOURCE, making it remove possibly
	  conflicting definitions before adding new ones.

	+ update config.guess and config.sub

	> patches by Jan Psota:

	+ improve buffering for -Winteractive option.

	+ allow multiple single-character flags after -W, e.g., "-Wie" for
	  "-Winteractive" and "-Werror" to permit these to be passed on a
	  "#"-line of a shell script, e.g.,
	  	#!/usr/bin/mawk -Wie

	> patches by Jonathan Nieder:

	+ add new M_SAVE_POS and M_2JC operation codes (states) to the
	  built-in regular expression engine.  Use these to reimplement
	  m* (closure), to provide a way to avoid infinite looping on
	  matches against empty strings.  This change requires reimplementing
	  the workaround for gawk's noloop1 testcase from 20090726.

	+ improve buffer-overflow check for string_buff.

	+ fix collect_RE to treat "[^]]" as a character class (meaning "not a
	  closing bracket") but "[^^]]" not as one.  This also requires
	  initializing the local "start of character class" variable to NULL
	  rather than the beginning of the string, to avoid an invalid array
	  access when collecting expressions such as "^text".

	+ within a character class and not followed by a :, ., or ~, a "[" is
	  just like any other character.  This way, you can tell mawk to scan
	  for a literal [ character with "mawk /[[]/", and you can scan for a [
	  or ] with "mawk /[][]/".  Also clean up the relevant loop in
	  do_class() to make it a bit more readable.

	+ outside a character class, a "]" is just like any other character.

	+ prevent do_class() from scanning past the end, e.g., if the
	  terminating zero byte was escaped.

	+ fix regular-expression parsing when a right parenthesis ")" is
	  found without a preceding left parenthesis.

	+ fix resetting of position stack when backtracking.

	+ modify regular-expression engine to avoid exponential running time
	  for some regular expression matches in which the first match mawk
	  finds extends to the end of the string.  This is a new fix for the
	  gawk noloop2 test, added here for regression testing.

20091220
	+ bump version to 1.3.4

	+ update INSTALL and README files.

	+ improve configure checks for math library.

	  + change test for NaN to use sqrt() rather than log() to work around
	    cygwin's partly broken math functions.

	  + add/use isnanf() to work around other breakage in cygwin math
	    functions.

	  + add configure check for _XOPEN_SOURCE, etc., needed to define
	    proper function pointer for sigaction, e.g., on Tru64.

	  + add check for sigaction function pointer, whose POSIX form is
	    absent from the cygwin header.

	+ extend MAWKBINMODE, adding a third bit which when set will suppress
	  the change for RS or ORS to use CR/LF rather than LF.  This is used
	  for MinGW to make the "check" rule in a build work, for instance.

	+ add configure check for functions used for pipe/system calls, e.g.,
	  for MinGW where these are absent.

	+ add runtime check for floating-point underflow exceptions

	+ fix an old 1.3.3 bug in re_split(), which did not check properly for
	  the end of buffer; this broke on Tru64.

	+ drop obsolete config-user, v7 and atarist subdirectories

	+ improve configure checks for sigaction, making the definitions used
	  in fpe_check.c consistent with matherr.c

	+ build fixes for AIX, Tru64.

	+ add configure check for 'environ'.

	+ remove redundant setlocale() calls; only LC_CTYPE and LC_NUMERIC
	  are used.

20091213
	+ add makedeps.sh script to aid in updating object dependencies in
	  Makefile.in

	+ use "mkdir -p" rather than mkdirs.sh (suggested by Aleksey Cheusov).

	+ reformatted this file, to simplify extraction of contributor names.

	+ update config.guess and config.sub

	> patches by Jonathan Nieder:

	+ modify CF_DISABLE_ECHO autoconf macro to ensure that command lines
	  in Makefile.in begin with a tab.

	+ the makefile does not use $(MAKE); remove the SET_MAKE substitution.

	+ add some files to the "make clean" rule, in case make gets
	  interrupted in the middle of a rule.

	+ add a maintainer-clean rule to the makefile, to remove files which
	  could be regenerated.

	+ fix an unescaped "-" in man/mawk.1

	+ remove an unneeded cast in bi_funct.c

	+ fix an unused parameter warning in matherr.c

	+ drop unused line_no parameter from compile_error() and its callers.

	+ convert makescan.c to ANSI C, do further cleanup of that file.

	+ split-out scancode.h from scan.h

20090920
	+ improve hash function by using FNV-1 algorithm (patch/analysis by
	  Jim Mellander).  This greatly improves speed for accessing arrays
	  with a large number of distinct keys; however the unsorted order in
	  "for" loops will differ.

	+ add "internal regex" or "external regex" string to version message to
	  allow scripting based on support for embedded nulls.

	+ drop obsolete CF_MAWK_PROG_GCC and CF_MAWK_PROG_YACC macros from
	  configure script (report by Mike Frysinger).

	+ fixes to allow build outside source-tree (report by Mike Frysinger).

	+ correct logic in scan.c to handle expression "[[]" (report by Aleksey
	  Cheusov).

	+ add MAWK_LONG_OPTIONS feature to allow mawk to ignore long options
	  which are not implemented.

	+ two changes for embedded nulls, allows FS to be either a null or
	  contain a character class with null, e.g., '\000' or '[ \000]':

	  + modify built-in regular expression functions to accept embedded
	    nulls.

	  + modify input reader FINgets() to accept embedded nulls in data read
	    from files.  Data read from standard input is line-buffered, and is
	    still null-terminated.

	+ update config.guess and config.sub

20090820
	+ minor portability/standards fixes for examples/hical

	+ add WHINY_USERS sorted-array feature, for compatibility with gawk
	  (patch by Aharon Robbins).

	+ correct lower-limit for d_to_U() function, which broke conversion of
	  zero in "%x" format, added in fix for Debian #303825 (report by
	  Masami Hiramatsu).

	+ modify "%s" and "%c" formatting in printf/sprintf commands to ensure
	  that "%02s" does not do zero-padding, for standards conformance
	  (discussion with Aharon Robbins, Mike Brennan, prompted by Debian
	  #339799).

20090728
	+ add fallback definitions for GCC_NORETURN and GCC_UNUSED to build
	  with non-gcc compilers (report by Jan Wells).

20090727
	+ add check/fix to prevent gsub from recurring to modify on a substring
	  of the current line when the regular expression is anchored to the
	  beginning of the line; fixes gawk's anchgsub testcase.

	+ add check for implicit concatenation mistaken for exponent; fixes
	  gawk's hex testcase.

	+ add character-classes to built-in regular expressions.

	+ add 8-bit locale support

20090726
	+ improve configure checks for MAX__UINT.

	+ add a check for infinite loop in REmatch(), to work with gawk's
	  noloop1 testcase.

	+ modify logic to allow setting RS to an explicit null character, e.g.,
		RS="\0"
	  (Ubuntu #400409).

	+ modify workaround for (incorrect) scripts which use a zero-parameter
	  for substr to ensure the overall length of the result stays the same.
	  For example, from makewhatis:
		filename_no_gz = substr(filename, 0, RSTART - 1);

	+ move regular-expression files into main directory to simplify
	  building using configure --srcdir and VPATH.

	+ modify internal functions for gsub() to handle a case from makewhatis
	  script from man 1.6f which substitutes embedded zero bytes to a
	  different value (report by Gabor Z Papp).

	+ change default for configure --with-builtin-regex to prefer the
	  builtin regular expressions.  They are incomplete, but POSIX regular
	  expressions cannot match nulls embedded in strings.

	+ require standard C compiler; converted to ANSI C.

	+ rename #define'd SV_SIGINFO to MAWK_SV_SIGINFO to avoid predefined
	  name on Mac OS X (report on comp.lang.awk).

	+ revise configure script to use conventional scheme for generating
	  config.h

20090721
	+ port to cygwin, modifying test-script to work with executable-suffix
	  and fp-exception code to allow const in declaration.

20090712
	+ bump patch-date.

	+ fix Debian #127293 "mawk does not understand unescaped '/' in
	  character classes", noting that gawk 3.1.6 also has problems with
	  this area.

	+ drop support for varargs; use stdarg only.

	+ add tags rule to makefile.

	+ rename configure option "--with-local-regexp" to
	  "--with-builtin-regex"

	+ add build-fix from NetBSD port:  enable vax FP support when
	  defined(__vax__) as well as BSD43_VAX.  from ragge.

	+ add configure --disable-echo option

	+ identify updated files with "MawkId" keywords, retaining old log
	  comments for reference.  Ongoing changes are recorded here.

	+ change maintainer email address to my own.

20090711
	+ use conventional install/uninstall rules in makefile.

	+ add install-sh script, mkdirs.sh, config.guess and config.sub

	+ add $DESTDIR support to makefile

	+ add uninstall make-target

	+ add configure --enable-warnings option (fixed some warnings...)

	+ change configure script to autoconf 2.52 to permit cross-compiles.

	+ drop config.user file; replace with conventional autoconf --prefix,
	  etc.

	+ fill-in CA_REC.type in two places in parse.y which weren't
	  initialized.

	+ fix Debian #38353 (absent expression on last part of "for" statement
	  caused core-dump).

	+ fix Debian #303825 (printf %x clamps numbers to signed range rather
	  than unsigned range).

	+ apply fix from Debian #355966 (null-pointer check in
	  is_string_split())

	+ apply fix from Debian #391051 (limit-check in scan.c)

20090709
	+ add support for external regexp libraries (patch by Aleksey Cheusov)
	  (originally comp.lang.awk June 15 2005, also cited in Debian #355442
	  March 6, 2006).

20090705
	+ fixes to build on BeOS (if LIBS is set to -lroot), and QNX
	  (redefinition of setmode).

20080909
	+ fix gcc 4.3.1 -Wall warnings

	+ transform mawk.ac.m4 to aclocal.m4, renaming macros to use "CF_" or
	  "CF_MAWK_" prefixes depending on their reusability.  Modified macros
	  to use quoting consistent with recent autoconf versions.

	+ regenerate configure with autoconf version 2.13.20030927

	+ regenerate parse.c with byacc - 1.9 20080827

	+ ifdef'd prototypes in nstd.h which belong to stdlib.h, string.h to
	  use standard C by default.

	+ source-in Debian patches 01-08 (see below).  Changes for 20080909 fix
	  Debian #496980 as well.

-------------------------------------------------------------------------------
Debian patches:

(Peter Eisentraut <petere@debian.org>  Sat, 05 Apr 2008 17:11:11 +0200)

08_fix-for-gcc3.3
	Debian #195371

(James Troup <james@nocrew.org>  Fri, 30 May 2003 15:24:50 +0100)

07_mawktest-check-devfull
	Debian #51875

06_parse.y-semicolons
	Debian #170973

05_-Wall-fixes

04_mawk.1-fix-pi
	Debian #103699

03_read-and-close-redefinition
	Debian #104124

02_fix-examples
	Debian #36011

01_error-on-full-fs
	Debian #28249
	Debian #4293

-------------------------------------------------------------------------------
1.3.1 -> 1.3.2 Sep 1996

1) Numeric but not integer indices caused core dump in new array scheme.
   Fixed bug and fired test division.

2) Added ferror() checks on writes.

3) Added some static storage specs to array.c to keep non-ansi
   compilers happy.

1.3 -> 1.3.1 Sep 1996
Release to new ftp site ftp://ftp.whidbey.net.

1) Workaround for overflow exception in strtod, sunos5.5 solaris.

2) []...] and [^]...] put ] in a class (or not in a class) without
   having to use back-slash escape.

1.2.2 -> 1.3 Jul 1996
Extensive redesign of array data structures to support large arrays and
fast access to arrays created with split.  Many of the ideas in the
new design were inspired by reading "The Design and Implementation of
Dynamic Hashing Sets and Tables in Icon" by William Griswold and
Gregg Townsend, SPE 23,351-367.

1.2.1 -> 1.2.2  Jan 1996

1) Improved autoconfig, in particular, fpe tests.  This is far from
   perfect and never will be until C standardizes an interface to ieee754.

2) Removed automatic error message on open failure for getline.

3) Flush all output before system().  Previous behavior was to only
   flush std{out,err}.

4) Explicitly fclose() all output on exit to work around AIX4.1 bug.

5) Fixed random number generator to work with longs larger than
   32bits.

6) Added a type Int which is int on real machines and long on dos machines.
   Believe that all implicit assumptions that int=32bits are now gone.

-------------------------------------------------------------------------------
Changes from version 1.1.4 to 1.2:

1) Limit on code size set by #define in sizes.h is gone.

2) A number of obscure bugs have been fixed such as,
   you can now make a recursive function call inside a for( i in A) loop.
   Function calls with array parameters in loop expressions sometimes
   generated erroneous internal code.

   See RCS log comments in code for details.

   Reported bugs are fixed.

3) new -W options


   -We file   :  reads commands from file and next argument, regardless
	      of form, is ARGV[1].  Useful  for passing -v , -f etc to
	      an awk program started with #!/.../mawk


      #!/usr/local/bin/mawk -We

      myprogram -v   works, while

      #!/usr/local/bin/mawk -f

      myprogram -v    gives error message
	  mawk: option -v lacks argument

      This is really a posix bozo.  Posix says you end arguments with
      "--" , but this doesn't work with the "#!" convention.

   -W interactive :  forces stdout to be unbuffered and stdin to
	be line buffered.  Records from stdin are lines regardless of
	the value of RS.  Useful for interaction with a mawk on a pipe.

   -W dump, -Wd   :  disassembles internal code to stdout (used to be
       stderr) and exits 0.

4)  FS = "" causes each record to be broken into characters and placed
     into $1,$2 ...

     same with split(x,A,"") and split(x,A,//)

5)  print > "/dev/stdout"  writes to stdout, exactly the same as
    print

    This is useful for passing stdout to

    function my_special_output_routine(s, file)
    {
	# do something fancy with s
	print s > file
    }

6) New built-in function fflush() -- copied from the lastest att awk.

      fflush() : flushes stdout  and returns 0
      fflush(file)  flushes file and returns 0; if file was not an
      open output file then returns -1.

7)  delete  A ;  -- removes all elements of the array A

    intended to replace:

	 for( i in A) delete A[i]

8)  mawk errors such as compilation failure, file open failure, etc.
    now exit 2 which reserves exit 1 for the user.

9)  No program now silently exits 0, prior behavior was to exit 2 with
    an error message
