📄 awk.shar
字号:
-Jun 2, 1999:- added function stdinit() to run to initialize files[] array,- in case stdin, etc., are not constants; some compilers care.--May 10, 1999:- replaced the ERROR ... FATAL, etc., macros with functions- based on vprintf, to avoid problems caused by overrunning- fixed-size errbuf array. thanks to ralph corderoy for the- impetus, and for pointing out a string termination bug in- qstring as well.--Apr 21, 1999:- fixed bug that caused occasional core dumps with commandline- variable with value ending in \. (thanks to nelson beebe for- the test case.)--Apr 16, 1999:- with code kindly provided by Bruce Lilly, awk now parses - /=/ and similar constructs more sensibly in more places.- Bruce also provided some helpful test cases.--Apr 5, 1999:- changed true/false to True/False in run.c to make it- easier to compile with C++. Added some casts on malloc- and realloc to be honest about casts; ditto. changed- ltype int to long in struct rrow to reduce some 64-bit- complaints; other changes scattered throughout for the- same purpose. thanks to Nelson Beebe for these portability- improvements.-- removed some horrible pointer-int casting in b.c and elsewhere- by adding ptoi and itonp to localize the casts, which are- all benign. fixed one incipient bug that showed up on sgi- in 64-bit mode.-- reset lineno for new source file; include filename in error- message. also fixed line number error in continuation lines.- (thanks to Nelson Beebe for both of these.)--Mar 24, 1999:- Nelson Beebe notes that irix 5.3 yacc dies with a bogus- error; use a newer version or switch to bison, since sgi- is unlikely to fix it.--Mar 5, 1999:- changed isnumber to is_number to avoid the problem caused by- versions of ctype.h that include the name isnumber.-- distribution now includes a script for building on a Mac,- thanks to Dan Allen.--Feb 20, 1999:- fixed memory leaks in run.c (call) and tran.c (setfval).- thanks to Stephen Nutt for finding these and providing the fixes.--Jan 13, 1999:- replaced srand argument by (unsigned int) in run.c;- avoids problem on Mac and potentially on Unix & Windows.- thanks to Dan Allen.-- added a few (int) casts to silence useless compiler warnings.- e.g., errorflag= in run.c jump().-- added proctab.c to the bundle outout; one less thing- to have to compile out of the box.-- added calls to _popen and _pclose to the win95 stub for- pipes (thanks to Steve Adams for this helpful suggestion).- seems to work, though properties are not well understood- by me, and it appears that under some circumstances the- pipe output is truncated. Be careful.--Oct 19, 1998:- fixed a couple of bugs in getrec: could fail to update $0- after a getline var; because inputFS wasn't initialized, - could split $0 on every character, a misleading diversion.-- fixed caching bug in makedfa: LRU was actually removing- least often used.-- thanks to ross ridge for finding these, and for providing- great bug reports.--May 12, 1998:- fixed potential bug in readrec: might fail to update record- pointer after growing. thanks to dan levy for spotting this- and suggesting the fix.--Mar 12, 1998:- added -V to print version number and die.--Feb 11, 1998:- subtle silent bug in lex.c: if the program ended with a number- longer than 1 digit, part of the input would be pushed back and- parsed again because token buffer wasn't terminated right.- example: awk 'length($0) > 10'. blush. at least i found it- myself.--Aug 31, 1997:- s/adelete/awkdelete/: SGI uses this in malloc.h.- thanks to nelson beebe for pointing this one out.--Aug 21, 1997:- fixed some bugs in sub and gsub when replacement includes \\.- this is a dark, horrible corner, but at least now i believe that- the behavior is the same as gawk and the intended posix standard.- thanks to arnold robbins for advice here.--Aug 9, 1997:- somewhat regretfully, replaced the ancient lex-based lexical- analyzer with one written in C. it's longer, generates less code,- and more portable; the old one depended too much on mysterious- properties of lex that were not preserved in other environments.- in theory these recognize the same language.-- now using strtod to test whether a string is a number, instead of- the convoluted original function. should be more portable and- reliable if strtod is implemented right.-- removed now-pointless optimization in makefile that tries to avoid- recompilation when awkgram.y is changed but symbols are not.-- removed most fixed-size arrays, though a handful remain, some- of which are unchecked. you have been warned.--Aug 4, 1997:- with some trepidation, replaced the ancient code that managed- fields and $0 in fixed-size arrays with arrays that grow on- demand. there is still some tension between trying to make this- run fast and making it clean; not sure it's right yet.-- the ill-conceived -mr and -mf arguments are now useful only- for debugging. previous dynamic string code removed.-- numerous other minor cleanups along the way.--Jul 30, 1997:- using code provided by dan levy (to whom profuse thanks), replaced- fixed-size arrays and awkward kludges by a fairly uniform mechanism- to grow arrays as needed for printf, sub, gsub, etc.--Jul 23, 1997:- falling off the end of a function returns "" and 0, not 0.- thanks to arnold robbins.--Jun 17, 1997:- replaced several fixed-size arrays by dynamically-created ones- in run.c; added overflow tests to some previously unchecked cases.- getline, toupper, tolower.-- getline code is still broken in that recursive calls may wind- up using the same space. [fixed later]-- increased RECSIZE to 8192 to push problems further over the horizon.-- added \r to \n as input line separator for programs, not data.- damn CRLFs.-- modified format() to permit explicit printf("%c", 0) to include- a null byte in output. thanks to ken stailey for the fix.-- added a "-safe" argument that disables file output (print >,- print >>), process creation (cmd|getline, print |, system), and- access to the environment (ENVIRON). this is a first approximation- to a "safe" version of awk, but don't rely on it too much. thanks- to joan feigenbaum and matt blaze for the inspiration long ago.--Jul 8, 1996:- fixed long-standing bug in sub, gsub(/a/, "\\\\&"); thanks to- ralph corderoy.--Jun 29, 1996:- fixed awful bug in new field splitting; didn't get all the places- where input was done.--Jun 28, 1996:- changed field-splitting to conform to posix definition: fields are- split using the value of FS at the time of input; it used to be- the value when the field or NF was first referred to, a much less- predictable definition. thanks to arnold robbins for encouragement- to do the right thing.--May 28, 1996:- fixed appalling but apparently unimportant bug in parsing octal- numbers in reg exprs.-- explicit hex in reg exprs now limited to 2 chars: \xa, \xaa.--May 27, 1996:- cleaned up some declarations so gcc -Wall is now almost silent.-- makefile now includes backup copies of ytab.c and lexyy.c in case- one makes before looking; it also avoids recreating lexyy.c unless- really needed.-- s/aprintf/awkprint, s/asprintf/awksprintf/ to avoid some name clashes- with unwisely-written header files.-- thanks to jeffrey friedl for several of these.--May 26, 1996:- an attempt to rationalize the (unsigned) char issue. almost all- instances of unsigned char have been removed; the handful of places- in b.c where chars are used as table indices have been hand-crafted.- added some latin-1 tests to the regression, but i'm not confident;- none of my compilers seem to care much. thanks to nelson beebe for- pointing out some others that do care.--May 2, 1996:- removed all register declarations.-- enhanced split(), as in gawk, etc: split(s, a, "") splits s into- a[1]...a[length(s)] with each character a single element.-- made the same changes for field-splitting if FS is "".-- added nextfile, as in gawk: causes immediate advance to next- input file. (thanks to arnold robbins for inspiration and code).-- small fixes to regexpr code: can now handle []], [[], and- variants; [] is now a syntax error, rather than matching - everything; [z-a] is now empty, not z. far from complete- or correct, however. (thanks to jeffrey friedl for pointing out- some awful behaviors.)--Apr 29, 1996:- replaced uchar by uschar everywhere; apparently some compilers- usurp this name and this causes conflicts.-- fixed call to time in run.c (bltin); arg is time_t *.-- replaced horrible pointer/long punning in b.c by a legitimate- union. should be safer on 64-bit machines and cleaner everywhere.- (thanks to nelson beebe for pointing out some of these problems.)-- replaced nested comments by #if 0...#endif in run.c, lib.c.-- removed getsval, setsval, execute macros from run.c and lib.c.- machines are 100x faster than they were when these macros were- first used.-- revised filenames: awk.g.y => awkgram.y, awk.lx.l => awklex.l,- y.tab.[ch] => ytab.[ch], lex.yy.c => lexyy.c, all in the aid of- portability to nameless systems.-- "make bundle" now includes yacc and lex output files for recipients- who don't have yacc or lex.--Aug 15, 1995:- initialized Cells in setsymtab more carefully; some fields- were not set. (thanks to purify, all of whose complaints i- think i now understand.)-- fixed at least one error in gsub that looked at -1-th element- of an array when substituting for a null match (e.g., $).-- delete arrayname is now legal; it clears the elements but leaves- the array, which may not be the right behavior.-- modified makefile: my current make can't cope with the test used- to avoid unnecessary yacc invocations.--Jul 17, 1995:- added dynamically growing strings to awk.lx.l and b.c- to permit regular expressions to be much bigger.- the state arrays can still overflow.--Aug 24, 1994:- detect duplicate arguments in function definitions (mdm).--May 11, 1994:- trivial fix to printf to limit string size in sub().--Apr 22, 1994:- fixed yet another subtle self-assignment problem:- $1 = $2; $1 = $1 clobbered $1.-- Regression tests now use private echo, to avoid quoting problems.--Feb 2, 1994:- changed error() to print line number as %d, not %g.--Jul 23, 1993:- cosmetic changes: increased sizes of some arrays,- reworded some error messages.-- added CONVFMT as in posix (just replaced OFMT in getsval)-- FILENAME is now "" until the first thing that causes a file- to be opened.--Nov 28, 1992:- deleted yyunput and yyoutput from proto.h;- different versions of lex give these different declarations.--May 31, 1992:- added -mr N and -mf N options: more record and fields.- these really ought to adjust automatically.-- cleaned up some error messages; "out of space" now means- malloc returned NULL in all cases.-- changed rehash so that if it runs out, it just returns;- things will continue to run slow, but maybe a bit longer.--Apr 24, 1992:- remove redundant close of stdin when using -f -.-- got rid of core dump with -d; awk -d just prints date.--Apr 12, 1992:- added explicit check for /dev/std(in,out,err) in redirection.- unlike gawk, no /dev/fd/n yet.-- added (file/pipe) builtin. hard to test satisfactorily.- not posix.--Feb 20, 1992:- recompile after abortive changes; should be unchanged.--Dec 2, 1991:- die-casting time: converted to ansi C, installed that.--Nov 30, 1991:- fixed storage leak in freefa, failing to recover [N]CCL.- thanks to Bill Jones (jones@cs.usask.ca)--Nov 19, 1991:- use RAND_MAX instead of literal in builtin().--Nov 12, 1991:- cranked up some fixed-size arrays in b.c, and added a test for- overflow in penter. thanks to mark larsen.--Sep 24, 1991:- increased buffer in gsub. a very crude fix to a general problem.- and again on Sep 26.--Aug 18, 1991:- enforce variable name syntax for commandline variables: has to- start with letter or _.--Jul 27, 1991:- allow newline after ; in for statements.--Jul 21, 1991:- fixed so that in self-assignment like $1=$1, side effects- like recomputing $0 take place. (this is getting subtle.)--Jun 30, 1991:- better test for detecting too-long output record.--Jun 2, 1991:- better defense against very long printf strings.- made break and continue illegal outside of loops.--May 13, 1991:- removed extra arg on gettemp, tempfree. minor error message rewording.--May 6, 1991:- fixed silly bug in hex parsing in hexstr().- removed an apparently unnecessary test in isnumber().- warn about weird printf conversions.- fixed unchecked array overwrite in relex().-- changed for (i in array) to access elements in sorted order.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -