Upstream changes:
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.
Update mawk to 1.3.4.20100625
Major changes in this release of mawk:
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.
Changelog:
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
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.