| 1 | Changes from 3.1.4 to 3.1.5 | 
|---|
| 2 | --------------------------- | 
|---|
| 3 |  | 
|---|
| 4 | 1. The random() suite has been updated to a current FreeBSD version, which | 
|---|
| 5 | works on systems with > 32-bit ints. | 
|---|
| 6 |  | 
|---|
| 7 | 2. A new option, `--exec' has been added. It's like -f but ends option | 
|---|
| 8 | processing.  It also disables `x=y' variable assignments, but not -v. | 
|---|
| 9 | It's needed mainly for CGI scripts, so that source code can't be | 
|---|
| 10 | passed in as part of the URL. | 
|---|
| 11 |  | 
|---|
| 12 | 3. dfa.[ch] have been synced with GNU grep development.  This also fixes | 
|---|
| 13 | multiple regex matching problems in multibyte locales. | 
|---|
| 14 |  | 
|---|
| 15 | 4. Updated to Automake 1.9.5. | 
|---|
| 16 |  | 
|---|
| 17 | 5. Updated to Bison 2.0. | 
|---|
| 18 |  | 
|---|
| 19 | 6. The getopt* and regex* files were synchronized with current GLIBC CVS. | 
|---|
| 20 | See the ChangeLog for the versions and minor edits made. | 
|---|
| 21 |  | 
|---|
| 22 | 7. `configure --disable-nls' now disables just gawk's own translations. | 
|---|
| 23 | Gawk continues to work with the locale's numeric formatting.  This | 
|---|
| 24 | includes a bug fix in handling the printf ' flag (e.g., %'d). | 
|---|
| 25 |  | 
|---|
| 26 | 8. Gawk is now multibyte aware.  This means that index(), length(), | 
|---|
| 27 | substr() and match() all work in terms of characters, not bytes. | 
|---|
| 28 |  | 
|---|
| 29 | 9. Gawk is now smarter about parsing numeric constants in corner cases. | 
|---|
| 30 |  | 
|---|
| 31 | 11. Not closing open redirections no longer causes gawk to exit non-zero. | 
|---|
| 32 |  | 
|---|
| 33 | 10. The VMS port has been updated. | 
|---|
| 34 |  | 
|---|
| 35 | 11. Changes from Andrew Schorr at the xmlgawk project to provide for | 
|---|
| 36 | open hooks from extensions are now included.  This will let the | 
|---|
| 37 | xmlgawk extension work in the standard gawk. | 
|---|
| 38 |  | 
|---|
| 39 | 12. Updated to gettext 0.14.4. Gawk no longer includes its own copy | 
|---|
| 40 | of the gettext `intl' library, following current GNU practice to | 
|---|
| 41 | rely on there being an external version thereof. | 
|---|
| 42 |  | 
|---|
| 43 | 13. A regexp of the form `//' will now generate a warning that it | 
|---|
| 44 | is not a C++ comment from --lint (awk.y). | 
|---|
| 45 |  | 
|---|
| 46 | 14. The ^ and ^= operators with an integer exponent now use Exponentiation | 
|---|
| 47 | by Squaring. This simultaneously fixes a problem with ^= and a negative | 
|---|
| 48 | integer exponent. | 
|---|
| 49 |  | 
|---|
| 50 | 15. length(array) now returns the number of elements in the array.  This is | 
|---|
| 51 | is a non-standard extension that will fail in POSIX mode. | 
|---|
| 52 |  | 
|---|
| 53 | 16. Carriage return characters are now ignored in program source code. | 
|---|
| 54 |  | 
|---|
| 55 | 17. Four new translations added. | 
|---|
| 56 |  | 
|---|
| 57 | 18. Various minor bugs fixed. See the ChangeLog for the details. | 
|---|
| 58 |  | 
|---|
| 59 | Changes from 3.1.3 to 3.1.4 | 
|---|
| 60 | --------------------------- | 
|---|
| 61 |  | 
|---|
| 62 | 1. Gawk now supports the POSIX %F format, falling back to %f if the local | 
|---|
| 63 | system printf doesn't handle it. | 
|---|
| 64 |  | 
|---|
| 65 | 2. Gawk now supports the ' flag in printf. E.g., %'d in a locale with thousands | 
|---|
| 66 | separators includes the thousands separator in the value, e.g. 12,345. | 
|---|
| 67 |  | 
|---|
| 68 | This has one problem; the ' flag is next to impossible to use on the | 
|---|
| 69 | command line, without major quoting games.  Oh well, TANSTAAFL. | 
|---|
| 70 |  | 
|---|
| 71 | 3. The dfa code has been reinstated; the performance degradation was | 
|---|
| 72 | just too awful.  Sigh.  (For fun, use `export GAWK_NO_DFA=1' to | 
|---|
| 73 | see the difference.) | 
|---|
| 74 |  | 
|---|
| 75 | 4. The special case `x = x y' is now recognized in the grammar, and gawk | 
|---|
| 76 | now uses `realloc' to append the new value to the end of the existing | 
|---|
| 77 | one.  This can speed up the common case of appending onto a string. | 
|---|
| 78 |  | 
|---|
| 79 | 5. The dfa code was upgraded with most of the fixes from grep 2.5.1, and | 
|---|
| 80 | the regex code was upgraded with GLIBC as mid-January 2004.  The regex | 
|---|
| 81 | code is faster than it was, but still not as fast as the dfa code, so | 
|---|
| 82 | the dfa code stays in.  The getopt code was also synced to current GLIBC. | 
|---|
| 83 |  | 
|---|
| 84 | 6. Support code upgraded to Automake 1.8.5, Autoconf 2.59, and gettext 0.14.1. | 
|---|
| 85 |  | 
|---|
| 86 | 7. When --posix is in effect, sub/gsub now follow the 2001 POSIX behavior. | 
|---|
| 87 | Yippee.  This is even documented in the manual. | 
|---|
| 88 |  | 
|---|
| 89 | 8. Gawk will now recover children that have died (input pipelines, two-way | 
|---|
| 90 | pipes), upon detecting EOF from them, thus avoiding filling | 
|---|
| 91 | up the process table.  Open file descriptors are not recovered | 
|---|
| 92 | (unfortunately), since that could break awk semantics.  See the | 
|---|
| 93 | ChangeLog and the source code for the details. | 
|---|
| 94 |  | 
|---|
| 95 | 9. Handling of numbers like `0,1' in non-American locales ought to | 
|---|
| 96 | work correctly now. | 
|---|
| 97 |  | 
|---|
| 98 | 10. IGNORECASE is now locale-aware for characters with values above 128. | 
|---|
| 99 | The dfa matcher is now used for IGNORECASE matches too. | 
|---|
| 100 |  | 
|---|
| 101 | 11. Dynamic function loading is better. The documentation has been improved | 
|---|
| 102 | and some new APIs for use by dynamic functions have been added. | 
|---|
| 103 |  | 
|---|
| 104 | 12. Gawk now has a fighting chance of working on older systems, | 
|---|
| 105 | a la SunOS 4.1.x. | 
|---|
| 106 |  | 
|---|
| 107 | 13. Issues with multibyte support on HP-UX are now resolved. `configure' now | 
|---|
| 108 | disables such support there, since it's not up to what gawk needs. | 
|---|
| 109 |  | 
|---|
| 110 | 14. There are now even more tests in the test suite. | 
|---|
| 111 |  | 
|---|
| 112 | 15. Various bugs fixed; see ChangeLog for the details. | 
|---|
| 113 |  | 
|---|
| 114 | Changes from 3.1.2 to 3.1.3 | 
|---|
| 115 | --------------------------- | 
|---|
| 116 |  | 
|---|
| 117 | 1. Gawk now follows POSIX in handling of local numeric formats for | 
|---|
| 118 | input, output and number/string conversions. | 
|---|
| 119 |  | 
|---|
| 120 | 2. Multibyte detection improved.  See README_d/README.multibyte for more | 
|---|
| 121 | info about multibyte locales. | 
|---|
| 122 |  | 
|---|
| 123 | 3. Handling of `close' made more POSIX-compliant for POSIXLY_CORRECT, | 
|---|
| 124 | see the documentation. | 
|---|
| 125 |  | 
|---|
| 126 | 4. The record reading code was redone, again.  This time it's much | 
|---|
| 127 | better. Really! | 
|---|
| 128 |  | 
|---|
| 129 | 5. For RS = "\n" and RS = "", gawk now only sets RT when it has changed. | 
|---|
| 130 | This provides considerable performance improvement. | 
|---|
| 131 |  | 
|---|
| 132 | 6. `match' now sets all the subscripts in the third argument array | 
|---|
| 133 | correctly, even if not all subexpressions matched. | 
|---|
| 134 |  | 
|---|
| 135 | 7. Updated to Automake 1.7.5.  configure.in renamed configure.ac. | 
|---|
| 136 |  | 
|---|
| 137 | 8. C-style switch statements are available, but must be enabled at | 
|---|
| 138 | compile time via `configure --enable-switch'.  For 3.2 they'll be | 
|---|
| 139 | enabled by default. Thanks to Michael Benzinger for the initial | 
|---|
| 140 | code. | 
|---|
| 141 |  | 
|---|
| 142 | 9. %c now always prints no more than one character, whatever | 
|---|
| 143 | precision is provided. | 
|---|
| 144 |  | 
|---|
| 145 | 10. strtonum(<number>) now works again. | 
|---|
| 146 |  | 
|---|
| 147 | 11. Gawk is now much better about scalar/array typing of global | 
|---|
| 148 | uninitiailzed variables passed as parameters. Once the parameter | 
|---|
| 149 | is then used one way or the other, the global var's type is | 
|---|
| 150 | adjusted accordingly.  Thanks to Stepan Kasal for the original | 
|---|
| 151 | (considerable) changes. | 
|---|
| 152 |  | 
|---|
| 153 | 12. Dynamic function loading under Windows32 should now be possible. See | 
|---|
| 154 | README_d/README.pcdynamic. Thanks to Patrick T.J. McPhee for the changes. | 
|---|
| 155 |  | 
|---|
| 156 | 13. Updated to gettext 0.12.1. | 
|---|
| 157 |  | 
|---|
| 158 | 14. Gawk now follows historical practice and POSIX for the return | 
|---|
| 159 | value of `rand': It's now  0 <= N < 1. | 
|---|
| 160 |  | 
|---|
| 161 | Changes from 3.1.1 to 3.1.2 | 
|---|
| 162 | --------------------------- | 
|---|
| 163 |  | 
|---|
| 164 | 1. Loops of the form: | 
|---|
| 165 |  | 
|---|
| 166 | for (iggy in foo) | 
|---|
| 167 | next | 
|---|
| 168 |  | 
|---|
| 169 | no longer leak memory. | 
|---|
| 170 |  | 
|---|
| 171 | 2. gawk -v FIELDWIDTHS="..." now sets PROCINFO["FS"] correctly. | 
|---|
| 172 |  | 
|---|
| 173 | 3. All builtin operations and functions should now fully evaluate their | 
|---|
| 174 | arguments so that side effects take place correctly. | 
|---|
| 175 |  | 
|---|
| 176 | 4. Fixed a logic bug in gsub/gensub for matches to null strings that occurred | 
|---|
| 177 | later in the string after a nonnull match. | 
|---|
| 178 |  | 
|---|
| 179 | 5. getgroups code now works on Ultrix again. | 
|---|
| 180 |  | 
|---|
| 181 | 6. Completely new version of the full GNU regex engine now in place. | 
|---|
| 182 |  | 
|---|
| 183 | 7. Argument parsing and variable assignment has been cleaned up. | 
|---|
| 184 |  | 
|---|
| 185 | 8. An I/O bug on HP-UX has been documented and worked around. See | 
|---|
| 186 | README_d/README.hpux. | 
|---|
| 187 |  | 
|---|
| 188 | 9. awklib/grcat should now compile correctly. | 
|---|
| 189 |  | 
|---|
| 190 | 10. Updated to automake 1.7.3, autoconf 2.57 and gettext 0.11.5 ; thanks to | 
|---|
| 191 | Paul Eggert for the initial automake and autoconf work. | 
|---|
| 192 |  | 
|---|
| 193 | 11. As a result of #6, removed the use of the dfa code from GNU grep. | 
|---|
| 194 |  | 
|---|
| 195 | 12. It is now possible to use ptys for |& two-way pipes instead of | 
|---|
| 196 | pipes.  The basic plumbing for this was provided by Paolo Bonzini. | 
|---|
| 197 | To make this happen: | 
|---|
| 198 |  | 
|---|
| 199 | command = "unix command etc" | 
|---|
| 200 | PROCINFO[command, "pty"] = 1 | 
|---|
| 201 |  | 
|---|
| 202 | print ... |& command | 
|---|
| 203 | command |& getline stuff | 
|---|
| 204 |  | 
|---|
| 205 | In other words, set the element in PROCINFO *before* opening the | 
|---|
| 206 | two-way pipe, and then gawk will use ptys instead of pipes. | 
|---|
| 207 |  | 
|---|
| 208 | On systems without ptys or where all the ptys are in use, gawk | 
|---|
| 209 | will fall back to using plain pipes. | 
|---|
| 210 |  | 
|---|
| 211 | 13. Fixed a regex matching across buffer boundaries bug, with a | 
|---|
| 212 | heuristic.  See io.c:rsre_get_a_record. | 
|---|
| 213 |  | 
|---|
| 214 | 14. Profiling no longer dumps core if there are extension functions in place. | 
|---|
| 215 |  | 
|---|
| 216 | 15. Grammar and scanner cleaned up, courtesy of Stepen Kasal, to hopefully | 
|---|
| 217 | once and for all fix the `/=' operator vs. `/=.../' regex ambiguity. | 
|---|
| 218 | Lots of other grammar simplifications applied, as well. | 
|---|
| 219 |  | 
|---|
| 220 | 16. BINMODE should work now on more Windows ports. | 
|---|
| 221 |  | 
|---|
| 222 | 17. Updated to bison 1.875.  Includes fix to bisonfix.sed script. | 
|---|
| 223 |  | 
|---|
| 224 | 18. The NODE structure is now 20% (8 bytes) smaller (on x86, anyway), which | 
|---|
| 225 | should help conserve memory. | 
|---|
| 226 |  | 
|---|
| 227 | 19. Builds not in the source directory should work again. | 
|---|
| 228 |  | 
|---|
| 229 | 20. Arrays now use 2 NODE's per element instead of three. Combined with | 
|---|
| 230 | #18, (on the x86) this reduces the overhead from 120 bytes per element | 
|---|
| 231 | to just 64 bytes: almost a 50% improvement. | 
|---|
| 232 |  | 
|---|
| 233 | 21. Programs that make heavy use of changing IGNORECASE should now be | 
|---|
| 234 | much faster, particularly if using a regular expression for FS or RS. | 
|---|
| 235 | IGNORECASE now correctly affects RS regex record splitting, as well. | 
|---|
| 236 |  | 
|---|
| 237 | 22. IGNORECASE no longer affects single-character field splitting (FS = "c"), | 
|---|
| 238 | or single-character record splitting (RS = "c"). | 
|---|
| 239 |  | 
|---|
| 240 | This cleans up some weird behavior, and makes gawk better match the | 
|---|
| 241 | documentation, which says it only affects regex-based field splitting | 
|---|
| 242 | and record splitting. | 
|---|
| 243 |  | 
|---|
| 244 | The documentation on this was improved, too. | 
|---|
| 245 |  | 
|---|
| 246 | 23. The framework in test/ has been simplified, making it much easier to | 
|---|
| 247 | add new tests while keeping the size of Makefile.am reasonable. Thanks | 
|---|
| 248 | for this to Stepan Kasal. | 
|---|
| 249 |  | 
|---|
| 250 | 24. --lint=invalid causes lint warnings only about stuff that's actually | 
|---|
| 251 | invalid.  This needs additional work. | 
|---|
| 252 |  | 
|---|
| 253 | 25. More translations. | 
|---|
| 254 |  | 
|---|
| 255 | 26. The `get_a_record' routine has been revamped (currently by splitting it | 
|---|
| 256 | into three variants).  This should improve long-term maintainability. | 
|---|
| 257 |  | 
|---|
| 258 | 27. `match' now adds more entries to 3rd array arg: | 
|---|
| 259 | match("the big dog", /([a-z]+) ([a-z]+) ([a-z]+)/, data) | 
|---|
| 260 | fills in variables: | 
|---|
| 261 | data[1, "start"], data[1, "length"], and so on. | 
|---|
| 262 |  | 
|---|
| 263 | 28. New `asorti' function with same interface as `asort', but sorts indices | 
|---|
| 264 | instead of values. | 
|---|
| 265 |  | 
|---|
| 266 | 29. Documentation updated to FDL 1.2. | 
|---|
| 267 |  | 
|---|
| 268 | 30. New `configure' option --disable-lint at compile time disables lint | 
|---|
| 269 | checking.  With GCC dead-code-elimination, cuts almost 200K off the | 
|---|
| 270 | executable size on GNU/Linux x86.  Presumably speeds up runtime. | 
|---|
| 271 |  | 
|---|
| 272 | Using this will cause some of the tests in the test suite to fail. | 
|---|
| 273 | This option may be removed at a later date. | 
|---|
| 274 |  | 
|---|
| 275 | 31. Various minor cleanups, see the ChangeLog for details. | 
|---|
| 276 |  | 
|---|
| 277 | Changes from 3.1.0 to 3.1.1 | 
|---|
| 278 | --------------------------- | 
|---|
| 279 |  | 
|---|
| 280 | 1. Six new translations. | 
|---|
| 281 |  | 
|---|
| 282 | 2. Having more than 4 different values for OFMT and/or CONVFMT now works. | 
|---|
| 283 |  | 
|---|
| 284 | 3. The handling of dynamic regexes is now more more sane, esp. w.r.t. | 
|---|
| 285 | the profiling code.  The profiling code has been fixed in several | 
|---|
| 286 | places. | 
|---|
| 287 |  | 
|---|
| 288 | 4. The return value of index("", "") is now 1. | 
|---|
| 289 |  | 
|---|
| 290 | 5. Gawk should no longer close fd 0 in child processes. | 
|---|
| 291 |  | 
|---|
| 292 | 6. Fixed test for strtod semantics and regenerated configure. | 
|---|
| 293 |  | 
|---|
| 294 | 7. Gawk can now be built with byacc; an accidental bison dependency was | 
|---|
| 295 | removed. | 
|---|
| 296 |  | 
|---|
| 297 | 8. `yyerror' will no longer dump core on long source lines. | 
|---|
| 298 |  | 
|---|
| 299 | 9. Gawk now correctly queries getgroups(2) to figure out how many groups | 
|---|
| 300 | the process has. | 
|---|
| 301 |  | 
|---|
| 302 | 10. New configure option to force use of included strftime, e.g. on | 
|---|
| 303 | Solaris systems. See `./configure --help' for the details. Replaced | 
|---|
| 304 | the included strftime.c with the one from textutils. | 
|---|
| 305 |  | 
|---|
| 306 | 11. OS/2 port has been updated. | 
|---|
| 307 |  | 
|---|
| 308 | 12. Multi-byte character support has been added, courtesy of IBM Japan. | 
|---|
| 309 |  | 
|---|
| 310 | 13. The `for (iggy in foo) delete foo[iggy]' -> `delete foo' optimisation | 
|---|
| 311 | now works. | 
|---|
| 312 |  | 
|---|
| 313 | 14. Upgraded to gettext 0.11.2 and automake 1.5. | 
|---|
| 314 |  | 
|---|
| 315 | 15. Full gettext compatibility (new dcngettext function). | 
|---|
| 316 |  | 
|---|
| 317 | 16. The O'Reilly copyedits and indexing changes for the documentation have | 
|---|
| 318 | been folded into the texinfo version of the manuals. | 
|---|
| 319 |  | 
|---|
| 320 | 17. A humongously long value for the AWKPATH environment variable will no | 
|---|
| 321 | longer dump core. | 
|---|
| 322 |  | 
|---|
| 323 | 18. Configuration / Installation issues have been straightened out in | 
|---|
| 324 | Makefile.am. | 
|---|
| 325 |  | 
|---|
| 326 | Changes from 3.0.6 to 3.1.0 | 
|---|
| 327 | --------------------------- | 
|---|
| 328 |  | 
|---|
| 329 | 1. A new PROCINFO array provides info about the process. The non-I/O /dev/xxx | 
|---|
| 330 | files are now obsolete, and their use always generates a warning. | 
|---|
| 331 |  | 
|---|
| 332 | 2. A new `mktime' builtin function was added for creating time stamps. The | 
|---|
| 333 | `mktime' function written in awk was removed from the user's guide. | 
|---|
| 334 |  | 
|---|
| 335 | 3. New `--gen-po' option creates GNU gettext .po files for strings marked | 
|---|
| 336 | with a leading underscore. | 
|---|
| 337 |  | 
|---|
| 338 | 4. Gawk now completely interprets special file names internally, ignoring the | 
|---|
| 339 | existence of real /dev/stdin, /dev/stdout files, etc. | 
|---|
| 340 |  | 
|---|
| 341 | 5. The mmap code was removed. It was a worthwhile experiment that just | 
|---|
| 342 | didn't work out. | 
|---|
| 343 |  | 
|---|
| 344 | 6. The BINMODE variable is new; on non-UNIX systems it affects how gawk | 
|---|
| 345 | opens files for text vs. binary. | 
|---|
| 346 |  | 
|---|
| 347 | 7. The atari port is now unsupported. | 
|---|
| 348 |  | 
|---|
| 349 | 8. Gawk no longer supports `next file' as two words. | 
|---|
| 350 |  | 
|---|
| 351 | 9. On systems that support it, gawk now sets the `close on exec' flag on all | 
|---|
| 352 | files and pipes it opens. This makes sure that child processes run via | 
|---|
| 353 | `system' or pipes have plenty of file descriptors available. | 
|---|
| 354 |  | 
|---|
| 355 | 10. New ports: Tandem and BeOS.  The Tandem port is unsupported. | 
|---|
| 356 |  | 
|---|
| 357 | 11. If `--posix' is in effect, newlines are not allowed after ?:. | 
|---|
| 358 |  | 
|---|
| 359 | 12. Weird OFMT/CONVFMT formats no longer cause fatal errors. | 
|---|
| 360 |  | 
|---|
| 361 | 13. Diagnostics about array parameters now include the parameter's name, | 
|---|
| 362 | not just its number. | 
|---|
| 363 |  | 
|---|
| 364 | 14. configure should now automatically add -D_SYSV3 for ISC Unix. | 
|---|
| 365 | (This seems to have made it into the gawk 3.0.x line long ago.) | 
|---|
| 366 |  | 
|---|
| 367 | 15. It is now possible to open a two-way pipe via the `|&' operator. | 
|---|
| 368 | See the discussion in the manual about putting `sort' into such a pipeline, | 
|---|
| 369 | though.  (NOTE!  This is borrowed from ksh: it is not the same as | 
|---|
| 370 | the same operator in csh!) | 
|---|
| 371 |  | 
|---|
| 372 | 16. The `close' function now takes an optional second string argument | 
|---|
| 373 | that allows closing one or the other end of the two-way pipe to | 
|---|
| 374 | a co-process.  This is needed to use `sort' in a co-process, see | 
|---|
| 375 | the doc. | 
|---|
| 376 |  | 
|---|
| 377 | 17. If TCP/IP is available, special file names beginning with `/inet' | 
|---|
| 378 | can be used with `|&' for IPC. Thanks to Juergen Kahrs for the initial | 
|---|
| 379 | code. | 
|---|
| 380 |  | 
|---|
| 381 | 18. With `--enable-portals' on the configure command line, gawk will also | 
|---|
| 382 | treat file names that start with `/p/' as a 4.4 BSD type portal file, | 
|---|
| 383 | i.e., a two-way pipe for `|&'. | 
|---|
| 384 |  | 
|---|
| 385 | 19. Unrecognized escapes, such as "\q" now always generate a warning. | 
|---|
| 386 |  | 
|---|
| 387 | 20. The LINT variable is new; it provides dynamic control over the --lint | 
|---|
| 388 | option. | 
|---|
| 389 |  | 
|---|
| 390 | 21. Lint warnings can be made fatal by using --lint=fatal or `LINT = "fatal"'. | 
|---|
| 391 | Use this if you're really serious about portable code. | 
|---|
| 392 |  | 
|---|
| 393 | 22. Due to an enhanced sed script, there is no longer any need to worry | 
|---|
| 394 | about finding or using alloca.  alloca.c is thus now gone. | 
|---|
| 395 |  | 
|---|
| 396 | 23. A number of lint warnings have been added.  Most notably, gawk will | 
|---|
| 397 | detect if a variable is used before assigned to.  Warnings for | 
|---|
| 398 | when a string that isn't a number gets converted to a number are | 
|---|
| 399 | in the code but disabled; they seem to be too picky in practice. | 
|---|
| 400 |  | 
|---|
| 401 | Also, gawk will now warn about function parameter names that shadow | 
|---|
| 402 | global variable names. | 
|---|
| 403 |  | 
|---|
| 404 | 24. It is now possible to dynamically add builtin functions on systems | 
|---|
| 405 | that support dlopen. This facility is not (yet) as portable or well | 
|---|
| 406 | integrated as it might be.  *** WARNING *** THIS FEATURE WILL EVOLVE! | 
|---|
| 407 |  | 
|---|
| 408 | 25. There are *many* new tests in the test suite. | 
|---|
| 409 |  | 
|---|
| 410 | 26. Profiling has been added!  A separate version of gawk, named pgawk, is | 
|---|
| 411 | built and generates a run-time execution profile.  The --profile option | 
|---|
| 412 | can be used to change the default output file.   In regular gawk, this | 
|---|
| 413 | option pretty-prints the parse tree. | 
|---|
| 414 |  | 
|---|
| 415 | 27. Gawk has been internationalized, using GNU gettext.  Translations for | 
|---|
| 416 | future distributions are most welcome.  Simultaneously, gawk was switched | 
|---|
| 417 | over to using automake.  You need Automake 1.4a (from the CVS archive) | 
|---|
| 418 | if you want to muck with the Makefile.am files. | 
|---|
| 419 |  | 
|---|
| 420 | 28. New `asort' function for sorting arrays.  See the doc for details. | 
|---|
| 421 |  | 
|---|
| 422 | 29. The match function takes an optional array third argument to hold | 
|---|
| 423 | the text matched by parenthesized sub-expressions. | 
|---|
| 424 |  | 
|---|
| 425 | 30. The bit op functions and octal and hex source code constants are on by | 
|---|
| 426 | default, no longer a configure-time option.  Recognition of non-decimal | 
|---|
| 427 | data is now enabled at runtime with --non-decimal-data command line option. | 
|---|
| 428 |  | 
|---|
| 429 | 31. Internationalization features available at the awk level: new TEXTDOMAIN | 
|---|
| 430 | variable and `bindtextdomain' and `dcgettext' functions. printf formats | 
|---|
| 431 | may contain the "%2$3.5d" kind of notation for use in translations.  See | 
|---|
| 432 | the texinfo manual for details. | 
|---|
| 433 |  | 
|---|
| 434 | 32. The return value from `close' has been rationalized.  Most notably, | 
|---|
| 435 | closing something that wasn't open returns -1 but remains non-fatal. | 
|---|
| 436 |  | 
|---|
| 437 | 33. The array effeciency change from 3.0.5 was reverted; the semantics were | 
|---|
| 438 | not right.  Additionally, index values of previously stored elements | 
|---|
| 439 | can no longer change dynamically. | 
|---|
| 440 |  | 
|---|
| 441 | 34. The new option --dump-variables dumps a list of all global variables and | 
|---|
| 442 | their final types and values to a file you give, or to `awkvars.out'. | 
|---|
| 443 |  | 
|---|
| 444 | 35. Gawk now uses a recent version of random.c courtesy of the FreeBSD | 
|---|
| 445 | project. | 
|---|
| 446 |  | 
|---|
| 447 | 36. The gawk source code now uses ANSI C function definitions (new style), | 
|---|
| 448 | with ansi2knr to translate code for old compilers. | 
|---|
| 449 |  | 
|---|
| 450 | 37. `for (iggy in foo)' loops should be more robust now in the face of | 
|---|
| 451 | adding/deleting elements in the middle; they loop over just the elements | 
|---|
| 452 | that are present in the array when the loop starts. | 
|---|
| 453 |  | 
|---|
| 454 | Changes from 3.0.5 to 3.0.6 | 
|---|
| 455 | --------------------------- | 
|---|
| 456 |  | 
|---|
| 457 | This is a bug fix release only, pending further development on 3.1.0. | 
|---|
| 458 |  | 
|---|
| 459 | Bugs fixed and changes made: | 
|---|
| 460 |  | 
|---|
| 461 | 1. Subscripting an array with a variable that is just a number no | 
|---|
| 462 | longer magically converts the variable into a string. | 
|---|
| 463 |  | 
|---|
| 464 | 2. Similarly, running a `for (iggy in foo)' loop where `foo' is a | 
|---|
| 465 | function parameter now works correctly. | 
|---|
| 466 |  | 
|---|
| 467 | 3. Similarly, `i = ""; v[i] = a; if (i in v) ...' now works again. | 
|---|
| 468 |  | 
|---|
| 469 | 4. Gawk now special cases `for (iggy in foo) delete foo[iggy]' and | 
|---|
| 470 | treats it as the moral equivalent of `delete foo'.  This should be | 
|---|
| 471 | a major efficiency win when portably deleting large arrays. | 
|---|
| 472 |  | 
|---|
| 473 | 5. VMS port brought up to date. | 
|---|
| 474 |  | 
|---|
| 475 | Changes from 3.0.4 to 3.0.5 | 
|---|
| 476 | --------------------------- | 
|---|
| 477 |  | 
|---|
| 478 | This is a bug fix release only, pending further development on 3.1.0. | 
|---|
| 479 |  | 
|---|
| 480 | Bugs Fixed: | 
|---|
| 481 |  | 
|---|
| 482 | 1. `function foo(foo)' is now a fatal error. | 
|---|
| 483 |  | 
|---|
| 484 | 2. Array indexing is now much more efficient: where possible, only one | 
|---|
| 485 | copy of an index string is kept, even if used in multiple arrays. | 
|---|
| 486 |  | 
|---|
| 487 | 3. Support was added for MacOS X and an `install-strip' target. | 
|---|
| 488 |  | 
|---|
| 489 | 4. [s]printf formatting for `0' flag and floating point formats now | 
|---|
| 490 | works correctly. | 
|---|
| 491 |  | 
|---|
| 492 | 5. HP-UX large file support with GCC 2.95.1 now works. | 
|---|
| 493 |  | 
|---|
| 494 | 6. Arguments that contain `=' but that aren't syntactically valid are | 
|---|
| 495 | now treated as filenames, instead of as fatal errors. | 
|---|
| 496 |  | 
|---|
| 497 | 7. `-v NF=foo' now works. | 
|---|
| 498 |  | 
|---|
| 499 | 8. Non-ascii alphanumeric characters are now treated as such in the | 
|---|
| 500 | right locales by regex.c.  Similarly, a Latin-1 y-umlaut (decimal | 
|---|
| 501 | value 255) in the program text no longer acts like EOF. | 
|---|
| 502 |  | 
|---|
| 503 | 9. Array indexes are always compared as strings; fixes an obscure bug | 
|---|
| 504 | when user input gets used for the `x in array' test. | 
|---|
| 505 |  | 
|---|
| 506 | 10. The usage message now points users to the documentation for how | 
|---|
| 507 | to report bugs. | 
|---|
| 508 |  | 
|---|
| 509 | 11. `/=' now works after an array. | 
|---|
| 510 |  | 
|---|
| 511 | 12. `b += b += 1' now works correctly. | 
|---|
| 512 |  | 
|---|
| 513 | 13. IGNORECASE changing with calls `match' now works better. (Fix for | 
|---|
| 514 | semi-obscure bug.) | 
|---|
| 515 |  | 
|---|
| 516 | 14. Multicharacter values for RS now generate a lint warning. | 
|---|
| 517 |  | 
|---|
| 518 | 15. The gawk open file caching is now much more efficient. | 
|---|
| 519 |  | 
|---|
| 520 | 16. Global arrays passed to functions are now managed better.  In particular, | 
|---|
| 521 | test/arynocls.awk won't crash referencing freed memory. | 
|---|
| 522 |  | 
|---|
| 523 | 17. In obscure cases, `getline var' can no longer clobber $0. | 
|---|
| 524 |  | 
|---|
| 525 | Changes from 3.0.3 to 3.0.4 | 
|---|
| 526 | --------------------------- | 
|---|
| 527 |  | 
|---|
| 528 | This is a bug fix release only, pending further development on 3.1.0. | 
|---|
| 529 |  | 
|---|
| 530 | Bugs Fixed: | 
|---|
| 531 |  | 
|---|
| 532 | 1. A memory leak when turning a function parameter into an array was | 
|---|
| 533 | fixed. | 
|---|
| 534 |  | 
|---|
| 535 | 2. The non-decimal data option now works correctly. | 
|---|
| 536 |  | 
|---|
| 537 | 3. Using an empty pair of brackets as an array subscript no longer causes | 
|---|
| 538 | a core dump during parsing.  In general, syntax errors should not | 
|---|
| 539 | cause core dumps any more. | 
|---|
| 540 |  | 
|---|
| 541 | 4. Standard input is no longer closed if it provides program source, | 
|---|
| 542 | avoiding strange I/O problems. | 
|---|
| 543 |  | 
|---|
| 544 | 5. Memory corruption during printing with `print' has been fixed. | 
|---|
| 545 |  | 
|---|
| 546 | 6. The gsub function now correctly counts the number of matches. | 
|---|
| 547 |  | 
|---|
| 548 | 7. A typo in doc/Makefile.in has been fixed, making installation work. | 
|---|
| 549 |  | 
|---|
| 550 | 8. Calling `next' or `nextfile' from a BEGIN or END rule is now fatal. | 
|---|
| 551 |  | 
|---|
| 552 | 9. Subtle problems in rebuilding $0 when fields were changed have been | 
|---|
| 553 | fixed. | 
|---|
| 554 |  | 
|---|
| 555 | 10. `FS = FS' now correctly turns off the use of FIELDWIDTHS. | 
|---|
| 556 |  | 
|---|
| 557 | 11. Gawk now parses fields correctly when FS is a single character. | 
|---|
| 558 |  | 
|---|
| 559 | 12. It is now possible for RS to be the NUL character ("\0"). | 
|---|
| 560 |  | 
|---|
| 561 | 13. Weird problems with number conversions on MIPS and other systems | 
|---|
| 562 | have been fixed. | 
|---|
| 563 |  | 
|---|
| 564 | 14. When parsing using FIELDWIDTHS is in effect, `split' with no third | 
|---|
| 565 | argument will still use the value of FS. | 
|---|
| 566 |  | 
|---|
| 567 | 15. Large File Support for Solaris, HP-UX, AIX, and IRIX is now enabled at | 
|---|
| 568 | compile time, thanks to Paul Eggert. | 
|---|
| 569 |  | 
|---|
| 570 | 16. Attempting to use the name of a function as a variable or array | 
|---|
| 571 | from within the function is now caught as a fatal error, instead | 
|---|
| 572 | of as a core dump. | 
|---|
| 573 |  | 
|---|
| 574 | 17. A bug in parsing hex escapes was fixed. | 
|---|
| 575 |  | 
|---|
| 576 | 18. A weird bug with concatenation where one expression has side effects | 
|---|
| 577 | that changes another was fixed. | 
|---|
| 578 |  | 
|---|
| 579 | 19. printf/sprintf now behave much better for uses of the '0' and '#' flags | 
|---|
| 580 | and with precisions and field widths. | 
|---|
| 581 |  | 
|---|
| 582 | 20. Further strangenesses with concatenation and multiple accesses of some | 
|---|
| 583 | of the special variables was fixed. | 
|---|
| 584 |  | 
|---|
| 585 | 21. The Atari port is marked as no longer supported. | 
|---|
| 586 |  | 
|---|
| 587 | 22. Build problems on HP-UX have been fixed. | 
|---|
| 588 |  | 
|---|
| 589 | 23. Minor fixes and additional explanations added to the documentation. | 
|---|
| 590 |  | 
|---|
| 591 | 24. For RS = "", even a single leading newline is now correctly stripped. | 
|---|
| 592 |  | 
|---|
| 593 | 25. Obscure parsing problems for regex constants like /=.../ fixed, so | 
|---|
| 594 | that a regex constant is recognized, and not the /= operator. | 
|---|
| 595 |  | 
|---|
| 596 | 26. Fixed a bug when closing a redirection that matched the current | 
|---|
| 597 | or last FILENAME. | 
|---|
| 598 |  | 
|---|
| 599 | 27. Build problems on AIX fixed. | 
|---|
| 600 |  | 
|---|
| 601 | Changes from 3.0.2 to 3.0.3 | 
|---|
| 602 | --------------------------- | 
|---|
| 603 |  | 
|---|
| 604 | The horrendous per-record memory leak introduced in 3.0.1 is gone, finally. | 
|---|
| 605 |  | 
|---|
| 606 | The `amiga' directory is now gone; Amiga support is now entirely handled | 
|---|
| 607 | by the POSIX support. | 
|---|
| 608 |  | 
|---|
| 609 | Windows32 support has been added in the `pc' directory. See `README_d/README.pc' | 
|---|
| 610 | for more info. | 
|---|
| 611 |  | 
|---|
| 612 | The mmap changes are disabled in io.c, and will be removed entirely | 
|---|
| 613 | in the next big release.  They were an interesting experiment that just | 
|---|
| 614 | really didn't work in practice. | 
|---|
| 615 |  | 
|---|
| 616 | A minor memory leak that occurred when using `next' from within a | 
|---|
| 617 | function has also been fixed. | 
|---|
| 618 |  | 
|---|
| 619 | Problems with I/O from sub-processes via a pipe are now gone. | 
|---|
| 620 |  | 
|---|
| 621 | Using "/dev/pid" and the other special /dev files no longer causes a core dump. | 
|---|
| 622 |  | 
|---|
| 623 | The files regex.h, regex.c, getopt.h, getopt.c, and getopt1.c have been | 
|---|
| 624 | merged with the versions in GNU libc. Thanks to Ulrich Drepper for his help. | 
|---|
| 625 |  | 
|---|
| 626 | Some new undocumented features have been added. Use the source, Luke! | 
|---|
| 627 | It is not clear yet whether these will ever be fully supported. | 
|---|
| 628 |  | 
|---|
| 629 | Array performance should be much better for very very large arrays. "Virtual | 
|---|
| 630 | memory required, real memory helpful." | 
|---|
| 631 |  | 
|---|
| 632 | builtin.c:do_substr rationalized, again. | 
|---|
| 633 |  | 
|---|
| 634 | The --re-interval option now works as advertised. | 
|---|
| 635 |  | 
|---|
| 636 | The license text on some of the missing/* files is now generic. | 
|---|
| 637 |  | 
|---|
| 638 | Lots more new test cases. | 
|---|
| 639 |  | 
|---|
| 640 | Lots of other small bugs fixed, see the ChangeLog files for details. | 
|---|
| 641 |  | 
|---|
| 642 | Changes from 3.0.1 to 3.0.2 | 
|---|
| 643 | --------------------------- | 
|---|
| 644 |  | 
|---|
| 645 | Gawk now uses autoconf 2.12. | 
|---|
| 646 |  | 
|---|
| 647 | strftime now behaves correctly if passed an empty format string or if | 
|---|
| 648 | the string formats to an empty result string. | 
|---|
| 649 |  | 
|---|
| 650 | Several minor compilation and installation problems have been fixed. | 
|---|
| 651 |  | 
|---|
| 652 | Minor page break issues in the user's guide have been fixed. | 
|---|
| 653 |  | 
|---|
| 654 | Lexical errors no longer repeat ad infinitum. | 
|---|
| 655 |  | 
|---|
| 656 | Changes from 3.0.0 to 3.0.1 | 
|---|
| 657 | --------------------------- | 
|---|
| 658 |  | 
|---|
| 659 | Troff source for a handy-dandy five color reference card is now provided. | 
|---|
| 660 | Thanks to SSC for their macros. | 
|---|
| 661 |  | 
|---|
| 662 | Gawk now behaves like Unix awk and mawk, in that newline acts as white | 
|---|
| 663 | space for separating fields and for `split', by default.  In posix mode, | 
|---|
| 664 | only space and tab separate fields. The documentation has been updated to | 
|---|
| 665 | reflect this. | 
|---|
| 666 |  | 
|---|
| 667 | Tons and tons of small bugs fixed and new tests added, see the ChangeLogs. | 
|---|
| 668 |  | 
|---|
| 669 | Lots fewer compile time warnings from gcc -Wall. Remaining ones aren't | 
|---|
| 670 | worth fixing. | 
|---|
| 671 |  | 
|---|
| 672 | Gawk now pays some attention to the locale settings. | 
|---|
| 673 |  | 
|---|
| 674 | Fixes to gsub to catch several corner cases. | 
|---|
| 675 |  | 
|---|
| 676 | The `print' statement now evaluates all expressions first, and then | 
|---|
| 677 | prints them. This leads to less suprising behaviour if any expression has | 
|---|
| 678 | output side effects. | 
|---|
| 679 |  | 
|---|
| 680 | Miscellanious improvements in regex.h and regex.c. | 
|---|
| 681 |  | 
|---|
| 682 | Gawk will now install itself as gawk-M.N.P in $(bindir), and link | 
|---|
| 683 | `gawk' to it. This makes it easy to have multiple versions of gawk | 
|---|
| 684 | simultaneously. It will also now install itself as `awk' in $(bindir) | 
|---|
| 685 | if there is no `awk' there. This is in addition to installing itself as | 
|---|
| 686 | `gawk'. This change benefits the Hurd, and possibly other systems.  One | 
|---|
| 687 | day, gawk will drop the `g', but not yet. | 
|---|
| 688 |  | 
|---|
| 689 | `--posix' turns on interval expressions. Gawk now matches its documentation. | 
|---|
| 690 |  | 
|---|
| 691 | `close(FILENAME)' now does something meaningful. | 
|---|
| 692 |  | 
|---|
| 693 | Field management code in field.c majorly overhauled, several times. | 
|---|
| 694 |  | 
|---|
| 695 | The gensub code has been fixed, several bugs are now gone. | 
|---|
| 696 |  | 
|---|
| 697 | Gawk will use mmap for data file input if it is available. | 
|---|
| 698 |  | 
|---|
| 699 | The printf/sprintf code has been improved. | 
|---|
| 700 |  | 
|---|
| 701 | Minor issues in Makefile setup worked on and improved. | 
|---|
| 702 |  | 
|---|
| 703 | builtin.c:do_substr rationalized. | 
|---|
| 704 |  | 
|---|
| 705 | Regex matching fixed so that /+[0-9]/ now matches the leading +. | 
|---|
| 706 |  | 
|---|
| 707 | For building on vms, the default compiler is now DEC C rather than VAX C. | 
|---|
| 708 |  | 
|---|
| 709 | Changes from 2.15.6 to 3.0.0 | 
|---|
| 710 | ---------------------------- | 
|---|
| 711 |  | 
|---|
| 712 | Fixed spelling of `Programming' in the copyright notice in all the files. | 
|---|
| 713 |  | 
|---|
| 714 | New --re-interval option to turn on interval expressions. They're off | 
|---|
| 715 | by default, except for --posix, to avoid breaking old programs. | 
|---|
| 716 |  | 
|---|
| 717 | Passing regexp constants as parameters to user defined functions now | 
|---|
| 718 | generates a lint warning. | 
|---|
| 719 |  | 
|---|
| 720 | Several obscure regexp bugs fixed; alas, a small number remain. | 
|---|
| 721 |  | 
|---|
| 722 | The manual has been thoroughly revised. It's now almost 50% bigger than | 
|---|
| 723 | it used to be. | 
|---|
| 724 |  | 
|---|
| 725 | The `+' modifier in printf is now reset correctly for each item. | 
|---|
| 726 |  | 
|---|
| 727 | The do_unix variable is now named do_traditional. | 
|---|
| 728 |  | 
|---|
| 729 | Handling of \ in sub and gsub rationalized (somewhat, see the manual for | 
|---|
| 730 | the gory [and I do mean gory] details). | 
|---|
| 731 |  | 
|---|
| 732 | IGNORECASE now uses ISO 8859-1 Latin-1 instead of straight ASCII. See the | 
|---|
| 733 | source for how to revert to pure ASCII. | 
|---|
| 734 |  | 
|---|
| 735 | --lint will now warn if an assignment occurs in a conditional context. | 
|---|
| 736 | This may become obnoxious enough to need turning off in the future, but | 
|---|
| 737 | "it seemed like a good idea at the time." | 
|---|
| 738 |  | 
|---|
| 739 | %hf and %Lf are now diagnosed as invalid in printf, just like %lf. | 
|---|
| 740 |  | 
|---|
| 741 | Gawk no longer incorrectly closes stdin in child processes used in | 
|---|
| 742 | input pipelines. | 
|---|
| 743 |  | 
|---|
| 744 | For integer formats, gawk now correctly treats the precision as the | 
|---|
| 745 | number of digits to print, not the number of characters. | 
|---|
| 746 |  | 
|---|
| 747 | gawk is now much better at catching the use of scalar values when | 
|---|
| 748 | arrays are needed, both in function calls and the `x in y' constructs. | 
|---|
| 749 |  | 
|---|
| 750 | New gensub function added. See the manual. | 
|---|
| 751 |  | 
|---|
| 752 | If do_tradtional is true, octal and hex escapes in regexp constants are | 
|---|
| 753 | treated literally.  This matches historical behavior. | 
|---|
| 754 |  | 
|---|
| 755 | yylex/nextc fixed so that even null characters can be included | 
|---|
| 756 | in the source code. | 
|---|
| 757 |  | 
|---|
| 758 | do_format now handles cases where a format specifier doesn't end in | 
|---|
| 759 | a control letter. --lint reports an error. | 
|---|
| 760 |  | 
|---|
| 761 | strftime() now uses a default time format equivalent to that of the | 
|---|
| 762 | Unix date command, thus it can be called with no arguments. | 
|---|
| 763 |  | 
|---|
| 764 | Gawk now catches functions that are used but not defined at parse time | 
|---|
| 765 | instead of at run time. (This is a lint error, making it fatal could break | 
|---|
| 766 | old code.) | 
|---|
| 767 |  | 
|---|
| 768 | Arrays that max out are now handled correctly. | 
|---|
| 769 |  | 
|---|
| 770 | Integer formats outside the range of an unsigned long are now detected | 
|---|
| 771 | correctly using the SunOS 4.x cc compiler. | 
|---|
| 772 |  | 
|---|
| 773 | --traditional option added as new preferred name for --compat, in keeping | 
|---|
| 774 | with GCC. | 
|---|
| 775 |  | 
|---|
| 776 | --lint-old option added, so that warnings about things not in old awk | 
|---|
| 777 | are only given if explicitly asked for. | 
|---|
| 778 |  | 
|---|
| 779 | `next file' has changed to one word, `nextfile'. `next file' is still | 
|---|
| 780 | accepted but generates a lint warning. `next file' will go away eventually. | 
|---|
| 781 |  | 
|---|
| 782 | Gawk with --lint will now notice empty source files and empty data files. | 
|---|
| 783 |  | 
|---|
| 784 | Amiga support using the Unix emulation added. Thanks to fnf@ninemoons.com. | 
|---|
| 785 |  | 
|---|
| 786 | test/Makefile is now "parallel-make safe". | 
|---|
| 787 |  | 
|---|
| 788 | Gawk now uses POSIX regexps + GNU regex ops by default. --posix goes to | 
|---|
| 789 | pure posix regexps, and --compat goes to traditional Unix regexps. However, | 
|---|
| 790 | interval expressions, even though specified by POSIX, are turned off by | 
|---|
| 791 | default, to avoid breaking old code. | 
|---|
| 792 |  | 
|---|
| 793 | IGNORECASE now applies to string comparison as well as regexp operations. | 
|---|
| 794 |  | 
|---|
| 795 | The AT&T Bell Labs Research awk fflush builtin function is now supported. | 
|---|
| 796 | fflush is extended to flush stdout if no arg and everything if given | 
|---|
| 797 | the null string as an argument. | 
|---|
| 798 |  | 
|---|
| 799 | If RS is more than one character, it is treated as a regular expression | 
|---|
| 800 | and records are delimited accordingly.  The variable RT is set to the record | 
|---|
| 801 | terminator string. This is disabled in compatibility mode. | 
|---|
| 802 |  | 
|---|
| 803 | If FS is set to the null string (or the third arg. of split() is the null | 
|---|
| 804 | string), splitting is done at every single character. This is disabled in | 
|---|
| 805 | compatibility mode. | 
|---|
| 806 |  | 
|---|
| 807 | Gawk now uses the Autoconf generated configure script, doing away with all | 
|---|
| 808 | the config/* files and the machinery that went with them.  The Makefile.in | 
|---|
| 809 | has also changed accordingly, complete with all the standard GNU Makefile | 
|---|
| 810 | targets.  (Non-unix systems may still have their own config.h and Makefile; | 
|---|
| 811 | see the appropriate README_d/README.* and/or subdirectory.) | 
|---|
| 812 |  | 
|---|
| 813 | The source code has been cleaned up somewhat and the formatting improved. | 
|---|
| 814 |  | 
|---|
| 815 | Changes from 2.15.5 to 2.15.6 | 
|---|
| 816 | ----------------------------- | 
|---|
| 817 |  | 
|---|
| 818 | Copyrights updated on all changed files. | 
|---|
| 819 |  | 
|---|
| 820 | test directory enhanced with four new tests. | 
|---|
| 821 |  | 
|---|
| 822 | Gawk now generates a warning for \x without following hexadecimal digits. | 
|---|
| 823 | In this case, it returns 'x', not \0. | 
|---|
| 824 |  | 
|---|
| 825 | Several fixes in main.c related to variable initialization: | 
|---|
| 826 | CONVFMT has a default value | 
|---|
| 827 | resetup is called before initializing variables | 
|---|
| 828 | the varinit table fixed up a bit (see the comments) | 
|---|
| 829 |  | 
|---|
| 830 | gawk.1 updated with new BUG REPORTS section. | 
|---|
| 831 |  | 
|---|
| 832 | A plain `print' inside a BEGIN or END now generates a lint warning (awk.y). | 
|---|
| 833 |  | 
|---|
| 834 | Small fix in iop.c:get_a_record to avoid reading uninitialized memory. | 
|---|
| 835 |  | 
|---|
| 836 | awk.y:yylex now does a better job of handling things if the source file | 
|---|
| 837 | does not end in a newline. Probably there is more work to be done. | 
|---|
| 838 |  | 
|---|
| 839 | Memory leaks fixed in awk.y, particularly in cases of duplicate function | 
|---|
| 840 | parameters. Also, calling a function doesn't leak memory during parsing. | 
|---|
| 841 |  | 
|---|
| 842 | Empty function bodies are now allowed (awk.y). | 
|---|
| 843 |  | 
|---|
| 844 | Gawk now detects duplicate parameter names in functions (awk.y). | 
|---|
| 845 |  | 
|---|
| 846 | New function `error' in msg.c added for use from awk.y. | 
|---|
| 847 |  | 
|---|
| 848 | eval.c:r_get_lhs now checks if its argument is a parameter on the stack, | 
|---|
| 849 | and pulls down the real variable. This catches more 'using an array as | 
|---|
| 850 | a scalar' kinds of errors. | 
|---|
| 851 |  | 
|---|
| 852 | main.c recovers C alloca space after parsing, this is important for | 
|---|
| 853 | bison-based parsers. re.c recovers C alloca space after doing an research. | 
|---|
| 854 | [Changes from Pat Rankin] | 
|---|
| 855 |  | 
|---|
| 856 | builtin.c now declares the random() related functions based on | 
|---|
| 857 | RANDOM_MISSING from config.h. [Suggested by Pat Rankin] | 
|---|
| 858 |  | 
|---|
| 859 | awk.h now handles alloca correctly for HP-UX. [Kaveh Ghazi] | 
|---|
| 860 |  | 
|---|
| 861 | regex.h and config/cray60 updated for Unicos 8.0. [Hal Peterson] | 
|---|
| 862 |  | 
|---|
| 863 | Fixed re.c and dfa.c so that gawk no longer leaks memory when using | 
|---|
| 864 | lots of dynamic regexps. | 
|---|
| 865 |  | 
|---|
| 866 | Removed dependency on signed chars from `idx' variable in awk.h. Gawk | 
|---|
| 867 | now passes its test suite if compiled with `gcc -fno-signed-char'. | 
|---|
| 868 |  | 
|---|
| 869 | Fixed warning on close in io.c to go under lint control. Too many people | 
|---|
| 870 | have complained about the spurious message, particularly when closing a | 
|---|
| 871 | child pipeline early. | 
|---|
| 872 |  | 
|---|
| 873 | Gawk now correctly handles RS = "" when input is from a terminal | 
|---|
| 874 | (iop.c:get_a_record). | 
|---|
| 875 |  | 
|---|
| 876 | Config file added for GNU. | 
|---|
| 877 |  | 
|---|
| 878 | gawk 'BEGIN { exit 1 } ; END { exit }' now exits 1, as it should | 
|---|
| 879 | (eval.c:interpret). | 
|---|
| 880 |  | 
|---|
| 881 | sub and gsub now follow posix, \ escapes both & and \. Each \ must | 
|---|
| 882 | be doubled initially in the program to get it into the string. | 
|---|
| 883 | Thanks to Mike Brennan for pointing this out (builtin.c:sub_common). | 
|---|
| 884 |  | 
|---|
| 885 | If FS is "", gawk behaves like mawk and nawk, making the whole record be $1. | 
|---|
| 886 | Yet Another Dark Corner. Sigh (field.c:def_parse_field). | 
|---|
| 887 |  | 
|---|
| 888 | Gawk now correctly recomputes string values for numbers if CONVFMT has | 
|---|
| 889 | changed (awk.h:force_string, node.c:r_force_string). | 
|---|
| 890 |  | 
|---|
| 891 | A regexp of the form `/* this looks like a comment but is not */' will | 
|---|
| 892 | now generate a warning from --lint (awk.y). | 
|---|
| 893 |  | 
|---|
| 894 | Gawk will no longer core dump if given an empty input file (awk.y:get_src_buf, | 
|---|
| 895 | iop.c:optimal_bufsize). | 
|---|
| 896 |  | 
|---|
| 897 | A printf format of the form %lf is handled correctly. The `l' generates | 
|---|
| 898 | a lint warning (builtin.c:format_tree) [Thanks to Mark Moraes]. | 
|---|
| 899 |  | 
|---|
| 900 | Lynxos config file added. | 
|---|
| 901 |  | 
|---|
| 902 | `continue' outside a loop treated as `next' only in compatibility mode, | 
|---|
| 903 | instead of by default; recent att nawk chokes on this now.  `break' | 
|---|
| 904 | outside a loop now treated as `next' in compatibility mode (eval.c). | 
|---|
| 905 |  | 
|---|
| 906 | Bug fix in string concatenation, an arbitrary number of expressions | 
|---|
| 907 | are allowed (eval.c). | 
|---|
| 908 |  | 
|---|
| 909 | $1 += $2 now works correctly (eval.c). | 
|---|
| 910 |  | 
|---|
| 911 | Changing IGNORECASE no longer resets field-splitting to FS if it was | 
|---|
| 912 | using FIELDWIDTHS (eval.c, field.c). | 
|---|
| 913 |  | 
|---|
| 914 | Major enhancement: $0 and NF for last record read are now preserved | 
|---|
| 915 | into the END rule (io.c). | 
|---|
| 916 |  | 
|---|
| 917 | Regexp fixes: | 
|---|
| 918 | /./ now matches a newline (regex.h) | 
|---|
| 919 | ^ and $ match beginning and end of string only, not any embedded | 
|---|
| 920 | newlines (re.c) | 
|---|
| 921 | regex.c should compile and work ok on 64-bit mips/sgi machines | 
|---|
| 922 |  | 
|---|
| 923 | Changes from 2.15.4 to 2.15.5 | 
|---|
| 924 | ----------------------------- | 
|---|
| 925 |  | 
|---|
| 926 | FUTURES file updated and re-arranged some with more rational schedule. | 
|---|
| 927 |  | 
|---|
| 928 | Many prototypes handled better for ANSI C in protos.h. | 
|---|
| 929 |  | 
|---|
| 930 | getopt.c updated somewhat. | 
|---|
| 931 |  | 
|---|
| 932 | test/Makefile now removes junk directory, `bardargtest' renamed `badargs.' | 
|---|
| 933 |  | 
|---|
| 934 | Bug fix in iop.c for RS = "". Eat trailing newlines off of record separator. | 
|---|
| 935 |  | 
|---|
| 936 | Bug fix in Makefile.bsd44, use leading tab in actions. | 
|---|
| 937 |  | 
|---|
| 938 | Fix in field.c:set_FS for FS == "\\" and IGNORECASE != 0. | 
|---|
| 939 |  | 
|---|
| 940 | Config files updated or added: | 
|---|
| 941 | cray60, DEC OSF/1 2.0, Utek, sgi405, next21, next30, atari/config.h, | 
|---|
| 942 | sco. | 
|---|
| 943 |  | 
|---|
| 944 | Fix in io.c for ENFILE as well as EMFILE, update decl of groupset to | 
|---|
| 945 | include OSF/1. | 
|---|
| 946 |  | 
|---|
| 947 | Rationalized printing as integers if numbers are outside the range of a long. | 
|---|
| 948 | Changes to node.c:force_string and builtin.c. | 
|---|
| 949 |  | 
|---|
| 950 | Made internal NF, NR, and FNR variables longs instead of ints. | 
|---|
| 951 |  | 
|---|
| 952 | Add LIMITS_H_MISSING stuff to config.in and awk.h, and default defs for | 
|---|
| 953 | INT_MAX and LONG_MAX, if no limits.h file. Add a standard decl of | 
|---|
| 954 | the time() function for __STDC__. From ghazi@noc.rutgers.edu. | 
|---|
| 955 |  | 
|---|
| 956 | Fix tree_eval in awk.h and r_tree_eval in eval.c to deal better with | 
|---|
| 957 | function parameters, particularly ones that are arrays. | 
|---|
| 958 |  | 
|---|
| 959 | Fix eval.c to print out array names of arrays used in scalar contexts. | 
|---|
| 960 |  | 
|---|
| 961 | Fix eval.c in interpret to zero out source and sourceline initially. This | 
|---|
| 962 | does a better job of providing source file and line number information. | 
|---|
| 963 |  | 
|---|
| 964 | Fix to re_parse_field in field.c to not use isspace when RS = "", but rather | 
|---|
| 965 | to explicitly look for blank and tab. | 
|---|
| 966 |  | 
|---|
| 967 | Fix to sc_parse_field in field.c to catch the case of the FS character at the | 
|---|
| 968 | end of a record. | 
|---|
| 969 |  | 
|---|
| 970 | Lots of miscellanious bug fixes for memory leaks, courtesy Mark Moraes, | 
|---|
| 971 | also fixes for arrays. | 
|---|
| 972 |  | 
|---|
| 973 | io.c fixed to warn about lack of explicit closes if --lint. | 
|---|
| 974 |  | 
|---|
| 975 | Updated missing/strftime.c to match posted strftime 6.2. | 
|---|
| 976 |  | 
|---|
| 977 | Bug fix in builtin.c, in case of non-match in sub_common. | 
|---|
| 978 |  | 
|---|
| 979 | Updated constant used for division in builtin.c:do_rand for DEC Alpha | 
|---|
| 980 | and CRAY Y-MP. | 
|---|
| 981 |  | 
|---|
| 982 | POSIXLY_CORRECT in the environment turns on --posix (fixed in main.c). | 
|---|
| 983 |  | 
|---|
| 984 | Updated srandom prototype and calls in builtin.c. | 
|---|
| 985 |  | 
|---|
| 986 | Fix awk.y to enforce posix semantics of unary +: result is numeric. | 
|---|
| 987 |  | 
|---|
| 988 | Fix array.c to not rearrange the hash chain upon finding an index in | 
|---|
| 989 | the array.  This messed things up in cases like: | 
|---|
| 990 | for (index1 in array) { | 
|---|
| 991 | blah | 
|---|
| 992 | if (index2 in array)    # blew away the for | 
|---|
| 993 | stuff | 
|---|
| 994 | } | 
|---|
| 995 |  | 
|---|
| 996 | Fixed spelling errors in the man page. | 
|---|
| 997 |  | 
|---|
| 998 | Fixes in awk.y so that | 
|---|
| 999 | gawk '' /path/to/file | 
|---|
| 1000 | will work without core dumping or finding parse errors. | 
|---|
| 1001 |  | 
|---|
| 1002 | Fix main.c so that --lint will fuss about an empty program. | 
|---|
| 1003 | Yet another fix for argument parsing in the case of unrecognized options. | 
|---|
| 1004 |  | 
|---|
| 1005 | Bug fix in dfa.c to not attempt to free null pointers. | 
|---|
| 1006 |  | 
|---|
| 1007 | Bug fix in builtin.c to only use DEFAULT_G_PRECISION for %g or %G. | 
|---|
| 1008 |  | 
|---|
| 1009 | Bug fix in field.c to achieve call by value semantics for split. | 
|---|
| 1010 |  | 
|---|
| 1011 | Changes from 2.15.3 to 2.15.4 | 
|---|
| 1012 | ----------------------------- | 
|---|
| 1013 |  | 
|---|
| 1014 | Lots of lint fixes, and do_sprintf made mostly ANSI C compatible. | 
|---|
| 1015 |  | 
|---|
| 1016 | Man page updated and edited. | 
|---|
| 1017 |  | 
|---|
| 1018 | Copyrights updated. | 
|---|
| 1019 |  | 
|---|
| 1020 | Arrays now grow dynamically, initially scaling up by an order of magnitude | 
|---|
| 1021 | and then doubling, up to ~ 64K.  This should keep gawk's performance | 
|---|
| 1022 | graceful under heavy load. | 
|---|
| 1023 |  | 
|---|
| 1024 | New `delete array' feature added.  Only documented in the man page. | 
|---|
| 1025 |  | 
|---|
| 1026 | Switched to dfa and regex suites from grep-2.0. These offer the ability to | 
|---|
| 1027 | move to POSIX regexps in the next release. | 
|---|
| 1028 |  | 
|---|
| 1029 | Disabled GNU regex ops. | 
|---|
| 1030 |  | 
|---|
| 1031 | Research awk -m option now recognized. It does nothing in gawk, since gawk | 
|---|
| 1032 | has no static limits.  Only documented in the man page. | 
|---|
| 1033 |  | 
|---|
| 1034 | New bionic (faster, better, stronger than before) hashing function. | 
|---|
| 1035 |  | 
|---|
| 1036 | Bug fix in argument handling. `gawk -X' now notices there was no program. | 
|---|
| 1037 | Additional bug fixes to make --compat and --lint work again. | 
|---|
| 1038 |  | 
|---|
| 1039 | Many changes for systems where sizeof(int) != sizeof(void *). | 
|---|
| 1040 |  | 
|---|
| 1041 | Add explicit alloca(0) in io.c to recover space from C alloca. | 
|---|
| 1042 |  | 
|---|
| 1043 | Fixed file descriptor leak in io.c. | 
|---|
| 1044 |  | 
|---|
| 1045 | The --version option now follows the GNU coding standards and exits. | 
|---|
| 1046 |  | 
|---|
| 1047 | Fixed several prototypes in protos.h. | 
|---|
| 1048 |  | 
|---|
| 1049 | Several tests updated. On Solaris, warn that the out? tests will fail. | 
|---|
| 1050 |  | 
|---|
| 1051 | Configuration files for SunOS with cc and Solaris 2.x added. | 
|---|
| 1052 |  | 
|---|
| 1053 | Improved error messages in awk.y on gawk extensions if do_unix or do_compat. | 
|---|
| 1054 |  | 
|---|
| 1055 | INSTALL file added. | 
|---|
| 1056 |  | 
|---|
| 1057 | Fixed Atari Makefile and several VMS specific changes. | 
|---|
| 1058 |  | 
|---|
| 1059 | Better conversion of numbers to strings on systems with broken sprintfs. | 
|---|
| 1060 |  | 
|---|
| 1061 | Changes from 2.15.2 to 2.15.3 | 
|---|
| 1062 | ----------------------------- | 
|---|
| 1063 |  | 
|---|
| 1064 | Increased HASHSIZE to a decent number, 127 was way too small. | 
|---|
| 1065 |  | 
|---|
| 1066 | FILENAME is now the null string in a BEGIN rule. | 
|---|
| 1067 |  | 
|---|
| 1068 | Argument processing fixed for invalid options and missing arguments. | 
|---|
| 1069 |  | 
|---|
| 1070 | This version will build on VMS.  This included a fix to close all files | 
|---|
| 1071 | and pipes opened with redirections before closing stdout and stderr. | 
|---|
| 1072 |  | 
|---|
| 1073 | More getpgrp() defines. | 
|---|
| 1074 |  | 
|---|
| 1075 | Changes for BSD44:  <sys/param.h> in io.c and Makefile.bsd44. | 
|---|
| 1076 |  | 
|---|
| 1077 | All directories in the distribution are now writable. | 
|---|
| 1078 |  | 
|---|
| 1079 | Separated LDFLAGS and CFLAGS in Makefile.  CFLAGS can now be overridden by | 
|---|
| 1080 | user. | 
|---|
| 1081 |  | 
|---|
| 1082 | Make dist now builds compressed archives ending in .gz and runs doschk. | 
|---|
| 1083 |  | 
|---|
| 1084 | Amiga port. | 
|---|
| 1085 |  | 
|---|
| 1086 | New getopt.c fixes Alpha OSF/1 problem. | 
|---|
| 1087 |  | 
|---|
| 1088 | Make clean now removes possible test output. | 
|---|
| 1089 |  | 
|---|
| 1090 | Improved algorithm for multiple adjacent string concatenations leads to | 
|---|
| 1091 | performance improvements. | 
|---|
| 1092 |  | 
|---|
| 1093 | Fix nasty bug whereby command-line assignments, both with -v and at run time, | 
|---|
| 1094 | could create variables with syntactically illegal names. | 
|---|
| 1095 |  | 
|---|
| 1096 | Fix obscure bug in printf with %0 flag and filling. | 
|---|
| 1097 |  | 
|---|
| 1098 | Add a lint check for substr if provided length exceeds remaining characters | 
|---|
| 1099 | in string. | 
|---|
| 1100 |  | 
|---|
| 1101 | Update atari support. | 
|---|
| 1102 |  | 
|---|
| 1103 | PC support enhanced to include support for both DOS and OS/2. (Lots more | 
|---|
| 1104 | #ifdefs. Sigh.) | 
|---|
| 1105 |  | 
|---|
| 1106 | Config files for Hitachi Unix and OSF/1, courtesy of Yoko Morishita | 
|---|
| 1107 | (morisita@sra.co.jp) | 
|---|
| 1108 |  | 
|---|
| 1109 | Changes from 2.15.1 to 2.15.2 | 
|---|
| 1110 | ----------------------------- | 
|---|
| 1111 |  | 
|---|
| 1112 | Additions to the FUTURES file. | 
|---|
| 1113 |  | 
|---|
| 1114 | Document undefined order of output when using both standard output | 
|---|
| 1115 | and /dev/stdout or any of the /dev output files that gawk emulates in | 
|---|
| 1116 | the absence of OS support. | 
|---|
| 1117 |  | 
|---|
| 1118 | Clean up the distribution generation in Makefile.in:  the info files are | 
|---|
| 1119 | now included, the distributed files are marked read-only and patched | 
|---|
| 1120 | distributions are now unpacked in a directory named with the patch level. | 
|---|
| 1121 |  | 
|---|
| 1122 | Changes from 2.15 to 2.15.1 | 
|---|
| 1123 | --------------------------- | 
|---|
| 1124 |  | 
|---|
| 1125 | Close stdout and stderr before all redirections on program exit.  This allows | 
|---|
| 1126 | detection of write errors and also fixes the messages test on Solaris 2.x. | 
|---|
| 1127 |  | 
|---|
| 1128 | Removed YYMAXDEPTH define in awk.y which was limiting the parser stack depth. | 
|---|
| 1129 |  | 
|---|
| 1130 | Changes to config/bsd44, Makefile.bsd44 and configure to bring it into line | 
|---|
| 1131 | with the BSD4.4 release. | 
|---|
| 1132 |  | 
|---|
| 1133 | Changed Makefile to use prefix, exec_prefix, bindir etc. | 
|---|
| 1134 |  | 
|---|
| 1135 | make install now installs info files. | 
|---|
| 1136 |  | 
|---|
| 1137 | make install now sets permissions on installed files. | 
|---|
| 1138 |  | 
|---|
| 1139 | Make targets added:  uninstall, distclean, mostlyclean and realclean. | 
|---|
| 1140 |  | 
|---|
| 1141 | Added config.h to cleaner and clobber make targets. | 
|---|
| 1142 |  | 
|---|
| 1143 | Changes to config/{hpux8x,sysv3,sysv4,ultrix41} to deal with alloca(). | 
|---|
| 1144 |  | 
|---|
| 1145 | Change to getopt.h for portability. | 
|---|
| 1146 |  | 
|---|
| 1147 | Added more special cases to the getpgrp() call. | 
|---|
| 1148 |  | 
|---|
| 1149 | Added README.ibmrt-aos and config/ibmrt-aos. | 
|---|
| 1150 |  | 
|---|
| 1151 | Changes from 2.14 to 2.15 | 
|---|
| 1152 | --------------------------- | 
|---|
| 1153 |  | 
|---|
| 1154 | Command-line source can now be mixed with library functions. | 
|---|
| 1155 |  | 
|---|
| 1156 | ARGIND variable tracks index in ARGV of FILENAME. | 
|---|
| 1157 |  | 
|---|
| 1158 | GNU style long options in addition to short options. | 
|---|
| 1159 |  | 
|---|
| 1160 | Plan 9 style special files interpreted by gawk: | 
|---|
| 1161 | /dev/pid | 
|---|
| 1162 | /dev/ppid | 
|---|
| 1163 | /dev/pgrpid | 
|---|
| 1164 | /dev/user | 
|---|
| 1165 | $1 = getuid | 
|---|
| 1166 | $2 = geteuid | 
|---|
| 1167 | $3 = getgid | 
|---|
| 1168 | $4 = getegid | 
|---|
| 1169 | $5 ... $NF = getgroups if supported | 
|---|
| 1170 |  | 
|---|
| 1171 | ERRNO variable contains error string if getline or close fails. | 
|---|
| 1172 |  | 
|---|
| 1173 | Very old options -a and -e have gone away. | 
|---|
| 1174 |  | 
|---|
| 1175 | Inftest has been removed from the default target in test/Makefile -- the | 
|---|
| 1176 | results were too machine specific and resulted in too many false alarms. | 
|---|
| 1177 |  | 
|---|
| 1178 | A README.amiga has been added. | 
|---|
| 1179 |  | 
|---|
| 1180 | The "too many arguments supplied for format string" warning message is only | 
|---|
| 1181 | in effect under the lint option. | 
|---|
| 1182 |  | 
|---|
| 1183 | Code improvements in dfa.c. | 
|---|
| 1184 |  | 
|---|
| 1185 | Fixed all reported bugs: | 
|---|
| 1186 |  | 
|---|
| 1187 | Writes are checked for failure (such as full filesystem). | 
|---|
| 1188 |  | 
|---|
| 1189 | Stopped (at least some) runaway error messages. | 
|---|
| 1190 |  | 
|---|
| 1191 | gsub(/^/, "x") does the right thing for $0 of 0, 1, or more length. | 
|---|
| 1192 |  | 
|---|
| 1193 | close() on a command being piped to a getline now works properly. | 
|---|
| 1194 |  | 
|---|
| 1195 | The input record will no longer be freed upon an explicit close() | 
|---|
| 1196 | of the input file. | 
|---|
| 1197 |  | 
|---|
| 1198 | A NUL character in FS now works. | 
|---|
| 1199 |  | 
|---|
| 1200 | In a substitute, \\& now means a literal backslash followed by what | 
|---|
| 1201 | was matched. | 
|---|
| 1202 |  | 
|---|
| 1203 | Integer overflow of substring length in substr() is caught. | 
|---|
| 1204 |  | 
|---|
| 1205 | An input record without a newline termination is handled properly. | 
|---|
| 1206 |  | 
|---|
| 1207 | In io.c, check is against only EMFILE so that system file table | 
|---|
| 1208 | is not filled. | 
|---|
| 1209 |  | 
|---|
| 1210 | Renamed all files with names longer than 14 characters. | 
|---|
| 1211 |  | 
|---|
| 1212 | Escaped characters in regular expressions were being lost when | 
|---|
| 1213 | IGNORECASE was used. | 
|---|
| 1214 |  | 
|---|
| 1215 | Long source lines were not being handled properly. | 
|---|
| 1216 |  | 
|---|
| 1217 | Sourcefiles that ended in a tab but no newline were bombing. | 
|---|
| 1218 |  | 
|---|
| 1219 | Patterns that could match zero characters in split() were not working | 
|---|
| 1220 | properly. | 
|---|
| 1221 |  | 
|---|
| 1222 | The parsedebug option was not working. | 
|---|
| 1223 |  | 
|---|
| 1224 | The grammar was being a bit too lenient, allowing some very dubious | 
|---|
| 1225 | programs to pass. | 
|---|
| 1226 |  | 
|---|
| 1227 | Compilation with DEBUG defined now works. | 
|---|
| 1228 |  | 
|---|
| 1229 | A variable read in with getline was not being treated as a potential | 
|---|
| 1230 | number. | 
|---|
| 1231 |  | 
|---|
| 1232 | Array subscripts were not always of string type. | 
|---|
| 1233 |  | 
|---|
| 1234 |  | 
|---|
| 1235 | Changes from 2.13.2 to 2.14 | 
|---|
| 1236 | --------------------------- | 
|---|
| 1237 |  | 
|---|
| 1238 | Updated manual! | 
|---|
| 1239 |  | 
|---|
| 1240 | Added "next file" to skip efficiently to the next input file. | 
|---|
| 1241 |  | 
|---|
| 1242 | Fixed potential of overflowing buffer in do_sprintf(). | 
|---|
| 1243 |  | 
|---|
| 1244 | Plugged small memory leak in sub_common(). | 
|---|
| 1245 |  | 
|---|
| 1246 | EOF on a redirect is now "sticky" -- it can only be cleared by close()ing | 
|---|
| 1247 | the pipe or file. | 
|---|
| 1248 |  | 
|---|
| 1249 | Now works if used via a #! /bin/gawk line at the top of an executable file | 
|---|
| 1250 | when that line ends with whitespace. | 
|---|
| 1251 |  | 
|---|
| 1252 | Added some checks to the grammar to catch redefinition of builtin functions. | 
|---|
| 1253 | This could eventually be the basis for an extension to allow redefining | 
|---|
| 1254 | functions, but in the mean time it's a good error catching facility. | 
|---|
| 1255 |  | 
|---|
| 1256 | Negative integer exponents now work. | 
|---|
| 1257 |  | 
|---|
| 1258 | Modified do_system() to make sure it had a non-null string to be passed | 
|---|
| 1259 | to system(3). Thus, system("") will flush any pending output but not go | 
|---|
| 1260 | through the overhead of forking an un-needed shell. | 
|---|
| 1261 |  | 
|---|
| 1262 | A fix to floating point comparisons so that NaNs compare right on IEEE systems. | 
|---|
| 1263 |  | 
|---|
| 1264 | Added code to make sure we're not opening directories for reading and such. | 
|---|
| 1265 |  | 
|---|
| 1266 | Added code to do better diagnoses of weird or null file names. | 
|---|
| 1267 |  | 
|---|
| 1268 | Allow continue outside of a loop, unless in strict posix mode.  Lint option | 
|---|
| 1269 | will issue warning. | 
|---|
| 1270 |  | 
|---|
| 1271 | New missing/strftime.c.  There has been one change that affects gawk.  Posix | 
|---|
| 1272 | now defines a %V conversion so the vms conversion has been changed to %v. | 
|---|
| 1273 | If this version is used with gawk -Wlint and they use %V in a call to | 
|---|
| 1274 | strftime, they'll get a warning. | 
|---|
| 1275 |  | 
|---|
| 1276 | Error messages now conform to GNU standard (I hope). | 
|---|
| 1277 |  | 
|---|
| 1278 | Changed comparisons to conform to the  description found in the file POSIX. | 
|---|
| 1279 | This is inconsistent with the current POSIX draft, but that is broken. | 
|---|
| 1280 | Hopefully the final POSIX standard will conform to this version. | 
|---|
| 1281 | (Alas, this will have to wait for 1003.2b, which will be a revision to | 
|---|
| 1282 | the 1003.2 standard.  That standard has been frozen with the broken | 
|---|
| 1283 | comparison rules.) | 
|---|
| 1284 |  | 
|---|
| 1285 | The length of a string was a short and now is a size_t. | 
|---|
| 1286 |  | 
|---|
| 1287 | Updated VMS help. | 
|---|
| 1288 |  | 
|---|
| 1289 | Added quite a few new tests to the test suite and deleted many due to lack of | 
|---|
| 1290 | written releases.  Test output is only removed if it is identical to the | 
|---|
| 1291 | "good" output. | 
|---|
| 1292 |  | 
|---|
| 1293 | Fixed a couple of bugs for reference to $0 when $0 is "" -- particularly in | 
|---|
| 1294 | a BEGIN block. | 
|---|
| 1295 |  | 
|---|
| 1296 | Fixed premature freeing in construct "$0 = $0". | 
|---|
| 1297 |  | 
|---|
| 1298 | Removed the call to wait_any() in gawk_popen(), since on at least some systems, | 
|---|
| 1299 | if gawk's input was from a pipe, the predecessor process in the pipe was a | 
|---|
| 1300 | child of gawk and this caused a deadlock. | 
|---|
| 1301 |  | 
|---|
| 1302 | Regexp can (once again) match a newline, if given explicitly. | 
|---|
| 1303 |  | 
|---|
| 1304 | nextopen() makes sure file name is null terminated. | 
|---|
| 1305 |  | 
|---|
| 1306 | Fixed VMS pipe simulation.  Improved VMS I/O performance. | 
|---|
| 1307 |  | 
|---|
| 1308 | Catch . used in variable names. | 
|---|
| 1309 |  | 
|---|
| 1310 | Fixed bug in getline without redirect from a file -- it was quitting after the | 
|---|
| 1311 | first EOF, rather than trying the next file. | 
|---|
| 1312 |  | 
|---|
| 1313 | Fixed bug in treatment of backslash at the end of a string -- it was bombing | 
|---|
| 1314 | rather than doing something sensible.  It is not clear what this should mean, | 
|---|
| 1315 | but for now I issue a warning and take it as a literal backslash. | 
|---|
| 1316 |  | 
|---|
| 1317 | Moved setting of regexp syntax to before the option parsing in main(), to | 
|---|
| 1318 | handle things like -v FS='[.,;]' | 
|---|
| 1319 |  | 
|---|
| 1320 | Fixed bug when NF is set by user -- fields_arr must be expanded if necessary | 
|---|
| 1321 | and "new" fields must be initialized. | 
|---|
| 1322 |  | 
|---|
| 1323 | Fixed several bugs in [g]sub() for no match found or the match is 0-length. | 
|---|
| 1324 |  | 
|---|
| 1325 | Fixed bug where in gsub() a pattern anchored at the beginning would still | 
|---|
| 1326 | substitute throughout the string. | 
|---|
| 1327 |  | 
|---|
| 1328 | make test does not assume that . is in PATH. | 
|---|
| 1329 |  | 
|---|
| 1330 | Fixed bug when a field beyond the end of the record was requested after | 
|---|
| 1331 | $0 was altered (directly or indirectly). | 
|---|
| 1332 |  | 
|---|
| 1333 | Fixed bug for assignment to field beyond end of record -- the assigned value | 
|---|
| 1334 | was not found on subsequent reference to that field. | 
|---|
| 1335 |  | 
|---|
| 1336 | Fixed bug for FS a regexp and it matches at the end of a record. | 
|---|
| 1337 |  | 
|---|
| 1338 | Fixed memory leak for an array local to a function. | 
|---|
| 1339 |  | 
|---|
| 1340 | Fixed hanging of pipe redirection to getline | 
|---|
| 1341 |  | 
|---|
| 1342 | Fixed coredump on access to $0 inside BEGIN block. | 
|---|
| 1343 |  | 
|---|
| 1344 | Fixed treatment of RS = "".  It now parses the fields correctly and strips | 
|---|
| 1345 | leading whitespace from a record if FS is a space. | 
|---|
| 1346 |  | 
|---|
| 1347 | Fixed faking of /dev/stdin. | 
|---|
| 1348 |  | 
|---|
| 1349 | Fixed problem with x += x | 
|---|
| 1350 |  | 
|---|
| 1351 | Use of scalar as array and vice versa is now detected. | 
|---|
| 1352 |  | 
|---|
| 1353 | IGNORECASE now obeyed for FS (even if FS is a single alphabetic character). | 
|---|
| 1354 |  | 
|---|
| 1355 | Switch to GPL version 2. | 
|---|
| 1356 |  | 
|---|
| 1357 | Renamed awk.tab.c to awktab.c for MSDOS and VMS tar programs. | 
|---|
| 1358 |  | 
|---|
| 1359 | Renamed this file (CHANGES) to NEWS. | 
|---|
| 1360 |  | 
|---|
| 1361 | Use fmod() instead of modf() and provide FMOD_MISSING #define to undo | 
|---|
| 1362 | this change. | 
|---|
| 1363 |  | 
|---|
| 1364 | Correct the volatile declarations in eval.c. | 
|---|
| 1365 |  | 
|---|
| 1366 | Avoid errant closing of the file descriptors for stdin, stdout and stderr. | 
|---|
| 1367 |  | 
|---|
| 1368 | Be more flexible about where semi-colons can occur in programs. | 
|---|
| 1369 |  | 
|---|
| 1370 | Check for write errors on all output, not just on close(). | 
|---|
| 1371 |  | 
|---|
| 1372 | Eliminate the need for missing/{strtol.c,vprintf.c}. | 
|---|
| 1373 |  | 
|---|
| 1374 | Use GNU getopt and eliminate missing/getopt.c. | 
|---|
| 1375 |  | 
|---|
| 1376 | More "lint" checking. | 
|---|
| 1377 |  | 
|---|
| 1378 |  | 
|---|
| 1379 | Changes from 2.13.1 to 2.13.2 | 
|---|
| 1380 | ----------------------------- | 
|---|
| 1381 |  | 
|---|
| 1382 | Toward conformity with GNU standards, configure is a link to mkconf, the latter | 
|---|
| 1383 | to disappear in the next major release. | 
|---|
| 1384 |  | 
|---|
| 1385 | Update to config/bsd43. | 
|---|
| 1386 |  | 
|---|
| 1387 | Added config/apollo, config/msc60, config/cray2-50, config/interactive2.2 | 
|---|
| 1388 |  | 
|---|
| 1389 | sgi33.cc added for compilation using cc rather than gcc. | 
|---|
| 1390 |  | 
|---|
| 1391 | Ultrix41 now propagates to config.h properly -- as part of a general | 
|---|
| 1392 | mechanism in configure for kludges -- #define anything from a config file | 
|---|
| 1393 | just gets tacked onto the end of config.h -- to be used sparingly. | 
|---|
| 1394 |  | 
|---|
| 1395 | Got rid of an unnecessary and troublesome declaration of vprintf(). | 
|---|
| 1396 |  | 
|---|
| 1397 | Small improvement in locality of error messages. | 
|---|
| 1398 |  | 
|---|
| 1399 | Try to diagnose use of array as scalar and vice versa -- to be improved in | 
|---|
| 1400 | the future. | 
|---|
| 1401 |  | 
|---|
| 1402 | Fix for last bug fix for Cray division code--sigh. | 
|---|
| 1403 |  | 
|---|
| 1404 | More changes to test suite to explicitly use sh.  Also get rid of | 
|---|
| 1405 | a few generated files. | 
|---|
| 1406 |  | 
|---|
| 1407 | Fixed off-by-one bug in string concatenation code. | 
|---|
| 1408 |  | 
|---|
| 1409 | Fix for use of array that is passed in from a previous function parameter. | 
|---|
| 1410 | Addition to test suite for above. | 
|---|
| 1411 |  | 
|---|
| 1412 | A number of changes associated with changing NF and access to fields | 
|---|
| 1413 | beyond the end of the current record. | 
|---|
| 1414 |  | 
|---|
| 1415 | Change to missing/memcmp.c to avoid seg. fault on zero length input. | 
|---|
| 1416 |  | 
|---|
| 1417 | Updates to test suite (including some inadvertently left out of the last patch) | 
|---|
| 1418 | to invoke sh explicitly (rather than rely on #!/bin/sh) and remove some | 
|---|
| 1419 | junk files.  test/chem/good updated to correspond to bug fixes. | 
|---|
| 1420 |  | 
|---|
| 1421 | Changes from 2.13.0 to 2.13.1 | 
|---|
| 1422 | ----------------------------- | 
|---|
| 1423 |  | 
|---|
| 1424 | More configs and PORTS. | 
|---|
| 1425 |  | 
|---|
| 1426 | Fixed bug wherein a simple division produced an erroneous FPE, caused by | 
|---|
| 1427 | the Cray division workaround -- that code is now #ifdef'd only for | 
|---|
| 1428 | Cray *and* fixed. | 
|---|
| 1429 |  | 
|---|
| 1430 | Fixed bug in modulus implementation -- it was very close to the above | 
|---|
| 1431 | code, so I noticed it. | 
|---|
| 1432 |  | 
|---|
| 1433 | Fixed portability problem with limits.h in missing.c | 
|---|
| 1434 |  | 
|---|
| 1435 | Fixed portability problem with tzname and daylight -- define TZNAME_MISSING | 
|---|
| 1436 | if strftime() is missing and tzname is also. | 
|---|
| 1437 |  | 
|---|
| 1438 | Better support for Latin-1 character set. | 
|---|
| 1439 |  | 
|---|
| 1440 | Fixed portability problem in test Makefile. | 
|---|
| 1441 |  | 
|---|
| 1442 | Updated PROBLEMS file. | 
|---|
| 1443 |  | 
|---|
| 1444 | =============================== gawk-2.13 released ========================= | 
|---|
| 1445 | Changes from 2.12.42 to 2.12.43 | 
|---|
| 1446 | ------------------------------- | 
|---|
| 1447 |  | 
|---|
| 1448 | Typo in awk.y | 
|---|
| 1449 |  | 
|---|
| 1450 | Fixed up strftime.3 and added doc. for %V. | 
|---|
| 1451 |  | 
|---|
| 1452 | Changes from 2.12.41 to 2.12.42 | 
|---|
| 1453 | ------------------------------- | 
|---|
| 1454 |  | 
|---|
| 1455 | Fixed bug in devopen() -- if you had write permission in /dev, | 
|---|
| 1456 | it would just create /dev/stdout etc.!! | 
|---|
| 1457 |  | 
|---|
| 1458 | Final (?) VMS update. | 
|---|
| 1459 |  | 
|---|
| 1460 | Make NeXT use GFMT_WORKAROUND | 
|---|
| 1461 |  | 
|---|
| 1462 | Fixed bug in sub_common() for substitute on zero-length match.  Improved the | 
|---|
| 1463 | code a bit while I was at it. | 
|---|
| 1464 |  | 
|---|
| 1465 | Fixed grammar so that $i++ parses as ($i)++ | 
|---|
| 1466 |  | 
|---|
| 1467 | Put support/* back in the distribution (didn't I already do this?!) | 
|---|
| 1468 |  | 
|---|
| 1469 | Changes from 2.12.40 to 2.12.41 | 
|---|
| 1470 | ------------------------------- | 
|---|
| 1471 |  | 
|---|
| 1472 | VMS workaround for broken %g format. | 
|---|
| 1473 |  | 
|---|
| 1474 | Changes from 2.12.39 to 2.12.40 | 
|---|
| 1475 | ------------------------------- | 
|---|
| 1476 |  | 
|---|
| 1477 | Minor man page update. | 
|---|
| 1478 |  | 
|---|
| 1479 | Fixed latent bug in redirect(). | 
|---|
| 1480 |  | 
|---|
| 1481 | Changes from 2.12.38 to 2.12.39 | 
|---|
| 1482 | ------------------------------- | 
|---|
| 1483 |  | 
|---|
| 1484 | Updates to test suite -- remove dependence on changing gawk.1 man page. | 
|---|
| 1485 |  | 
|---|
| 1486 | Changes from 2.12.37 to 2.12.38 | 
|---|
| 1487 | ------------------------------- | 
|---|
| 1488 |  | 
|---|
| 1489 | Fixed bug in use of *= without whitespace following. | 
|---|
| 1490 |  | 
|---|
| 1491 | VMS update. | 
|---|
| 1492 |  | 
|---|
| 1493 | Updates to man page. | 
|---|
| 1494 |  | 
|---|
| 1495 | Option handling updates in main.c | 
|---|
| 1496 |  | 
|---|
| 1497 | test/manyfiles redone and added to bigtest. | 
|---|
| 1498 |  | 
|---|
| 1499 | Fixed latent (on Sun) bug in handling of save_fs. | 
|---|
| 1500 |  | 
|---|
| 1501 | Changes from 2.12.36 to 2.12.37 | 
|---|
| 1502 | ------------------------------- | 
|---|
| 1503 |  | 
|---|
| 1504 | Update REL in Makefile-dist.  Incorporate test suite into main distribution. | 
|---|
| 1505 |  | 
|---|
| 1506 | Minor fix in regtest. | 
|---|
| 1507 |  | 
|---|
| 1508 | Changes from 2.12.35 to 2.12.36 | 
|---|
| 1509 | ------------------------------- | 
|---|
| 1510 |  | 
|---|
| 1511 | Release takes on dual personality -- 2.12.36 and 2.13.0 -- any further | 
|---|
| 1512 | patches before public release won't count for 2.13, although they will for | 
|---|
| 1513 | 2.12 -- be careful to avoid confusion!  patchlevel.h will be the last thing | 
|---|
| 1514 | to change. | 
|---|
| 1515 |  | 
|---|
| 1516 | Cray updates to deal with arithmetic problems. | 
|---|
| 1517 |  | 
|---|
| 1518 | Minor test suite updates. | 
|---|
| 1519 |  | 
|---|
| 1520 | Fixed latent bug in parser (freeing memory). | 
|---|
| 1521 |  | 
|---|
| 1522 | Changes from 2.12.34 to 2.12.35 | 
|---|
| 1523 | ------------------------------- | 
|---|
| 1524 |  | 
|---|
| 1525 | VMS updates. | 
|---|
| 1526 |  | 
|---|
| 1527 | Flush stdout at top of err() and stderr at bottom. | 
|---|
| 1528 |  | 
|---|
| 1529 | Fixed bug in eval_condition() -- it wasn't testing for MAYBE_NUM and | 
|---|
| 1530 | doing the force_number(). | 
|---|
| 1531 |  | 
|---|
| 1532 | Included the missing manyfiles.awk and a new test to catch the above bug which | 
|---|
| 1533 | I am amazed wasn't already caught by the test suite -- it's pretty basic. | 
|---|
| 1534 |  | 
|---|
| 1535 | Changes from 2.12.33 to 2.12.34 | 
|---|
| 1536 | ------------------------------- | 
|---|
| 1537 |  | 
|---|
| 1538 | Atari updates -- including bug fix. | 
|---|
| 1539 |  | 
|---|
| 1540 | More VMS updates -- also nuke vms/version.com. | 
|---|
| 1541 |  | 
|---|
| 1542 | Fixed bug in handling of large numbers of redirections -- it was probably never | 
|---|
| 1543 | tested before (blush!). | 
|---|
| 1544 |  | 
|---|
| 1545 | Minor rearrangement of code in r_force_number(). | 
|---|
| 1546 |  | 
|---|
| 1547 | Made chem and regtest tests a bit more portable (Ultrix again). | 
|---|
| 1548 |  | 
|---|
| 1549 | Added another test -- manyfiles -- not invoked under any other test -- very Unix | 
|---|
| 1550 | specific. | 
|---|
| 1551 |  | 
|---|
| 1552 | Rough beginning of LIMITATIONS file -- need my AWK book to complete it. | 
|---|
| 1553 |  | 
|---|
| 1554 | Changes from 2.12.32 to 2.12.33 | 
|---|
| 1555 | ------------------------------- | 
|---|
| 1556 |  | 
|---|
| 1557 | Expunge debug.? from various files. | 
|---|
| 1558 |  | 
|---|
| 1559 | Remove vestiges of Floor and Ceil kludge. | 
|---|
| 1560 |  | 
|---|
| 1561 | Special case integer division -- mainly for Cray, but maybe someone else | 
|---|
| 1562 | will benefit. | 
|---|
| 1563 |  | 
|---|
| 1564 | Workaround for iop_close closing an output pipe descriptor on Cray -- | 
|---|
| 1565 | not conditional since I think it may fix a bug on SGI as well and I don't | 
|---|
| 1566 | think it can hurt elsewhere. | 
|---|
| 1567 |  | 
|---|
| 1568 | Fixed memory leak in assoc_lookup(). | 
|---|
| 1569 |  | 
|---|
| 1570 | Small cleanup in test suite. | 
|---|
| 1571 |  | 
|---|
| 1572 | Changes from 2.12.31 to 2.12.32 | 
|---|
| 1573 | ------------------------------- | 
|---|
| 1574 |  | 
|---|
| 1575 | Nuked debug.c and debugging flag -- there are better ways. | 
|---|
| 1576 |  | 
|---|
| 1577 | Nuked version.sh and version.c in subdirectories. | 
|---|
| 1578 |  | 
|---|
| 1579 | Fixed bug in handling of IGNORECASE. | 
|---|
| 1580 |  | 
|---|
| 1581 | Fixed bug when FIELDWIDTHS was set via -v option. | 
|---|
| 1582 |  | 
|---|
| 1583 | Fixed (obscure) bug when $0 is assigned a numerical value. | 
|---|
| 1584 |  | 
|---|
| 1585 | Fixed so that escape sequences in command-line assignments work (as it already | 
|---|
| 1586 | said in the comment). | 
|---|
| 1587 |  | 
|---|
| 1588 | Added a few cases to test suite. | 
|---|
| 1589 |  | 
|---|
| 1590 | Moved support/* back into distribution. | 
|---|
| 1591 |  | 
|---|
| 1592 | VMS updates. | 
|---|
| 1593 |  | 
|---|
| 1594 | Changes from 2.12.30 to 2.12.31 | 
|---|
| 1595 | ------------------------------- | 
|---|
| 1596 |  | 
|---|
| 1597 | Cosmetic manual page changes. | 
|---|
| 1598 |  | 
|---|
| 1599 | Updated sunos3 config. | 
|---|
| 1600 |  | 
|---|
| 1601 | Small changes in test suite including renaming files over 14 chars. in length. | 
|---|
| 1602 |  | 
|---|
| 1603 | Changes from 2.12.29 to 2.12.30 | 
|---|
| 1604 | ------------------------------- | 
|---|
| 1605 |  | 
|---|
| 1606 | Bug fix for many string concatenations in a row. | 
|---|
| 1607 |  | 
|---|
| 1608 | Changes from 2.12.28 to 2.12.29 | 
|---|
| 1609 | ------------------------------- | 
|---|
| 1610 |  | 
|---|
| 1611 | Minor cleanup in awk.y | 
|---|
| 1612 |  | 
|---|
| 1613 | Minor VMS update. | 
|---|
| 1614 |  | 
|---|
| 1615 | Minor atari update. | 
|---|
| 1616 |  | 
|---|
| 1617 | Changes from 2.12.27 to 2.12.28 | 
|---|
| 1618 | ------------------------------- | 
|---|
| 1619 |  | 
|---|
| 1620 | Got rid of the debugging goop in eval.c -- there are better ways. | 
|---|
| 1621 |  | 
|---|
| 1622 | Sequent port. | 
|---|
| 1623 |  | 
|---|
| 1624 | VMS changes left out of the last patch -- sigh!  config/vms.h renamed | 
|---|
| 1625 | to config/vms-conf.h. | 
|---|
| 1626 |  | 
|---|
| 1627 | Fixed missing/tzset.c | 
|---|
| 1628 |  | 
|---|
| 1629 | Removed use of gcvt() and GCVT_MISSING -- turns out it was no faster than | 
|---|
| 1630 | sprintf("%g") and caused all sorts of portability headaches. | 
|---|
| 1631 |  | 
|---|
| 1632 | Tuned get_field() -- it was unnecessarily parsing the whole record on reference | 
|---|
| 1633 | to $0. | 
|---|
| 1634 |  | 
|---|
| 1635 | Tuned interpret() a bit in the rule_node loop. | 
|---|
| 1636 |  | 
|---|
| 1637 | In r_force_number(), worked around bug in Uglix strtod() and got rid of | 
|---|
| 1638 | ugly do{}while(0) at Michal's urging. | 
|---|
| 1639 |  | 
|---|
| 1640 | Replaced do_deref() and deref with unref(node) -- much cleaner and a bit faster. | 
|---|
| 1641 |  | 
|---|
| 1642 | Got rid of assign_number() -- contrary to comment, it was no faster than | 
|---|
| 1643 | just making a new node and freeing the old one. | 
|---|
| 1644 |  | 
|---|
| 1645 | Replaced make_number() and tmp_number() with macros that call mk_number(). | 
|---|
| 1646 |  | 
|---|
| 1647 | Changed freenode() and newnode() into macros -- the latter is getnode() | 
|---|
| 1648 | which calls more_nodes() as necessary. | 
|---|
| 1649 |  | 
|---|
| 1650 | Changes from 2.12.26 to 2.12.27 | 
|---|
| 1651 | ------------------------------- | 
|---|
| 1652 |  | 
|---|
| 1653 | Completion of Cray 2 port (includes a kludge for floor() and ceil() | 
|---|
| 1654 | that may go or be changed -- I think that it may just be working around | 
|---|
| 1655 | a bug in chem that is being tweaked on the Cray). | 
|---|
| 1656 |  | 
|---|
| 1657 | More VMS updates. | 
|---|
| 1658 |  | 
|---|
| 1659 | Moved kludge over yacc's insertion of malloc and realloc declarations | 
|---|
| 1660 | from protos.h to the Makefile. | 
|---|
| 1661 |  | 
|---|
| 1662 | Added a lisp interpreter in awk to the test suite.  (Invoked under | 
|---|
| 1663 | bigtest.) | 
|---|
| 1664 |  | 
|---|
| 1665 | Cleanup in r_force_number() -- I had never gotten around to a thorough | 
|---|
| 1666 | profile of the cache code and it turns out to be not worth it. | 
|---|
| 1667 |  | 
|---|
| 1668 | Performance boost -- do lazy force_number()'ing for fields etc. i.e. | 
|---|
| 1669 | flag them (MAYBE_NUM) and call force_number only as necessary. | 
|---|
| 1670 |  | 
|---|
| 1671 | Changes from 2.12.25 to 2.12.26 | 
|---|
| 1672 | ------------------------------- | 
|---|
| 1673 |  | 
|---|
| 1674 | Rework of regexp stuff so that dynamic regexps have reasonable | 
|---|
| 1675 | performance -- string used for compiled regexp is stored and | 
|---|
| 1676 | compared to new string -- if same, no recompilation is necessary. | 
|---|
| 1677 | Also, very dynamic regexps cause dfa-based searching to be turned | 
|---|
| 1678 | off. | 
|---|
| 1679 |  | 
|---|
| 1680 | Code in dev_open() is back to returning fileno(std*) rather than | 
|---|
| 1681 | dup()ing it.  This will be documented.  Sorry for the run-around | 
|---|
| 1682 | on this. | 
|---|
| 1683 |  | 
|---|
| 1684 | Minor atari updates. | 
|---|
| 1685 |  | 
|---|
| 1686 | Minor vms update. | 
|---|
| 1687 |  | 
|---|
| 1688 | Missing file from MSDOS port. | 
|---|
| 1689 |  | 
|---|
| 1690 | Added warning (under lint) if third arg. of [g]sub is a constant and | 
|---|
| 1691 | handle it properly in the code (i.e. return how many matches). | 
|---|
| 1692 |  | 
|---|
| 1693 | Changes from 2.12.24 to 2.12.25 | 
|---|
| 1694 | ------------------------------- | 
|---|
| 1695 |  | 
|---|
| 1696 | MSDOS port. | 
|---|
| 1697 |  | 
|---|
| 1698 | Non-consequential changes to regexp variables in preparation for | 
|---|
| 1699 | a more serious change to fix a serious performance problem. | 
|---|
| 1700 |  | 
|---|
| 1701 | Changes from 2.12.23 to 2.12.24 | 
|---|
| 1702 | ------------------------------- | 
|---|
| 1703 |  | 
|---|
| 1704 | Fixed bug in output flushing introduced a few patches back.  This caused | 
|---|
| 1705 | serious performance losses. | 
|---|
| 1706 |  | 
|---|
| 1707 | Changes from 2.12.22 to 2.12.23 | 
|---|
| 1708 | ------------------------------- | 
|---|
| 1709 |  | 
|---|
| 1710 | Accidentally left config/cray2-60 out of last patch. | 
|---|
| 1711 |  | 
|---|
| 1712 | Added some missing dependencies to Makefile. | 
|---|
| 1713 |  | 
|---|
| 1714 | Cleaned up mkconf a bit; made yacc the default parser (no alloca needed, | 
|---|
| 1715 | right?); added rs6000 hook for signed characters. | 
|---|
| 1716 |  | 
|---|
| 1717 | Made regex.c with NO_ALLOCA undefined work. | 
|---|
| 1718 |  | 
|---|
| 1719 | Fixed bug in dfa.c for systems where free(NULL) bombs. | 
|---|
| 1720 |  | 
|---|
| 1721 | Deleted a few cant_happen()'s that *really* can't hapen. | 
|---|
| 1722 |  | 
|---|
| 1723 | Changes from 2.12.21 to 2.12.22 | 
|---|
| 1724 | ------------------------------- | 
|---|
| 1725 |  | 
|---|
| 1726 | Added to config stuff the ability to choose YACC rather than bison. | 
|---|
| 1727 |  | 
|---|
| 1728 | Fixed CHAR_UNSIGNED in config.h-dist. | 
|---|
| 1729 |  | 
|---|
| 1730 | Second arg. of strtod() is char ** rather than const char **. | 
|---|
| 1731 |  | 
|---|
| 1732 | stackb is now initially malloc()'ed since it may be realloc()'ed. | 
|---|
| 1733 |  | 
|---|
| 1734 | VMS updates. | 
|---|
| 1735 |  | 
|---|
| 1736 | Added SIZE_T_MISSING to config stuff and a default typedef to awk.h. | 
|---|
| 1737 | (Maybe it is not needed on any current systems??) | 
|---|
| 1738 |  | 
|---|
| 1739 | re_compile_pattern()'s size is now size_t unconditionally. | 
|---|
| 1740 |  | 
|---|
| 1741 | Changes from 2.12.20 to 2.12.21 | 
|---|
| 1742 | ------------------------------- | 
|---|
| 1743 |  | 
|---|
| 1744 | Corrected missing/gcvt.c. | 
|---|
| 1745 |  | 
|---|
| 1746 | Got rid of use of dup2() and thus DUP_MISSING. | 
|---|
| 1747 |  | 
|---|
| 1748 | Updated config/sgi33. | 
|---|
| 1749 |  | 
|---|
| 1750 | Turned on (and fixed) in cmp_nodes() the behaviour that I *hope* will be in | 
|---|
| 1751 | POSIX 1003.2 for relational comparisons. | 
|---|
| 1752 |  | 
|---|
| 1753 | Small updates to test suite. | 
|---|
| 1754 |  | 
|---|
| 1755 | Changes from 2.12.19 to 2.12.20 | 
|---|
| 1756 | ------------------------------- | 
|---|
| 1757 |  | 
|---|
| 1758 | Sloppy, sloppy, sloppy!!  I didn't even try to compile the last two | 
|---|
| 1759 | patches.  This one fixes goofs in regex.c. | 
|---|
| 1760 |  | 
|---|
| 1761 | Changes from 2.12.18 to 2.12.19 | 
|---|
| 1762 | ------------------------------- | 
|---|
| 1763 |  | 
|---|
| 1764 | Cleanup of last patch. | 
|---|
| 1765 |  | 
|---|
| 1766 | Changes from 2.12.17 to 2.12.18 | 
|---|
| 1767 | ------------------------------- | 
|---|
| 1768 |  | 
|---|
| 1769 | Makefile renamed to Makefile-dist. | 
|---|
| 1770 |  | 
|---|
| 1771 | Added alloca() configuration to mkconf.  (A bit kludgey.)  Just | 
|---|
| 1772 | add a single line containing ALLOCA_PW, ALLOCA_S or ALLOCA_C | 
|---|
| 1773 | to the appropriate config file to have Makefile-dist edited | 
|---|
| 1774 | accordingly. | 
|---|
| 1775 |  | 
|---|
| 1776 | Reorganized output flushing to correspond with new semantics of | 
|---|
| 1777 | devopen() on "/dev/std*" etc. | 
|---|
| 1778 |  | 
|---|
| 1779 | Fixed rest of last goof!! | 
|---|
| 1780 |  | 
|---|
| 1781 | Save and restore errno in do_pathopen(). | 
|---|
| 1782 |  | 
|---|
| 1783 | Miscellaneous atari updates. | 
|---|
| 1784 |  | 
|---|
| 1785 | Get rid of the trailing comma in the NODETYPE definition (Cray | 
|---|
| 1786 | compiler won't take it). | 
|---|
| 1787 |  | 
|---|
| 1788 | Try  to make the use of `const' consistent since Cray compiler is | 
|---|
| 1789 | fussy about that.  See the changes to `basename' and `myname'. | 
|---|
| 1790 |  | 
|---|
| 1791 | It turns out that, according to section 3.8.3 (Macro Replacement) | 
|---|
| 1792 | of the ANSI Standard:  ``If there are sequences of preprocessing | 
|---|
| 1793 | tokens within the list of arguments that would otherwise act as | 
|---|
| 1794 | preprocessing directives, the behavior is undefined.''  That means | 
|---|
| 1795 | that you cannot count on the behavior of the declaration of | 
|---|
| 1796 | re_compile_pattern in awk.h, and indeed the Cray compiler chokes on it. | 
|---|
| 1797 |  | 
|---|
| 1798 | Replaced alloca with malloc/realloc/free in regex.c.  It was much simpler | 
|---|
| 1799 | than expected.  (Inside NO_ALLOCA for now -- by default no alloca.) | 
|---|
| 1800 |  | 
|---|
| 1801 | Added a configuration file, config/cray60, for Unicos-6.0. | 
|---|
| 1802 |  | 
|---|
| 1803 | Changes from 2.12.16 to 2.12.17 | 
|---|
| 1804 | ------------------------------- | 
|---|
| 1805 |  | 
|---|
| 1806 | Ooops.  Goofed signal use in last patch. | 
|---|
| 1807 |  | 
|---|
| 1808 | Changes from 2.12.15 to 2.12.16 | 
|---|
| 1809 | ------------------------------- | 
|---|
| 1810 |  | 
|---|
| 1811 | RENAMED *_dir to just * (e.g. missing_dir). | 
|---|
| 1812 |  | 
|---|
| 1813 | Numerous VMS changes. | 
|---|
| 1814 |  | 
|---|
| 1815 | Proper inclusion of atari and vms files. | 
|---|
| 1816 |  | 
|---|
| 1817 | Added experimental (ifdef'd out) RELAXED_CONTINUATION and DEFAULT_FILETYPE | 
|---|
| 1818 | -- please comment on these! | 
|---|
| 1819 |  | 
|---|
| 1820 | Moved pathopen() to io.c (sigh). | 
|---|
| 1821 |  | 
|---|
| 1822 | Put local directory ahead in default AWKPATH. | 
|---|
| 1823 |  | 
|---|
| 1824 | Added facility in mkconf to echo comments on stdout:  lines beginning | 
|---|
| 1825 | with "#echo " will have the remainder of the line echoed when mkconf is run. | 
|---|
| 1826 | Any lines starting with "#" will otherwise be treated as comments.  The | 
|---|
| 1827 | intent is to be able to say: | 
|---|
| 1828 | "#echo Make sure you uncomment alloca.c in the Makefile" | 
|---|
| 1829 | or the like. | 
|---|
| 1830 |  | 
|---|
| 1831 | Prototype fix for V.4 | 
|---|
| 1832 |  | 
|---|
| 1833 | Fixed version_string to not print leading @(#). | 
|---|
| 1834 |  | 
|---|
| 1835 | Fixed FIELDWIDTHS to work with strict (turned out to be easy). | 
|---|
| 1836 |  | 
|---|
| 1837 | Fixed conf for V.2. | 
|---|
| 1838 |  | 
|---|
| 1839 | Changed semantics of /dev/fd/n to be like on real /dev/fd. | 
|---|
| 1840 |  | 
|---|
| 1841 | Several configuration and updates in the makefile. | 
|---|
| 1842 |  | 
|---|
| 1843 | Updated manpage. | 
|---|
| 1844 |  | 
|---|
| 1845 | Include tzset.c and system.c from missing_dir that were accidently left out of | 
|---|
| 1846 | the last patch. | 
|---|
| 1847 |  | 
|---|
| 1848 | Fixed bug in cmdline variable assignment -- arg was getting freed(!) in | 
|---|
| 1849 | call to variable. | 
|---|
| 1850 |  | 
|---|
| 1851 | Backed out of parse-time constant folding for now, until I can figure out | 
|---|
| 1852 | how to do it right. | 
|---|
| 1853 |  | 
|---|
| 1854 | Fixed devopen() so that getline <"-" works. | 
|---|
| 1855 |  | 
|---|
| 1856 | Changes from 2.12.14 to 2.12.15 | 
|---|
| 1857 | ------------------------------- | 
|---|
| 1858 |  | 
|---|
| 1859 | Changed config/* to a condensed form that can be used with mkconf to generate | 
|---|
| 1860 | a config.h from config.h-dist -- much easier to maintain.  Please check | 
|---|
| 1861 | carefully against what you had before for a particular system and report | 
|---|
| 1862 | any problems.  vms.h remains separate since the stuff at the bottom | 
|---|
| 1863 | didn't quite fit the mkconf model -- hopefully cleared up later. | 
|---|
| 1864 |  | 
|---|
| 1865 | Fixed bug in grammar -- didn't allow function definition to be separated from | 
|---|
| 1866 | other rules by a semi-colon. | 
|---|
| 1867 |  | 
|---|
| 1868 | VMS fix to #includes in missing.c -- should we just be including awk.h? | 
|---|
| 1869 |  | 
|---|
| 1870 | Updated README for texinfo.tex version. | 
|---|
| 1871 |  | 
|---|
| 1872 | Updating of copyright in all .[chy] files. | 
|---|
| 1873 |  | 
|---|
| 1874 | Added but commented out Michal's fix to strftime. | 
|---|
| 1875 |  | 
|---|
| 1876 | Added tzset() emulation based on Rick Adams' code.  Added TZSET_MISSING to | 
|---|
| 1877 | config.h-dist. | 
|---|
| 1878 |  | 
|---|
| 1879 | Added strftime.3 man page for missing_dir | 
|---|
| 1880 |  | 
|---|
| 1881 | More posix:     func, **, **= don't work in -W posix | 
|---|
| 1882 |  | 
|---|
| 1883 | More lint:      ^, ^= not in old awk | 
|---|
| 1884 |  | 
|---|
| 1885 | gawk.1:         removed ref to -DNO_DEV_FD, other minor updating. | 
|---|
| 1886 |  | 
|---|
| 1887 | Style change:  pushbak becomes pushback() in yylex(). | 
|---|
| 1888 |  | 
|---|
| 1889 | Changes from 2.12.13 to 2.12.14 | 
|---|
| 1890 | ------------------------------- | 
|---|
| 1891 |  | 
|---|
| 1892 | Better (?) organization of awk.h -- attempt to keep all system dependencies | 
|---|
| 1893 | near the top and move some of the non-general things out of the config.h | 
|---|
| 1894 | files. | 
|---|
| 1895 |  | 
|---|
| 1896 | Change to handling of SYSTEM_MISSING. | 
|---|
| 1897 |  | 
|---|
| 1898 | Small change to ultrix config. | 
|---|
| 1899 |  | 
|---|
| 1900 | Do "/dev/fd/*" etc. checking at runtime. | 
|---|
| 1901 |  | 
|---|
| 1902 | First pass at VMS port. | 
|---|
| 1903 |  | 
|---|
| 1904 | Improvements to error handling (when lexeme spans buffers). | 
|---|
| 1905 |  | 
|---|
| 1906 | Fixed backslash handling -- why didn't I notice this sooner? | 
|---|
| 1907 |  | 
|---|
| 1908 | Added programs from book to test suite and new target "bigtest" to Makefile. | 
|---|
| 1909 |  | 
|---|
| 1910 | Changes from 2.12.12 to 2.12.13 | 
|---|
| 1911 | ------------------------------- | 
|---|
| 1912 |  | 
|---|
| 1913 | Recognize OFS and ORS specially so that OFS = 9 works without efficiency hit. | 
|---|
| 1914 | Took advantage of opportunity to tune do_print*() for about 10% win on a | 
|---|
| 1915 | print with 5 args (i.e. small but significant). | 
|---|
| 1916 |  | 
|---|
| 1917 | Somewhat pervasive changes to reconcile CONVFMT vs. OFMT. | 
|---|
| 1918 |  | 
|---|
| 1919 | Better initialization of builtin vars. | 
|---|
| 1920 |  | 
|---|
| 1921 | Make config/* consistent wrt STRTOL_MISSING. | 
|---|
| 1922 |  | 
|---|
| 1923 | Small portability improvement to alloca.s | 
|---|
| 1924 |  | 
|---|
| 1925 | Improvements to lint code in awk.y | 
|---|
| 1926 |  | 
|---|
| 1927 | Replaced strtol() with a better one by Chris Torek. | 
|---|
| 1928 |  | 
|---|
| 1929 | Changes from 2.12.11 to 2.12.12 | 
|---|
| 1930 | ------------------------------- | 
|---|
| 1931 |  | 
|---|
| 1932 | Added PORTS file to record successful ports. | 
|---|
| 1933 |  | 
|---|
| 1934 | Added #define const to nothing if not STDC and added const to strtod() header. | 
|---|
| 1935 |  | 
|---|
| 1936 | Added * to printf capabilities and partially implemented ' ' and '+' (has an | 
|---|
| 1937 | effect for %d only, silently ignored for other formats).  I'm afraid that's | 
|---|
| 1938 | as far as I want to go before I look at a complete replacement for | 
|---|
| 1939 | do_sprintf(). | 
|---|
| 1940 |  | 
|---|
| 1941 | Added warning for /regexp/ on LHS of MATCHOP. | 
|---|
| 1942 |  | 
|---|
| 1943 | Changes from 2.12.10 to 2.12.11 | 
|---|
| 1944 | ------------------------------- | 
|---|
| 1945 |  | 
|---|
| 1946 | Small Makefile improvements. | 
|---|
| 1947 |  | 
|---|
| 1948 | Some remaining nits from the NeXT port. | 
|---|
| 1949 |  | 
|---|
| 1950 | Got rid of bcopy() define in awk.h -- not needed anymore (??) | 
|---|
| 1951 |  | 
|---|
| 1952 | Changed private in builtin.c -- it is special on Sequent. | 
|---|
| 1953 |  | 
|---|
| 1954 | Added subset implementation of strtol() and STRTOL_MISSING. | 
|---|
| 1955 |  | 
|---|
| 1956 | A little bit of cleanup in debug.c, dfa.c. | 
|---|
| 1957 |  | 
|---|
| 1958 | Changes from 2.12.9 to 2.12.10 | 
|---|
| 1959 | ------------------------------ | 
|---|
| 1960 |  | 
|---|
| 1961 | Redid compatability checking and checking for # of args. | 
|---|
| 1962 |  | 
|---|
| 1963 | Removed all references to variables[] from outside awk.y, in preparation | 
|---|
| 1964 | for a more abstract interface to the symbol table. | 
|---|
| 1965 |  | 
|---|
| 1966 | Got rid of a remaining use of bcopy() in regex.c. | 
|---|
| 1967 |  | 
|---|
| 1968 | Changes from 2.12.8 to 2.12.9 | 
|---|
| 1969 | ----------------------------- | 
|---|
| 1970 |  | 
|---|
| 1971 | Portability improvements for atari, next and decstation. | 
|---|
| 1972 |  | 
|---|
| 1973 | Bug fix in substr() -- wasn't handling 3rd arg. of -1 properly. | 
|---|
| 1974 |  | 
|---|
| 1975 | Manpage updates. | 
|---|
| 1976 |  | 
|---|
| 1977 | Moved support from src release to doc release. | 
|---|
| 1978 |  | 
|---|
| 1979 | Updated FUTURES file. | 
|---|
| 1980 |  | 
|---|
| 1981 | Added some "lint" warnings. | 
|---|
| 1982 |  | 
|---|
| 1983 | Changes from 2.12.7 to 2.12.8 | 
|---|
| 1984 | ----------------------------- | 
|---|
| 1985 |  | 
|---|
| 1986 | Changed time() to systime(). | 
|---|
| 1987 |  | 
|---|
| 1988 | Changed warning() in snode() to fatal(). | 
|---|
| 1989 |  | 
|---|
| 1990 | strftime() now defaults second arg. to current time. | 
|---|
| 1991 |  | 
|---|
| 1992 | Changes from 2.12.6 to 2.12.7 | 
|---|
| 1993 | ----------------------------- | 
|---|
| 1994 |  | 
|---|
| 1995 | Fixed bug in sub_common() involving inadequate allocation of a buffer. | 
|---|
| 1996 |  | 
|---|
| 1997 | Added some missing files to the Makefile. | 
|---|
| 1998 |  | 
|---|
| 1999 | Changes from 2.12.5 to 2.12.6 | 
|---|
| 2000 | ----------------------------- | 
|---|
| 2001 |  | 
|---|
| 2002 | Fixed bug wherein non-redirected getline could call iop_close() just | 
|---|
| 2003 | prior to a call from do_input(). | 
|---|
| 2004 |  | 
|---|
| 2005 | Fixed bug in handling of /dev/stdout and /dev/stderr. | 
|---|
| 2006 |  | 
|---|
| 2007 | Changes from 2.12.4 to 2.12.5 | 
|---|
| 2008 | ----------------------------- | 
|---|
| 2009 |  | 
|---|
| 2010 | Updated README and support directory. | 
|---|
| 2011 |  | 
|---|
| 2012 | Changes from 2.12.3 to 2.12.4 | 
|---|
| 2013 | ----------------------------- | 
|---|
| 2014 |  | 
|---|
| 2015 | Updated CHANGES and TODO (should have been done in previous 2 patches). | 
|---|
| 2016 |  | 
|---|
| 2017 | Changes from 2.12.2 to 2.12.3 | 
|---|
| 2018 | ----------------------------- | 
|---|
| 2019 |  | 
|---|
| 2020 | Brought regex.c and alloca.s into line with current FSF versions. | 
|---|
| 2021 |  | 
|---|
| 2022 | Changes from 2.12.1 to 2.12.2 | 
|---|
| 2023 | ----------------------------- | 
|---|
| 2024 |  | 
|---|
| 2025 | Portability improvements; mostly moving system prototypes out of awk.h | 
|---|
| 2026 |  | 
|---|
| 2027 | Introduction of strftime. | 
|---|
| 2028 |  | 
|---|
| 2029 | Use of CONVFMT. | 
|---|
| 2030 |  | 
|---|
| 2031 | Changes from 2.12 to 2.12.1 | 
|---|
| 2032 | ----------------------------- | 
|---|
| 2033 |  | 
|---|
| 2034 | Consolidated treatment of command-line assignments (thus correcting the | 
|---|
| 2035 | -v treatment). | 
|---|
| 2036 |  | 
|---|
| 2037 | Rationalized builtin-variable handling into a table-driven process, thus | 
|---|
| 2038 | simplifying variable() and eliminating spc_var(). | 
|---|
| 2039 |  | 
|---|
| 2040 | Fixed bug in handling of command-line source that ended in a newline. | 
|---|
| 2041 |  | 
|---|
| 2042 | Simplified install() and lookup(). | 
|---|
| 2043 |  | 
|---|
| 2044 | Did away with double-mallocing of identifiers and now free second and later | 
|---|
| 2045 | instances of a name, after the first gets installed into the symbol table. | 
|---|
| 2046 |  | 
|---|
| 2047 | Treat IGNORECASE specially, simplifying a lot of code, and allowing | 
|---|
| 2048 | checking against strict conformance only on setting it, rather than on each | 
|---|
| 2049 | pattern match. | 
|---|
| 2050 |  | 
|---|
| 2051 | Fixed regexp matching when IGNORECASE is non-zero (broken when dfa.c was | 
|---|
| 2052 | added). | 
|---|
| 2053 |  | 
|---|
| 2054 | Fixed bug where $0 was not being marked as valid, even after it was rebuilt. | 
|---|
| 2055 | This caused mangling of $0. | 
|---|
| 2056 |  | 
|---|
| 2057 |  | 
|---|
| 2058 | Changes from 2.11.1 to 2.12 | 
|---|
| 2059 | ----------------------------- | 
|---|
| 2060 |  | 
|---|
| 2061 | Makefile: | 
|---|
| 2062 |  | 
|---|
| 2063 | Portability improvements in Makefile. | 
|---|
| 2064 | Move configuration stuff into config.h | 
|---|
| 2065 |  | 
|---|
| 2066 | FSF files: | 
|---|
| 2067 |  | 
|---|
| 2068 | Synchronized alloca.[cs] and regex.[ch] with FSF. | 
|---|
| 2069 |  | 
|---|
| 2070 | array.c: | 
|---|
| 2071 |  | 
|---|
| 2072 | Rationalized hash routines into one with a different algorithm. | 
|---|
| 2073 | delete() now works if the array is a local variable. | 
|---|
| 2074 | Changed interface of assoc_next() and avoided dereferencing past the end of the | 
|---|
| 2075 | array. | 
|---|
| 2076 |  | 
|---|
| 2077 | awk.h: | 
|---|
| 2078 |  | 
|---|
| 2079 | Merged non-prototype and prototype declarations in awk.h. | 
|---|
| 2080 | Expanded tree_eval #define to short-circuit more calls of r_tree_eval(). | 
|---|
| 2081 |  | 
|---|
| 2082 | awk.y: | 
|---|
| 2083 |  | 
|---|
| 2084 | Delinted some of the code in the grammar. | 
|---|
| 2085 | Fixed and improved some of the error message printing. | 
|---|
| 2086 | Changed to accomodate unlimited length source lines. | 
|---|
| 2087 | Line continuation now works as advertised. | 
|---|
| 2088 | Source lines can be arbitrarily long. | 
|---|
| 2089 | Refined grammar hacks so that /= assignment works.  Regular expressions | 
|---|
| 2090 | starting with /= are recognized at the beginning of a line, after && or || | 
|---|
| 2091 | and after ~ or !~.  More contexts can be added if necessary. | 
|---|
| 2092 | Fixed IGNORECASE (multiple scans for backslash). | 
|---|
| 2093 | Condensed expression_lists in array references. | 
|---|
| 2094 | Detect and warn for correct # args in builtin functions -- call most of them | 
|---|
| 2095 | with a fixed number (i.e. fill in defaults at parse-time rather than at | 
|---|
| 2096 | run-time). | 
|---|
| 2097 | Load ENVIRON only if it is referenced (detected at parse-time). | 
|---|
| 2098 | Treat NF, FS, RS, NR, FNR specially at parse time, to improve run time. | 
|---|
| 2099 | Fold constant expressions at parse time. | 
|---|
| 2100 | Do make_regexp() on third arg. of split() at parse tiem if it is a constant. | 
|---|
| 2101 |  | 
|---|
| 2102 | builtin.c: | 
|---|
| 2103 |  | 
|---|
| 2104 | srand() returns 0 the first time called. | 
|---|
| 2105 | Replaced alloca() with malloc() in do_sprintf(). | 
|---|
| 2106 | Fixed setting of RSTART and RLENGTH in do_match(). | 
|---|
| 2107 | Got rid of get_{one,two,three} and allowance for variable # of args. at | 
|---|
| 2108 | run-time -- this is now done at parse-time. | 
|---|
| 2109 | Fixed latent bug in [g]sub whereby changes to $0 would never get made. | 
|---|
| 2110 | Rewrote much of sub_common() for simplicity and performance. | 
|---|
| 2111 | Added ctime() and time() builtin functions (unless -DSTRICT).  ctime() returns | 
|---|
| 2112 | a time string like the C function, given the number of seconds since the epoch | 
|---|
| 2113 | and time() returns the current time in seconds. | 
|---|
| 2114 | do_sprintf() now checks for mismatch between format string and number of | 
|---|
| 2115 | arguments supplied. | 
|---|
| 2116 |  | 
|---|
| 2117 | dfa.c | 
|---|
| 2118 |  | 
|---|
| 2119 | This is borrowed (almost unmodified) from GNU grep to provide faster searches. | 
|---|
| 2120 |  | 
|---|
| 2121 | eval.c | 
|---|
| 2122 |  | 
|---|
| 2123 | Node_var, Node_var_array and Node_param_list handled from macro rather | 
|---|
| 2124 | than in r_tree_eval(). | 
|---|
| 2125 | Changed cmp_nodes() to not do a force_number() -- this, combined with a | 
|---|
| 2126 | force_number() on ARGV[] and ENVIRON[] brings it into line with other awks | 
|---|
| 2127 | Greatly simplified cmp_nodes(). | 
|---|
| 2128 | Separated out Node_NF, Node_FS, Node_RS, Node_NR and Node_FNR in get_lhs(). | 
|---|
| 2129 | All adjacent string concatenations now done at once. | 
|---|
| 2130 |  | 
|---|
| 2131 | field.c | 
|---|
| 2132 |  | 
|---|
| 2133 | Added support for FIELDWIDTHS. | 
|---|
| 2134 | Fixed bug in get_field() whereby changes to a field were not always | 
|---|
| 2135 | properly reflected in $0. | 
|---|
| 2136 | Reordered tests in parse_field() so that reference off the end of the buffer | 
|---|
| 2137 | doesn't happen. | 
|---|
| 2138 | set_FS() now sets *parse_field i.e. routine to call depending on type of FS. | 
|---|
| 2139 | It also does make_regexp() for FS if needed.  get_field() passes FS_regexp | 
|---|
| 2140 | to re_parse_field(), as does do_split(). | 
|---|
| 2141 | Changes to set_field() and set_record() to avoid malloc'ing and free'ing the | 
|---|
| 2142 | field nodes repeatedly.  The fields now just point into $0 unless they are | 
|---|
| 2143 | assigned to another variable or changed.  force_number() on the field is | 
|---|
| 2144 | *only* done when the field is needed. | 
|---|
| 2145 |  | 
|---|
| 2146 | gawk.1 | 
|---|
| 2147 |  | 
|---|
| 2148 | Fixed troff formatting problem on .TP lines. | 
|---|
| 2149 |  | 
|---|
| 2150 | io.c | 
|---|
| 2151 |  | 
|---|
| 2152 | Moved some code out into iop.c. | 
|---|
| 2153 | Output from pipes and system() calls is properly synchronized. | 
|---|
| 2154 | Status from pipe close properly returned. | 
|---|
| 2155 | Bug in getline with no redirect fixed. | 
|---|
| 2156 |  | 
|---|
| 2157 | iop.c | 
|---|
| 2158 |  | 
|---|
| 2159 | This file contains a totally revamped get_a_record and associated code. | 
|---|
| 2160 |  | 
|---|
| 2161 | main.c | 
|---|
| 2162 |  | 
|---|
| 2163 | Command line programs no longer use a temporary file. | 
|---|
| 2164 | Therefore, tmpnam() no longer required. | 
|---|
| 2165 | Deprecated -a and -e options -- they will go away in the next release, | 
|---|
| 2166 | but for now they cause a warning. | 
|---|
| 2167 | Moved -C, -V, -c options to -W ala posix. | 
|---|
| 2168 | Added -W posix option: throw out \x | 
|---|
| 2169 | Added -W lint option. | 
|---|
| 2170 |  | 
|---|
| 2171 |  | 
|---|
| 2172 | node.c | 
|---|
| 2173 |  | 
|---|
| 2174 | force_number() now allows pure numerics to have leading whitespace. | 
|---|
| 2175 | Added make_string facility to optimize case of adding an already malloc'd | 
|---|
| 2176 | string. | 
|---|
| 2177 | Cleaned up and simplified do_deref(). | 
|---|
| 2178 | Fixed bug in handling of stref==255 in do_deref(). | 
|---|
| 2179 |  | 
|---|
| 2180 | re.c | 
|---|
| 2181 |  | 
|---|
| 2182 | contains the interface to regexp code | 
|---|
| 2183 |  | 
|---|
| 2184 | Changes from 2.11.1 to FSF version of same | 
|---|
| 2185 | ------------------------------------------ | 
|---|
| 2186 | Thu Jan  4 14:19:30 1990  Jim Kingdon  (kingdon at albert) | 
|---|
| 2187 |  | 
|---|
| 2188 | * Makefile (YACC): Add -y to bison part. | 
|---|
| 2189 |  | 
|---|
| 2190 | * missing.c: Add #include <stdio.h>. | 
|---|
| 2191 |  | 
|---|
| 2192 | Sun Dec 24 16:16:05 1989  David J. MacKenzie  (djm at hobbes.ai.mit.edu) | 
|---|
| 2193 |  | 
|---|
| 2194 | * Makefile: Add (commented out) default defines for Sony News. | 
|---|
| 2195 |  | 
|---|
| 2196 | * awk.h: Move declaration of vprintf so it will compile when | 
|---|
| 2197 | -DVPRINTF_MISSING is defined. | 
|---|
| 2198 |  | 
|---|
| 2199 | Mon Nov 13 18:54:08 1989  Robert J. Chassell  (bob at apple-gunkies.ai.mit.edu) | 
|---|
| 2200 |  | 
|---|
| 2201 | * gawk.texinfo: changed @-commands that are not part of the | 
|---|
| 2202 | standard, currently released texinfmt.el to those that are. | 
|---|
| 2203 | Otherwise, only people with the as-yet unreleased makeinfo.c can | 
|---|
| 2204 | format this file. | 
|---|
| 2205 |  | 
|---|
| 2206 | Changes from 2.11beta to 2.11.1 (production) | 
|---|
| 2207 | -------------------------------------------- | 
|---|
| 2208 |  | 
|---|
| 2209 | Went from "beta" to production status!!! | 
|---|
| 2210 |  | 
|---|
| 2211 | Now flushes stdout before closing pipes or redirected files to | 
|---|
| 2212 | synchronize output. | 
|---|
| 2213 |  | 
|---|
| 2214 | MS-DOS changes added in. | 
|---|
| 2215 |  | 
|---|
| 2216 | Signal handler return type parameterized in Makefile and awk.h and | 
|---|
| 2217 | some lint removed.  debug.c cleaned up. | 
|---|
| 2218 |  | 
|---|
| 2219 | Fixed FS splitting to never match null strings, per book. | 
|---|
| 2220 |  | 
|---|
| 2221 | Correction to the manual's description of FS. | 
|---|
| 2222 |  | 
|---|
| 2223 | Some compilers break on char *foo = "string" + 4 so fixed version.sh and | 
|---|
| 2224 | main.c. | 
|---|
| 2225 |  | 
|---|
| 2226 | Changes from 2.10beta to 2.11beta | 
|---|
| 2227 | --------------------------------- | 
|---|
| 2228 |  | 
|---|
| 2229 | This release fixes all reported bugs that we could reproduce.  Probably | 
|---|
| 2230 | some of the changes are not documented here. | 
|---|
| 2231 |  | 
|---|
| 2232 | The next release will probably not be a beta release! | 
|---|
| 2233 |  | 
|---|
| 2234 | The most important change is the addition of the -nostalgia option. :-) | 
|---|
| 2235 |  | 
|---|
| 2236 | The documentation has been improved and brought up-to-date. | 
|---|
| 2237 |  | 
|---|
| 2238 | There has been a lot of general cleaning up of the code that is not otherwise | 
|---|
| 2239 | documented here.  There has been a movement toward using standard-conforming | 
|---|
| 2240 | library routines and providing them (in missing.d) for systems lacking them. | 
|---|
| 2241 | Improved (hopefully) configuration through Makfile modifications and missing.c. | 
|---|
| 2242 | In particular, straightened out confusion over vprintf #defines, declarations | 
|---|
| 2243 | etc. | 
|---|
| 2244 |  | 
|---|
| 2245 | Deleted RCS log comments from source, to reduce source size by about one third. | 
|---|
| 2246 | Most of them were horribly out-of-date, anyway. | 
|---|
| 2247 |  | 
|---|
| 2248 | Renamed source files to reflect (for the most part) their contents. | 
|---|
| 2249 |  | 
|---|
| 2250 | More and improved error messages.  Cleanup and fixes to yyerror(). | 
|---|
| 2251 | String constants are not altered in input buffer, so error messages come out | 
|---|
| 2252 | better.  Fixed usage message.  Make use of ANSI C strerror() function | 
|---|
| 2253 | (provided). | 
|---|
| 2254 |  | 
|---|
| 2255 | Plugged many more memory leaks.  The memory consumption is now quite | 
|---|
| 2256 | reasonable over a wide range of programs. | 
|---|
| 2257 |  | 
|---|
| 2258 | Uses volatile declaration if STDC > 0 to avoid problems due to longjmp. | 
|---|
| 2259 |  | 
|---|
| 2260 | New -a and -e options to use awk or egrep style regexps, respectively, | 
|---|
| 2261 | since POSIX says awk should use egrep regexps.  Default is -a. | 
|---|
| 2262 |  | 
|---|
| 2263 | Added -v option for setting variables before the first file is encountered. | 
|---|
| 2264 | Version information now uses -V and copyleft uses -C. | 
|---|
| 2265 |  | 
|---|
| 2266 | Added a patchlevel.h file and its use for -V and -C. | 
|---|
| 2267 |  | 
|---|
| 2268 | Append_right() optimized for major improvement to programs with a *lot* | 
|---|
| 2269 | of statements. | 
|---|
| 2270 |  | 
|---|
| 2271 | Operator precedence has been corrected to match draft Posix. | 
|---|
| 2272 |  | 
|---|
| 2273 | Tightened up grammar for builtin functions so that only length | 
|---|
| 2274 | may be called without arguments or parentheses. | 
|---|
| 2275 |  | 
|---|
| 2276 | /regex/ is now a normal expression that can appear in any expression | 
|---|
| 2277 | context. | 
|---|
| 2278 |  | 
|---|
| 2279 | Allow /= to begin a regexp.  Allow ..[../..].. in a regexp. | 
|---|
| 2280 |  | 
|---|
| 2281 | Allow empty compound statements ({}). | 
|---|
| 2282 |  | 
|---|
| 2283 | Made return and next illegal outside a function and in BEGIN/END respectively. | 
|---|
| 2284 |  | 
|---|
| 2285 | Division by zero is now illegal and causes a fatal error. | 
|---|
| 2286 |  | 
|---|
| 2287 | Fixed exponentiation so that x ^ 0 and x ^= 0 both return 1. | 
|---|
| 2288 |  | 
|---|
| 2289 | Fixed do_sqrt, do_log, and do_exp to do argument/return checking and | 
|---|
| 2290 | print an error message, per the manual. | 
|---|
| 2291 |  | 
|---|
| 2292 | Fixed main to catch SIGSEGV to get source and data file line numbers. | 
|---|
| 2293 |  | 
|---|
| 2294 | Fixed yyerror to print the ^ at the beginning of the bad token, not the end. | 
|---|
| 2295 |  | 
|---|
| 2296 | Fix to substr() builtin:  it was failing if the arguments | 
|---|
| 2297 | weren't already strings. | 
|---|
| 2298 |  | 
|---|
| 2299 | Added new node value flag NUMERIC to indicate that a variable is | 
|---|
| 2300 | purely a number as opposed to type NUM which indicates that | 
|---|
| 2301 | the node's numeric value is valid.  This is set in make_number(), | 
|---|
| 2302 | tmp_number and r_force_number() when appropriate and used in | 
|---|
| 2303 | cmp_nodes().  This fixed a bug in comparison of variables that had | 
|---|
| 2304 | numeric prefixes.  The new code uses strtod() and eliminates is_a_number(). | 
|---|
| 2305 | A simple strtod() is provided for systems lacking one.  It does no | 
|---|
| 2306 | overflow checking, so could be improved. | 
|---|
| 2307 |  | 
|---|
| 2308 | Simplification and efficiency improvement in force_string. | 
|---|
| 2309 |  | 
|---|
| 2310 | Added performance tweak in r_force_number(). | 
|---|
| 2311 |  | 
|---|
| 2312 | Fixed a bug with nested loops and break/continue in functions. | 
|---|
| 2313 |  | 
|---|
| 2314 | Fixed inconsistency in handling of empty fields when $0 has to be rebuilt. | 
|---|
| 2315 | Happens to simplify rebuild_record(). | 
|---|
| 2316 |  | 
|---|
| 2317 | Cleaned up the code associated with opening a pipe for reading.  Gawk | 
|---|
| 2318 | now has its own popen routine (gawk_popen) that allocates an IOBUF | 
|---|
| 2319 | and keeps track of the pid of the child process.  gawk_pclose | 
|---|
| 2320 | marks the appropriate child as defunct in the right struct redirect. | 
|---|
| 2321 |  | 
|---|
| 2322 | Cleaned up and fixed close_redir(). | 
|---|
| 2323 |  | 
|---|
| 2324 | Fixed an obscure bug to do with redirection.  Intermingled ">" and ">>" | 
|---|
| 2325 | redirects did not output in a predictable order. | 
|---|
| 2326 |  | 
|---|
| 2327 | Improved handling of output buffering:  now all print[f]s redirected to a tty | 
|---|
| 2328 | or pipe are flushed immediately and non-redirected output to a tty is flushed | 
|---|
| 2329 | before the next input record is read. | 
|---|
| 2330 |  | 
|---|
| 2331 | Fixed a bug in get_a_record() where bcopy() could have copied over | 
|---|
| 2332 | a random pointer. | 
|---|
| 2333 |  | 
|---|
| 2334 | Fixed a bug when RS="" and records separated by multiple blank lines. | 
|---|
| 2335 |  | 
|---|
| 2336 | Got rid of SLOWIO code which was out-of-date anyway. | 
|---|
| 2337 |  | 
|---|
| 2338 | Fix in get_field() for case where $0 is changed and then $(n) are | 
|---|
| 2339 | changed and then $0 is used. | 
|---|
| 2340 |  | 
|---|
| 2341 | Fixed infinite loop on failure to open file for reading from getline. | 
|---|
| 2342 | Now handles redirect file open failures properly. | 
|---|
| 2343 |  | 
|---|
| 2344 | Filenames such as /dev/stdin now allowed on the command line as well as | 
|---|
| 2345 | in redirects. | 
|---|
| 2346 |  | 
|---|
| 2347 | Fixed so that gawk '$1' where $1 is a zero tests false. | 
|---|
| 2348 |  | 
|---|
| 2349 | Fixed parsing so that `RLENGTH -1' parses the same as `RLENGTH - 1', | 
|---|
| 2350 | for example. | 
|---|
| 2351 |  | 
|---|
| 2352 | The return from a user-defined function now defaults to the Null node. | 
|---|
| 2353 | This fixes a core-dump-causing bug when the return value  of a function | 
|---|
| 2354 | is used and that function returns no value. | 
|---|
| 2355 |  | 
|---|
| 2356 | Now catches floating point exceptions to avoid core dumps. | 
|---|
| 2357 |  | 
|---|
| 2358 | Bug fix for deleting elements of an array -- under some conditions, it was | 
|---|
| 2359 | deleting more than one element at a time. | 
|---|
| 2360 |  | 
|---|
| 2361 | Fix in AWKPATH code for running off the end of the string. | 
|---|
| 2362 |  | 
|---|
| 2363 | Fixed handling of precision in *printf calls.  %0.2d now works properly, | 
|---|
| 2364 | as does %c.  [s]printf now recognizes %i and %X. | 
|---|
| 2365 |  | 
|---|
| 2366 | Fixed a bug in printing of very large (>240) strings. | 
|---|
| 2367 |  | 
|---|
| 2368 | Cleaned up erroneous behaviour for RS == "". | 
|---|
| 2369 |  | 
|---|
| 2370 | Added IGNORECASE support to index(). | 
|---|
| 2371 |  | 
|---|
| 2372 | Simplified and fixed newnode/freenode. | 
|---|
| 2373 |  | 
|---|
| 2374 | Fixed reference to $(anything) in a BEGIN block. | 
|---|
| 2375 |  | 
|---|
| 2376 | Eliminated use of USG rand48(). | 
|---|
| 2377 |  | 
|---|
| 2378 | Bug fix in force_string for machines with 16-bit ints. | 
|---|
| 2379 |  | 
|---|
| 2380 | Replaced use of mktemp() with tmpnam() and provided a partial implementation of | 
|---|
| 2381 | the latter for systems that don't have it. | 
|---|
| 2382 |  | 
|---|
| 2383 | Added a portability check for includes in io.c. | 
|---|
| 2384 |  | 
|---|
| 2385 | Minor portability fix in alloc.c plus addition of xmalloc(). | 
|---|
| 2386 |  | 
|---|
| 2387 | Portability fix:  on UMAX4.2, st_blksize is zero for a pipe, thus breaking | 
|---|
| 2388 | iop_alloc() -- fixed. | 
|---|
| 2389 |  | 
|---|
| 2390 | Workaround for compiler bug on Sun386i in do_sprintf. | 
|---|
| 2391 |  | 
|---|
| 2392 | More and improved prototypes in awk.h. | 
|---|
| 2393 |  | 
|---|
| 2394 | Consolidated C escape parsing code into one place. | 
|---|
| 2395 |  | 
|---|
| 2396 | strict flag is now turned on only when invoked with compatability option. | 
|---|
| 2397 | It now applies to fewer things. | 
|---|
| 2398 |  | 
|---|
| 2399 | Changed cast of f._ptr in vprintf.c from (unsigned char *) to (char *). | 
|---|
| 2400 | Hopefully this is right for the systems that use this code (I don't). | 
|---|
| 2401 |  | 
|---|
| 2402 | Support for pipes under MSDOS added. | 
|---|