home *** CD-ROM | disk | FTP | other *** search
/ ftp.uni-stuttgart.de/pub/systems/acorn/ / Acorn.tar / Acorn / acornet / dev / gawk.spk / gawk-2154 / NEWS < prev    next >
Text File  |  1994-01-16  |  43KB  |  1,393 lines

  1. Changes from 2.15.3 to 2.15.4
  2. -----------------------------
  3.  
  4. Lots of lint fixes, and do_sprintf made mostly ANSI C compatible.
  5.  
  6. Man page updated and edited.
  7.  
  8. Copyrights updated.
  9.  
  10. Arrays now grow dynamically, initially scaling up by an order of magnitude
  11.   and then doubling, up to ~ 64K.  This should keep gawk's performance
  12.   graceful under heavy load.
  13.  
  14. New `delete array' feature added.  Only documented in the man page.
  15.  
  16. Switched to dfa and regex suites from grep-2.0. These offer the ability to
  17.   move to POSIX regexps in the next release.
  18.  
  19. Disabled GNU regex ops.
  20.  
  21. Research awk -m option now recognized. It does nothing in gawk, since gawk
  22.   has no static limits.  Only documented in the man page.
  23.  
  24. New bionic (faster, better, stronger than before) hashing function.
  25.  
  26. Bug fix in argument handling. `gawk -X' now notices there was no program.
  27.   Additional bug fixes to make --compat and --lint work again.
  28.  
  29. Many changes for 16-bit cleanliness.
  30.  
  31. Add explicit alloca(0) in io.c to recover space from C alloca.
  32.  
  33. Fixed file descriptor leak in io.c.
  34.  
  35. The --version option now follows the GNU coding standards and exits.
  36.  
  37. Fixed several prototypes in protos.h.
  38.  
  39. Several tests updated. On Solaris, warn that the out? tests will fail.
  40.  
  41. Configuration files for SunOS with cc and Solaris 2.x added.
  42.  
  43. Improved error messages in awk.y on gawk extensions if do_unix or do_compat.
  44.  
  45. INSTALL file added.
  46.  
  47. Fixed Atari Makefile and several VMS specific changes.
  48.  
  49. Better conversion of numbers to strings on systems with broken sprintfs.
  50.  
  51. Changes from 2.15.2 to 2.15.3
  52. -----------------------------
  53.  
  54. Increased HASHSIZE to a decent number, 127 was way too small.
  55.  
  56. FILENAME is now the null string in a BEGIN rule.
  57.  
  58. Argument processing fixed for invalid options and missing arguments.
  59.  
  60. This version will build on VMS.  This included a fix to close all files
  61.    and pipes opened with redirections before closing stdout and stderr.
  62.  
  63. More getpgrp() defines.
  64.  
  65. Changes for BSD44:  <sys/param.h> in io.c and Makefile.bsd44.
  66.  
  67. All directories in the distribution are now writeable.
  68.  
  69. Separated LDFLAGS and CFLAGS in Makefile.  CFLAGS can now be overridden by
  70.   user.
  71.  
  72. Make dist now builds compressed archives ending in .gz and runs doschk.
  73.  
  74. Amiga port.
  75.  
  76. New getopt.c fixes Alpha OSF/1 problem.
  77.  
  78. Make clean now removes possible test output.
  79.  
  80. Improved algorithm for multiple adjacent string concatenations leads to
  81.   performance improvements.
  82.  
  83. Fix nasty bug whereby command-line assignments, both with -v and at run time,
  84.    could create variables with syntactically illegal names.
  85.  
  86. Fix obscure bug in printf with %0 flag and filling.
  87.  
  88. Add a lint check for substr if provided length exceeds remaining characters
  89.    in string.
  90.  
  91. Update atari support.
  92.  
  93. PC support enhanced to include support for both DOS and OS/2. (Lots more
  94.    #ifdefs. Sigh.)
  95.  
  96. Config files for Hitachi Unix and OSF/1, courtesy of Yoko Morishita
  97.    (morisita@sra.co.jp)
  98.  
  99. Changes from 2.15.1 to 2.15.2
  100. -----------------------------
  101.  
  102. Additions to the FUTURES file.
  103.  
  104. Document undefined order of output when using both standard output
  105.   and /dev/stdout or any of the /dev output files that gawk emulates in
  106.   the absence of OS support.
  107.  
  108. Clean up the distribution generation in Makefile.in:  the info files are
  109.   now included, the distributed files are marked read-only and patched
  110.   distributions are now unpacked in a directory named with the patch level.
  111.  
  112. Changes from 2.15 to 2.15.1
  113. ---------------------------
  114.  
  115. Close stdout and stderr before all redirections on program exit.  This allows
  116.   detection of write errors and also fixes the messages test on Solaris 2.x.
  117.  
  118. Removed YYMAXDEPTH define in awk.y which was limiting the parser stack depth.
  119.  
  120. Changes to config/bsd44, Makefile.bsd44 and configure to bring it into line
  121.   with the BSD4.4 release.
  122.  
  123. Changed Makefile to use prefix, exec_prefix, bindir etc.
  124.  
  125. make install now installs info files.
  126.  
  127. make install now sets permissions on installed files.
  128.  
  129. Make targets added:  uninstall, distclean, mostlyclean and realclean.
  130.  
  131. Added config.h to cleaner and clobber make targets.
  132.  
  133. Changes to config/{hpux8x,sysv3,sysv4,ultrix41} to deal with alloca().
  134.  
  135. Change to getopt.h for portability.
  136.  
  137. Added more special cases to the getpgrp() call.
  138.  
  139. Added README.ibmrt-aos and config/ibmrt-aos.
  140.  
  141. Changes from 2.14 to 2.15
  142. ---------------------------
  143.  
  144. Command-line source can now be mixed with library functions.
  145.  
  146. ARGIND variable tracks index in ARGV of FILENAME.
  147.  
  148. GNU style long options in addition to short options.
  149.  
  150. Plan 9 style special files interpreted by gawk:
  151.         /dev/pid
  152.         /dev/ppid
  153.         /dev/pgrpid
  154.         /dev/user
  155.                 $1 = getuid
  156.                 $2 = geteuid
  157.                 $3 = getgid
  158.                 $4 = getegid
  159.                 $5 ... $NF = getgroups if supported
  160.  
  161. ERRNO variable contains error string if getline or close fails.
  162.  
  163. Very old options -a and -e have gone away.
  164.  
  165. Inftest has been removed from the default target in test/Makefile -- the
  166.   results were too machine specific and resulted in too many false alarms.
  167.  
  168. A README.amiga has been added.
  169.  
  170. The "too many arguments supplied for format string" warning message is only
  171.   in effect under the lint option.
  172.  
  173. Code improvements in dfa.c.
  174.  
  175. Fixed all reported bugs:
  176.  
  177.     Writes are checked for failure (such as full filesystem).
  178.  
  179.     Stopped (at least some) runaway error messages.
  180.  
  181.     gsub(/^/, "x") does the right thing for $0 of 0, 1, or more length.
  182.  
  183.     close() on a command being piped to a getline now works properly.
  184.  
  185.     The input record will no longer be freed upon an explicit close()
  186.     of the input file.
  187.  
  188.     A NUL character in FS now works.
  189.  
  190.     In a substitute, \\& now means a literal backslash followed by what
  191.     was matched.
  192.  
  193.     Integer overflow of substring length in substr() is caught.
  194.  
  195.     An input record without a newline termination is handled properly.
  196.  
  197.     In io.c, check is against only EMFILE so that system file table
  198.       is not filled.
  199.  
  200.     Renamed all files with names longer than 14 characters.
  201.  
  202.     Escaped characters in regular expressions were being lost when 
  203.       IGNORECASE was used.
  204.  
  205.     Long source lines were not being handled properly.
  206.  
  207.     Sourcefiles that ended in a tab but no newline were bombing.
  208.  
  209.     Patterns that could match zero characters in split() were not working
  210.       properly.
  211.  
  212.     The parsedebug option was not working.
  213.  
  214.     The grammar was being a bit too lenient, allowing some very dubious
  215.       programs to pass.
  216.  
  217.     Compilation with DEBUG defined now works.
  218.  
  219.     A variable read in with getline was not being treated as a potential
  220.       number.
  221.  
  222.     Array subscripts were not always of string type.
  223.  
  224.  
  225. Changes from 2.13.2 to 2.14
  226. ---------------------------
  227.  
  228. Updated manual!
  229.  
  230. Added "next file" to skip efficiently to the next input file.
  231.  
  232. Fixed potential of overflowing buffer in do_sprintf().
  233.  
  234. Plugged small memory leak in sub_common().
  235.  
  236. EOF on a redirect is now "sticky" -- it can only be cleared by close()ing
  237.   the pipe or file.
  238.  
  239. Now works if used via a #! /bin/gawk line at the top of an executable file
  240.   when that line ends with whitespace.
  241.  
  242. Added some checks to the grammar to catch redefinition of builtin functions.
  243.   This could eventually be the basis for an extension to allow redefining
  244.   functions, but in the mean time it's a good error catching facility.
  245.  
  246. Negative integer exponents now work.
  247.  
  248. Modified do_system() to make sure it had a non-null string to be passed
  249.   to system(3). Thus, system("") will flush any pending output but not go
  250.   through the overhead of forking an un-needed shell.
  251.  
  252. A fix to floating point comparisons so that NaNs compare right on IEEE systems.
  253.  
  254. Added code to make sure we're not opening directories for reading and such.
  255.  
  256. Added code to do better diagnoses of weird or null file names.
  257.  
  258. Allow continue outside of a loop, unless in strict posix mode.  Lint option
  259.   will issue warning.
  260.  
  261. New missing/strftime.c.  There has been one chage that affects gawk.  Posix
  262.   now defines a %V conversion so the vms conversion has been changed to %v.
  263.   If this version is used with gawk -Wlint and they use %V in a call to
  264.   strftime, they'll get a warning.
  265.  
  266. Error messages now conform to GNU standard (I hope).
  267.  
  268. Changed comparisons to conform to the  description found in the file POSIX.
  269.   This is inconsistent with the current POSIX draft, but that is broken.
  270.   Hopefully the final POSIX standard will conform to this version.
  271.   (Alas, this will have to wait for 1003.2b, which will be a revision to
  272.   the 1003.2 standard.  That standard has been frozen with the broken
  273.   comparison rules.)
  274.  
  275. The length of a string was a short and now is a size_t.
  276.  
  277. Updated VMS help.
  278.  
  279. Added quite a few new tests to the test suite and deleted many due to lack of
  280.   written releases.  Test output is only removed if it is identical to the
  281.   "good" output.
  282.  
  283. Fixed a couple of bugs for reference to $0 when $0 is "" -- particularly in
  284.   a BEGIN block.
  285.  
  286. Fixed premature freeing in construct "$0 = $0".
  287.  
  288. Removed the call to wait_any() in gawk_popen(), since on at least some systems,
  289.   if gawk's input was from a pipe, the predecssor process in the pipe was a
  290.   child of gawk and this caused a deadlock.
  291.  
  292. Regexp can (once again) match a newline, if given explicitly.
  293.  
  294. nextopen() makes sure file name is null terminated.
  295.  
  296. Fixed VMS pipe simulation.  Improved VMS I/O performance.
  297.  
  298. Catch . used in variable names.
  299.  
  300. Fixed bug in getline without redirect from a file -- it was quitting after the
  301.   first EOF, rather than trying the next file.
  302.  
  303. Fixed bug in treatment of backslash at the end of a string -- it was bombing
  304.   rather than doing something sensible.  It is not clear what this should mean,
  305.   but for now I issue a warning and take it as a literal backslash.
  306.  
  307. Moved setting of regexp syntax to before the option parsing in main(), to
  308.   handle things like -v FS='[.,;]'
  309.  
  310. Fixed bug when NF is set by user -- fields_arr must be expanded if necessary
  311.   and "new" fields must be initialized.
  312.  
  313. Fixed several bugs in [g]sub() for no match found or the match is 0-length.
  314.  
  315. Fixed bug where in gsub() a pattern anchorred at the beginning would still
  316.   substitute throughout the string.
  317.  
  318. make test does not assume the . is in PATH.
  319.  
  320. Fixed bug when a field beyond the end of the record was requested after
  321.   $0 was altered (directly or indirectly).
  322.  
  323. Fixed bug for assignment to field beyond end of record -- the assigned value
  324.   was not found on subsequent reference to that field.
  325.  
  326. Fixed bug for FS a regexp and it matches at the end of a record.
  327.  
  328. Fixed memory leak for an array local to a function.
  329.  
  330. Fixed hanging of pipe redirection to getline
  331.  
  332. Fixed coredump on access to $0 inside BEGIN block.
  333.  
  334. Fixed treatment of RS = "".  It now parses the fields correctly and strips
  335.   leading whitspace from a record if FS is a space.
  336.  
  337. Fixed faking of /dev/stdin.
  338.  
  339. Fixed problem with x += x
  340.  
  341. Use of scalar as array and vice versa is now detected.
  342.  
  343. IGNORECASE now obeyed for FS (even if FS is a single alphabetic character).
  344.  
  345. Switch to GPL version 2.
  346.  
  347. Renamed awk.tab.c to awktab.c for MSDOS and VMS tar programs.
  348.  
  349. Renamed this file (CHANGES) to NEWS.
  350.  
  351. Use fmod() instead of modf() and provide FMOD_MISSING #define to undo
  352.   this change.
  353.  
  354. Correct the volatile declarations in eval.c.
  355.  
  356. Avoid errant closing of the file descriptors for stdin, stdout and stderr.
  357.  
  358. Be more flexible about where semi-colons can occur in programs.
  359.  
  360. Check for write errors on all output, not just on close().
  361.  
  362. Eliminate the need for missing/{strtol.c,vprintf.c}.
  363.  
  364. Use GNU getopt and eliminate missing/getopt.c.
  365.  
  366. More "lint" checking.
  367.  
  368.  
  369. Changes from 2.13.1 to 2.13.2
  370. -----------------------------
  371.  
  372. Toward conformity with GNU standards, configure is a link to mkconf, the latter
  373.   to disappear in the next major release.
  374.  
  375. Update to config/bsd43.
  376.  
  377. Added config/apollo, config/msc60, config/cray2-50, config/interactive2.2
  378.  
  379. sgi33.cc added for compilation using cc ratther than gcc.
  380.  
  381. Ultrix41 now propagates to config.h properly -- as part of a general
  382.   mechanism in configure for kludges -- #define anything from a config file
  383.   just gets tacked onto the end of config.h -- to be used sparingly.
  384.  
  385. Got rid of an unnecessary and troublesome declaration of vprintf().
  386.  
  387. Small improvement in locality of error messages.
  388.  
  389. Try to diagnose use of array as scalar and vice versa -- to be improved in
  390.   the future.
  391.  
  392. Fix for last bug fix for Cray division code--sigh.
  393.  
  394. More changes to test suite to explicitly use sh.  Also get rid of 
  395.   a few generated files.
  396.  
  397. Fixed off-by-one bug in string concatenation code.
  398.  
  399. Fix for use of array that is passed in from a previous function parameter.
  400.   Addition to test suite for above.
  401.  
  402. A number of changes associated with changing NF and access to fields
  403.   beyond the end of the current record.
  404.  
  405. Change to missing/memcmp.c to avoid seg. fault on zero length input.
  406.  
  407. Updates to test suite (including some inadvertently left out of the last patch)
  408.   to invoke sh explicitly (rather than rely on #!/bin/sh) and remove some
  409.   junk files.  test/chem/good updated to correspond to bug fixes.
  410.  
  411. Changes from 2.13.0 to 2.13.1
  412. -----------------------------
  413.  
  414. More configs and PORTS.
  415.  
  416. Fixed bug wherein a simple division produced an erroneous FPE, caused by
  417.   the Cray division workaround -- that code is now #ifdef'd only for
  418.   Cray *and* fixed.
  419.  
  420. Fixed bug in modulus implementation -- it was very close to the above
  421.   code, so I noticed it.
  422.  
  423. Fixed portability problem with limits.h in missing.c
  424.  
  425. Fixed portability problem with tzname and daylight -- define TZNAME_MISSING
  426.   if strftime() is missing and tzname is also.
  427.  
  428. Better support for Latin-1 character set.
  429.  
  430. Fixed portability problem in test Makefile.
  431.  
  432. Updated PROBLEMS file.
  433.  
  434. =============================== gawk-2.13 released =========================
  435. Changes from 2.12.42 to 2.12.43
  436. -------------------------------
  437.  
  438. Typo in awk.y
  439.  
  440. Fixed up strftime.3 and added doc. for %V.
  441.  
  442. Changes from 2.12.41 to 2.12.42
  443. -------------------------------
  444.  
  445. Fixed bug in devopen() -- if you had write permission in /dev,
  446.   it would just create /dev/stdout etc.!!
  447.  
  448. Final (?) VMS update.
  449.  
  450. Make NeXT use GFMT_WORKAROUND
  451.  
  452. Fixed bug in sub_common() for substitute on zero-length match.  Improved the
  453.   code a bit while I was at it.
  454.  
  455. Fixed grammar so that $i++ parses as ($i)++
  456.  
  457. Put support/* back in the distribution (didn't I already do this?!)
  458.  
  459. Changes from 2.12.40 to 2.12.41
  460. -------------------------------
  461.  
  462. VMS workaround for broken %g format.
  463.  
  464. Changes from 2.12.39 to 2.12.40
  465. -------------------------------
  466.  
  467. Minor man page update.
  468.  
  469. Fixed latent bug in redirect().
  470.  
  471. Changes from 2.12.38 to 2.12.39
  472. -------------------------------
  473.  
  474. Updates to test suite -- remove dependence on changing gawk.1 man page.
  475.  
  476. Changes from 2.12.37 to 2.12.38
  477. -------------------------------
  478.  
  479. Fixed bug in use of *= without whitespace following.
  480.  
  481. VMS update.
  482.  
  483. Updates to man page.
  484.  
  485. Option handling updates in main.c
  486.  
  487. test/manyfiles redone and added to bigtest.
  488.  
  489. Fixed latent (on Sun) bug in handling of save_fs.
  490.  
  491. Changes from 2.12.36 to 2.12.37
  492. -------------------------------
  493.  
  494. Update REL in Makefile-dist.  Incorporate test suite into main distribution.
  495.  
  496. Minor fix in regtest.
  497.  
  498. Changes from 2.12.35 to 2.12.36
  499. -------------------------------
  500.  
  501. Release takes on dual personality -- 2.12.36 and 2.13.0 -- any further
  502.   patches before public release won't count for 2.13, although they will for
  503.   2.12 -- be careful to avoid confusion!  patchlevel.h will be the last thing
  504.   to change.
  505.  
  506. Cray updates to deal with arithmetic problems.
  507.  
  508. Minor test suite updates.
  509.  
  510. Fixed latent bug in parser (freeing memory).
  511.  
  512. Changes from 2.12.34 to 2.12.35
  513. -------------------------------
  514.  
  515. VMS updates.
  516.  
  517. Flush stdout at top of err() and stderr at bottom.
  518.  
  519. Fixed bug in eval_condition() -- it wasn't testing for MAYBE_NUM and
  520.   doing the force_number().
  521.  
  522. Included the missing manyfiles.awk and a new test to catch the above bug which
  523.   I am amazed wasn't already caught by the test suite -- it's pretty basic.
  524.  
  525. Changes from 2.12.33 to 2.12.34
  526. -------------------------------
  527.  
  528. Atari updates -- including bug fix.
  529.  
  530. More VMS updates -- also nuke vms/version.com.
  531.  
  532. Fixed bug in handling of large numbers of redirections -- it was probably never
  533.   tested before (blush!).
  534.  
  535. Minor rearrangement of code in r_force_number().
  536.  
  537. Made chem and regtest tests a bit more portable (Ultrix again).
  538.  
  539. Added another test -- manyfiles -- not invoked under any other test -- very Unix
  540.   specific.
  541.  
  542. Rough beginning of LIMITATIONS file -- need my AWK book to complete it.
  543.  
  544. Changes from 2.12.32 to 2.12.33
  545. -------------------------------
  546.  
  547. Expunge debug.? from various files.
  548.  
  549. Remove vestiges of Floor and Ceil kludge.
  550.  
  551. Special case integer division -- mainly for Cray, but maybe someone else
  552.   will benefit.
  553.  
  554. Workaround for iop_close closing an output pipe descriptor on Cray --
  555.   not conditional since I think it may fix a bug on SGI as well and I don't
  556.   think it can hurt elsewhere.
  557.  
  558. Fixed memory leak in assoc_lookup().
  559.  
  560. Small cleanup in test suite.
  561.  
  562. Changes from 2.12.31 to 2.12.32
  563. -------------------------------
  564.  
  565. Nuked debug.c and debugging flag -- there are better ways.
  566.  
  567. Nuked version.sh and version.c in subdirectories.
  568.  
  569. Fixed bug in handling of IGNORECASE.
  570.  
  571. Fixed bug when FIELDWIDTHS was set via -v option.
  572.  
  573. Fixed (obscure) bug when $0 is assigned a numerical value.
  574.  
  575. Fixed so that escape sequences in command-line assignments work (as it already
  576.   said in the comment).
  577.  
  578. Added a few cases to test suite.
  579.  
  580. Moved support/* back into distribution.
  581.  
  582. VMS updates.
  583.  
  584. Changes from 2.12.30 to 2.12.31
  585. -------------------------------
  586.  
  587. Cosmetic manual page changes.
  588.  
  589. Updated sunos3 config.
  590.  
  591. Small changes in test suite including renaming files over 14 chars. in length.
  592.  
  593. Changes from 2.12.29 to 2.12.30
  594. -------------------------------
  595.  
  596. Bug fix for many string concatenations in a row.
  597.  
  598. Changes from 2.12.28 to 2.12.29
  599. -------------------------------
  600.  
  601. Minor cleanup in awk.y
  602.  
  603. Minor VMS update.
  604.  
  605. Minor atari update.
  606.  
  607. Changes from 2.12.27 to 2.12.28
  608. -------------------------------
  609.  
  610. Got rid of the debugging goop in eval.c -- there are better ways.
  611.  
  612. Sequent port.
  613.  
  614. VMS changes left out of the last patch -- sigh!  config/vms.h renamed
  615.   to config/vms-conf.h.
  616.  
  617. Fixed missing/tzset.c
  618.  
  619. Removed use of gcvt() and GCVT_MISSING -- turns out it was no faster than
  620.   sprintf("%g") and caused all sorts of portability headaches.
  621.  
  622. Tuned get_field() -- it was unnecessarily parsing the whole record on reference
  623.   to $0.
  624.  
  625. Tuned interpret() a bit in the rule_node loop.
  626.  
  627. In r_force_number(), worked around bug in Uglix strtod() and got rid of 
  628.   ugly do{}while(0) at Michal's urging.
  629.  
  630. Replaced do_deref() and deref with unref(node) -- much cleaner and a bit faster.
  631.  
  632. Got rid of assign_number() -- contrary to comment, it was no faster than
  633.   just making a new node and freeing the old one.
  634.  
  635. Replaced make_number() and tmp_number() with macros that call mk_number().
  636.  
  637. Changed freenode() and newnode() into macros -- the latter is getnode()
  638.   which calls more_nodes() as necessary.
  639.  
  640. Changes from 2.12.26 to 2.12.27
  641. -------------------------------
  642.  
  643. Completion of Cray 2 port (includes a kludge for floor() and ceil()
  644.   that may go or be changed -- I think that it may just be working around
  645.   a bug in chem that is being tweaked on the Cray).
  646.  
  647. More VMS updates.
  648.  
  649. Moved kludge over yacc's insertion of malloc and realloc declarations
  650.   from protos.h to the Makefile.
  651.  
  652. Added a lisp interpreter in awk to the test suite.  (Invoked under
  653.   bigtest.)
  654.  
  655. Cleanup in r_force_number() -- I had never gotten around to a thorough
  656.   profile of the cache code and it turns out to be not worth it.
  657.  
  658. Performance boost -- do lazy force_number()'ing for fields etc. i.e.
  659.   flag them (MAYBE_NUM) and call force_number only as necessary.
  660.  
  661. Changes from 2.12.25 to 2.12.26
  662. -------------------------------
  663.  
  664. Rework of regexp stuff so that dynamic regexps have reasonable
  665.   performance -- string used for compiled regexp is stored and
  666.   compared to new string -- if same, no recompilation is necessary.
  667.   Also, very dynamic regexps cause dfa-based searching to be turned
  668.   off.
  669.  
  670. Code in dev_open() is back to returning fileno(std*) rather than
  671.   dup()ing it.  This will be documented.  Sorry for the run-around
  672.   on this.
  673.  
  674. Minor atari updates.
  675.  
  676. Minor vms update.
  677.  
  678. Missing file from MSDOS port.
  679.  
  680. Added warning (under lint) if third arg. of [g]sub is a constant and
  681.   handle it properly in the code (i.e. return how many matches).
  682.  
  683. Changes from 2.12.24 to 2.12.25
  684. -------------------------------
  685.  
  686. MSDOS port.
  687.  
  688. Non-consequential changes to regexp variables in preparation for
  689.   a more serious change to fix a serious performance problem.
  690.  
  691. Changes from 2.12.23 to 2.12.24
  692. -------------------------------
  693.  
  694. Fixed bug in output flushing introduced a few patches back.  This caused
  695.   serious performance losses.
  696.  
  697. Changes from 2.12.22 to 2.12.23
  698. -------------------------------
  699.  
  700. Accidently left config/cray2-60 out of last patch.
  701.  
  702. Added some missing dependencies to Makefile.
  703.  
  704. Cleaned up mkconf a bit; made yacc the default parser (no alloca needed,
  705.   right?); added rs6000 hook for signed characters.
  706.  
  707. Made regex.c with NO_ALLOCA undefined work.
  708.  
  709. Fixed bug in dfa.c for systems where free(NULL) bombs.
  710.  
  711. Deleted a few cant_happen()'s that *really* can't hapen.
  712.  
  713. Changes from 2.12.21 to 2.12.22
  714. -------------------------------
  715.  
  716. Added to config stuff the ability to choose YACC rather than bison.
  717.  
  718. Fixed CHAR_UNSIGNED in config.h-dist.
  719.  
  720. Second arg. of strtod() is char ** rather than const char **. 
  721.  
  722. stackb is now initially malloc()'ed since it may be realloc()'ed.
  723.  
  724. VMS updates.
  725.  
  726. Added SIZE_T_MISSING to config stuff and a default typedef to awk.h.
  727.   (Maybe it is not needed on any current systems??)
  728.  
  729. re_compile_pattern()'s size is now size_t unconditionally.
  730.  
  731. Changes from 2.12.20 to 2.12.21
  732. -------------------------------
  733.  
  734. Corrected missing/gcvt.c.
  735.  
  736. Got rid of use of dup2() and thus DUP_MISSING.
  737.  
  738. Updated config/sgi33.
  739.  
  740. Turned on (and fixed) in cmp_nodes() the behaviour that I *hope* will be in
  741.   POSIX 1003.2 for relational comparisons.
  742.  
  743. Small updates to test suite.
  744.  
  745. Changes from 2.12.19 to 2.12.20
  746. -------------------------------
  747.  
  748. Sloppy, sloppy, sloppy!!  I didn't even try to compile the last two
  749.   patches.  This one fixes goofs in regex.c.
  750.  
  751. Changes from 2.12.18 to 2.12.19
  752. -------------------------------
  753.  
  754. Cleanup of last patch.
  755.  
  756. Changes from 2.12.17 to 2.12.18
  757. -------------------------------
  758.  
  759. Makefile renamed to Makefile-dist.
  760.  
  761. Added alloca() configuration to mkconf.  (A bit kludgey.)  Just
  762.   add a single line containing ALLOCA_PW, ALLOCA_S or ALLOCA_C
  763.   to the appropriate config file to have Makefile-dist edited
  764.   accordingly.
  765.  
  766. Reorganized output flushing to correspond with new semantics of
  767.   devopen() on "/dev/std*" etc.
  768.  
  769. Fixed rest of last goof!!
  770.  
  771. Save and restore errno in do_pathopen().
  772.  
  773. Miscellaneous atari updates.
  774.  
  775. Get rid of the trailing comma in the NODETYPE definition (Cray
  776.   compiler won't take it).
  777.  
  778. Try  to make the use of `const' consistent since Cray compiler is
  779.   fussy about that.  See the changes to `basename' and `myname'.
  780.  
  781. It turns out that, according to section 3.8.3 (Macro Replacement)
  782.   of the ANSI Standard:  ``If there are sequences of preprocessing
  783.   tokens within the list of arguments that would otherwise act as
  784.   preprocessing directives, the behavior is undefined.''  That means
  785.   that you cannot count on the behavior of the declaration of
  786.   re_compile_pattern in awk.h, and indeed the Cray compiler chokes on it.
  787.  
  788. Replaced alloca with malloc/realloc/free in regex.c.  It was much simpler
  789.   than expected.  (Inside NO_ALLOCA for now -- by default no alloca.)
  790.  
  791. Added a configuration file, config/cray60, for Unicos-6.0.
  792.  
  793. Changes from 2.12.16 to 2.12.17
  794. -------------------------------
  795.  
  796. Ooops.  Goofed signal use in last patch.
  797.  
  798. Changes from 2.12.15 to 2.12.16
  799. -------------------------------
  800.  
  801. RENAMED *_dir to just * (e.g. missing_dir).
  802.  
  803. Numerous VMS changes.
  804.  
  805. Proper inclusion of atari and vms files.
  806.  
  807. Added experimental (ifdef'd out) RELAXED_CONTINUATION and DEFAULT_FILETYPE
  808.  -- please comment on these!
  809.  
  810. Moved pathopen() to io.c (sigh).
  811.  
  812. Put local directory ahead in default AWKPATH.
  813.  
  814. Added facility in mkconf to echo comments on stdout:  lines beginning
  815.   with "#echo " will have the remainder of the line echoed when mkconf is run.
  816.   Any lines starting with "#" will otherwise be treated as comments.  The
  817.   intent is to be able to say:
  818.   "#echo Make sure you uncomment alloca.c in the Makefile"
  819.   or the like.
  820.  
  821. Prototype fix for V.4
  822.  
  823. Fixed version_string to not print leading @(#).
  824.  
  825. Fixed FIELDWIDTHS to work with strict (turned out to be easy).
  826.  
  827. Fixed conf for V.2.
  828.  
  829. Changed semantics of /dev/fd/n to be like on real /dev/fd.
  830.  
  831. Several configuration and updates in the makefile.
  832.  
  833. Updated manpage.
  834.  
  835. Include tzset.c and system.c from missing_dir that were accidently left out of
  836.   the last patch.
  837.  
  838. Fixed bug in cmdline variable assignment -- arg was getting freed(!) in
  839.   call to variable.
  840.  
  841. Backed out of parse-time constant folding for now, until I can figure out
  842.   how to do it right.
  843.  
  844. Fixed devopen() so that getline <"-" works.
  845.  
  846. Changes from 2.12.14 to 2.12.15
  847. -------------------------------
  848.  
  849. Changed config/* to a condensed form that can be used with mkconf to generate
  850.   a config.h from config.h-dist -- much easier to maintain.  Please chaeck
  851.   carefully against what you had before for a particular system and report
  852.   any problems.  vms.h remains separate since the stuff at the bottom
  853.   didn't quite fit the mkconf model -- hopefully cleared up later.
  854.  
  855. Fixed bug in grammar -- didn't allow function definition to be separated from 
  856.   other rules by a semi-colon.
  857.  
  858. VMS fix to #includes in missing.c -- should we just be including awk.h?
  859.  
  860. Updated README for texinfo.tex version.
  861.  
  862. Updating of copyright in all .[chy] files.
  863.  
  864. Added but commented out Michal's fix to strftime.
  865.  
  866. Added tzset() emulation based on Rick Adams' code.  Added TZSET_MISSING to
  867.     config.h-dist.
  868.  
  869. Added strftime.3 man page for missing_dir
  870.  
  871. More posix:    func, **, **= don't work in -W posix
  872.  
  873. More lint:    ^, ^= not in old awk
  874.  
  875. gawk.1:        removed ref to -DNO_DEV_FD, other minor updating.
  876.  
  877. Style change:  pushbak becomes pushback() in yylex().
  878.  
  879. Changes from 2.12.13 to 2.12.14
  880. -------------------------------
  881.  
  882. Better (?) organization of awk.h -- attempt to keep all system dependencies
  883.   near the top and move some of the non-general things out of the config.h
  884.   files.
  885.  
  886. Change to handling of SYSTEM_MISSING.
  887.  
  888. Small change to ultrix config.
  889.  
  890. Do "/dev/fd/*" etc. checking at runtime.
  891.  
  892. First pass at VMS port.
  893.  
  894. Improvements to error handling (when lexeme spans buffers).
  895.  
  896. Fixed backslash handling -- why didn't I notice this sooner?
  897.  
  898. Added programs from book to test suite and new target "bigtest" to Makefile.
  899.  
  900. Changes from 2.12.12 to 2.12.13
  901. -------------------------------
  902.  
  903. Recognize OFS and ORS specially so that OFS = 9 works without efficiency hit.
  904.   Took advantage of opportunity to tune do_print*() for about 10% win on a
  905.   print with 5 args (i.e. small but significant).
  906.  
  907. Somewhat pervasive changes to reconcile CONVFMT vs. OFMT.
  908.  
  909. Better initialization of builtin vars.
  910.  
  911. Make config/* consistent wrt STRTOL_MISSING.
  912.  
  913. Small portability improvement to alloca.s
  914.  
  915. Improvements to lint code in awk.y
  916.  
  917. Replaced strtol() with a better one by Chris Torek.
  918.  
  919. Changes from 2.12.11 to 2.12.12
  920. -------------------------------
  921.  
  922. Added PORTS file to record successful ports.
  923.  
  924. Added #define const to nothing if not STDC and added const to strtod() header.
  925.  
  926. Added * to printf capabilities and partially implemented ' ' and '+' (has an
  927.   effect for %d only, silently ignored for other formats).  I'm afraid that's
  928.   as far as I want to go before I look at a complete replacement for
  929.   do_sprintf().
  930.  
  931. Added warning for /regexp/ on LHS of MATCHOP.
  932.  
  933. Changes from 2.12.10 to 2.12.11
  934. -------------------------------
  935.  
  936. Small Makefile improvements.
  937.  
  938. Some remaining nits from the NeXT port.
  939.  
  940. Got rid of bcopy() define in awk.h -- not needed anymore (??)
  941.  
  942. Changed private in builtin.c -- it is special on Sequent.
  943.  
  944. Added subset implementation of strtol() and STRTOL_MISSING.
  945.  
  946. A little bit of cleanup in debug.c, dfa.c.
  947.  
  948. Changes from 2.12.9 to 2.12.10
  949. ------------------------------
  950.  
  951. Redid compatability checking and checking for # of args.
  952.  
  953. Removed all references to variables[] from outside awk.y, in preparation
  954.   for a more abstract interface to the symbol table.
  955.  
  956. Got rid of a remaining use of bcopy() in regex.c.
  957.  
  958. Changes from 2.12.8 to 2.12.9
  959. -----------------------------
  960.  
  961. Portability improvements for atari, next and decstation.
  962.  
  963. Bug fix in substr() -- wasn't handling 3rd arg. of -1 properly.
  964.  
  965. Manpage updates.
  966.  
  967. Moved support from src release to doc release.
  968.  
  969. Updated FUTURES file.
  970.  
  971. Added some "lint" warnings.
  972.  
  973. Changes from 2.12.7 to 2.12.8
  974. -----------------------------
  975.  
  976. Changed time() to systime().
  977.  
  978. Changed warning() in snode() to fatal().
  979.  
  980. strftime() now defaults second arg. to current time.
  981.  
  982. Changes from 2.12.6 to 2.12.7
  983. -----------------------------
  984.  
  985. Fixed bug in sub_common() involving inadequate allocation of a buffer.
  986.  
  987. Added some missing files to the Makefile.
  988.  
  989. Changes from 2.12.5 to 2.12.6
  990. -----------------------------
  991.  
  992. Fixed bug wherein non-redirected getline could call iop_close() just
  993.   prior to a call from do_input().
  994.  
  995. Fixed bug in handling of /dev/stdout and /dev/stderr.
  996.  
  997. Changes from 2.12.4 to 2.12.5
  998. -----------------------------
  999.  
  1000. Updated README and support directory.
  1001.  
  1002. Changes from 2.12.3 to 2.12.4
  1003. -----------------------------
  1004.  
  1005. Updated CHANGES and TODO (should have been done in previous 2 patches).
  1006.  
  1007. Changes from 2.12.2 to 2.12.3
  1008. -----------------------------
  1009.  
  1010. Brought regex.c and alloca.s into line with current FSF versions.
  1011.  
  1012. Changes from 2.12.1 to 2.12.2
  1013. -----------------------------
  1014.  
  1015. Portability improvements; mostly moving system prototypes out of awk.h
  1016.  
  1017. Introduction of strftime.
  1018.  
  1019. Use of CONVFMT.
  1020.  
  1021. Changes from 2.12 to 2.12.1
  1022. -----------------------------
  1023.  
  1024. Consolidated treatment of command-line assignments (thus correcting the
  1025. -v treatment).
  1026.  
  1027. Rationalized builtin-variable handling into a table-driven process, thus
  1028. simplifying variable() and eliminating spc_var().
  1029.  
  1030. Fixed bug in handling of command-line source that ended in a newline.
  1031.  
  1032. Simplified install() and lookup().
  1033.  
  1034. Did away with double-mallocing of identifiers and now free second and later
  1035. instances of a name, after the first gets installed into the symbol table.
  1036.  
  1037. Treat IGNORECASE specially, simplifying a lot of code, and allowing
  1038. checking against strict conformance only on setting it, rather than on each
  1039. pattern match.
  1040.  
  1041. Fixed regexp matching when IGNORECASE is non-zero (broken when dfa.c was 
  1042. added).
  1043.  
  1044. Fixed bug where $0 was not being marked as valid, even after it was rebuilt.
  1045. This caused mangling of $0.
  1046.  
  1047.  
  1048. Changes from 2.11.1 to 2.12
  1049. -----------------------------
  1050.  
  1051. Makefile:
  1052.  
  1053. Portability improvements in Makefile.
  1054. Move configuration stuff into config.h
  1055.  
  1056. FSF files:
  1057.  
  1058. Synchronized alloca.[cs] and regex.[ch] with FSF.
  1059.  
  1060. array.c:
  1061.  
  1062. Rationalized hash routines into one with a different algorithm.
  1063. delete() now works if the array is a local variable.
  1064. Changed interface of assoc_next() and avoided dereferencing past the end of the
  1065.   array.
  1066.  
  1067. awk.h:
  1068.  
  1069. Merged non-prototype and prototype declarations in awk.h.
  1070. Expanded tree_eval #define to short-circuit more calls of r_tree_eval().
  1071.  
  1072. awk.y:
  1073.  
  1074. Delinted some of the code in the grammar.
  1075. Fixed and improved some of the error message printing.
  1076. Changed to accomodate unlimited length source lines.
  1077. Line continuation now works as advertised.
  1078. Source lines can be arbitrarily long.
  1079. Refined grammar hacks so that /= assignment works.  Regular expressions
  1080.   starting with /= are recognized at the beginning of a line, after && or ||
  1081.   and after ~ or !~.  More contexts can be added if necessary.
  1082. Fixed IGNORECASE (multiple scans for backslash).
  1083. Condensed expression_lists in array references.
  1084. Detect and warn for correct # args in builtin functions -- call most of them
  1085.   with a fixed number (i.e. fill in defaults at parse-time rather than at
  1086.   run-time).
  1087. Load ENVIRON only if it is referenced (detected at parse-time).
  1088. Treat NF, FS, RS, NR, FNR specially at parse time, to improve run time.
  1089. Fold constant expressions at parse time.
  1090. Do make_regexp() on third arg. of split() at parse tiem if it is a constant.
  1091.  
  1092. builtin.c:
  1093.  
  1094. srand() returns 0 the first time called.
  1095. Replaced alloca() with malloc() in do_sprintf().
  1096. Fixed setting of RSTART and RLENGTH in do_match().
  1097. Got rid of get_{one,two,three} and allowance for variable # of args. at
  1098.   run-time -- this is now done at parse-time.
  1099. Fixed latent bug in [g]sub whereby changes to $0 would never get made.
  1100. Rewrote much of sub_common() for simplicity and performance.
  1101. Added ctime() and time() builtin functions (unless -DSTRICT).  ctime() returns
  1102.   a time string like the C function, given the number of seconds since the epoch
  1103.   and time() returns the current time in seconds.
  1104. do_sprintf() now checks for mismatch between format string and number of
  1105.   arguments supplied.
  1106.  
  1107. dfa.c
  1108.  
  1109. This is borrowed (almost unmodified) from GNU grep to provide faster searches.
  1110.  
  1111. eval.c
  1112.  
  1113. Node_var, Node_var_array and Node_param_list handled from macro rather
  1114.   than in r_tree_eval().
  1115. Changed cmp_nodes() to not do a force_number() -- this, combined with a 
  1116.     force_number() on ARGV[] and ENVIRON[] brings it into line with other awks
  1117. Greatly simplified cmp_nodes().
  1118. Separated out Node_NF, Node_FS, Node_RS, Node_NR and Node_FNR in get_lhs().
  1119. All adjacent string concatenations now done at once.
  1120.  
  1121. field.c
  1122.  
  1123. Added support for FIELDWIDTHS.
  1124. Fixed bug in get_field() whereby changes to a field were not always
  1125.   properly reflected in $0.
  1126. Reordered tests in parse_field() so that reference off the end of the buffer
  1127.   doesn't happen.
  1128. set_FS() now sets *parse_field i.e. routine to call depending on type of FS.
  1129. It also does make_regexp() for FS if needed.  get_field() passes FS_regexp
  1130.   to re_parse_field(), as does do_split().
  1131. Changes to set_field() and set_record() to avoid malloc'ing and free'ing the
  1132.   field nodes repeatedly.  The fields now just point into $0 unless they are
  1133.   assigned to another variable or changed.  force_number() on the field is
  1134.   *only* done when the field is needed.
  1135.  
  1136. gawk.1
  1137.  
  1138. Fixed troff formatting problem on .TP lines.
  1139.  
  1140. io.c
  1141.  
  1142. Moved some code out into iop.c.
  1143. Output from pipes and system() calls is properly synchronized.
  1144. Status from pipe close properly returned.
  1145. Bug in getline with no redirect fixed.
  1146.  
  1147. iop.c
  1148.  
  1149. This file contains a totally revamped get_a_record and associated code.
  1150.  
  1151. main.c
  1152.  
  1153. Command line programs no longer use a temporary file.
  1154. Therefore, tmpnam() no longer required.
  1155. Deprecated -a and -e options -- they will go away in the next release,
  1156.   but for now they cause a warning.
  1157. Moved -C, -V, -c options to -W ala posix.
  1158. Added -W posix option: throw out \x
  1159. Added -W lint option.
  1160.  
  1161.  
  1162. node.c
  1163.  
  1164. force_number() now allows pure numerics to have leading whitespace.
  1165. Added make_string facility to optimize case of adding an already malloc'd
  1166.   string.
  1167. Cleaned up and simplified do_deref().
  1168. Fixed bug in handling of stref==255 in do_deref().
  1169.  
  1170. re.c
  1171.  
  1172. contains the interface to regexp code
  1173.  
  1174. Changes from 2.11.1 to FSF version of same
  1175. ------------------------------------------
  1176. Thu Jan  4 14:19:30 1990  Jim Kingdon  (kingdon at albert)
  1177.  
  1178.     * Makefile (YACC): Add -y to bison part.
  1179.  
  1180.     * missing.c: Add #include <stdio.h>.
  1181.  
  1182. Sun Dec 24 16:16:05 1989  David J. MacKenzie  (djm at hobbes.ai.mit.edu)
  1183.  
  1184.     * * Makefile: Add (commented out) default defines for Sony News.
  1185.  
  1186.     * awk.h: Move declaration of vprintf so it will compile when
  1187.     -DVPRINTF_MISSING is defined.
  1188.  
  1189. Mon Nov 13 18:54:08 1989  Robert J. Chassell  (bob at apple-gunkies.ai.mit.edu)
  1190.  
  1191.         * gawk.texinfo: changed @-commands that are not part of the
  1192.           standard, currently released texinfmt.el to those that are.
  1193.           Otherwise, only people with the as-yet unreleased makeinfo.c can
  1194.           format this file.
  1195.  
  1196. Changes from 2.11beta to 2.11.1 (production)
  1197. --------------------------------------------
  1198.  
  1199. Went from "beta" to production status!!!
  1200.  
  1201. Now flushes stdout before closing pipes or redirected files to
  1202. synchonize output.
  1203.  
  1204. MS-DOS changes added in.
  1205.  
  1206. Signal handler return type parameterized in Makefile and awk.h and
  1207. some lint removed.  debug.c cleaned up.
  1208.  
  1209. Fixed FS splitting to never match null strings, per book.
  1210.  
  1211. Correction to the manual's description of FS.
  1212.  
  1213. Some compilers break on char *foo = "string" + 4 so fixed version.sh and
  1214. main.c.
  1215.  
  1216. Changes from 2.10beta to 2.11beta
  1217. ---------------------------------
  1218.  
  1219. This release fixes all reported bugs that we could reproduce.  Probably
  1220. some of the changes are not documented here.
  1221.  
  1222. The next release will probably not be a beta release!
  1223.  
  1224. The most important change is the addition of the -nostalgia option. :-)
  1225.  
  1226. The documentation has been improved and brought up-to-date.
  1227.  
  1228. There has been a lot of general cleaning up of the code that is not otherwise
  1229. documented here.  There has been a movement toward using standard-conforming
  1230. library routines and providing them (in missing.d) for systems lacking them.
  1231. Improved (hopefully) configuration through Makfile modifications and missing.c.
  1232. In particular, straightened out confusion over vprintf #defines, declarations
  1233. etc.
  1234.  
  1235. Deleted RCS log comments from source, to reduce source size by about one third.
  1236. Most of them were horribly out-of-date, anyway.
  1237.  
  1238. Renamed source files to reflect (for the most part) their contents.
  1239.  
  1240. More and improved error messages.  Cleanup and fixes to yyerror().
  1241. String constants are not altered in input buffer, so error messages come out 
  1242. better.  Fixed usage message.  Make use of ANSI C strerror() function
  1243. (provided).
  1244.  
  1245. Plugged many more memory leaks.  The memory consumption is now quite
  1246. reasonable over a wide range of programs.
  1247.  
  1248. Uses volatile declaration if STDC > 0 to avoid problems due to longjmp.
  1249.  
  1250. New -a and -e options to use awk or egrep style regexps, respectively,
  1251. since POSIX says awk should use egrep regexps.  Default is -a.
  1252.  
  1253. Added -v option for setting variables before the first file is encountered.
  1254. Version information now uses -V and copyleft uses -C.
  1255.  
  1256. Added a patchlevel.h file and its use for -V and -C.
  1257.  
  1258. Append_right() optimized for major improvement to programs with a *lot*
  1259. of statements.
  1260.  
  1261. Operator precedence has been corrected to match draft Posix.
  1262.  
  1263. Tightened up grammar for builtin functions so that only length
  1264. may be called without arguments or parentheses.
  1265.  
  1266. /regex/ is now a normal expression that can appear in any expression
  1267. context.
  1268.  
  1269. Allow /= to begin a regexp.  Allow ..[../..].. in a regexp.
  1270.  
  1271. Allow empty compound statements ({}).
  1272.  
  1273. Made return and next illegal outside a function and in BEGIN/END respectively.
  1274.  
  1275. Division by zero is now illegal and causes a fatal error.
  1276.  
  1277. Fixed exponentiation so that x ^ 0 and x ^= 0 both return 1.
  1278.  
  1279. Fixed do_sqrt, do_log, and do_exp to do argument/return checking and
  1280. print an error message, per the manual.
  1281.  
  1282. Fixed main to catch SIGSEGV to get source and data file line numbers.
  1283.  
  1284. Fixed yyerror to print the ^ at the beginning of the bad token, not the end.
  1285.  
  1286. Fix to substr() builtin:  it was failing if the arguments
  1287. weren't already strings.
  1288.  
  1289. Added new node value flag NUMERIC to indicate that a variable is
  1290. purely a number as opposed to type NUM which indicates that
  1291. the node's numeric value is valid.  This is set in make_number(),
  1292. tmp_number and r_force_number() when appropriate and used in
  1293. cmp_nodes().  This fixed a bug in comparison of variables that had
  1294. numeric prefixes.  The new code uses strtod() and eliminates is_a_number().
  1295. A simple strtod() is provided for systems lacking one.  It does no
  1296. overflow checking, so could be improved.
  1297.  
  1298. Simplification and efficiency improvement in force_string.
  1299.  
  1300. Added performance tweak in r_force_number().
  1301.  
  1302. Fixed a bug with nested loops and break/continue in functions.
  1303.  
  1304. Fixed inconsistency in handling of empty fields when $0 has to be rebuilt.
  1305. Happens to simplify rebuild_record().
  1306.  
  1307. Cleaned up the code associated with opening a pipe for reading.  Gawk
  1308. now has its own popen routine (gawk_popen) that allocates an IOBUF
  1309. and keeps track of the pid of the child process.  gawk_pclose
  1310. marks the appropriate child as defunct in the right struct redirect.
  1311.  
  1312. Cleaned up and fixed close_redir().
  1313.  
  1314. Fixed an obscure bug to do with redirection.  Intermingled ">" and ">>"
  1315. redirects did not output in a predictable order.
  1316.  
  1317. Improved handling of output bufferring:  now all print[f]s redirected to a tty
  1318. or pipe are flushed immediately and non-redirected output to a tty is flushed
  1319. before the next input record is read.
  1320.  
  1321. Fixed a bug in get_a_record() where bcopy() could have copied over
  1322. a random pointer.
  1323.  
  1324. Fixed a bug when RS="" and records separated by multiple blank lines.
  1325.  
  1326. Got rid of SLOWIO code which was out-of-date anyway.
  1327.  
  1328. Fix in get_field() for case where $0 is changed and then $(n) are
  1329. changed and then $0 is used.
  1330.  
  1331. Fixed infinite loop on failure to open file for reading from getline.
  1332. Now handles redirect file open failures properly.
  1333.  
  1334. Filenames such as /dev/stdin now allowed on the command line as well as
  1335. in redirects.
  1336.  
  1337. Fixed so that gawk '$1' where $1 is a zero tests false.
  1338.  
  1339. Fixed parsing so that `RLENGTH -1' parses the same as `RLENGTH - 1',
  1340. for example.
  1341.  
  1342. The return from a user-defined function now defaults to the Null node.
  1343. This fixes a core-dump-causing bug when the return value  of a function
  1344. is used and that function returns no value.
  1345.  
  1346. Now catches floating point exceptions to avoid core dumps.
  1347.  
  1348. Bug fix for deleting elements of an array -- under some conditions, it was
  1349. deleting more than one element at a time.
  1350.  
  1351. Fix in AWKPATH code for running off the end of the string.
  1352.  
  1353. Fixed handling of precision in *printf calls.  %0.2d now works properly,
  1354. as does %c.  [s]printf now recognizes %i and %X.
  1355.  
  1356. Fixed a bug in printing of very large (>240) strings.
  1357.  
  1358. Cleaned up erroneous behaviour for RS == "".
  1359.  
  1360. Added IGNORECASE support to index().
  1361.  
  1362. Simplified and fixed newnode/freenode.
  1363.  
  1364. Fixed reference to $(anything) in a BEGIN block.
  1365.  
  1366. Eliminated use of USG rand48().
  1367.  
  1368. Bug fix in force_string for machines with 16-bit ints.
  1369.  
  1370. Replaced use of mktemp() with tmpnam() and provided a partial implementation of
  1371. the latter for systems that don't have it.
  1372.  
  1373. Added a portability check for includes in io.c.
  1374.  
  1375. Minor portability fix in alloc.c plus addition of xmalloc().
  1376.  
  1377. Portability fix:  on UMAX4.2, st_blksize is zero for a pipe, thus breaking
  1378. iop_alloc() -- fixed.
  1379.  
  1380. Workaround for compiler bug on Sun386i in do_sprintf.
  1381.  
  1382. More and improved prototypes in awk.h.
  1383.  
  1384. Consolidated C escape parsing code into one place.
  1385.  
  1386. strict flag is now turned on only when invoked with compatability option.
  1387. It now applies to fewer things.
  1388.  
  1389. Changed cast of f._ptr in vprintf.c from (unsigned char *) to (char *).
  1390. Hopefully this is right for the systems that use this code (I don't).
  1391.  
  1392. Support for pipes under MSDOS added.
  1393.