|
|
1.1 root 1: Sep 12, 1987:
2: Very long printf strings caused core dump;
3: fixed aprintf, asprintf, format to catch them.
4: Can still get a core dump in printf itself.
5:
6: Sep 17, 1987:
7: Error-message printer had printf(s) instead of
8: printf("%s",s); got core dumps when the message
9: included a %.
10:
11: Oct xx, 1987:
12: Reluctantly added toupper and tolower functions.
13: Subject to rescinding without notice.
14:
15: Dec 2, 1987:
16: Newer C compilers apply a strict scope rule to extern
17: declarations within functions. Two extern declarations in
18: lib.c and tran.c have been moved to obviate this problem.
19:
20: Mar 25, 1988:
21: main.c fixed to recognize -- as terminator of command-
22: line options. Illegal options flagged.
23: Error reporting slightly cleaned up.
24:
25: May 10, 1988:
26: Fixed lib.c to permit _ in commandline variable names.
27:
28: May 22, 1988:
29: Removed limit on depth of function calls.
30:
31: May 28, 1988:
32: srand returns seed value it's using.
33: see 1/18/90
34:
35: June 1, 1988:
36: check error status on close
37:
38: July 2, 1988:
39: performance bug in b.c/cgoto(): not freeing some sets of states.
40: partial fix only right now, and the number of states increased
41: to make it less obvious.
42:
43: July 2, 1988:
44: flush stdout before opening file or pipe
45:
46: July 24, 1988:
47: fixed egregious error in toupper/tolower functions.
48: still subject to rescinding, however.
49:
50: Aug 23, 1988:
51: setting FILENAME in BEGIN caused core dump, apparently
52: because it was freeing space not allocated by malloc.
53:
54: Sep 30, 1988:
55: Now guarantees to evaluate all arguments of built-in
56: functions, as in C; the appearance is that arguments
57: are evaluated before the function is called. Places
58: affected are sub (gsub was ok), substr, printf, and
59: all the built-in arithmetic functions in bltin().
60: A warning is generated if a bltin() is called with
61: the wrong number of arguments.
62:
63: This requires changing makeprof on p167 of the book.
64:
65: Oct 12, 1988:
66: Fixed bug in call() that freed local arrays twice.
67:
68: Fixed to handle deletion of non-existent array right;
69: complains about attempt to delete non-array element.
70:
71: Oct 20, 1988:
72: Fixed %c: if expr is numeric, use numeric value;
73: otherwise print 1st char of string value.
74:
75: Added a few more checks for running out of malloc.
76:
77: Oct 30, 1988:
78: Fixed bug in call() that failed to recover storage.
79:
80: A warning is now generated if there are more arguments
81: in the call than in the definition (in lieu of fixing
82: another storage leak).
83:
84: Nov 27, 1988:
85: With fear and trembling, modified the grammar to permit
86: multiple pattern-action statements on one line without
87: an explicit separator. By definition, this capitulation
88: to the ghost of ancient implementations remains undefined
89: and thus subject to change without notice or apology.
90: DO NOT COUNT ON IT.
91:
92: Dec 7, 1988:
93: Added a bit of code to error printing to avoid printing nulls.
94: (Not clear that it actually would.)
95:
96: Dec 17, 1988:
97: Catches some more commandline errors in main.
98: Removed redundant decl of modf in run.c (confuses some compilers).
99: Warning: there's no single declaration of malloc, etc., in awk.h
100: that seems to satisfy all compilers.
101:
102: Jan 9, 1989:
103: Fixed bug that caused tempcell list to contain a duplicate.
104: The fix is kludgy.
105:
106: Apr 9, 1989:
107: Changed grammar to prohibit constants as 3rd arg of sub and gsub;
108: prevents class of overwriting-a-constant errors. (Last one?)
109: This invalidates the "banana" example on page 43 of the book.
110:
111: Added \a ("alert"), \v (vertical tab), \xhhh (hexadecimal),
112: as in ANSI, for strings. Rescinded the sloppiness that permitted
113: non-octal digits in \ooo. Warning: not all compilers and libraries
114: will be able to deal with \x correctly.
115:
116: Apr 26, 1989:
117: Debugging output now includes a version date,
118: if one compiles it into the source each time.
119:
120: Apr 27, 1989:
121: Line number now accumulated correctly for comment lines.
122:
123: Jun 4, 1989:
124: ENVIRON array contains environment: if shell variable V=thing,
125: ENVIRON["V"] is "thing"
126:
127: multiple -f arguments permitted. error reporting is naive.
128: (they were permitted before, but only the last was used.)
129:
130: fixed a really stupid botch in the debugging macro dprintf
131:
132: fixed order of evaluation of commandline assignments to match
133: what the book claims: an argument of the form x=e is evaluated
134: at the time it would have been opened if it were a filename (p 63).
135: this invalidates the suggested answer to ex 4-1 (p 195).
136:
137: removed some code that permitted -F (space) fieldseparator,
138: since it didn't quite work right anyway. (restored aug 2)
139:
140: Jun 14, 1989:
141: added some missing ansi printf conversion letters: %i %X %E %G.
142: no sensible meaning for h or L, so they may not do what one expects.
143:
144: made %* conversions work.
145:
146: changed x^y so that if n is a positive integer, it's done
147: by explicit multiplication, thus achieving maximum accuracy.
148: (this should be done by pow() but it seems not to be locally.)
149: done to x ^= y as well.
150:
151: Jun 23, 1989:
152: add newline to usage message.
153:
154: Jul 10, 1989:
155: fixed ref-thru-zero bug in environment code in tran.c
156:
157: Jul 30, 1989:
158: added -v x=1 y=2 ... for immediate commandline variable assignment;
159: done before the BEGIN block for sure. they have to precede the
160: program if the program is on the commandline.
161: Modified Aug 2 to require a separate -v for each assignment.
162:
163: Aug 2, 1989:
164: restored -F (space) separator
165:
166: Aug 11, 1989:
167: fixed bug: commandline variable assignment has to look like
168: var=something. (consider the man page for =, in file =.1)
169:
170: changed number of arguments to functions to static arrays
171: to avoid repeated malloc calls.
172:
173: Aug 24, 1989:
174: removed redundant relational tests against nullnode if parse
175: tree already had a relational at that point.
176:
177: Oct 11, 1989:
178: FILENAME is now defined in the BEGIN block -- too many old
179: programs broke.
180:
181: "-" means stdin in getline as well as on the commandline.
182:
183: added a bunch of casts to the code to tell the truth about
184: char * vs. unsigned char *, a right royal pain. added a
185: setlocale call to the front of main, though probably no one
186: has it usefully implemented yet.
187:
188: Oct 18, 1989:
189: another try to get the max number of open files set with
190: relatively machine-independent code.
191:
192: small fix to input() in case of multiple reads after EOF.
193:
194: Jan 5, 1990:
195: fix potential problem in tran.c -- something was freed,
196: then used in freesymtab.
197:
198: Jan 18, 1990:
199: srand now returns previous seed value (0 to start).
200:
201: Feb 9, 1990:
202: fixed null pointer dereference bug in main.c: -F[nothing]. sigh.
203:
204: restored srand behavior: it returns the current seed.
205:
206: May 6, 1990:
207: AVA fixed the grammar so that ! is uniformly of the same precedence as
208: unary + and -. This renders illegal some constructs like !x=y, which
209: now has to be parenthesized as !(x=y), and makes others work properly:
210: !x+y is (!x)+y, and x!y is x !y, not two pattern-action statements.
211: (These problems were pointed out by Bob Lenk of Posix.)
212:
213: Added \x to regular expressions (already in strings).
214: Limited octal to octal digits; \8 and \9 are not octal.
215: Centralized the code for parsing escapes in regular expressions.
216: Added a bunch of tests to T.re and T.sub to verify some of this.
217:
218: Jun 26, 1990:
219: changed struct rrow (awk.h) to use long instead of int for lval,
220: since cfoll() stores a pointer in it. now works better when int's
221: are smaller than pointers!
222:
223: Aug 24, 1990:
224: changed NCHARS to 256 to handle 8-bit characters in strings
225: presented to match(), etc.
226:
227: Oct 8, 1990:
228: fixed horrible bug: types and values were not preserved in
229: some kinds of self-assignment. (in assign().)
230:
231: Oct 14, 1990:
232: fixed the bug on p. 198 in which it couldn't deduce that an
233: argument was an array in some contexts. replaced the error
234: message in intest() by code that damn well makes it an array.
235:
236: Oct 29, 1990:
237: fixed sleazy buggy code in lib.c that looked (incorrectly) for
238: too long input lines.
239:
240: Nov 2, 1990:
241: fixed sleazy test for integrality in getsval; use modf.
242:
243: Jan 11, 1991:
244: failed to set numeric state on $0 in cmd|getline context in run.c.
245:
246: Jan 28, 1991:
247: awk -f - reads the program from stdin.
248:
249: Feb 10, 1991:
250: check error status on all writes, to avoid banging on full disks.
251:
252: May 6, 1991:
253: fixed silly bug in hex parsing in hexstr().
254: removed an apparently unnecessary test in isnumber().
255: warn about weird printf conversions.
256: fixed unchecked array overwrite in relex().
257:
258: changed for (i in array) to access elements in sorted order.
259: then unchanged it -- it really does run slower in too many cases.
260: left the code in place, commented out.
261:
262: May 13, 1991:
263: removed extra arg on gettemp, tempfree. minor error message rewording.
264:
265: Jun 2, 1991:
266: better defense against very long printf strings.
267: made break and continue illegal outside of loops.
268:
269: Jun 30, 1991:
270: better test for detecting too-long output record.
271:
272: Jul 21, 1991:
273: fixed so that in self-assignment like $1=$1, side effects
274: like recomputing $0 take place. (this is getting subtle.)
275:
276: Jul 27, 1991:
277: allow newline after ; in for statements.
278:
279: Aug 18, 1991:
280: enforce variable name syntax for commandline variables: has to
281: start with letter or _.
282:
283: Sep 24, 1991:
284: increased buffer in gsub. a very crude fix to a general problem.
285: and again on Sep 26.
286:
287: Nov 12, 1991:
288: cranked up some fixed-size arrays in b.c, and added a test for
289: overflow in penter. thanks to mark larsen.
290:
291: Nov 19, 1991:
292: use RAND_MAX instead of literal in builtin().
293:
294: Nov 30, 1991:
295: fixed storage leak in freefa, failing to recover [N]CCL.
296: thanks to Bill Jones ([email protected])
297:
298: Dec 2, 1991:
299: die-casting time: converted to ansi C, installed that.
300:
301: Feb 20, 1992:
302: recompile after abortive changes; should be unchanged.
303:
304: Apr 12, 1992:
305: added explicit check for /dev/std(in,out,err) in redirection.
306: unlike gawk, no /dev/fd/n yet.
307:
308: added fflush(file/pipe) builtin. hard to test satisfactorily.
309: not posix.
310:
311: Apr 24, 1992:
312: remove redundant close of stdin when using -f -.
313:
314: got rid of core dump with -d; awk -d just prints date.
315:
316: May 31, 1992:
317: added -mr N and -mf N options: more record and fields.
318: these really ought to adjust automatically.
319:
320: cleaned up some error messages; "out of space" now means
321: malloc returned NULL in all cases.
322:
323: changed rehash so that if it runs out, it just returns;
324: things will continue to run slow, but maybe a bit longer.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.