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