Annotation of src/usr.bin/awk/FIXES, Revision 1.7
1.7 ! millert 1: /* $OpenBSD: FIXES,v 1.6 1997/08/25 16:17:07 kstailey Exp $ */
1.1 tholo 2: /****************************************************************
1.6 kstailey 3: Copyright (C) Lucent Technologies 1997
1.1 tholo 4: All Rights Reserved
5:
6: Permission to use, copy, modify, and distribute this software and
7: its documentation for any purpose and without fee is hereby
8: granted, provided that the above copyright notice appear in all
9: copies and that both that the copyright notice and this
10: permission notice and warranty disclaimer appear in supporting
1.6 kstailey 11: documentation, and that the name Lucent Technologies or any of
12: its entities not be used in advertising or publicity pertaining
13: to distribution of the software without specific, written prior
14: permission.
15:
16: LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
18: IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
19: SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
21: IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
22: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
23: THIS SOFTWARE.
1.1 tholo 24: ****************************************************************/
25:
26: This file lists all bug fixes, changes, etc., made since the AWK book
27: was sent to the printers in August, 1987.
28:
1.7 ! millert 29: Mar 5, 1999:
! 30: after hearing from yet another innocent victim, changed
! 31: isnumber to is_number to avoid the problem caused by
! 32: freeBSD gratuitously and incorrectly including the name
! 33: isnumber in the standard header file ctype.h.
! 34:
! 35: distribution now includes a script for building on a Mac,
! 36: thanks to Dan Allen.
! 37:
! 38: Feb 20, 1999:
! 39: fixed memory leaks in run.c (call) and tran.c (setfval).
! 40: thanks to Stephen Nutt for finding these and providing the fixes.
! 41:
! 42: Jan 13, 1999:
! 43: replaced srand argument by (unsigned int) in run.c;
! 44: avoids problem on Mac and potentially on Unix & Windows.
! 45: thanks to Dan Allen.
! 46:
! 47: added a few (int) casts to silence useless compiler warnings.
! 48: e.g., errorflag= in run.c jump().
! 49:
! 50: added proctab.c to the bundle outout; one less thing
! 51: to have to compile out of the box.
! 52:
! 53: added calls to _popen and _pclose to the win95 stub for
! 54: pipes (thanks to Steve Adams for this helpful suggestion).
! 55: seems to work, though properties are not well understood
! 56: by me, and it appears that under some circumstances the
! 57: pipe output is truncated. Be careful.
! 58:
! 59: Oct 19, 1998:
! 60: fixed a couple of bugs in getrec: could fail to update $0
! 61: after a getline var; because inputFS wasn't initialized,
! 62: could split $0 on every character, a misleading diversion.
! 63:
! 64: fixed caching bug in makedfa: LRU was actually removing
! 65: least often used.
! 66:
! 67: thanks to ross ridge for finding these, and for providing
! 68: great bug reports.
! 69:
! 70: May 12, 1998:
! 71: fixed potential bug in readrec: might fail to update record
! 72: pointer after growing. thanks to dan levy for spotting this
! 73: and suggesting the fix.
! 74:
! 75: Mar 12, 1998:
! 76: added -V to print version number and die.
! 77:
! 78: Feb 11, 1998:
! 79: subtle silent bug in lex.c: if the program ended with a number
! 80: longer than 1 digit, part of the input would be pushed back and
! 81: parsed again because token buffer wasn't terminated right.
! 82: example: awk 'length($0) > 10'. blush. at least i found it
! 83: myself.
! 84:
! 85: Aug 31, 1997:
! 86: s/adelete/awkdelete/: SGI uses this in malloc.h.
! 87: thanks to nelson beebe for pointing this one out.
! 88:
! 89: Aug 21, 1997:
! 90: fixed some bugs in sub and gsub when replacement includes \\.
! 91: this is a dark, horrible corner, but at least now i believe that
! 92: the behavior is the same as gawk and the intended posix standard.
! 93: thanks to arnold robbins for advice here.
! 94:
! 95: Aug 9, 1997:
! 96: somewhat regretfully, replaced the ancient lex-based lexical
! 97: analyzer with one written in C. it's longer, generates less code,
! 98: and more portable; the old one depended too much on mysterious
! 99: properties of lex that were not preserved in other environments.
! 100: in theory these recognize the same language.
! 101:
! 102: now using strtod to test whether a string is a number, instead of
! 103: the convoluted original function. should be more portable and
! 104: reliable if strtod is implemented right.
! 105:
! 106: removed now-pointless optimization in makefile that tries to avoid
! 107: recompilation when awkgram.y is changed but symbols are not.
! 108:
! 109: removed most fixed-size arrays, though a handful remain, some
! 110: of which are unchecked. you have been warned.
! 111:
! 112: Aug 4, 1997:
! 113: with some trepidation, replaced the ancient code that managed
! 114: fields and $0 in fixed-size arrays with arrays that grow on
! 115: demand. there is still some tension between trying to make this
! 116: run fast and making it clean; not sure it's right yet.
! 117:
! 118: the ill-conceived -mr and -mf arguments are now useful only
! 119: for debugging. previous dynamic string code removed.
! 120:
! 121: numerous other minor cleanups along the way.
1.1 tholo 122:
1.7 ! millert 123: Jul 30, 1997:
! 124: using code provided by dan levy (to whom profuse thanks), replaced
! 125: fixed-size arrays and awkward kludges by a fairly uniform mechanism
! 126: to grow arrays as needed for printf, sub, gsub, etc.
1.1 tholo 127:
1.7 ! millert 128: Jul 23, 1997:
! 129: falling off the end of a function returns "" and 0, not 0.
! 130: thanks to arnold robbins.
1.1 tholo 131:
1.7 ! millert 132: Jun 17, 1997:
! 133: replaced several fixed-size arrays by dynamically-created ones
! 134: in run.c; added overflow tests to some previously unchecked cases.
! 135: getline, toupper, tolower.
1.1 tholo 136:
1.7 ! millert 137: getline code is still broken in that recursive calls may wind
! 138: up using the same space. [fixed later]
1.1 tholo 139:
1.7 ! millert 140: increased RECSIZE to 8192 to push problems further over the horizon.
1.1 tholo 141:
1.7 ! millert 142: added \r to \n as input line separator for programs, not data.
! 143: damn CRLFs.
1.1 tholo 144:
1.7 ! millert 145: modified format() to permit explicit printf("%c", 0) to include
! 146: a null byte in output. thanks to ken stailey for the fix.
1.1 tholo 147:
1.7 ! millert 148: added a "-safe" argument that disables file output (print >,
! 149: print >>), process creation (cmd|getline, print |, system), and
! 150: access to the environment (ENVIRON). this is a first approximation
! 151: to a "safe" version of awk, but don't rely on it too much. thanks
! 152: to joan feigenbaum and matt blaze for the inspiration long ago.
1.1 tholo 153:
1.7 ! millert 154: Jul 8, 1996:
! 155: fixed long-standing bug in sub, gsub(/a/, "\\\\&"); thanks to
! 156: ralph corderoy.
1.1 tholo 157:
1.7 ! millert 158: Jun 29, 1996:
! 159: fixed awful bug in new field splitting; didn't get all the places
! 160: where input was done.
1.1 tholo 161:
1.7 ! millert 162: Jun 28, 1996:
! 163: changed field-splitting to conform to posix definition: fields are
! 164: split using the value of FS at the time of input; it used to be
! 165: the value when the field or NF was first referred to, a much less
! 166: predictable definition. thanks to arnold robbins for encouragement
! 167: to do the right thing.
1.1 tholo 168:
1.7 ! millert 169: May 28, 1996:
! 170: fixed appalling but apparently unimportant bug in parsing octal
! 171: numbers in reg exprs.
1.1 tholo 172:
1.7 ! millert 173: explicit hex in reg exprs now limited to 2 chars: \xa, \xaa.
1.1 tholo 174:
1.7 ! millert 175: May 27, 1996:
! 176: cleaned up some declarations so gcc -Wall is now almost silent.
1.1 tholo 177:
1.7 ! millert 178: makefile now includes backup copies of ytab.c and lexyy.c in case
! 179: one makes before looking; it also avoids recreating lexyy.c unless
! 180: really needed.
1.1 tholo 181:
1.7 ! millert 182: s/aprintf/awkprint, s/asprintf/awksprintf/ to avoid some name clashes
! 183: with unwisely-written header files.
1.1 tholo 184:
1.7 ! millert 185: thanks to jeffrey friedl for several of these.
1.1 tholo 186:
1.7 ! millert 187: May 26, 1996:
! 188: an attempt to rationalize the (unsigned) char issue. almost all
! 189: instances of unsigned char have been removed; the handful of places
! 190: in b.c where chars are used as table indices have been hand-crafted.
! 191: added some latin-1 tests to the regression, but i'm not confident;
! 192: none of my compilers seem to care much. thanks to nelson beebe for
! 193: pointing out some others that do care.
1.1 tholo 194:
1.7 ! millert 195: May 2, 1996:
! 196: removed all register declarations.
1.1 tholo 197:
1.7 ! millert 198: enhanced split(), as in gawk, etc: split(s, a, "") splits s into
! 199: a[1]...a[length(s)] with each character a single element.
1.1 tholo 200:
1.7 ! millert 201: made the same changes for field-splitting if FS is "".
1.1 tholo 202:
1.7 ! millert 203: added nextfile, as in gawk: causes immediate advance to next
! 204: input file. (thanks to arnold robbins for inspiration and code).
1.1 tholo 205:
1.7 ! millert 206: small fixes to regexpr code: can now handle []], [[], and
! 207: variants; [] is now a syntax error, rather than matching
! 208: everything; [z-a] is now empty, not z. far from complete
! 209: or correct, however. (thanks to jeffrey friedl for pointing out
! 210: some awful behaviors.)
1.1 tholo 211:
1.7 ! millert 212: Apr 29, 1996:
! 213: replaced uchar by uschar everwhere; apparently some compilers
! 214: usurp this name and this causes conflicts.
1.1 tholo 215:
1.7 ! millert 216: fixed call to time in run.c (bltin); arg is time_t *.
1.1 tholo 217:
1.7 ! millert 218: replaced horrible pointer/long punning in b.c by a legitimate
! 219: union. should be safer on 64-bit machines and cleaner everywhere.
! 220: (thanks to nelson beebe for pointing out some of these problems.)
1.1 tholo 221:
1.7 ! millert 222: replaced nested comments by #if 0...#endif in run.c, lib.c.
1.1 tholo 223:
1.7 ! millert 224: removed getsval, setsval, execute macros from run.c and lib.c.
! 225: machines are 100x faster than they were when these macros were
! 226: first used.
1.1 tholo 227:
1.7 ! millert 228: revised filenames: awk.g.y => awkgram.y, awk.lx.l => awklex.l,
! 229: y.tab.[ch] => ytab.[ch], lex.yy.c => lexyy.c, all in the aid of
! 230: portability to nameless systems.
1.1 tholo 231:
1.7 ! millert 232: "make bundle" now includes yacc and lex output files for recipients
! 233: who don't have yacc or lex.
1.1 tholo 234:
1.7 ! millert 235: Aug 15, 1995:
! 236: initialized Cells in setsymtab more carefully; some fields
! 237: were not set. (thanks to purify, all of whose complaints i
! 238: think i now understand.)
1.1 tholo 239:
1.7 ! millert 240: fixed at least one error in gsub that looked at -1-th element
! 241: of an array when substituting for a null match (e.g., $).
1.1 tholo 242:
1.7 ! millert 243: delete arrayname is now legal; it clears the elements but leaves
! 244: the array, which may not be the right behavior.
1.1 tholo 245:
1.7 ! millert 246: modified makefile: my current make can't cope with the test used
! 247: to avoid unnecessary yacc invocations.
1.1 tholo 248:
1.7 ! millert 249: Jul 17, 1995:
! 250: added dynamically growing strings to awk.lx.l and b.c
! 251: to permit regular expressions to be much bigger.
! 252: the state arrays can still overflow.
1.1 tholo 253:
1.7 ! millert 254: Aug 24, 1994:
! 255: detect duplicate arguments in function definitions (mdm).
1.1 tholo 256:
1.7 ! millert 257: May 11, 1994:
! 258: trivial fix to printf to limit string size in sub().
1.1 tholo 259:
1.7 ! millert 260: Apr 22, 1994:
! 261: fixed yet another subtle self-assignment problem:
! 262: $1 = $2; $1 = $1 clobbered $1.
1.1 tholo 263:
1.7 ! millert 264: Regression tests now use private echo, to avoid quoting problems.
1.1 tholo 265:
1.7 ! millert 266: Feb 2, 1994:
! 267: changed error() to print line number as %d, not %g.
1.1 tholo 268:
1.7 ! millert 269: Jul 23, 1993:
! 270: cosmetic changes: increased sizes of some arrays,
! 271: reworded some error messages.
1.1 tholo 272:
1.7 ! millert 273: added CONVFMT as in posix (just replaced OFMT in getsval)
1.1 tholo 274:
1.7 ! millert 275: FILENAME is now "" until the first thing that causes a file
! 276: to be opened.
1.1 tholo 277:
1.7 ! millert 278: Nov 28, 1992:
! 279: deleted yyunput and yyoutput from proto.h;
! 280: different versions of lex give these different declarations.
1.1 tholo 281:
1.7 ! millert 282: May 31, 1992:
! 283: added -mr N and -mf N options: more record and fields.
! 284: these really ought to adjust automatically.
1.1 tholo 285:
1.7 ! millert 286: cleaned up some error messages; "out of space" now means
! 287: malloc returned NULL in all cases.
1.1 tholo 288:
1.7 ! millert 289: changed rehash so that if it runs out, it just returns;
! 290: things will continue to run slow, but maybe a bit longer.
1.1 tholo 291:
1.7 ! millert 292: Apr 24, 1992:
! 293: remove redundant close of stdin when using -f -.
1.1 tholo 294:
1.7 ! millert 295: got rid of core dump with -d; awk -d just prints date.
1.1 tholo 296:
1.7 ! millert 297: Apr 12, 1992:
! 298: added explicit check for /dev/std(in,out,err) in redirection.
! 299: unlike gawk, no /dev/fd/n yet.
1.1 tholo 300:
1.7 ! millert 301: added (file/pipe) builtin. hard to test satisfactorily.
! 302: not posix.
1.1 tholo 303:
1.7 ! millert 304: Feb 20, 1992:
! 305: recompile after abortive changes; should be unchanged.
1.1 tholo 306:
1.7 ! millert 307: Dec 2, 1991:
! 308: die-casting time: converted to ansi C, installed that.
1.1 tholo 309:
1.7 ! millert 310: Nov 30, 1991:
! 311: fixed storage leak in freefa, failing to recover [N]CCL.
! 312: thanks to Bill Jones (jones@cs.usask.ca)
1.1 tholo 313:
1.7 ! millert 314: Nov 19, 1991:
! 315: use RAND_MAX instead of literal in builtin().
1.1 tholo 316:
1.7 ! millert 317: Nov 12, 1991:
! 318: cranked up some fixed-size arrays in b.c, and added a test for
! 319: overflow in penter. thanks to mark larsen.
1.1 tholo 320:
1.7 ! millert 321: Sep 24, 1991:
! 322: increased buffer in gsub. a very crude fix to a general problem.
! 323: and again on Sep 26.
1.1 tholo 324:
1.7 ! millert 325: Aug 18, 1991:
! 326: enforce variable name syntax for commandline variables: has to
! 327: start with letter or _.
1.1 tholo 328:
1.7 ! millert 329: Jul 27, 1991:
! 330: allow newline after ; in for statements.
1.1 tholo 331:
1.7 ! millert 332: Jul 21, 1991:
! 333: fixed so that in self-assignment like $1=$1, side effects
! 334: like recomputing $0 take place. (this is getting subtle.)
1.1 tholo 335:
1.7 ! millert 336: Jun 30, 1991:
! 337: better test for detecting too-long output record.
1.1 tholo 338:
1.7 ! millert 339: Jun 2, 1991:
! 340: better defense against very long printf strings.
! 341: made break and continue illegal outside of loops.
1.1 tholo 342:
1.7 ! millert 343: May 13, 1991:
! 344: removed extra arg on gettemp, tempfree. minor error message rewording.
1.1 tholo 345:
346: May 6, 1991:
347: fixed silly bug in hex parsing in hexstr().
348: removed an apparently unnecessary test in isnumber().
349: warn about weird printf conversions.
350: fixed unchecked array overwrite in relex().
351:
352: changed for (i in array) to access elements in sorted order.
353: then unchanged it -- it really does run slower in too many cases.
354: left the code in place, commented out.
355:
1.7 ! millert 356: Feb 10, 1991:
! 357: check error status on all writes, to avoid banging on full disks.
1.1 tholo 358:
1.7 ! millert 359: Jan 28, 1991:
! 360: awk -f - reads the program from stdin.
1.1 tholo 361:
1.7 ! millert 362: Jan 11, 1991:
! 363: failed to set numeric state on $0 in cmd|getline context in run.c.
1.1 tholo 364:
1.7 ! millert 365: Nov 2, 1990:
! 366: fixed sleazy test for integrality in getsval; use modf.
1.1 tholo 367:
1.7 ! millert 368: Oct 29, 1990:
! 369: fixed sleazy buggy code in lib.c that looked (incorrectly) for
! 370: too long input lines.
1.1 tholo 371:
1.7 ! millert 372: Oct 14, 1990:
! 373: fixed the bug on p. 198 in which it couldn't deduce that an
! 374: argument was an array in some contexts. replaced the error
! 375: message in intest() by code that damn well makes it an array.
1.1 tholo 376:
1.7 ! millert 377: Oct 8, 1990:
! 378: fixed horrible bug: types and values were not preserved in
! 379: some kinds of self-assignment. (in assign().)
1.1 tholo 380:
1.7 ! millert 381: Aug 24, 1990:
! 382: changed NCHARS to 256 to handle 8-bit characters in strings
! 383: presented to match(), etc.
1.1 tholo 384:
1.7 ! millert 385: Jun 26, 1990:
! 386: changed struct rrow (awk.h) to use long instead of int for lval,
! 387: since cfoll() stores a pointer in it. now works better when int's
! 388: are smaller than pointers!
1.1 tholo 389:
1.7 ! millert 390: May 6, 1990:
! 391: AVA fixed the grammar so that ! is uniformly of the same precedence as
! 392: unary + and -. This renders illegal some constructs like !x=y, which
! 393: now has to be parenthesized as !(x=y), and makes others work properly:
! 394: !x+y is (!x)+y, and x!y is x !y, not two pattern-action statements.
! 395: (These problems were pointed out by Bob Lenk of Posix.)
1.1 tholo 396:
1.7 ! millert 397: Added \x to regular expressions (already in strings).
! 398: Limited octal to octal digits; \8 and \9 are not octal.
! 399: Centralized the code for parsing escapes in regular expressions.
! 400: Added a bunch of tests to T.re and T.sub to verify some of this.
1.1 tholo 401:
1.7 ! millert 402: Feb 9, 1990:
! 403: fixed null pointer dereference bug in main.c: -F[nothing]. sigh.
1.1 tholo 404:
1.7 ! millert 405: restored srand behavior: it returns the current seed.
1.1 tholo 406:
1.7 ! millert 407: Jan 18, 1990:
! 408: srand now returns previous seed value (0 to start).
1.1 tholo 409:
1.7 ! millert 410: Jan 5, 1990:
! 411: fix potential problem in tran.c -- something was freed,
! 412: then used in freesymtab.
1.1 tholo 413:
1.7 ! millert 414: Oct 18, 1989:
! 415: another try to get the max number of open files set with
! 416: relatively machine-independent code.
1.1 tholo 417:
1.7 ! millert 418: small fix to input() in case of multiple reads after EOF.
1.1 tholo 419:
1.7 ! millert 420: Oct 11, 1989:
! 421: FILENAME is now defined in the BEGIN block -- too many old
! 422: programs broke.
1.1 tholo 423:
1.7 ! millert 424: "-" means stdin in getline as well as on the commandline.
1.1 tholo 425:
1.7 ! millert 426: added a bunch of casts to the code to tell the truth about
! 427: char * vs. unsigned char *, a right royal pain. added a
! 428: setlocale call to the front of main, though probably no one
! 429: has it usefully implemented yet.
1.1 tholo 430:
1.7 ! millert 431: Aug 24, 1989:
! 432: removed redundant relational tests against nullnode if parse
! 433: tree already had a relational at that point.
1.1 tholo 434:
1.7 ! millert 435: Aug 11, 1989:
! 436: fixed bug: commandline variable assignment has to look like
! 437: var=something. (consider the man page for =, in file =.1)
1.1 tholo 438:
1.7 ! millert 439: changed number of arguments to functions to static arrays
! 440: to avoid repeated malloc calls.
1.1 tholo 441:
1.7 ! millert 442: Aug 2, 1989:
! 443: restored -F (space) separator
1.1 tholo 444:
1.7 ! millert 445: Jul 30, 1989:
! 446: added -v x=1 y=2 ... for immediate commandline variable assignment;
! 447: done before the BEGIN block for sure. they have to precede the
! 448: program if the program is on the commandline.
! 449: Modified Aug 2 to require a separate -v for each assignment.
1.1 tholo 450:
1.7 ! millert 451: Jul 10, 1989:
! 452: fixed ref-thru-zero bug in environment code in tran.c
1.1 tholo 453:
1.7 ! millert 454: Jun 23, 1989:
! 455: add newline to usage message.
1.1 tholo 456:
1.7 ! millert 457: Jun 14, 1989:
! 458: added some missing ansi printf conversion letters: %i %X %E %G.
! 459: no sensible meaning for h or L, so they may not do what one expects.
1.1 tholo 460:
1.7 ! millert 461: made %* conversions work.
1.1 tholo 462:
1.7 ! millert 463: changed x^y so that if n is a positive integer, it's done
! 464: by explicit multiplication, thus achieving maximum accuracy.
! 465: (this should be done by pow() but it seems not to be locally.)
! 466: done to x ^= y as well.
1.1 tholo 467:
1.7 ! millert 468: Jun 4, 1989:
! 469: ENVIRON array contains environment: if shell variable V=thing,
! 470: ENVIRON["V"] is "thing"
1.1 tholo 471:
1.7 ! millert 472: multiple -f arguments permitted. error reporting is naive.
! 473: (they were permitted before, but only the last was used.)
1.1 tholo 474:
1.7 ! millert 475: fixed a really stupid botch in the debugging macro dprintf
1.1 tholo 476:
1.7 ! millert 477: fixed order of evaluation of commandline assignments to match
! 478: what the book claims: an argument of the form x=e is evaluated
! 479: at the time it would have been opened if it were a filename (p 63).
! 480: this invalidates the suggested answer to ex 4-1 (p 195).
1.1 tholo 481:
1.7 ! millert 482: removed some code that permitted -F (space) fieldseparator,
! 483: since it didn't quite work right anyway. (restored aug 2)
1.1 tholo 484:
1.7 ! millert 485: Apr 27, 1989:
! 486: Line number now accumulated correctly for comment lines.
1.1 tholo 487:
1.7 ! millert 488: Apr 26, 1989:
! 489: Debugging output now includes a version date,
! 490: if one compiles it into the source each time.
1.1 tholo 491:
1.7 ! millert 492: Apr 9, 1989:
! 493: Changed grammar to prohibit constants as 3rd arg of sub and gsub;
! 494: prevents class of overwriting-a-constant errors. (Last one?)
! 495: This invalidates the "banana" example on page 43 of the book.
1.1 tholo 496:
1.7 ! millert 497: Added \a ("alert"), \v (vertical tab), \xhhh (hexadecimal),
! 498: as in ANSI, for strings. Rescinded the sloppiness that permitted
! 499: non-octal digits in \ooo. Warning: not all compilers and libraries
! 500: will be able to deal with \x correctly.
1.1 tholo 501:
1.7 ! millert 502: Jan 9, 1989:
! 503: Fixed bug that caused tempcell list to contain a duplicate.
! 504: The fix is kludgy.
1.1 tholo 505:
1.7 ! millert 506: Dec 17, 1988:
! 507: Catches some more commandline errors in main.
! 508: Removed redundant decl of modf in run.c (confuses some compilers).
! 509: Warning: there's no single declaration of malloc, etc., in awk.h
! 510: that seems to satisfy all compilers.
1.1 tholo 511:
1.7 ! millert 512: Dec 7, 1988:
! 513: Added a bit of code to error printing to avoid printing nulls.
! 514: (Not clear that it actually would.)
1.1 tholo 515:
1.7 ! millert 516: Nov 27, 1988:
! 517: With fear and trembling, modified the grammar to permit
! 518: multiple pattern-action statements on one line without
! 519: an explicit separator. By definition, this capitulation
! 520: to the ghost of ancient implementations remains undefined
! 521: and thus subject to change without notice or apology.
! 522: DO NOT COUNT ON IT.
1.1 tholo 523:
1.7 ! millert 524: Oct 30, 1988:
! 525: Fixed bug in call() that failed to recover storage.
1.1 tholo 526:
1.7 ! millert 527: A warning is now generated if there are more arguments
! 528: in the call than in the definition (in lieu of fixing
! 529: another storage leak).
1.2 millert 530:
1.7 ! millert 531: Oct 20, 1988:
! 532: Fixed %c: if expr is numeric, use numeric value;
! 533: otherwise print 1st char of string value. still
! 534: doesn't work if the value is 0 -- won't print \0.
1.2 millert 535:
1.7 ! millert 536: Added a few more checks for running out of malloc.
1.2 millert 537:
1.7 ! millert 538: Oct 12, 1988:
! 539: Fixed bug in call() that freed local arrays twice.
1.5 kstailey 540:
1.7 ! millert 541: Fixed to handle deletion of non-existent array right;
! 542: complains about attempt to delete non-array element.
1.6 kstailey 543:
1.7 ! millert 544: Sep 30, 1988:
! 545: Now guarantees to evaluate all arguments of built-in
! 546: functions, as in C; the appearance is that arguments
! 547: are evaluated before the function is called. Places
! 548: affected are sub (gsub was ok), substr, printf, and
! 549: all the built-in arithmetic functions in bltin().
! 550: A warning is generated if a bltin() is called with
! 551: the wrong number of arguments.
1.6 kstailey 552:
1.7 ! millert 553: This requires changing makeprof on p167 of the book.
1.6 kstailey 554:
1.7 ! millert 555: Aug 23, 1988:
! 556: setting FILENAME in BEGIN caused core dump, apparently
! 557: because it was freeing space not allocated by malloc.
1.6 kstailey 558:
1.7 ! millert 559: July 24, 1988:
! 560: fixed egregious error in toupper/tolower functions.
! 561: still subject to rescinding, however.
1.6 kstailey 562:
1.7 ! millert 563: July 2, 1988:
! 564: flush stdout before opening file or pipe
1.6 kstailey 565:
1.7 ! millert 566: July 2, 1988:
! 567: performance bug in b.c/cgoto(): not freeing some sets of states.
! 568: partial fix only right now, and the number of states increased
! 569: to make it less obvious.
1.6 kstailey 570:
1.7 ! millert 571: June 1, 1988:
! 572: check error status on close
1.6 kstailey 573:
1.7 ! millert 574: May 28, 1988:
! 575: srand returns seed value it's using.
! 576: see 1/18/90
1.6 kstailey 577:
1.7 ! millert 578: May 22, 1988:
! 579: Removed limit on depth of function calls.
1.6 kstailey 580:
1.7 ! millert 581: May 10, 1988:
! 582: Fixed lib.c to permit _ in commandline variable names.
1.6 kstailey 583:
1.7 ! millert 584: Mar 25, 1988:
! 585: main.c fixed to recognize -- as terminator of command-
! 586: line options. Illegal options flagged.
! 587: Error reporting slightly cleaned up.
1.6 kstailey 588:
1.7 ! millert 589: Dec 2, 1987:
! 590: Newer C compilers apply a strict scope rule to extern
! 591: declarations within functions. Two extern declarations in
! 592: lib.c and tran.c have been moved to obviate this problem.
1.6 kstailey 593:
1.7 ! millert 594: Oct xx, 1987:
! 595: Reluctantly added toupper and tolower functions.
! 596: Subject to rescinding without notice.
1.6 kstailey 597:
1.7 ! millert 598: Sep 17, 1987:
! 599: Error-message printer had printf(s) instead of
! 600: printf("%s",s); got core dumps when the message
! 601: included a %.
1.6 kstailey 602:
1.7 ! millert 603: Sep 12, 1987:
! 604: Very long printf strings caused core dump;
! 605: fixed aprintf, asprintf, format to catch them.
! 606: Can still get a core dump in printf itself.
1.6 kstailey 607:
608: