diff options
Diffstat (limited to 'contrib/awk/NEWS')
-rw-r--r-- | contrib/awk/NEWS | 2077 |
1 files changed, 0 insertions, 2077 deletions
diff --git a/contrib/awk/NEWS b/contrib/awk/NEWS deleted file mode 100644 index ab0aa84..0000000 --- a/contrib/awk/NEWS +++ /dev/null @@ -1,2077 +0,0 @@ -Changes from 3.0.6 to 3.1.0 ---------------------------- - -1. A new PROCINFO array provides info about the process. The non-I/O /dev/xxx - files are now obsolete, and their use always generates a warning. - -2. A new `mktime' builtin function was added for creating time stamps. The - `mktime' function written in awk was removed from the user's guide. - -3. New `--gen-po' option creates GNU gettext .po files for strings marked - with a leading underscore. - -4. Gawk now completely interprets special file names internally, ignoring the - existence of real /dev/stdin, /dev/stdout files, etc. - -5. The mmap code was removed. It was a worthwhile experiment that just - didn't work out. - -6. The BINMODE variable is new; on non-UNIX systems it affects how gawk - opens files for text vs. binary. - -7. The atari port is now unsupported. - -8. Gawk no longer supports `next file' as two words. - -9. On systems that support it, gawk now sets the `close on exec' flag on all - files and pipes it opens. This makes sure that child processes run via - system() or pipes have plenty of file descriptors available. - -10. New ports: Tandem and BeOS. The Tandem port is unsupported. - -11. If `--posix' is in effect, newlines are not allowed after ?:. - -12. Weird OFMT/CONVFMT formats no longer cause fatal errors. - -13. Diagnostics about array parameters now include the parameter's name, - not just its number. - -14. configure should now automatically add -D_SYSV3 for ISC Unix. - (This seems to have made it into the gawk 3.0.x line long ago.) - -15. It is now possible to open a two-way pipe via the `|&' operator. - See the discussion in the manual about putting `sort' into such a pipeline, - though. (NOTE! This is borrowed from ksh: it is not the same as - the same operator in csh!) - -16. The close() function now takes an optional second string argument - that allows closing one or the other end of the two-way pipe to - a co-process. This is needed to use `sort' in a co-process, see - the doc. - -17. If TCP/IP is available, special file names beginning with `/inet' - can be used with `|&' for IPC. Thanks to Juergen Kahrs for the initial - code. - -18. With `--enable-portals' on the configure command line, gawk will also - treat file names that start with `/p/' as a 4.4 BSD type portal file, - i.e., a two-way pipe for `|&'. - -19. Unrecognized escapes, such as "\q" now always generate a warning. - -20. The LINT variable is new; it provides dynamic control over the --lint - option. - -21. Lint warnings can be made fatal by using --lint=fatal or `LINT = "fatal"'. - Use this if you're really serious about portable code. - -22. Due to an enhanced sed script, there is no longer any need to worry - about finding or using alloca. alloca.c is thus now gone. - -23. A number of lint warnings have been added. Most notably, gawk will - detect if a variable is used before assigned to. Warnings for - when a string that isn't a number gets converted to a number are - in the code but disabled; they seem to be too picky in practice. - - Also, gawk will now warn about function parameter names that shadow - global variable names. - -24. It is now possible to dynamically add builtin functions on systems - that support dlopen. This facility is not (yet) as portable or well - integrated as it might be. *** WARNING *** THIS FEATURE WILL EVOLVE! - -25. There are *many* new tests in the test suite. - -26. Profiling has been added! A separate version of gawk, named pgawk, is - built and generates a run-time execution profile. The --profile option - can be used to change the default output file. In regular gawk, this - option pretty-prints the parse tree. - -27. Gawk has been internationalized, using GNU gettext. Translations for - future distributions are most welcome. Simultaneously, gawk was switched - over to using automake. You need Automake 1.4a (from the CVS archive) - if you want to muck with the Makefile.am files. - -28. New asort() function for sorting arrays. See the doc for details. - -29. The match function takes an optional array third argument to hold - the text matched by parenthesized sub-expressions. - -30. The bit op functions and octal and hex source code constants are on by - default, no longer a configure-time option. Recognition of non-decimal - data is now enabled at runtime with --non-decimal-data command line option. - -31. Internationalization features available at the awk level: new TEXTDOMAIN - variable and bindtextdomain() and dcgettext() functions. printf formats - may contain the "%2$3.5d" kind of notation for use in translations. See - the texinfo manual for details. - -32. The return value from close() has been rationalized. Most notably, - closing something that wasn't open returns -1 but remains non-fatal. - -33. The array effeciency change from 3.0.5 was reverted; the semantics were - not right. Additionally, index values of previously stored elements - can no longer change dynamically. - -34. The new option --dump-variables dumps a list of all global variables and - their final types and values to a file you give, or to `awkvars.out'. - -35. Gawk now uses a recent version of random.c courtesy of the FreeBSD - project. - -36. The gawk source code now uses ANSI C function definitions (new style), - with ansi2knr to translate code for old compilers. - -37. `for (iggy in foo)' loops should be more robust now in the face of - adding/deleting elements in the middle; they loop over just the elements - that are present in the array when the loop starts. - -Changes from 3.0.5 to 3.0.6 ---------------------------- - -This is a bug fix release only, pending further development on 3.1.0. - -Bugs fixed and changes made: - -1. Subscripting an array with a variable that is just a number no - longer magically converts the variable into a string. - -2. Similarly, running a `for (iggy in foo)' loop where `foo' is a - function parameter now works correctly. - -3. Similarly, `i = ""; v[i] = a; if (i in v) ...' now works again. - -4. Gawk now special cases `for (iggy in foo) delete foo[iggy]' and - treats it as the moral equivalent of `delete foo'. This should be - a major efficiency win when portably deleting large arrays. - -5. VMS port brought up to date. - -Changes from 3.0.4 to 3.0.5 ---------------------------- - -This is a bug fix release only, pending further development on 3.1.0. - -Bugs Fixed: - - 1. `function foo(foo)' is now a fatal error. - - 2. Array indexing is now much more efficient: where possible, only one - copy of an index string is kept, even if used in multiple arrays. - - 3. Support was added for MacOS X and an `install-strip' target. - - 4. [s]printf formatting for `0' flag and floating point formats now - works correctly. - - 5. HP-UX large file support with GCC 2.95.1 now works. - - 6. Arguments that contain `=' but that aren't syntactically valid are - now treated as filenames, instead of as fatal errors. - - 7. `-v NF=foo' now works. - - 8. Non-ascii alphanumeric characters are now treated as such in the - right locales by regex.c. Similarly, a Latin-1 y-umlaut (decimal - value 255) in the program text no longer acts like EOF. - - 9. Array indexes are always compared as strings; fixes an obscure bug - when user input gets used for the `x in array' test. - -10. The usage message now points users to the documentation for how - to report bugs. - -11. `/=' now works after an array. - -12. `b += b += 1' now works correctly. - -13. IGNORECASE changing with calls match() now works better. (Fix for - semi-obscure bug.) - -14. Multicharacter values for RS now generate a lint warning. - -15. The gawk open file caching is now much more efficient. - -16. Global arrays passed to functions are now managed better. In particular, - test/arynocls.awk won't crash referencing freed memory. - -17. In obscure cases, `getline var' can no longer clobber $0. - -Changes from 3.0.3 to 3.0.4 ---------------------------- - -This is a bug fix release only, pending further development on 3.1.0. - -Bugs Fixed: - - 1. A memory leak when turning a function parameter into an array was - fixed. - - 2. The non-decimal data option now works correctly. - - 3. Using an empty pair of brackets as an array subscript no longer causes - a core dump during parsing. In general, syntax errors should not - cause core dumps any more. - - 4. Standard input is no longer closed if it provides program source, - avoiding strange I/O problems. - - 5. Memory corruption during printing with `print' has been fixed. - - 6. The gsub function now correctly counts the number of matches. - - 7. A typo in doc/Makefile.in has been fixed, making installation work. - - 8. Calling `next' or `nextfile' from a BEGIN or END rule is now fatal. - - 9. Subtle problems in rebuilding $0 when fields were changed have been - fixed. - -10. `FS = FS' now correctly turns off the use of FIELDWIDTHS. - -11. Gawk now parses fields correctly when FS is a single character. - -12. It is now possible for RS to be the NUL character ("\0"). - -13. Weird problems with number conversions on MIPS and other systems - have been fixed. - -14. When parsing using FIELDWIDTHS is in effect, split() with no third - argument will still use the value of FS. - -15. Large File Support for Solaris, HP-UX, AIX, and IRIX is now enabled at - compile time, thanks to Paul Eggert. - -16. Attempting to use the name of a function as a variable or array - from within the function is now caught as a fatal error, instead - of as a core dump. - -17. A bug in parsing hex escapes was fixed. - -18. A weird bug with concatenation where one expression has side effects - that changes another was fixed. - -19. printf/sprintf now behave much better for uses of the '0' and '#' flags - and with precisions and field widths. - -20. Further strangenesses with concatenation and multiple accesses of some - of the special variables was fixed. - -21. The Atari port is marked as no longer supported. - -22. Build problems on HP-UX have been fixed. - -23. Minor fixes and additional explanations added to the documentation. - -24. For RS = "", even a single leading newline is now correctly stripped. - -25. Obscure parsing problems for regex constants like /=.../ fixed, so - that a regex constant is recognized, and not the /= operator. - -26. Fixed a bug when closing a redirection that matched the current - or last FILENAME. - -27. Build problems on AIX fixed. - -Changes from 3.0.2 to 3.0.3 ---------------------------- - -The horrendous per-record memory leak introduced in 3.0.1 is gone, finally. - -The `amiga' directory is now gone; Amiga support is now entirely handled -by the POSIX support. - -Win32 support has been added in the `pc' directory. See `README_d/README.pc' -for more info. - -The mmap changes are disabled in io.c, and will be removed entirely -in the next big release. They were an interesting experiment that just -really didn't work in practice. - -A minor memory leak that occurred when using `next' from within a -function has also been fixed. - -Problems with I/O from sub-processes via a pipe are now gone. - -Using "/dev/pid" and the other special /dev files no longer causes a core dump. - -The files regex.h, regex.c, getopt.h, getopt.c, and getopt1.c have been -merged with the versions in GNU libc. Thanks to Ulrich Drepper for his help. - -Some new undocumented features have been added. Use the source, Luke! -It is not clear yet whether these will ever be fully supported. - -Array performance should be much better for very very large arrays. "Virtual -memory required, real memory helpful." - -builtin.c:do_substr rationalized, again. - -The --re-interval option now works as advertised. - -The license text on some of the missing/* files is now generic. - -Lots more new test cases. - -Lots of other small bugs fixed, see the ChangeLog files for details. - -Changes from 3.0.1 to 3.0.2 ---------------------------- - -Gawk now uses autoconf 2.12. - -strftime now behaves correctly if passed an empty format string or if -the string formats to an empty result string. - -Several minor compilation and installation problems have been fixed. - -Minor page break issues in the user's guide have been fixed. - -Lexical errors no longer repeat ad infinitum. - -Changes from 3.0.0 to 3.0.1 ---------------------------- - -Troff source for a handy-dandy five color reference card is now provided. -Thanks to SSC for their macros. - -Gawk now behaves like Unix awk and mawk, in that newline acts as white -space for separating fields and for split(), by default. In posix mode, -only space and tab separate fields. The documentation has been updated to -reflect this. - -Tons and tons of small bugs fixed and new tests added, see the ChangeLogs. - -Lots fewer compile time warnings from gcc -Wall. Remaining ones aren't -worth fixing. - -Gawk now pays some attention to the locale settings. - -Fixes to gsub to catch several corner cases. - -The `print' statement now evaluates all expressions first, and then -prints them. This leads to less suprising behaviour if any expression has -output side effects. - -Miscellanious improvements in regex.h and regex.c. - -Gawk will now install itself as gawk-M.N.P in $(bindir), and link -`gawk' to it. This makes it easy to have multiple versions of gawk -simultaneously. It will also now install itself as `awk' in $(bindir) -if there is no `awk' there. This is in addition to installing itself as -`gawk'. This change benefits the Hurd, and possibly other systems. One -day, gawk will drop the `g', but not yet. - -`--posix' turns on interval expressions. Gawk now matches its documentation. - -`close(FILENAME)' now does something meaningful. - -Field management code in field.c majorly overhauled, several times. - -The gensub code has been fixed, several bugs are now gone. - -Gawk will use mmap for data file input if it is available. - -The printf/sprintf code has been improved. - -Minor issues in Makefile setup worked on and improved. - -builtin.c:do_substr rationalized. - -Regex matching fixed so that /+[0-9]/ now matches the leading +. - -For building on vms, the default compiler is now DEC C rather than VAX C. - -Changes from 2.15.6 to 3.0.0 ----------------------------- - -Fixed spelling of `Programming' in the copyright notice in all the files. - -New --re-interval option to turn on interval expressions. They're off -by default, except for --posix, to avoid breaking old programs. - -Passing regexp constants as parameters to user defined functions now -generates a lint warning. - -Several obscure regexp bugs fixed; alas, a small number remain. - -The manual has been thoroughly revised. It's now almost 50% bigger than -it used to be. - -The `+' modifier in printf is now reset correctly for each item. - -The do_unix variable is now named do_traditional. - -Handling of \ in sub and gsub rationalized (somewhat, see the manual for -the gory [and I do mean gory] details). - -IGNORECASE now uses ISO 8859-1 Latin-1 instead of straight ASCII. See the -source for how to revert to pure ASCII. - ---lint will now warn if an assignment occurs in a conditional context. -This may become obnoxious enough to need turning off in the future, but -"it seemed like a good idea at the time." - -%hf and %Lf are now diagnosed as invalid in printf, just like %lf. - -Gawk no longer incorrectly closes stdin in child processes used in -input pipelines. - -For integer formats, gawk now correctly treats the precision as the -number of digits to print, not the number of characters. - -gawk is now much better at catching the use of scalar values when -arrays are needed, both in function calls and the `x in y' constructs. - -New gensub function added. See the manual. - -If do_tradtional is true, octal and hex escapes in regexp constants are -treated literally. This matches historical behavior. - -yylex/nextc fixed so that even null characters can be included -in the source code. - -do_format now handles cases where a format specifier doesn't end in -a control letter. --lint reports an error. - -strftime() now uses a default time format equivalent to that of the -Unix date command, thus it can be called with no arguments. - -Gawk now catches functions that are used but not defined at parse time -instead of at run time. (This is a lint error, making it fatal could break -old code.) - -Arrays that max out are now handled correctly. - -Integer formats outside the range of an unsigned long are now detected -correctly using the SunOS 4.x cc compiler. - ---traditional option added as new preferred name for --compat, in keeping -with GCC. - ---lint-old option added, so that warnings about things not in old awk -are only given if explicitly asked for. - -`next file' has changed to one word, `nextfile'. `next file' is still -accepted but generates a lint warning. `next file' will go away eventually. - -Gawk with --lint will now notice empty source files and empty data files. - -Amiga support using the Unix emulation added. Thanks to fnf@ninemoons.com. - -test/Makefile is now "parallel-make safe". - -Gawk now uses POSIX regexps + GNU regex ops by default. --posix goes to -pure posix regexps, and --compat goes to traditional Unix regexps. However, -interval expressions, even though specified by POSIX, are turned off by -default, to avoid breaking old code. - -IGNORECASE now applies to string comparison as well as regexp operations. - -The AT&T Bell Labs Research awk fflush builtin function is now supported. -fflush is extended to flush stdout if no arg and everything if given -the null string as an argument. - -If RS is more than one character, it is treated as a regular expression -and records are delimited accordingly. The variable RT is set to the record -terminator string. This is disabled in compatibility mode. - -If FS is set to the null string (or the third arg. of split() is the null -string), splitting is done at every single character. This is disabled in -compatibility mode. - -Gawk now uses the Autoconf generated configure script, doing away with all -the config/* files and the machinery that went with them. The Makefile.in -has also changed accordingly, complete with all the standard GNU Makefile -targets. (Non-unix systems may still have their own config.h and Makefile; -see the appropriate README_d/README.* and/or subdirectory.) - -The source code has been cleaned up somewhat and the formatting improved. - -Changes from 2.15.5 to 2.15.6 ------------------------------ - -Copyrights updated on all changed files. - -test directory enhanced with four new tests. - -Gawk now generates a warning for \x without following hexadecimal digits. -In this case, it returns 'x', not \0. - -Several fixes in main.c related to variable initialization: - CONVFMT has a default value - resetup is called before initializing variables - the varinit table fixed up a bit (see the comments) - -gawk.1 updated with new BUG REPORTS section. - -A plain `print' inside a BEGIN or END now generates a lint warning (awk.y). - -Small fix in iop.c:get_a_record to avoid reading uninitialized memory. - -awk.y:yylex now does a better job of handling things if the source file -does not end in a newline. Probably there is more work to be done. - -Memory leaks fixed in awk.y, particularly in cases of duplicate function -parameters. Also, calling a function doesn't leak memory during parsing. - -Empty function bodies are now allowed (awk.y). - -Gawk now detects duplicate parameter names in functions (awk.y). - -New function `error' in msg.c added for use from awk.y. - -eval.c:r_get_lhs now checks if its argument is a parameter on the stack, -and pulls down the real variable. This catches more 'using an array as -a scalar' kinds of errors. - -main.c recovers C alloca space after parsing, this is important for -bison-based parsers. re.c recovers C alloca space after doing an research. -[Changes from Pat Rankin] - -builtin.c now declares the random() related functions based on -RANDOM_MISSING from config.h. [Suggested by Pat Rankin] - -awk.h now handles alloca correctly for HP-UX. [Kaveh Ghazi] - -regex.h and config/cray60 updated for Unicos 8.0. [Hal Peterson] - -Fixed re.c and dfa.c so that gawk no longer leaks memory when using -lots of dynamic regexps. - -Removed dependency on signed chars from `idx' variable in awk.h. Gawk -now passes its test suite if compiled with `gcc -fno-signed-char'. - -Fixed warning on close in io.c to go under lint control. Too many people -have complained about the spurious message, particularly when closing a -child pipeline early. - -Gawk now correctly handles RS = "" when input is from a terminal -(iop.c:get_a_record). - -Config file added for GNU. - -gawk 'BEGIN { exit 1 } ; END { exit }' now exits 1, as it should -(eval.c:interpret). - -sub and gsub now follow posix, \ escapes both & and \. Each \ must -be doubled initially in the program to get it into the string. -Thanks to Mike Brennan for pointing this out (builtin.c:sub_common). - -If FS is "", gawk behaves like mawk and nawk, making the whole record be $1. -Yet Another Dark Corner. Sigh (field.c:def_parse_field). - -Gawk now correctly recomputes string values for numbers if CONVFMT has -changed (awk.h:force_string, node.c:r_force_string). - -A regexp of the form `/* this looks like a comment but is not */' will -now generate a warning from --lint (awk.y). - -Gawk will no longer core dump if given an empty input file (awk.y:get_src_buf, -iop.c:optimal_bufsize). - -A printf format of the form %lf is handled correctly. The `l' generates -a lint warning (builtin.c:format_tree) [Thanks to Mark Moraes]. - -Lynxos config file added. - -`continue' outside a loop treated as `next' only in compatibility mode, -instead of by default; recent att nawk chokes on this now. `break' -outside a loop now treated as `next' in compatibility mode (eval.c). - -Bug fix in string concatenation, an arbitrary number of expressions -are allowed (eval.c). - -$1 += $2 now works correctly (eval.c). - -Changing IGNORECASE no longer resets field-splitting to FS if it was -using FIELDWIDTHS (eval.c, field.c). - -Major enhancement: $0 and NF for last record read are now preserved -into the END rule (io.c). - -Regexp fixes: - /./ now matches a newline (regex.h) - ^ and $ match beginning and end of string only, not any embedded - newlines (re.c) - regex.c should compile and work ok on 64-bit mips/sgi machines - -Changes from 2.15.4 to 2.15.5 ------------------------------ - -FUTURES file updated and re-arranged some with more rational schedule. - -Many prototypes handled better for ANSI C in protos.h. - -getopt.c updated somewhat. - -test/Makefile now removes junk directory, `bardargtest' renamed `badargs.' - -Bug fix in iop.c for RS = "". Eat trailing newlines off of record separator. - -Bug fix in Makefile.bsd44, use leading tab in actions. - -Fix in field.c:set_FS for FS == "\\" and IGNORECASE != 0. - -Config files updated or added: - cray60, DEC OSF/1 2.0, Utek, sgi405, next21, next30, atari/config.h, - sco. - -Fix in io.c for ENFILE as well as EMFILE, update decl of groupset to -include OSF/1. - -Rationalized printing as integers if numbers are outside the range of a long. -Changes to node.c:force_string and builtin.c. - -Made internal NF, NR, and FNR variables longs instead of ints. - -Add LIMITS_H_MISSING stuff to config.in and awk.h, and default defs for -INT_MAX and LONG_MAX, if no limits.h file. Add a standard decl of -the time() function for __STDC__. From ghazi@noc.rutgers.edu. - -Fix tree_eval in awk.h and r_tree_eval in eval.c to deal better with -function parameters, particularly ones that are arrays. - -Fix eval.c to print out array names of arrays used in scalar contexts. - -Fix eval.c in interpret to zero out source and sourceline initially. This -does a better job of providing source file and line number information. - -Fix to re_parse_field in field.c to not use isspace when RS = "", but rather -to explicitly look for blank and tab. - -Fix to sc_parse_field in field.c to catch the case of the FS character at the -end of a record. - -Lots of miscellanious bug fixes for memory leaks, courtesy Mark Moraes, -also fixes for arrays. - -io.c fixed to warn about lack of explicit closes if --lint. - -Updated missing/strftime.c to match posted strftime 6.2. - -Bug fix in builtin.c, in case of non-match in sub_common. - -Updated constant used for division in builtin.c:do_rand for DEC Alpha -and CRAY Y-MP. - -POSIXLY_CORRECT in the environment turns on --posix (fixed in main.c). - -Updated srandom prototype and calls in builtin.c. - -Fix awk.y to enforce posix semantics of unary +: result is numeric. - -Fix array.c to not rearrange the hash chain upon finding an index in -the array. This messed things up in cases like: - for (index1 in array) { - blah - if (index2 in array) # blew away the for - stuff - } - -Fixed spelling errors in the man page. - -Fixes in awk.y so that - gawk '' /path/to/file -will work without core dumping or finding parse errors. - -Fix main.c so that --lint will fuss about an empty program. -Yet another fix for argument parsing in the case of unrecognized options. - -Bug fix in dfa.c to not attempt to free null pointers. - -Bug fix in builtin.c to only use DEFAULT_G_PRECISION for %g or %G. - -Bug fix in field.c to achieve call by value semantics for split. - -Changes from 2.15.3 to 2.15.4 ------------------------------ - -Lots of lint fixes, and do_sprintf made mostly ANSI C compatible. - -Man page updated and edited. - -Copyrights updated. - -Arrays now grow dynamically, initially scaling up by an order of magnitude - and then doubling, up to ~ 64K. This should keep gawk's performance - graceful under heavy load. - -New `delete array' feature added. Only documented in the man page. - -Switched to dfa and regex suites from grep-2.0. These offer the ability to - move to POSIX regexps in the next release. - -Disabled GNU regex ops. - -Research awk -m option now recognized. It does nothing in gawk, since gawk - has no static limits. Only documented in the man page. - -New bionic (faster, better, stronger than before) hashing function. - -Bug fix in argument handling. `gawk -X' now notices there was no program. - Additional bug fixes to make --compat and --lint work again. - -Many changes for systems where sizeof(int) != sizeof(void *). - -Add explicit alloca(0) in io.c to recover space from C alloca. - -Fixed file descriptor leak in io.c. - -The --version option now follows the GNU coding standards and exits. - -Fixed several prototypes in protos.h. - -Several tests updated. On Solaris, warn that the out? tests will fail. - -Configuration files for SunOS with cc and Solaris 2.x added. - -Improved error messages in awk.y on gawk extensions if do_unix or do_compat. - -INSTALL file added. - -Fixed Atari Makefile and several VMS specific changes. - -Better conversion of numbers to strings on systems with broken sprintfs. - -Changes from 2.15.2 to 2.15.3 ------------------------------ - -Increased HASHSIZE to a decent number, 127 was way too small. - -FILENAME is now the null string in a BEGIN rule. - -Argument processing fixed for invalid options and missing arguments. - -This version will build on VMS. This included a fix to close all files - and pipes opened with redirections before closing stdout and stderr. - -More getpgrp() defines. - -Changes for BSD44: <sys/param.h> in io.c and Makefile.bsd44. - -All directories in the distribution are now writable. - -Separated LDFLAGS and CFLAGS in Makefile. CFLAGS can now be overridden by - user. - -Make dist now builds compressed archives ending in .gz and runs doschk. - -Amiga port. - -New getopt.c fixes Alpha OSF/1 problem. - -Make clean now removes possible test output. - -Improved algorithm for multiple adjacent string concatenations leads to - performance improvements. - -Fix nasty bug whereby command-line assignments, both with -v and at run time, - could create variables with syntactically illegal names. - -Fix obscure bug in printf with %0 flag and filling. - -Add a lint check for substr if provided length exceeds remaining characters - in string. - -Update atari support. - -PC support enhanced to include support for both DOS and OS/2. (Lots more - #ifdefs. Sigh.) - -Config files for Hitachi Unix and OSF/1, courtesy of Yoko Morishita - (morisita@sra.co.jp) - -Changes from 2.15.1 to 2.15.2 ------------------------------ - -Additions to the FUTURES file. - -Document undefined order of output when using both standard output - and /dev/stdout or any of the /dev output files that gawk emulates in - the absence of OS support. - -Clean up the distribution generation in Makefile.in: the info files are - now included, the distributed files are marked read-only and patched - distributions are now unpacked in a directory named with the patch level. - -Changes from 2.15 to 2.15.1 ---------------------------- - -Close stdout and stderr before all redirections on program exit. This allows - detection of write errors and also fixes the messages test on Solaris 2.x. - -Removed YYMAXDEPTH define in awk.y which was limiting the parser stack depth. - -Changes to config/bsd44, Makefile.bsd44 and configure to bring it into line - with the BSD4.4 release. - -Changed Makefile to use prefix, exec_prefix, bindir etc. - -make install now installs info files. - -make install now sets permissions on installed files. - -Make targets added: uninstall, distclean, mostlyclean and realclean. - -Added config.h to cleaner and clobber make targets. - -Changes to config/{hpux8x,sysv3,sysv4,ultrix41} to deal with alloca(). - -Change to getopt.h for portability. - -Added more special cases to the getpgrp() call. - -Added README.ibmrt-aos and config/ibmrt-aos. - -Changes from 2.14 to 2.15 ---------------------------- - -Command-line source can now be mixed with library functions. - -ARGIND variable tracks index in ARGV of FILENAME. - -GNU style long options in addition to short options. - -Plan 9 style special files interpreted by gawk: - /dev/pid - /dev/ppid - /dev/pgrpid - /dev/user - $1 = getuid - $2 = geteuid - $3 = getgid - $4 = getegid - $5 ... $NF = getgroups if supported - -ERRNO variable contains error string if getline or close fails. - -Very old options -a and -e have gone away. - -Inftest has been removed from the default target in test/Makefile -- the - results were too machine specific and resulted in too many false alarms. - -A README.amiga has been added. - -The "too many arguments supplied for format string" warning message is only - in effect under the lint option. - -Code improvements in dfa.c. - -Fixed all reported bugs: - - Writes are checked for failure (such as full filesystem). - - Stopped (at least some) runaway error messages. - - gsub(/^/, "x") does the right thing for $0 of 0, 1, or more length. - - close() on a command being piped to a getline now works properly. - - The input record will no longer be freed upon an explicit close() - of the input file. - - A NUL character in FS now works. - - In a substitute, \\& now means a literal backslash followed by what - was matched. - - Integer overflow of substring length in substr() is caught. - - An input record without a newline termination is handled properly. - - In io.c, check is against only EMFILE so that system file table - is not filled. - - Renamed all files with names longer than 14 characters. - - Escaped characters in regular expressions were being lost when - IGNORECASE was used. - - Long source lines were not being handled properly. - - Sourcefiles that ended in a tab but no newline were bombing. - - Patterns that could match zero characters in split() were not working - properly. - - The parsedebug option was not working. - - The grammar was being a bit too lenient, allowing some very dubious - programs to pass. - - Compilation with DEBUG defined now works. - - A variable read in with getline was not being treated as a potential - number. - - Array subscripts were not always of string type. - - -Changes from 2.13.2 to 2.14 ---------------------------- - -Updated manual! - -Added "next file" to skip efficiently to the next input file. - -Fixed potential of overflowing buffer in do_sprintf(). - -Plugged small memory leak in sub_common(). - -EOF on a redirect is now "sticky" -- it can only be cleared by close()ing - the pipe or file. - -Now works if used via a #! /bin/gawk line at the top of an executable file - when that line ends with whitespace. - -Added some checks to the grammar to catch redefinition of builtin functions. - This could eventually be the basis for an extension to allow redefining - functions, but in the mean time it's a good error catching facility. - -Negative integer exponents now work. - -Modified do_system() to make sure it had a non-null string to be passed - to system(3). Thus, system("") will flush any pending output but not go - through the overhead of forking an un-needed shell. - -A fix to floating point comparisons so that NaNs compare right on IEEE systems. - -Added code to make sure we're not opening directories for reading and such. - -Added code to do better diagnoses of weird or null file names. - -Allow continue outside of a loop, unless in strict posix mode. Lint option - will issue warning. - -New missing/strftime.c. There has been one change that affects gawk. Posix - now defines a %V conversion so the vms conversion has been changed to %v. - If this version is used with gawk -Wlint and they use %V in a call to - strftime, they'll get a warning. - -Error messages now conform to GNU standard (I hope). - -Changed comparisons to conform to the description found in the file POSIX. - This is inconsistent with the current POSIX draft, but that is broken. - Hopefully the final POSIX standard will conform to this version. - (Alas, this will have to wait for 1003.2b, which will be a revision to - the 1003.2 standard. That standard has been frozen with the broken - comparison rules.) - -The length of a string was a short and now is a size_t. - -Updated VMS help. - -Added quite a few new tests to the test suite and deleted many due to lack of - written releases. Test output is only removed if it is identical to the - "good" output. - -Fixed a couple of bugs for reference to $0 when $0 is "" -- particularly in - a BEGIN block. - -Fixed premature freeing in construct "$0 = $0". - -Removed the call to wait_any() in gawk_popen(), since on at least some systems, - if gawk's input was from a pipe, the predecessor process in the pipe was a - child of gawk and this caused a deadlock. - -Regexp can (once again) match a newline, if given explicitly. - -nextopen() makes sure file name is null terminated. - -Fixed VMS pipe simulation. Improved VMS I/O performance. - -Catch . used in variable names. - -Fixed bug in getline without redirect from a file -- it was quitting after the - first EOF, rather than trying the next file. - -Fixed bug in treatment of backslash at the end of a string -- it was bombing - rather than doing something sensible. It is not clear what this should mean, - but for now I issue a warning and take it as a literal backslash. - -Moved setting of regexp syntax to before the option parsing in main(), to - handle things like -v FS='[.,;]' - -Fixed bug when NF is set by user -- fields_arr must be expanded if necessary - and "new" fields must be initialized. - -Fixed several bugs in [g]sub() for no match found or the match is 0-length. - -Fixed bug where in gsub() a pattern anchored at the beginning would still - substitute throughout the string. - -make test does not assume that . is in PATH. - -Fixed bug when a field beyond the end of the record was requested after - $0 was altered (directly or indirectly). - -Fixed bug for assignment to field beyond end of record -- the assigned value - was not found on subsequent reference to that field. - -Fixed bug for FS a regexp and it matches at the end of a record. - -Fixed memory leak for an array local to a function. - -Fixed hanging of pipe redirection to getline - -Fixed coredump on access to $0 inside BEGIN block. - -Fixed treatment of RS = "". It now parses the fields correctly and strips - leading whitespace from a record if FS is a space. - -Fixed faking of /dev/stdin. - -Fixed problem with x += x - -Use of scalar as array and vice versa is now detected. - -IGNORECASE now obeyed for FS (even if FS is a single alphabetic character). - -Switch to GPL version 2. - -Renamed awk.tab.c to awktab.c for MSDOS and VMS tar programs. - -Renamed this file (CHANGES) to NEWS. - -Use fmod() instead of modf() and provide FMOD_MISSING #define to undo - this change. - -Correct the volatile declarations in eval.c. - -Avoid errant closing of the file descriptors for stdin, stdout and stderr. - -Be more flexible about where semi-colons can occur in programs. - -Check for write errors on all output, not just on close(). - -Eliminate the need for missing/{strtol.c,vprintf.c}. - -Use GNU getopt and eliminate missing/getopt.c. - -More "lint" checking. - - -Changes from 2.13.1 to 2.13.2 ------------------------------ - -Toward conformity with GNU standards, configure is a link to mkconf, the latter - to disappear in the next major release. - -Update to config/bsd43. - -Added config/apollo, config/msc60, config/cray2-50, config/interactive2.2 - -sgi33.cc added for compilation using cc rather than gcc. - -Ultrix41 now propagates to config.h properly -- as part of a general - mechanism in configure for kludges -- #define anything from a config file - just gets tacked onto the end of config.h -- to be used sparingly. - -Got rid of an unnecessary and troublesome declaration of vprintf(). - -Small improvement in locality of error messages. - -Try to diagnose use of array as scalar and vice versa -- to be improved in - the future. - -Fix for last bug fix for Cray division code--sigh. - -More changes to test suite to explicitly use sh. Also get rid of - a few generated files. - -Fixed off-by-one bug in string concatenation code. - -Fix for use of array that is passed in from a previous function parameter. - Addition to test suite for above. - -A number of changes associated with changing NF and access to fields - beyond the end of the current record. - -Change to missing/memcmp.c to avoid seg. fault on zero length input. - -Updates to test suite (including some inadvertently left out of the last patch) - to invoke sh explicitly (rather than rely on #!/bin/sh) and remove some - junk files. test/chem/good updated to correspond to bug fixes. - -Changes from 2.13.0 to 2.13.1 ------------------------------ - -More configs and PORTS. - -Fixed bug wherein a simple division produced an erroneous FPE, caused by - the Cray division workaround -- that code is now #ifdef'd only for - Cray *and* fixed. - -Fixed bug in modulus implementation -- it was very close to the above - code, so I noticed it. - -Fixed portability problem with limits.h in missing.c - -Fixed portability problem with tzname and daylight -- define TZNAME_MISSING - if strftime() is missing and tzname is also. - -Better support for Latin-1 character set. - -Fixed portability problem in test Makefile. - -Updated PROBLEMS file. - -=============================== gawk-2.13 released ========================= -Changes from 2.12.42 to 2.12.43 -------------------------------- - -Typo in awk.y - -Fixed up strftime.3 and added doc. for %V. - -Changes from 2.12.41 to 2.12.42 -------------------------------- - -Fixed bug in devopen() -- if you had write permission in /dev, - it would just create /dev/stdout etc.!! - -Final (?) VMS update. - -Make NeXT use GFMT_WORKAROUND - -Fixed bug in sub_common() for substitute on zero-length match. Improved the - code a bit while I was at it. - -Fixed grammar so that $i++ parses as ($i)++ - -Put support/* back in the distribution (didn't I already do this?!) - -Changes from 2.12.40 to 2.12.41 -------------------------------- - -VMS workaround for broken %g format. - -Changes from 2.12.39 to 2.12.40 -------------------------------- - -Minor man page update. - -Fixed latent bug in redirect(). - -Changes from 2.12.38 to 2.12.39 -------------------------------- - -Updates to test suite -- remove dependence on changing gawk.1 man page. - -Changes from 2.12.37 to 2.12.38 -------------------------------- - -Fixed bug in use of *= without whitespace following. - -VMS update. - -Updates to man page. - -Option handling updates in main.c - -test/manyfiles redone and added to bigtest. - -Fixed latent (on Sun) bug in handling of save_fs. - -Changes from 2.12.36 to 2.12.37 -------------------------------- - -Update REL in Makefile-dist. Incorporate test suite into main distribution. - -Minor fix in regtest. - -Changes from 2.12.35 to 2.12.36 -------------------------------- - -Release takes on dual personality -- 2.12.36 and 2.13.0 -- any further - patches before public release won't count for 2.13, although they will for - 2.12 -- be careful to avoid confusion! patchlevel.h will be the last thing - to change. - -Cray updates to deal with arithmetic problems. - -Minor test suite updates. - -Fixed latent bug in parser (freeing memory). - -Changes from 2.12.34 to 2.12.35 -------------------------------- - -VMS updates. - -Flush stdout at top of err() and stderr at bottom. - -Fixed bug in eval_condition() -- it wasn't testing for MAYBE_NUM and - doing the force_number(). - -Included the missing manyfiles.awk and a new test to catch the above bug which - I am amazed wasn't already caught by the test suite -- it's pretty basic. - -Changes from 2.12.33 to 2.12.34 -------------------------------- - -Atari updates -- including bug fix. - -More VMS updates -- also nuke vms/version.com. - -Fixed bug in handling of large numbers of redirections -- it was probably never - tested before (blush!). - -Minor rearrangement of code in r_force_number(). - -Made chem and regtest tests a bit more portable (Ultrix again). - -Added another test -- manyfiles -- not invoked under any other test -- very Unix - specific. - -Rough beginning of LIMITATIONS file -- need my AWK book to complete it. - -Changes from 2.12.32 to 2.12.33 -------------------------------- - -Expunge debug.? from various files. - -Remove vestiges of Floor and Ceil kludge. - -Special case integer division -- mainly for Cray, but maybe someone else - will benefit. - -Workaround for iop_close closing an output pipe descriptor on Cray -- - not conditional since I think it may fix a bug on SGI as well and I don't - think it can hurt elsewhere. - -Fixed memory leak in assoc_lookup(). - -Small cleanup in test suite. - -Changes from 2.12.31 to 2.12.32 -------------------------------- - -Nuked debug.c and debugging flag -- there are better ways. - -Nuked version.sh and version.c in subdirectories. - -Fixed bug in handling of IGNORECASE. - -Fixed bug when FIELDWIDTHS was set via -v option. - -Fixed (obscure) bug when $0 is assigned a numerical value. - -Fixed so that escape sequences in command-line assignments work (as it already - said in the comment). - -Added a few cases to test suite. - -Moved support/* back into distribution. - -VMS updates. - -Changes from 2.12.30 to 2.12.31 -------------------------------- - -Cosmetic manual page changes. - -Updated sunos3 config. - -Small changes in test suite including renaming files over 14 chars. in length. - -Changes from 2.12.29 to 2.12.30 -------------------------------- - -Bug fix for many string concatenations in a row. - -Changes from 2.12.28 to 2.12.29 -------------------------------- - -Minor cleanup in awk.y - -Minor VMS update. - -Minor atari update. - -Changes from 2.12.27 to 2.12.28 -------------------------------- - -Got rid of the debugging goop in eval.c -- there are better ways. - -Sequent port. - -VMS changes left out of the last patch -- sigh! config/vms.h renamed - to config/vms-conf.h. - -Fixed missing/tzset.c - -Removed use of gcvt() and GCVT_MISSING -- turns out it was no faster than - sprintf("%g") and caused all sorts of portability headaches. - -Tuned get_field() -- it was unnecessarily parsing the whole record on reference - to $0. - -Tuned interpret() a bit in the rule_node loop. - -In r_force_number(), worked around bug in Uglix strtod() and got rid of - ugly do{}while(0) at Michal's urging. - -Replaced do_deref() and deref with unref(node) -- much cleaner and a bit faster. - -Got rid of assign_number() -- contrary to comment, it was no faster than - just making a new node and freeing the old one. - -Replaced make_number() and tmp_number() with macros that call mk_number(). - -Changed freenode() and newnode() into macros -- the latter is getnode() - which calls more_nodes() as necessary. - -Changes from 2.12.26 to 2.12.27 -------------------------------- - -Completion of Cray 2 port (includes a kludge for floor() and ceil() - that may go or be changed -- I think that it may just be working around - a bug in chem that is being tweaked on the Cray). - -More VMS updates. - -Moved kludge over yacc's insertion of malloc and realloc declarations - from protos.h to the Makefile. - -Added a lisp interpreter in awk to the test suite. (Invoked under - bigtest.) - -Cleanup in r_force_number() -- I had never gotten around to a thorough - profile of the cache code and it turns out to be not worth it. - -Performance boost -- do lazy force_number()'ing for fields etc. i.e. - flag them (MAYBE_NUM) and call force_number only as necessary. - -Changes from 2.12.25 to 2.12.26 -------------------------------- - -Rework of regexp stuff so that dynamic regexps have reasonable - performance -- string used for compiled regexp is stored and - compared to new string -- if same, no recompilation is necessary. - Also, very dynamic regexps cause dfa-based searching to be turned - off. - -Code in dev_open() is back to returning fileno(std*) rather than - dup()ing it. This will be documented. Sorry for the run-around - on this. - -Minor atari updates. - -Minor vms update. - -Missing file from MSDOS port. - -Added warning (under lint) if third arg. of [g]sub is a constant and - handle it properly in the code (i.e. return how many matches). - -Changes from 2.12.24 to 2.12.25 -------------------------------- - -MSDOS port. - -Non-consequential changes to regexp variables in preparation for - a more serious change to fix a serious performance problem. - -Changes from 2.12.23 to 2.12.24 -------------------------------- - -Fixed bug in output flushing introduced a few patches back. This caused - serious performance losses. - -Changes from 2.12.22 to 2.12.23 -------------------------------- - -Accidentally left config/cray2-60 out of last patch. - -Added some missing dependencies to Makefile. - -Cleaned up mkconf a bit; made yacc the default parser (no alloca needed, - right?); added rs6000 hook for signed characters. - -Made regex.c with NO_ALLOCA undefined work. - -Fixed bug in dfa.c for systems where free(NULL) bombs. - -Deleted a few cant_happen()'s that *really* can't hapen. - -Changes from 2.12.21 to 2.12.22 -------------------------------- - -Added to config stuff the ability to choose YACC rather than bison. - -Fixed CHAR_UNSIGNED in config.h-dist. - -Second arg. of strtod() is char ** rather than const char **. - -stackb is now initially malloc()'ed since it may be realloc()'ed. - -VMS updates. - -Added SIZE_T_MISSING to config stuff and a default typedef to awk.h. - (Maybe it is not needed on any current systems??) - -re_compile_pattern()'s size is now size_t unconditionally. - -Changes from 2.12.20 to 2.12.21 -------------------------------- - -Corrected missing/gcvt.c. - -Got rid of use of dup2() and thus DUP_MISSING. - -Updated config/sgi33. - -Turned on (and fixed) in cmp_nodes() the behaviour that I *hope* will be in - POSIX 1003.2 for relational comparisons. - -Small updates to test suite. - -Changes from 2.12.19 to 2.12.20 -------------------------------- - -Sloppy, sloppy, sloppy!! I didn't even try to compile the last two - patches. This one fixes goofs in regex.c. - -Changes from 2.12.18 to 2.12.19 -------------------------------- - -Cleanup of last patch. - -Changes from 2.12.17 to 2.12.18 -------------------------------- - -Makefile renamed to Makefile-dist. - -Added alloca() configuration to mkconf. (A bit kludgey.) Just - add a single line containing ALLOCA_PW, ALLOCA_S or ALLOCA_C - to the appropriate config file to have Makefile-dist edited - accordingly. - -Reorganized output flushing to correspond with new semantics of - devopen() on "/dev/std*" etc. - -Fixed rest of last goof!! - -Save and restore errno in do_pathopen(). - -Miscellaneous atari updates. - -Get rid of the trailing comma in the NODETYPE definition (Cray - compiler won't take it). - -Try to make the use of `const' consistent since Cray compiler is - fussy about that. See the changes to `basename' and `myname'. - -It turns out that, according to section 3.8.3 (Macro Replacement) - of the ANSI Standard: ``If there are sequences of preprocessing - tokens within the list of arguments that would otherwise act as - preprocessing directives, the behavior is undefined.'' That means - that you cannot count on the behavior of the declaration of - re_compile_pattern in awk.h, and indeed the Cray compiler chokes on it. - -Replaced alloca with malloc/realloc/free in regex.c. It was much simpler - than expected. (Inside NO_ALLOCA for now -- by default no alloca.) - -Added a configuration file, config/cray60, for Unicos-6.0. - -Changes from 2.12.16 to 2.12.17 -------------------------------- - -Ooops. Goofed signal use in last patch. - -Changes from 2.12.15 to 2.12.16 -------------------------------- - -RENAMED *_dir to just * (e.g. missing_dir). - -Numerous VMS changes. - -Proper inclusion of atari and vms files. - -Added experimental (ifdef'd out) RELAXED_CONTINUATION and DEFAULT_FILETYPE - -- please comment on these! - -Moved pathopen() to io.c (sigh). - -Put local directory ahead in default AWKPATH. - -Added facility in mkconf to echo comments on stdout: lines beginning - with "#echo " will have the remainder of the line echoed when mkconf is run. - Any lines starting with "#" will otherwise be treated as comments. The - intent is to be able to say: - "#echo Make sure you uncomment alloca.c in the Makefile" - or the like. - -Prototype fix for V.4 - -Fixed version_string to not print leading @(#). - -Fixed FIELDWIDTHS to work with strict (turned out to be easy). - -Fixed conf for V.2. - -Changed semantics of /dev/fd/n to be like on real /dev/fd. - -Several configuration and updates in the makefile. - -Updated manpage. - -Include tzset.c and system.c from missing_dir that were accidently left out of - the last patch. - -Fixed bug in cmdline variable assignment -- arg was getting freed(!) in - call to variable. - -Backed out of parse-time constant folding for now, until I can figure out - how to do it right. - -Fixed devopen() so that getline <"-" works. - -Changes from 2.12.14 to 2.12.15 -------------------------------- - -Changed config/* to a condensed form that can be used with mkconf to generate - a config.h from config.h-dist -- much easier to maintain. Please check - carefully against what you had before for a particular system and report - any problems. vms.h remains separate since the stuff at the bottom - didn't quite fit the mkconf model -- hopefully cleared up later. - -Fixed bug in grammar -- didn't allow function definition to be separated from - other rules by a semi-colon. - -VMS fix to #includes in missing.c -- should we just be including awk.h? - -Updated README for texinfo.tex version. - -Updating of copyright in all .[chy] files. - -Added but commented out Michal's fix to strftime. - -Added tzset() emulation based on Rick Adams' code. Added TZSET_MISSING to - config.h-dist. - -Added strftime.3 man page for missing_dir - -More posix: func, **, **= don't work in -W posix - -More lint: ^, ^= not in old awk - -gawk.1: removed ref to -DNO_DEV_FD, other minor updating. - -Style change: pushbak becomes pushback() in yylex(). - -Changes from 2.12.13 to 2.12.14 -------------------------------- - -Better (?) organization of awk.h -- attempt to keep all system dependencies - near the top and move some of the non-general things out of the config.h - files. - -Change to handling of SYSTEM_MISSING. - -Small change to ultrix config. - -Do "/dev/fd/*" etc. checking at runtime. - -First pass at VMS port. - -Improvements to error handling (when lexeme spans buffers). - -Fixed backslash handling -- why didn't I notice this sooner? - -Added programs from book to test suite and new target "bigtest" to Makefile. - -Changes from 2.12.12 to 2.12.13 -------------------------------- - -Recognize OFS and ORS specially so that OFS = 9 works without efficiency hit. - Took advantage of opportunity to tune do_print*() for about 10% win on a - print with 5 args (i.e. small but significant). - -Somewhat pervasive changes to reconcile CONVFMT vs. OFMT. - -Better initialization of builtin vars. - -Make config/* consistent wrt STRTOL_MISSING. - -Small portability improvement to alloca.s - -Improvements to lint code in awk.y - -Replaced strtol() with a better one by Chris Torek. - -Changes from 2.12.11 to 2.12.12 -------------------------------- - -Added PORTS file to record successful ports. - -Added #define const to nothing if not STDC and added const to strtod() header. - -Added * to printf capabilities and partially implemented ' ' and '+' (has an - effect for %d only, silently ignored for other formats). I'm afraid that's - as far as I want to go before I look at a complete replacement for - do_sprintf(). - -Added warning for /regexp/ on LHS of MATCHOP. - -Changes from 2.12.10 to 2.12.11 -------------------------------- - -Small Makefile improvements. - -Some remaining nits from the NeXT port. - -Got rid of bcopy() define in awk.h -- not needed anymore (??) - -Changed private in builtin.c -- it is special on Sequent. - -Added subset implementation of strtol() and STRTOL_MISSING. - -A little bit of cleanup in debug.c, dfa.c. - -Changes from 2.12.9 to 2.12.10 ------------------------------- - -Redid compatability checking and checking for # of args. - -Removed all references to variables[] from outside awk.y, in preparation - for a more abstract interface to the symbol table. - -Got rid of a remaining use of bcopy() in regex.c. - -Changes from 2.12.8 to 2.12.9 ------------------------------ - -Portability improvements for atari, next and decstation. - -Bug fix in substr() -- wasn't handling 3rd arg. of -1 properly. - -Manpage updates. - -Moved support from src release to doc release. - -Updated FUTURES file. - -Added some "lint" warnings. - -Changes from 2.12.7 to 2.12.8 ------------------------------ - -Changed time() to systime(). - -Changed warning() in snode() to fatal(). - -strftime() now defaults second arg. to current time. - -Changes from 2.12.6 to 2.12.7 ------------------------------ - -Fixed bug in sub_common() involving inadequate allocation of a buffer. - -Added some missing files to the Makefile. - -Changes from 2.12.5 to 2.12.6 ------------------------------ - -Fixed bug wherein non-redirected getline could call iop_close() just - prior to a call from do_input(). - -Fixed bug in handling of /dev/stdout and /dev/stderr. - -Changes from 2.12.4 to 2.12.5 ------------------------------ - -Updated README and support directory. - -Changes from 2.12.3 to 2.12.4 ------------------------------ - -Updated CHANGES and TODO (should have been done in previous 2 patches). - -Changes from 2.12.2 to 2.12.3 ------------------------------ - -Brought regex.c and alloca.s into line with current FSF versions. - -Changes from 2.12.1 to 2.12.2 ------------------------------ - -Portability improvements; mostly moving system prototypes out of awk.h - -Introduction of strftime. - -Use of CONVFMT. - -Changes from 2.12 to 2.12.1 ------------------------------ - -Consolidated treatment of command-line assignments (thus correcting the --v treatment). - -Rationalized builtin-variable handling into a table-driven process, thus -simplifying variable() and eliminating spc_var(). - -Fixed bug in handling of command-line source that ended in a newline. - -Simplified install() and lookup(). - -Did away with double-mallocing of identifiers and now free second and later -instances of a name, after the first gets installed into the symbol table. - -Treat IGNORECASE specially, simplifying a lot of code, and allowing -checking against strict conformance only on setting it, rather than on each -pattern match. - -Fixed regexp matching when IGNORECASE is non-zero (broken when dfa.c was -added). - -Fixed bug where $0 was not being marked as valid, even after it was rebuilt. -This caused mangling of $0. - - -Changes from 2.11.1 to 2.12 ------------------------------ - -Makefile: - -Portability improvements in Makefile. -Move configuration stuff into config.h - -FSF files: - -Synchronized alloca.[cs] and regex.[ch] with FSF. - -array.c: - -Rationalized hash routines into one with a different algorithm. -delete() now works if the array is a local variable. -Changed interface of assoc_next() and avoided dereferencing past the end of the - array. - -awk.h: - -Merged non-prototype and prototype declarations in awk.h. -Expanded tree_eval #define to short-circuit more calls of r_tree_eval(). - -awk.y: - -Delinted some of the code in the grammar. -Fixed and improved some of the error message printing. -Changed to accomodate unlimited length source lines. -Line continuation now works as advertised. -Source lines can be arbitrarily long. -Refined grammar hacks so that /= assignment works. Regular expressions - starting with /= are recognized at the beginning of a line, after && or || - and after ~ or !~. More contexts can be added if necessary. -Fixed IGNORECASE (multiple scans for backslash). -Condensed expression_lists in array references. -Detect and warn for correct # args in builtin functions -- call most of them - with a fixed number (i.e. fill in defaults at parse-time rather than at - run-time). -Load ENVIRON only if it is referenced (detected at parse-time). -Treat NF, FS, RS, NR, FNR specially at parse time, to improve run time. -Fold constant expressions at parse time. -Do make_regexp() on third arg. of split() at parse tiem if it is a constant. - -builtin.c: - -srand() returns 0 the first time called. -Replaced alloca() with malloc() in do_sprintf(). -Fixed setting of RSTART and RLENGTH in do_match(). -Got rid of get_{one,two,three} and allowance for variable # of args. at - run-time -- this is now done at parse-time. -Fixed latent bug in [g]sub whereby changes to $0 would never get made. -Rewrote much of sub_common() for simplicity and performance. -Added ctime() and time() builtin functions (unless -DSTRICT). ctime() returns - a time string like the C function, given the number of seconds since the epoch - and time() returns the current time in seconds. -do_sprintf() now checks for mismatch between format string and number of - arguments supplied. - -dfa.c - -This is borrowed (almost unmodified) from GNU grep to provide faster searches. - -eval.c - -Node_var, Node_var_array and Node_param_list handled from macro rather - than in r_tree_eval(). -Changed cmp_nodes() to not do a force_number() -- this, combined with a - force_number() on ARGV[] and ENVIRON[] brings it into line with other awks -Greatly simplified cmp_nodes(). -Separated out Node_NF, Node_FS, Node_RS, Node_NR and Node_FNR in get_lhs(). -All adjacent string concatenations now done at once. - -field.c - -Added support for FIELDWIDTHS. -Fixed bug in get_field() whereby changes to a field were not always - properly reflected in $0. -Reordered tests in parse_field() so that reference off the end of the buffer - doesn't happen. -set_FS() now sets *parse_field i.e. routine to call depending on type of FS. -It also does make_regexp() for FS if needed. get_field() passes FS_regexp - to re_parse_field(), as does do_split(). -Changes to set_field() and set_record() to avoid malloc'ing and free'ing the - field nodes repeatedly. The fields now just point into $0 unless they are - assigned to another variable or changed. force_number() on the field is - *only* done when the field is needed. - -gawk.1 - -Fixed troff formatting problem on .TP lines. - -io.c - -Moved some code out into iop.c. -Output from pipes and system() calls is properly synchronized. -Status from pipe close properly returned. -Bug in getline with no redirect fixed. - -iop.c - -This file contains a totally revamped get_a_record and associated code. - -main.c - -Command line programs no longer use a temporary file. -Therefore, tmpnam() no longer required. -Deprecated -a and -e options -- they will go away in the next release, - but for now they cause a warning. -Moved -C, -V, -c options to -W ala posix. -Added -W posix option: throw out \x -Added -W lint option. - - -node.c - -force_number() now allows pure numerics to have leading whitespace. -Added make_string facility to optimize case of adding an already malloc'd - string. -Cleaned up and simplified do_deref(). -Fixed bug in handling of stref==255 in do_deref(). - -re.c - -contains the interface to regexp code - -Changes from 2.11.1 to FSF version of same ------------------------------------------- -Thu Jan 4 14:19:30 1990 Jim Kingdon (kingdon at albert) - - * Makefile (YACC): Add -y to bison part. - - * missing.c: Add #include <stdio.h>. - -Sun Dec 24 16:16:05 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu) - - * Makefile: Add (commented out) default defines for Sony News. - - * awk.h: Move declaration of vprintf so it will compile when - -DVPRINTF_MISSING is defined. - -Mon Nov 13 18:54:08 1989 Robert J. Chassell (bob at apple-gunkies.ai.mit.edu) - - * gawk.texinfo: changed @-commands that are not part of the - standard, currently released texinfmt.el to those that are. - Otherwise, only people with the as-yet unreleased makeinfo.c can - format this file. - -Changes from 2.11beta to 2.11.1 (production) --------------------------------------------- - -Went from "beta" to production status!!! - -Now flushes stdout before closing pipes or redirected files to -synchronize output. - -MS-DOS changes added in. - -Signal handler return type parameterized in Makefile and awk.h and -some lint removed. debug.c cleaned up. - -Fixed FS splitting to never match null strings, per book. - -Correction to the manual's description of FS. - -Some compilers break on char *foo = "string" + 4 so fixed version.sh and -main.c. - -Changes from 2.10beta to 2.11beta ---------------------------------- - -This release fixes all reported bugs that we could reproduce. Probably -some of the changes are not documented here. - -The next release will probably not be a beta release! - -The most important change is the addition of the -nostalgia option. :-) - -The documentation has been improved and brought up-to-date. - -There has been a lot of general cleaning up of the code that is not otherwise -documented here. There has been a movement toward using standard-conforming -library routines and providing them (in missing.d) for systems lacking them. -Improved (hopefully) configuration through Makfile modifications and missing.c. -In particular, straightened out confusion over vprintf #defines, declarations -etc. - -Deleted RCS log comments from source, to reduce source size by about one third. -Most of them were horribly out-of-date, anyway. - -Renamed source files to reflect (for the most part) their contents. - -More and improved error messages. Cleanup and fixes to yyerror(). -String constants are not altered in input buffer, so error messages come out -better. Fixed usage message. Make use of ANSI C strerror() function -(provided). - -Plugged many more memory leaks. The memory consumption is now quite -reasonable over a wide range of programs. - -Uses volatile declaration if STDC > 0 to avoid problems due to longjmp. - -New -a and -e options to use awk or egrep style regexps, respectively, -since POSIX says awk should use egrep regexps. Default is -a. - -Added -v option for setting variables before the first file is encountered. -Version information now uses -V and copyleft uses -C. - -Added a patchlevel.h file and its use for -V and -C. - -Append_right() optimized for major improvement to programs with a *lot* -of statements. - -Operator precedence has been corrected to match draft Posix. - -Tightened up grammar for builtin functions so that only length -may be called without arguments or parentheses. - -/regex/ is now a normal expression that can appear in any expression -context. - -Allow /= to begin a regexp. Allow ..[../..].. in a regexp. - -Allow empty compound statements ({}). - -Made return and next illegal outside a function and in BEGIN/END respectively. - -Division by zero is now illegal and causes a fatal error. - -Fixed exponentiation so that x ^ 0 and x ^= 0 both return 1. - -Fixed do_sqrt, do_log, and do_exp to do argument/return checking and -print an error message, per the manual. - -Fixed main to catch SIGSEGV to get source and data file line numbers. - -Fixed yyerror to print the ^ at the beginning of the bad token, not the end. - -Fix to substr() builtin: it was failing if the arguments -weren't already strings. - -Added new node value flag NUMERIC to indicate that a variable is -purely a number as opposed to type NUM which indicates that -the node's numeric value is valid. This is set in make_number(), -tmp_number and r_force_number() when appropriate and used in -cmp_nodes(). This fixed a bug in comparison of variables that had -numeric prefixes. The new code uses strtod() and eliminates is_a_number(). -A simple strtod() is provided for systems lacking one. It does no -overflow checking, so could be improved. - -Simplification and efficiency improvement in force_string. - -Added performance tweak in r_force_number(). - -Fixed a bug with nested loops and break/continue in functions. - -Fixed inconsistency in handling of empty fields when $0 has to be rebuilt. -Happens to simplify rebuild_record(). - -Cleaned up the code associated with opening a pipe for reading. Gawk -now has its own popen routine (gawk_popen) that allocates an IOBUF -and keeps track of the pid of the child process. gawk_pclose -marks the appropriate child as defunct in the right struct redirect. - -Cleaned up and fixed close_redir(). - -Fixed an obscure bug to do with redirection. Intermingled ">" and ">>" -redirects did not output in a predictable order. - -Improved handling of output buffering: now all print[f]s redirected to a tty -or pipe are flushed immediately and non-redirected output to a tty is flushed -before the next input record is read. - -Fixed a bug in get_a_record() where bcopy() could have copied over -a random pointer. - -Fixed a bug when RS="" and records separated by multiple blank lines. - -Got rid of SLOWIO code which was out-of-date anyway. - -Fix in get_field() for case where $0 is changed and then $(n) are -changed and then $0 is used. - -Fixed infinite loop on failure to open file for reading from getline. -Now handles redirect file open failures properly. - -Filenames such as /dev/stdin now allowed on the command line as well as -in redirects. - -Fixed so that gawk '$1' where $1 is a zero tests false. - -Fixed parsing so that `RLENGTH -1' parses the same as `RLENGTH - 1', -for example. - -The return from a user-defined function now defaults to the Null node. -This fixes a core-dump-causing bug when the return value of a function -is used and that function returns no value. - -Now catches floating point exceptions to avoid core dumps. - -Bug fix for deleting elements of an array -- under some conditions, it was -deleting more than one element at a time. - -Fix in AWKPATH code for running off the end of the string. - -Fixed handling of precision in *printf calls. %0.2d now works properly, -as does %c. [s]printf now recognizes %i and %X. - -Fixed a bug in printing of very large (>240) strings. - -Cleaned up erroneous behaviour for RS == "". - -Added IGNORECASE support to index(). - -Simplified and fixed newnode/freenode. - -Fixed reference to $(anything) in a BEGIN block. - -Eliminated use of USG rand48(). - -Bug fix in force_string for machines with 16-bit ints. - -Replaced use of mktemp() with tmpnam() and provided a partial implementation of -the latter for systems that don't have it. - -Added a portability check for includes in io.c. - -Minor portability fix in alloc.c plus addition of xmalloc(). - -Portability fix: on UMAX4.2, st_blksize is zero for a pipe, thus breaking -iop_alloc() -- fixed. - -Workaround for compiler bug on Sun386i in do_sprintf. - -More and improved prototypes in awk.h. - -Consolidated C escape parsing code into one place. - -strict flag is now turned on only when invoked with compatability option. -It now applies to fewer things. - -Changed cast of f._ptr in vprintf.c from (unsigned char *) to (char *). -Hopefully this is right for the systems that use this code (I don't). - -Support for pipes under MSDOS added. |