+ 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
Upstream changes:
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.txthttp://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
+ add configure check to work around recent breakage in Cygwin's math.h
which declares _LIB_VERSION without allowing it to be updated
+ minor updates to configure script, for clang and mingw
+ update config.guess and config.sub
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.