From: david@cs.dal.ca (David Trueman)
Newsgroups: gnu.announce,gnu.utils.bug
Subject: announcing gawk-2.14
Date: 18 Nov 92 00:49:17 GMT
Followup-To: bug-gnu-utils@prep.ai.mit.edu
To: bug-gnu-utils@prep.ai.mit.edu, info-gnu@prep.ai.mit.edu
X-Mailer: ELM [version 2.3 PL11]

Version 2.14 of gawk is now available for ftp on prep.ai.mit.edu as
/pub/gnu/gawk-2.14.tar.Z.  This version contains many bug fixes, a
substantially updated manual and one new feature as detailed below.
We have not used autoconf in this version, but that is high on the
TODO list, so you can expect a patch that contains that support.

We certainly never intended that it would take so long to get this
version out, but young families intervened.  We are committed to
keeping this version more up to date, with patches as the need arises.

We are grateful for help from many people, especially our pretesters.
Some of these people are listed in the ACKNOWLEDGMENT file in the
distribution, but a large number of people sent bug reports and/or
fixes and I'm afraid that I was not organized enough to keep track of
them all, so I cannot acknowledge them individually.

David Trueman
Arnold Robbins


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().

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 chage 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 predecssor 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.

Plugged small memory leak in sub_common().

Fixed several bugs in [g]sub() for no match found or the match is 0-length.

Fixed bug where in gsub() a pattern anchorred at the beginning would still
  substitute throughout the string.

make test does not assume the . 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 whitspace 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.


      [ Soon to be at these ftp sites as well.  Please try them
	before prep.ai.mit.edu!  thanx -gnu@prep.ai.mit.edu

	Japan: ftp.cs.titech.ac.jp, utsun.s.u-tokyo.ac.jp:ftpsync/prep
	Australia: archie.oz.au:gnu
	Europe: src.doc.ic.ac.uk:gnu, ftp.informatik.tu-muenchen.de,
	  ftp.informatik.rwth-aachen.de:pub/gnu,
          nic.funet.fi:pub/gnu, ugle.unit.no, isy.liu.se,
	  ftp.stacken.kth.se, sunic.sunet.se, ftp.win.tue.nl,
	  ftp.diku.dk, ftp.eunet.ch, archive.eu.net
	United States: wuarchive.wustl.edu ftp.cs.widener.edu,
	  uxc.cso.uiuc.edu, col.hp.com, gatekeeper.dec.com:pub/GNU,
	  ftp.uu.net:systems/gnu

	For information on how to order GNU software on tape, check
	the file etc/DISTRIB in the GNU Emacs distribution, or e-mail
	a request to:	gnu@prep.ai.mit.edu
      ]
Xref: sparky gnu.announce:152 gnu.utils.bug:2083