FIXES revision 1.1 1 1.1 christos /****************************************************************
2 1.1 christos Copyright (C) Lucent Technologies 1997
3 1.1 christos All Rights Reserved
4 1.1 christos
5 1.1 christos Permission to use, copy, modify, and distribute this software and
6 1.1 christos its documentation for any purpose and without fee is hereby
7 1.1 christos granted, provided that the above copyright notice appear in all
8 1.1 christos copies and that both that the copyright notice and this
9 1.1 christos permission notice and warranty disclaimer appear in supporting
10 1.1 christos documentation, and that the name Lucent Technologies or any of
11 1.1 christos its entities not be used in advertising or publicity pertaining
12 1.1 christos to distribution of the software without specific, written prior
13 1.1 christos permission.
14 1.1 christos
15 1.1 christos LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 1.1 christos INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
17 1.1 christos IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
18 1.1 christos SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 1.1 christos WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
20 1.1 christos IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
21 1.1 christos ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
22 1.1 christos THIS SOFTWARE.
23 1.1 christos ****************************************************************/
24 1.1 christos
25 1.1 christos This file lists all bug fixes, changes, etc., made since the AWK book
26 1.1 christos was sent to the printers in August, 1987.
27 1.1 christos
28 1.1 christos May 23, 2010:
29 1.1 christos fixed long-standing overflow bug in run.c; many thanks to
30 1.1 christos nelson beebe for spotting it and providing the fix.
31 1.1 christos
32 1.1 christos fixed bug that didn't parse -vd=1 properly; thanks to santiago
33 1.1 christos vila for spotting it.
34 1.1 christos
35 1.1 christos Feb 8, 2010:
36 1.1 christos i give up. replaced isblank with isspace in b.c; there are
37 1.1 christos no consistent header files.
38 1.1 christos
39 1.1 christos Nov 26, 2009:
40 1.1 christos fixed a long-standing issue with when FS takes effect. a
41 1.1 christos change to FS is now noticed immediately for subsequent splits.
42 1.1 christos
43 1.1 christos changed the name getline() to awkgetline() to avoid yet another
44 1.1 christos name conflict somewhere.
45 1.1 christos
46 1.1 christos Feb 11, 2009:
47 1.1 christos temporarily for now defined HAS_ISBLANK, since that seems to
48 1.1 christos be the best way through the thicket. isblank arrived in C99,
49 1.1 christos but seems to be arriving at different systems at different
50 1.1 christos times.
51 1.1 christos
52 1.1 christos Oct 8, 2008:
53 1.1 christos fixed typo in b.c that set tmpvec wrongly. no one had ever
54 1.1 christos run into the problem, apparently. thanks to alistair crooks.
55 1.1 christos
56 1.1 christos Oct 23, 2007:
57 1.1 christos minor fix in lib.c: increase inputFS to 100, change malloc
58 1.1 christos for fields to n+1.
59 1.1 christos
60 1.1 christos fixed memory fault caused by out of order test in setsval.
61 1.1 christos
62 1.1 christos thanks to david o'brien, freebsd, for both fixes.
63 1.1 christos
64 1.1 christos May 1, 2007:
65 1.1 christos fiddle in makefile to fix for BSD make; thanks to igor sobrado.
66 1.1 christos
67 1.1 christos Mar 31, 2007:
68 1.1 christos fixed some null pointer refs calling adjbuf.
69 1.1 christos
70 1.1 christos Feb 21, 2007:
71 1.1 christos fixed a bug in matching the null RE in sub and gsub. thanks to al aho
72 1.1 christos who actually did the fix (in b.c), and to wolfgang seeberg for finding
73 1.1 christos it and providing a very compact test case.
74 1.1 christos
75 1.1 christos fixed quotation in b.c; thanks to Hal Pratt and the Princeton Dante
76 1.1 christos Project.
77 1.1 christos
78 1.1 christos removed some no-effect asserts in run.c.
79 1.1 christos
80 1.1 christos fiddled maketab.c to not complain about bison-generated values.
81 1.1 christos
82 1.1 christos removed the obsolete -V argument; fixed --version to print the
83 1.1 christos version and exit.
84 1.1 christos
85 1.1 christos fixed wording and an outright error in the usage message; thanks to igor
86 1.1 christos sobrado and jason mcintyre.
87 1.1 christos
88 1.1 christos fixed a bug in -d that caused core dump if no program followed.
89 1.1 christos
90 1.1 christos Jan 1, 2007:
91 1.1 christos dropped mac.code from makefile; there are few non-MacOSX
92 1.1 christos mac's these days.
93 1.1 christos
94 1.1 christos Jan 17, 2006:
95 1.1 christos system() not flagged as unsafe in the unadvertised -safe option.
96 1.1 christos found it while enhancing tests before shipping the ;login: article.
97 1.1 christos practice what you preach.
98 1.1 christos
99 1.1 christos removed the 9-years-obsolete -mr and -mf flags.
100 1.1 christos
101 1.1 christos added -version and --version options.
102 1.1 christos
103 1.1 christos core dump on linux with BEGIN {nextfile}, now fixed.
104 1.1 christos
105 1.1 christos removed some #ifdef's in run.c and lex.c that appear to no
106 1.1 christos longer be necessary.
107 1.1 christos
108 1.1 christos Apr 24, 2005:
109 1.1 christos modified lib.c so that values of $0 et al are preserved in the END
110 1.1 christos block, apparently as required by posix. thanks to havard eidnes
111 1.1 christos for the report and code.
112 1.1 christos
113 1.1 christos Jan 14, 2005:
114 1.1 christos fixed infinite loop in parsing, originally found by brian tsang.
115 1.1 christos thanks to arnold robbins for a suggestion that started me
116 1.1 christos rethinking it.
117 1.1 christos
118 1.1 christos Dec 31, 2004:
119 1.1 christos prevent overflow of -f array in main, head off potential error in
120 1.1 christos call of SYNTAX(), test malloc return in lib.c, all with thanks to
121 1.1 christos todd miller.
122 1.1 christos
123 1.1 christos Dec 22, 2004:
124 1.1 christos cranked up size of NCHARS; coverity thinks it can be overrun with
125 1.1 christos smaller size, and i think that's right. added some assertions to b.c
126 1.1 christos to catch places where it might overrun. the RE code is still fragile.
127 1.1 christos
128 1.1 christos Dec 5, 2004:
129 1.1 christos fixed a couple of overflow problems with ridiculous field numbers:
130 1.1 christos e.g., print $(2^32-1). thanks to ruslan ermilov, giorgos keramidas
131 1.1 christos and david o'brien at freebsd.org for patches. this really should
132 1.1 christos be re-done from scratch.
133 1.1 christos
134 1.1 christos Nov 21, 2004:
135 1.1 christos fixed another 25-year-old RE bug, in split. it's another failure
136 1.1 christos to (re-)initialize. thanks to steve fisher for spotting this and
137 1.1 christos providing a good test case.
138 1.1 christos
139 1.1 christos Nov 22, 2003:
140 1.1 christos fixed a bug in regular expressions that dates (so help me) from 1977;
141 1.1 christos it's been there from the beginning. an anchored longest match that
142 1.1 christos was longer than the number of states triggered a failure to initialize
143 1.1 christos the machine properly. many thanks to moinak ghosh for not only finding
144 1.1 christos this one but for providing a fix, in some of the most mysterious
145 1.1 christos code known to man.
146 1.1 christos
147 1.1 christos fixed a storage leak in call() that appears to have been there since
148 1.1 christos 1983 or so -- a function without an explicit return that assigns a
149 1.1 christos string to a parameter leaked a Cell. thanks to moinak ghosh for
150 1.1 christos spotting this very subtle one.
151 1.1 christos
152 1.1 christos Jul 31, 2003:
153 1.1 christos fixed, thanks to andrey chernov and ruslan ermilov, a bug in lex.c
154 1.1 christos that mis-handled the character 255 in input. (it was being compared
155 1.1 christos to EOF with a signed comparison.)
156 1.1 christos
157 1.1 christos Jul 29, 2003:
158 1.1 christos fixed (i think) the long-standing botch that included the beginning of
159 1.1 christos line state ^ for RE's in the set of valid characters; this led to a
160 1.1 christos variety of odd problems, including failure to properly match certain
161 1.1 christos regular expressions in non-US locales. thanks to ruslan for keeping
162 1.1 christos at this one.
163 1.1 christos
164 1.1 christos Jul 28, 2003:
165 1.1 christos n-th try at getting internationalization right, with thanks to volker
166 1.1 christos kiefel, arnold robbins and ruslan ermilov for advice, though they
167 1.1 christos should not be blamed for the outcome. according to posix, "." is the
168 1.1 christos radix character in programs and command line arguments regardless of
169 1.1 christos the locale; otherwise, the locale should prevail for input and output
170 1.1 christos of numbers. so it's intended to work that way.
171 1.1 christos
172 1.1 christos i have rescinded the attempt to use strcoll in expanding shorthands in
173 1.1 christos regular expressions (cclenter). its properties are much too
174 1.1 christos surprising; for example [a-c] matches aAbBc in locale en_US but abBcC
175 1.1 christos in locale fr_CA. i can see how this might arise by implementation
176 1.1 christos but i cannot explain it to a human user. (this behavior can be seen
177 1.1 christos in gawk as well; we're leaning on the same library.)
178 1.1 christos
179 1.1 christos the issue appears to be that strcoll is meant for sorting, where
180 1.1 christos merging upper and lower case may make sense (though note that unix
181 1.1 christos sort does not do this by default either). it is not appropriate
182 1.1 christos for regular expressions, where the goal is to match specific
183 1.1 christos patterns of characters. in any case, the notations [:lower:], etc.,
184 1.1 christos are available in awk, and they are more likely to work correctly in
185 1.1 christos most locales.
186 1.1 christos
187 1.1 christos a moratorium is hereby declared on internationalization changes.
188 1.1 christos i apologize to friends and colleagues in other parts of the world.
189 1.1 christos i would truly like to get this "right", but i don't know what
190 1.1 christos that is, and i do not want to keep making changes until it's clear.
191 1.1 christos
192 1.1 christos Jul 4, 2003:
193 1.1 christos fixed bug that permitted non-terminated RE, as in "awk /x".
194 1.1 christos
195 1.1 christos Jun 1, 2003:
196 1.1 christos subtle change to split: if source is empty, number of elems
197 1.1 christos is always 0 and the array is not set.
198 1.1 christos
199 1.1 christos Mar 21, 2003:
200 1.1 christos added some parens to isblank, in another attempt to make things
201 1.1 christos internationally portable.
202 1.1 christos
203 1.1 christos Mar 14, 2003:
204 1.1 christos the internationalization changes, somewhat modified, are now
205 1.1 christos reinstated. in theory awk will now do character comparisons
206 1.1 christos and case conversions in national language, but "." will always
207 1.1 christos be the decimal point separator on input and output regardless
208 1.1 christos of national language. isblank(){} has an #ifndef.
209 1.1 christos
210 1.1 christos this no longer compiles on windows: LC_MESSAGES isn't defined
211 1.1 christos in vc6++.
212 1.1 christos
213 1.1 christos fixed subtle behavior in field and record splitting: if FS is
214 1.1 christos a single character and RS is not empty, \n is NOT a separator.
215 1.1 christos this tortuous reading is found in the awk book; behavior now
216 1.1 christos matches gawk and mawk.
217 1.1 christos
218 1.1 christos Dec 13, 2002:
219 1.1 christos for the moment, the internationalization changes of nov 29 are
220 1.1 christos rolled back -- programs like x = 1.2 don't work in some locales,
221 1.1 christos because the parser is expecting x = 1,2. until i understand this
222 1.1 christos better, this will have to wait.
223 1.1 christos
224 1.1 christos Nov 29, 2002:
225 1.1 christos modified b.c (with tiny changes in main and run) to support
226 1.1 christos locales, using strcoll and iswhatever tests for posix character
227 1.1 christos classes. thanks to ruslan ermilov (ru (at) freebsd.org) for code.
228 1.1 christos the function isblank doesn't seem to have propagated to any
229 1.1 christos header file near me, so it's there explicitly. not properly
230 1.1 christos tested on non-ascii character sets by me.
231 1.1 christos
232 1.1 christos Jun 28, 2002:
233 1.1 christos modified run/format() and tran/getsval() to do a slightly better
234 1.1 christos job on using OFMT for output from print and CONVFMT for other
235 1.1 christos number->string conversions, as promised by posix and done by
236 1.1 christos gawk and mawk. there are still places where it doesn't work
237 1.1 christos right if CONVFMT is changed; by then the STR attribute of the
238 1.1 christos variable has been irrevocably set. thanks to arnold robbins for
239 1.1 christos code and examples.
240 1.1 christos
241 1.1 christos fixed subtle bug in format that could get core dump. thanks to
242 1.1 christos Jaromir Dolecek <jdolecek@NetBSD.org> for finding and fixing.
243 1.1 christos minor cleanup in run.c / format() at the same time.
244 1.1 christos
245 1.1 christos added some tests for null pointers to debugging printf's, which
246 1.1 christos were never intended for external consumption. thanks to dave
247 1.1 christos kerns (dkerns (at) lucent.com) for pointing this out.
248 1.1 christos
249 1.1 christos GNU compatibility: an empty regexp matches anything (thanks to
250 1.1 christos dag-erling smorgrav, des (at) ofug.org). subject to reversion if
251 1.1 christos this does more harm than good.
252 1.1 christos
253 1.1 christos pervasive small changes to make things more const-correct, as
254 1.1 christos reported by gcc's -Wwrite-strings. as it says in the gcc manual,
255 1.1 christos this may be more nuisance than useful. provoked by a suggestion
256 1.1 christos and code from arnaud desitter, arnaud@nimbus.geog.ox.ac.uk
257 1.1 christos
258 1.1 christos minor documentation changes to note that this now compiles out
259 1.1 christos of the box on Mac OS X.
260 1.1 christos
261 1.1 christos Feb 10, 2002:
262 1.1 christos changed types in posix chars structure to quiet solaris cc.
263 1.1 christos
264 1.1 christos Jan 1, 2002:
265 1.1 christos fflush() or fflush("") flushes all files and pipes.
266 1.1 christos
267 1.1 christos length(arrayname) returns number of elements; thanks to
268 1.1 christos arnold robbins for suggestion.
269 1.1 christos
270 1.1 christos added a makefile.win to make it easier to build on windows.
271 1.1 christos based on dan allen's buildwin.bat.
272 1.1 christos
273 1.1 christos Nov 16, 2001:
274 1.1 christos added support for posix character class names like [:digit:],
275 1.1 christos which are not exactly shorter than [0-9] and perhaps no more
276 1.1 christos portable. thanks to dag-erling smorgrav for code.
277 1.1 christos
278 1.1 christos Feb 16, 2001:
279 1.1 christos removed -m option; no longer needed, and it was actually
280 1.1 christos broken (noted thanks to volker kiefel).
281 1.1 christos
282 1.1 christos Feb 10, 2001:
283 1.1 christos fixed an appalling bug in gettok: any sequence of digits, +,-, E, e,
284 1.1 christos and period was accepted as a valid number if it started with a period.
285 1.1 christos this would never have happened with the lex version.
286 1.1 christos
287 1.1 christos other 1-character botches, now fixed, include a bare $ and a
288 1.1 christos bare " at the end of the input.
289 1.1 christos
290 1.1 christos Feb 7, 2001:
291 1.1 christos more (const char *) casts in b.c and tran.c to silence warnings.
292 1.1 christos
293 1.1 christos Nov 15, 2000:
294 1.1 christos fixed a bug introduced in august 1997 that caused expressions
295 1.1 christos like $f[1] to be syntax errors. thanks to arnold robbins for
296 1.1 christos noticing this and providing a fix.
297 1.1 christos
298 1.1 christos Oct 30, 2000:
299 1.1 christos fixed some nextfile bugs: not handling all cases. thanks to
300 1.1 christos arnold robbins for pointing this out. new regressions added.
301 1.1 christos
302 1.1 christos close() is now a function. it returns whatever the library
303 1.1 christos fclose returns, and -1 for closing a file or pipe that wasn't
304 1.1 christos opened.
305 1.1 christos
306 1.1 christos Sep 24, 2000:
307 1.1 christos permit \n explicitly in character classes; won't work right
308 1.1 christos if comes in as "[\n]" but ok as /[\n]/, because of multiple
309 1.1 christos processing of \'s. thanks to arnold robbins.
310 1.1 christos
311 1.1 christos July 5, 2000:
312 1.1 christos minor fiddles in tran.c to keep compilers happy about uschar.
313 1.1 christos thanks to norman wilson.
314 1.1 christos
315 1.1 christos May 25, 2000:
316 1.1 christos yet another attempt at making 8-bit input work, with another
317 1.1 christos band-aid in b.c (member()), and some (uschar) casts to head
318 1.1 christos off potential errors in subscripts (like isdigit). also
319 1.1 christos changed HAT to NCHARS-2. thanks again to santiago vila.
320 1.1 christos
321 1.1 christos changed maketab.c to ignore apparently out of range definitions
322 1.1 christos instead of halting; new freeBSD generates one. thanks to
323 1.1 christos jon snader <jsnader (at) ix.netcom.com> for pointing out the problem.
324 1.1 christos
325 1.1 christos May 2, 2000:
326 1.1 christos fixed an 8-bit problem in b.c by making several char*'s into
327 1.1 christos unsigned char*'s. not clear i have them all yet. thanks to
328 1.1 christos Santiago Vila <sanvila (at) unex.es> for the bug report.
329 1.1 christos
330 1.1 christos Apr 21, 2000:
331 1.1 christos finally found and fixed a memory leak in function call; it's
332 1.1 christos been there since functions were added ~1983. thanks to
333 1.1 christos jon bentley for the test case that found it.
334 1.1 christos
335 1.1 christos added test in envinit to catch environment "variables" with
336 1.1 christos names beginning with '='; thanks to Berend Hasselman.
337 1.1 christos
338 1.1 christos Jul 28, 1999:
339 1.1 christos added test in defn() to catch function foo(foo), which
340 1.1 christos otherwise recurses until core dump. thanks to arnold
341 1.1 christos robbins for noticing this.
342 1.1 christos
343 1.1 christos Jun 20, 1999:
344 1.1 christos added *bp in gettok in lex.c; appears possible to exit function
345 1.1 christos without terminating the string. thanks to russ cox.
346 1.1 christos
347 1.1 christos Jun 2, 1999:
348 1.1 christos added function stdinit() to run to initialize files[] array,
349 1.1 christos in case stdin, etc., are not constants; some compilers care.
350 1.1 christos
351 1.1 christos May 10, 1999:
352 1.1 christos replaced the ERROR ... FATAL, etc., macros with functions
353 1.1 christos based on vprintf, to avoid problems caused by overrunning
354 1.1 christos fixed-size errbuf array. thanks to ralph corderoy for the
355 1.1 christos impetus, and for pointing out a string termination bug in
356 1.1 christos qstring as well.
357 1.1 christos
358 1.1 christos Apr 21, 1999:
359 1.1 christos fixed bug that caused occasional core dumps with commandline
360 1.1 christos variable with value ending in \. (thanks to nelson beebe for
361 1.1 christos the test case.)
362 1.1 christos
363 1.1 christos Apr 16, 1999:
364 1.1 christos with code kindly provided by Bruce Lilly, awk now parses
365 1.1 christos /=/ and similar constructs more sensibly in more places.
366 1.1 christos Bruce also provided some helpful test cases.
367 1.1 christos
368 1.1 christos Apr 5, 1999:
369 1.1 christos changed true/false to True/False in run.c to make it
370 1.1 christos easier to compile with C++. Added some casts on malloc
371 1.1 christos and realloc to be honest about casts; ditto. changed
372 1.1 christos ltype int to long in struct rrow to reduce some 64-bit
373 1.1 christos complaints; other changes scattered throughout for the
374 1.1 christos same purpose. thanks to Nelson Beebe for these portability
375 1.1 christos improvements.
376 1.1 christos
377 1.1 christos removed some horrible pointer-int casting in b.c and elsewhere
378 1.1 christos by adding ptoi and itonp to localize the casts, which are
379 1.1 christos all benign. fixed one incipient bug that showed up on sgi
380 1.1 christos in 64-bit mode.
381 1.1 christos
382 1.1 christos reset lineno for new source file; include filename in error
383 1.1 christos message. also fixed line number error in continuation lines.
384 1.1 christos (thanks to Nelson Beebe for both of these.)
385 1.1 christos
386 1.1 christos Mar 24, 1999:
387 1.1 christos Nelson Beebe notes that irix 5.3 yacc dies with a bogus
388 1.1 christos error; use a newer version or switch to bison, since sgi
389 1.1 christos is unlikely to fix it.
390 1.1 christos
391 1.1 christos Mar 5, 1999:
392 1.1 christos changed isnumber to is_number to avoid the problem caused by
393 1.1 christos versions of ctype.h that include the name isnumber.
394 1.1 christos
395 1.1 christos distribution now includes a script for building on a Mac,
396 1.1 christos thanks to Dan Allen.
397 1.1 christos
398 1.1 christos Feb 20, 1999:
399 1.1 christos fixed memory leaks in run.c (call) and tran.c (setfval).
400 1.1 christos thanks to Stephen Nutt for finding these and providing the fixes.
401 1.1 christos
402 1.1 christos Jan 13, 1999:
403 1.1 christos replaced srand argument by (unsigned int) in run.c;
404 1.1 christos avoids problem on Mac and potentially on Unix & Windows.
405 1.1 christos thanks to Dan Allen.
406 1.1 christos
407 1.1 christos added a few (int) casts to silence useless compiler warnings.
408 1.1 christos e.g., errorflag= in run.c jump().
409 1.1 christos
410 1.1 christos added proctab.c to the bundle outout; one less thing
411 1.1 christos to have to compile out of the box.
412 1.1 christos
413 1.1 christos added calls to _popen and _pclose to the win95 stub for
414 1.1 christos pipes (thanks to Steve Adams for this helpful suggestion).
415 1.1 christos seems to work, though properties are not well understood
416 1.1 christos by me, and it appears that under some circumstances the
417 1.1 christos pipe output is truncated. Be careful.
418 1.1 christos
419 1.1 christos Oct 19, 1998:
420 1.1 christos fixed a couple of bugs in getrec: could fail to update $0
421 1.1 christos after a getline var; because inputFS wasn't initialized,
422 1.1 christos could split $0 on every character, a misleading diversion.
423 1.1 christos
424 1.1 christos fixed caching bug in makedfa: LRU was actually removing
425 1.1 christos least often used.
426 1.1 christos
427 1.1 christos thanks to ross ridge for finding these, and for providing
428 1.1 christos great bug reports.
429 1.1 christos
430 1.1 christos May 12, 1998:
431 1.1 christos fixed potential bug in readrec: might fail to update record
432 1.1 christos pointer after growing. thanks to dan levy for spotting this
433 1.1 christos and suggesting the fix.
434 1.1 christos
435 1.1 christos Mar 12, 1998:
436 1.1 christos added -V to print version number and die.
437 1.1 christos
438 1.1 christos Feb 11, 1998:
439 1.1 christos subtle silent bug in lex.c: if the program ended with a number
440 1.1 christos longer than 1 digit, part of the input would be pushed back and
441 1.1 christos parsed again because token buffer wasn't terminated right.
442 1.1 christos example: awk 'length($0) > 10'. blush. at least i found it
443 1.1 christos myself.
444 1.1 christos
445 1.1 christos Aug 31, 1997:
446 1.1 christos s/adelete/awkdelete/: SGI uses this in malloc.h.
447 1.1 christos thanks to nelson beebe for pointing this one out.
448 1.1 christos
449 1.1 christos Aug 21, 1997:
450 1.1 christos fixed some bugs in sub and gsub when replacement includes \\.
451 1.1 christos this is a dark, horrible corner, but at least now i believe that
452 1.1 christos the behavior is the same as gawk and the intended posix standard.
453 1.1 christos thanks to arnold robbins for advice here.
454 1.1 christos
455 1.1 christos Aug 9, 1997:
456 1.1 christos somewhat regretfully, replaced the ancient lex-based lexical
457 1.1 christos analyzer with one written in C. it's longer, generates less code,
458 1.1 christos and more portable; the old one depended too much on mysterious
459 1.1 christos properties of lex that were not preserved in other environments.
460 1.1 christos in theory these recognize the same language.
461 1.1 christos
462 1.1 christos now using strtod to test whether a string is a number, instead of
463 1.1 christos the convoluted original function. should be more portable and
464 1.1 christos reliable if strtod is implemented right.
465 1.1 christos
466 1.1 christos removed now-pointless optimization in makefile that tries to avoid
467 1.1 christos recompilation when awkgram.y is changed but symbols are not.
468 1.1 christos
469 1.1 christos removed most fixed-size arrays, though a handful remain, some
470 1.1 christos of which are unchecked. you have been warned.
471 1.1 christos
472 1.1 christos Aug 4, 1997:
473 1.1 christos with some trepidation, replaced the ancient code that managed
474 1.1 christos fields and $0 in fixed-size arrays with arrays that grow on
475 1.1 christos demand. there is still some tension between trying to make this
476 1.1 christos run fast and making it clean; not sure it's right yet.
477 1.1 christos
478 1.1 christos the ill-conceived -mr and -mf arguments are now useful only
479 1.1 christos for debugging. previous dynamic string code removed.
480 1.1 christos
481 1.1 christos numerous other minor cleanups along the way.
482 1.1 christos
483 1.1 christos Jul 30, 1997:
484 1.1 christos using code provided by dan levy (to whom profuse thanks), replaced
485 1.1 christos fixed-size arrays and awkward kludges by a fairly uniform mechanism
486 1.1 christos to grow arrays as needed for printf, sub, gsub, etc.
487 1.1 christos
488 1.1 christos Jul 23, 1997:
489 1.1 christos falling off the end of a function returns "" and 0, not 0.
490 1.1 christos thanks to arnold robbins.
491 1.1 christos
492 1.1 christos Jun 17, 1997:
493 1.1 christos replaced several fixed-size arrays by dynamically-created ones
494 1.1 christos in run.c; added overflow tests to some previously unchecked cases.
495 1.1 christos getline, toupper, tolower.
496 1.1 christos
497 1.1 christos getline code is still broken in that recursive calls may wind
498 1.1 christos up using the same space. [fixed later]
499 1.1 christos
500 1.1 christos increased RECSIZE to 8192 to push problems further over the horizon.
501 1.1 christos
502 1.1 christos added \r to \n as input line separator for programs, not data.
503 1.1 christos damn CRLFs.
504 1.1 christos
505 1.1 christos modified format() to permit explicit printf("%c", 0) to include
506 1.1 christos a null byte in output. thanks to ken stailey for the fix.
507 1.1 christos
508 1.1 christos added a "-safe" argument that disables file output (print >,
509 1.1 christos print >>), process creation (cmd|getline, print |, system), and
510 1.1 christos access to the environment (ENVIRON). this is a first approximation
511 1.1 christos to a "safe" version of awk, but don't rely on it too much. thanks
512 1.1 christos to joan feigenbaum and matt blaze for the inspiration long ago.
513 1.1 christos
514 1.1 christos Jul 8, 1996:
515 1.1 christos fixed long-standing bug in sub, gsub(/a/, "\\\\&"); thanks to
516 1.1 christos ralph corderoy.
517 1.1 christos
518 1.1 christos Jun 29, 1996:
519 1.1 christos fixed awful bug in new field splitting; didn't get all the places
520 1.1 christos where input was done.
521 1.1 christos
522 1.1 christos Jun 28, 1996:
523 1.1 christos changed field-splitting to conform to posix definition: fields are
524 1.1 christos split using the value of FS at the time of input; it used to be
525 1.1 christos the value when the field or NF was first referred to, a much less
526 1.1 christos predictable definition. thanks to arnold robbins for encouragement
527 1.1 christos to do the right thing.
528 1.1 christos
529 1.1 christos May 28, 1996:
530 1.1 christos fixed appalling but apparently unimportant bug in parsing octal
531 1.1 christos numbers in reg exprs.
532 1.1 christos
533 1.1 christos explicit hex in reg exprs now limited to 2 chars: \xa, \xaa.
534 1.1 christos
535 1.1 christos May 27, 1996:
536 1.1 christos cleaned up some declarations so gcc -Wall is now almost silent.
537 1.1 christos
538 1.1 christos makefile now includes backup copies of ytab.c and lexyy.c in case
539 1.1 christos one makes before looking; it also avoids recreating lexyy.c unless
540 1.1 christos really needed.
541 1.1 christos
542 1.1 christos s/aprintf/awkprint, s/asprintf/awksprintf/ to avoid some name clashes
543 1.1 christos with unwisely-written header files.
544 1.1 christos
545 1.1 christos thanks to jeffrey friedl for several of these.
546 1.1 christos
547 1.1 christos May 26, 1996:
548 1.1 christos an attempt to rationalize the (unsigned) char issue. almost all
549 1.1 christos instances of unsigned char have been removed; the handful of places
550 1.1 christos in b.c where chars are used as table indices have been hand-crafted.
551 1.1 christos added some latin-1 tests to the regression, but i'm not confident;
552 1.1 christos none of my compilers seem to care much. thanks to nelson beebe for
553 1.1 christos pointing out some others that do care.
554 1.1 christos
555 1.1 christos May 2, 1996:
556 1.1 christos removed all register declarations.
557 1.1 christos
558 1.1 christos enhanced split(), as in gawk, etc: split(s, a, "") splits s into
559 1.1 christos a[1]...a[length(s)] with each character a single element.
560 1.1 christos
561 1.1 christos made the same changes for field-splitting if FS is "".
562 1.1 christos
563 1.1 christos added nextfile, as in gawk: causes immediate advance to next
564 1.1 christos input file. (thanks to arnold robbins for inspiration and code).
565 1.1 christos
566 1.1 christos small fixes to regexpr code: can now handle []], [[], and
567 1.1 christos variants; [] is now a syntax error, rather than matching
568 1.1 christos everything; [z-a] is now empty, not z. far from complete
569 1.1 christos or correct, however. (thanks to jeffrey friedl for pointing out
570 1.1 christos some awful behaviors.)
571 1.1 christos
572 1.1 christos Apr 29, 1996:
573 1.1 christos replaced uchar by uschar everywhere; apparently some compilers
574 1.1 christos usurp this name and this causes conflicts.
575 1.1 christos
576 1.1 christos fixed call to time in run.c (bltin); arg is time_t *.
577 1.1 christos
578 1.1 christos replaced horrible pointer/long punning in b.c by a legitimate
579 1.1 christos union. should be safer on 64-bit machines and cleaner everywhere.
580 1.1 christos (thanks to nelson beebe for pointing out some of these problems.)
581 1.1 christos
582 1.1 christos replaced nested comments by #if 0...#endif in run.c, lib.c.
583 1.1 christos
584 1.1 christos removed getsval, setsval, execute macros from run.c and lib.c.
585 1.1 christos machines are 100x faster than they were when these macros were
586 1.1 christos first used.
587 1.1 christos
588 1.1 christos revised filenames: awk.g.y => awkgram.y, awk.lx.l => awklex.l,
589 1.1 christos y.tab.[ch] => ytab.[ch], lex.yy.c => lexyy.c, all in the aid of
590 1.1 christos portability to nameless systems.
591 1.1 christos
592 1.1 christos "make bundle" now includes yacc and lex output files for recipients
593 1.1 christos who don't have yacc or lex.
594 1.1 christos
595 1.1 christos Aug 15, 1995:
596 1.1 christos initialized Cells in setsymtab more carefully; some fields
597 1.1 christos were not set. (thanks to purify, all of whose complaints i
598 1.1 christos think i now understand.)
599 1.1 christos
600 1.1 christos fixed at least one error in gsub that looked at -1-th element
601 1.1 christos of an array when substituting for a null match (e.g., $).
602 1.1 christos
603 1.1 christos delete arrayname is now legal; it clears the elements but leaves
604 1.1 christos the array, which may not be the right behavior.
605 1.1 christos
606 1.1 christos modified makefile: my current make can't cope with the test used
607 1.1 christos to avoid unnecessary yacc invocations.
608 1.1 christos
609 1.1 christos Jul 17, 1995:
610 1.1 christos added dynamically growing strings to awk.lx.l and b.c
611 1.1 christos to permit regular expressions to be much bigger.
612 1.1 christos the state arrays can still overflow.
613 1.1 christos
614 1.1 christos Aug 24, 1994:
615 1.1 christos detect duplicate arguments in function definitions (mdm).
616 1.1 christos
617 1.1 christos May 11, 1994:
618 1.1 christos trivial fix to printf to limit string size in sub().
619 1.1 christos
620 1.1 christos Apr 22, 1994:
621 1.1 christos fixed yet another subtle self-assignment problem:
622 1.1 christos $1 = $2; $1 = $1 clobbered $1.
623 1.1 christos
624 1.1 christos Regression tests now use private echo, to avoid quoting problems.
625 1.1 christos
626 1.1 christos Feb 2, 1994:
627 1.1 christos changed error() to print line number as %d, not %g.
628 1.1 christos
629 1.1 christos Jul 23, 1993:
630 1.1 christos cosmetic changes: increased sizes of some arrays,
631 1.1 christos reworded some error messages.
632 1.1 christos
633 1.1 christos added CONVFMT as in posix (just replaced OFMT in getsval)
634 1.1 christos
635 1.1 christos FILENAME is now "" until the first thing that causes a file
636 1.1 christos to be opened.
637 1.1 christos
638 1.1 christos Nov 28, 1992:
639 1.1 christos deleted yyunput and yyoutput from proto.h;
640 1.1 christos different versions of lex give these different declarations.
641 1.1 christos
642 1.1 christos May 31, 1992:
643 1.1 christos added -mr N and -mf N options: more record and fields.
644 1.1 christos these really ought to adjust automatically.
645 1.1 christos
646 1.1 christos cleaned up some error messages; "out of space" now means
647 1.1 christos malloc returned NULL in all cases.
648 1.1 christos
649 1.1 christos changed rehash so that if it runs out, it just returns;
650 1.1 christos things will continue to run slow, but maybe a bit longer.
651 1.1 christos
652 1.1 christos Apr 24, 1992:
653 1.1 christos remove redundant close of stdin when using -f -.
654 1.1 christos
655 1.1 christos got rid of core dump with -d; awk -d just prints date.
656 1.1 christos
657 1.1 christos Apr 12, 1992:
658 1.1 christos added explicit check for /dev/std(in,out,err) in redirection.
659 1.1 christos unlike gawk, no /dev/fd/n yet.
660 1.1 christos
661 1.1 christos added (file/pipe) builtin. hard to test satisfactorily.
662 1.1 christos not posix.
663 1.1 christos
664 1.1 christos Feb 20, 1992:
665 1.1 christos recompile after abortive changes; should be unchanged.
666 1.1 christos
667 1.1 christos Dec 2, 1991:
668 1.1 christos die-casting time: converted to ansi C, installed that.
669 1.1 christos
670 1.1 christos Nov 30, 1991:
671 1.1 christos fixed storage leak in freefa, failing to recover [N]CCL.
672 1.1 christos thanks to Bill Jones (jones (at) cs.usask.ca)
673 1.1 christos
674 1.1 christos Nov 19, 1991:
675 1.1 christos use RAND_MAX instead of literal in builtin().
676 1.1 christos
677 1.1 christos Nov 12, 1991:
678 1.1 christos cranked up some fixed-size arrays in b.c, and added a test for
679 1.1 christos overflow in penter. thanks to mark larsen.
680 1.1 christos
681 1.1 christos Sep 24, 1991:
682 1.1 christos increased buffer in gsub. a very crude fix to a general problem.
683 1.1 christos and again on Sep 26.
684 1.1 christos
685 1.1 christos Aug 18, 1991:
686 1.1 christos enforce variable name syntax for commandline variables: has to
687 1.1 christos start with letter or _.
688 1.1 christos
689 1.1 christos Jul 27, 1991:
690 1.1 christos allow newline after ; in for statements.
691 1.1 christos
692 1.1 christos Jul 21, 1991:
693 1.1 christos fixed so that in self-assignment like $1=$1, side effects
694 1.1 christos like recomputing $0 take place. (this is getting subtle.)
695 1.1 christos
696 1.1 christos Jun 30, 1991:
697 1.1 christos better test for detecting too-long output record.
698 1.1 christos
699 1.1 christos Jun 2, 1991:
700 1.1 christos better defense against very long printf strings.
701 1.1 christos made break and continue illegal outside of loops.
702 1.1 christos
703 1.1 christos May 13, 1991:
704 1.1 christos removed extra arg on gettemp, tempfree. minor error message rewording.
705 1.1 christos
706 1.1 christos May 6, 1991:
707 1.1 christos fixed silly bug in hex parsing in hexstr().
708 1.1 christos removed an apparently unnecessary test in isnumber().
709 1.1 christos warn about weird printf conversions.
710 1.1 christos fixed unchecked array overwrite in relex().
711 1.1 christos
712 1.1 christos changed for (i in array) to access elements in sorted order.
713 1.1 christos then unchanged it -- it really does run slower in too many cases.
714 1.1 christos left the code in place, commented out.
715 1.1 christos
716 1.1 christos Feb 10, 1991:
717 1.1 christos check error status on all writes, to avoid banging on full disks.
718 1.1 christos
719 1.1 christos Jan 28, 1991:
720 1.1 christos awk -f - reads the program from stdin.
721 1.1 christos
722 1.1 christos Jan 11, 1991:
723 1.1 christos failed to set numeric state on $0 in cmd|getline context in run.c.
724 1.1 christos
725 1.1 christos Nov 2, 1990:
726 1.1 christos fixed sleazy test for integrality in getsval; use modf.
727 1.1 christos
728 1.1 christos Oct 29, 1990:
729 1.1 christos fixed sleazy buggy code in lib.c that looked (incorrectly) for
730 1.1 christos too long input lines.
731 1.1 christos
732 1.1 christos Oct 14, 1990:
733 1.1 christos fixed the bug on p. 198 in which it couldn't deduce that an
734 1.1 christos argument was an array in some contexts. replaced the error
735 1.1 christos message in intest() by code that damn well makes it an array.
736 1.1 christos
737 1.1 christos Oct 8, 1990:
738 1.1 christos fixed horrible bug: types and values were not preserved in
739 1.1 christos some kinds of self-assignment. (in assign().)
740 1.1 christos
741 1.1 christos Aug 24, 1990:
742 1.1 christos changed NCHARS to 256 to handle 8-bit characters in strings
743 1.1 christos presented to match(), etc.
744 1.1 christos
745 1.1 christos Jun 26, 1990:
746 1.1 christos changed struct rrow (awk.h) to use long instead of int for lval,
747 1.1 christos since cfoll() stores a pointer in it. now works better when int's
748 1.1 christos are smaller than pointers!
749 1.1 christos
750 1.1 christos May 6, 1990:
751 1.1 christos AVA fixed the grammar so that ! is uniformly of the same precedence as
752 1.1 christos unary + and -. This renders illegal some constructs like !x=y, which
753 1.1 christos now has to be parenthesized as !(x=y), and makes others work properly:
754 1.1 christos !x+y is (!x)+y, and x!y is x !y, not two pattern-action statements.
755 1.1 christos (These problems were pointed out by Bob Lenk of Posix.)
756 1.1 christos
757 1.1 christos Added \x to regular expressions (already in strings).
758 1.1 christos Limited octal to octal digits; \8 and \9 are not octal.
759 1.1 christos Centralized the code for parsing escapes in regular expressions.
760 1.1 christos Added a bunch of tests to T.re and T.sub to verify some of this.
761 1.1 christos
762 1.1 christos Feb 9, 1990:
763 1.1 christos fixed null pointer dereference bug in main.c: -F[nothing]. sigh.
764 1.1 christos
765 1.1 christos restored srand behavior: it returns the current seed.
766 1.1 christos
767 1.1 christos Jan 18, 1990:
768 1.1 christos srand now returns previous seed value (0 to start).
769 1.1 christos
770 1.1 christos Jan 5, 1990:
771 1.1 christos fix potential problem in tran.c -- something was freed,
772 1.1 christos then used in freesymtab.
773 1.1 christos
774 1.1 christos Oct 18, 1989:
775 1.1 christos another try to get the max number of open files set with
776 1.1 christos relatively machine-independent code.
777 1.1 christos
778 1.1 christos small fix to input() in case of multiple reads after EOF.
779 1.1 christos
780 1.1 christos Oct 11, 1989:
781 1.1 christos FILENAME is now defined in the BEGIN block -- too many old
782 1.1 christos programs broke.
783 1.1 christos
784 1.1 christos "-" means stdin in getline as well as on the commandline.
785 1.1 christos
786 1.1 christos added a bunch of casts to the code to tell the truth about
787 1.1 christos char * vs. unsigned char *, a right royal pain. added a
788 1.1 christos setlocale call to the front of main, though probably no one
789 1.1 christos has it usefully implemented yet.
790 1.1 christos
791 1.1 christos Aug 24, 1989:
792 1.1 christos removed redundant relational tests against nullnode if parse
793 1.1 christos tree already had a relational at that point.
794 1.1 christos
795 1.1 christos Aug 11, 1989:
796 1.1 christos fixed bug: commandline variable assignment has to look like
797 1.1 christos var=something. (consider the man page for =, in file =.1)
798 1.1 christos
799 1.1 christos changed number of arguments to functions to static arrays
800 1.1 christos to avoid repeated malloc calls.
801 1.1 christos
802 1.1 christos Aug 2, 1989:
803 1.1 christos restored -F (space) separator
804 1.1 christos
805 1.1 christos Jul 30, 1989:
806 1.1 christos added -v x=1 y=2 ... for immediate commandline variable assignment;
807 1.1 christos done before the BEGIN block for sure. they have to precede the
808 1.1 christos program if the program is on the commandline.
809 1.1 christos Modified Aug 2 to require a separate -v for each assignment.
810 1.1 christos
811 1.1 christos Jul 10, 1989:
812 1.1 christos fixed ref-thru-zero bug in environment code in tran.c
813 1.1 christos
814 1.1 christos Jun 23, 1989:
815 1.1 christos add newline to usage message.
816 1.1 christos
817 1.1 christos Jun 14, 1989:
818 1.1 christos added some missing ansi printf conversion letters: %i %X %E %G.
819 1.1 christos no sensible meaning for h or L, so they may not do what one expects.
820 1.1 christos
821 1.1 christos made %* conversions work.
822 1.1 christos
823 1.1 christos changed x^y so that if n is a positive integer, it's done
824 1.1 christos by explicit multiplication, thus achieving maximum accuracy.
825 1.1 christos (this should be done by pow() but it seems not to be locally.)
826 1.1 christos done to x ^= y as well.
827 1.1 christos
828 1.1 christos Jun 4, 1989:
829 1.1 christos ENVIRON array contains environment: if shell variable V=thing,
830 1.1 christos ENVIRON["V"] is "thing"
831 1.1 christos
832 1.1 christos multiple -f arguments permitted. error reporting is naive.
833 1.1 christos (they were permitted before, but only the last was used.)
834 1.1 christos
835 1.1 christos fixed a really stupid botch in the debugging macro dprintf
836 1.1 christos
837 1.1 christos fixed order of evaluation of commandline assignments to match
838 1.1 christos what the book claims: an argument of the form x=e is evaluated
839 1.1 christos at the time it would have been opened if it were a filename (p 63).
840 1.1 christos this invalidates the suggested answer to ex 4-1 (p 195).
841 1.1 christos
842 1.1 christos removed some code that permitted -F (space) fieldseparator,
843 1.1 christos since it didn't quite work right anyway. (restored aug 2)
844 1.1 christos
845 1.1 christos Apr 27, 1989:
846 1.1 christos Line number now accumulated correctly for comment lines.
847 1.1 christos
848 1.1 christos Apr 26, 1989:
849 1.1 christos Debugging output now includes a version date,
850 1.1 christos if one compiles it into the source each time.
851 1.1 christos
852 1.1 christos Apr 9, 1989:
853 1.1 christos Changed grammar to prohibit constants as 3rd arg of sub and gsub;
854 1.1 christos prevents class of overwriting-a-constant errors. (Last one?)
855 1.1 christos This invalidates the "banana" example on page 43 of the book.
856 1.1 christos
857 1.1 christos Added \a ("alert"), \v (vertical tab), \xhhh (hexadecimal),
858 1.1 christos as in ANSI, for strings. Rescinded the sloppiness that permitted
859 1.1 christos non-octal digits in \ooo. Warning: not all compilers and libraries
860 1.1 christos will be able to deal with \x correctly.
861 1.1 christos
862 1.1 christos Jan 9, 1989:
863 1.1 christos Fixed bug that caused tempcell list to contain a duplicate.
864 1.1 christos The fix is kludgy.
865 1.1 christos
866 1.1 christos Dec 17, 1988:
867 1.1 christos Catches some more commandline errors in main.
868 1.1 christos Removed redundant decl of modf in run.c (confuses some compilers).
869 1.1 christos Warning: there's no single declaration of malloc, etc., in awk.h
870 1.1 christos that seems to satisfy all compilers.
871 1.1 christos
872 1.1 christos Dec 7, 1988:
873 1.1 christos Added a bit of code to error printing to avoid printing nulls.
874 1.1 christos (Not clear that it actually would.)
875 1.1 christos
876 1.1 christos Nov 27, 1988:
877 1.1 christos With fear and trembling, modified the grammar to permit
878 1.1 christos multiple pattern-action statements on one line without
879 1.1 christos an explicit separator. By definition, this capitulation
880 1.1 christos to the ghost of ancient implementations remains undefined
881 1.1 christos and thus subject to change without notice or apology.
882 1.1 christos DO NOT COUNT ON IT.
883 1.1 christos
884 1.1 christos Oct 30, 1988:
885 1.1 christos Fixed bug in call() that failed to recover storage.
886 1.1 christos
887 1.1 christos A warning is now generated if there are more arguments
888 1.1 christos in the call than in the definition (in lieu of fixing
889 1.1 christos another storage leak).
890 1.1 christos
891 1.1 christos Oct 20, 1988:
892 1.1 christos Fixed %c: if expr is numeric, use numeric value;
893 1.1 christos otherwise print 1st char of string value. still
894 1.1 christos doesn't work if the value is 0 -- won't print \0.
895 1.1 christos
896 1.1 christos Added a few more checks for running out of malloc.
897 1.1 christos
898 1.1 christos Oct 12, 1988:
899 1.1 christos Fixed bug in call() that freed local arrays twice.
900 1.1 christos
901 1.1 christos Fixed to handle deletion of non-existent array right;
902 1.1 christos complains about attempt to delete non-array element.
903 1.1 christos
904 1.1 christos Sep 30, 1988:
905 1.1 christos Now guarantees to evaluate all arguments of built-in
906 1.1 christos functions, as in C; the appearance is that arguments
907 1.1 christos are evaluated before the function is called. Places
908 1.1 christos affected are sub (gsub was ok), substr, printf, and
909 1.1 christos all the built-in arithmetic functions in bltin().
910 1.1 christos A warning is generated if a bltin() is called with
911 1.1 christos the wrong number of arguments.
912 1.1 christos
913 1.1 christos This requires changing makeprof on p167 of the book.
914 1.1 christos
915 1.1 christos Aug 23, 1988:
916 1.1 christos setting FILENAME in BEGIN caused core dump, apparently
917 1.1 christos because it was freeing space not allocated by malloc.
918 1.1 christos
919 1.1 christos July 24, 1988:
920 1.1 christos fixed egregious error in toupper/tolower functions.
921 1.1 christos still subject to rescinding, however.
922 1.1 christos
923 1.1 christos July 2, 1988:
924 1.1 christos flush stdout before opening file or pipe
925 1.1 christos
926 1.1 christos July 2, 1988:
927 1.1 christos performance bug in b.c/cgoto(): not freeing some sets of states.
928 1.1 christos partial fix only right now, and the number of states increased
929 1.1 christos to make it less obvious.
930 1.1 christos
931 1.1 christos June 1, 1988:
932 1.1 christos check error status on close
933 1.1 christos
934 1.1 christos May 28, 1988:
935 1.1 christos srand returns seed value it's using.
936 1.1 christos see 1/18/90
937 1.1 christos
938 1.1 christos May 22, 1988:
939 1.1 christos Removed limit on depth of function calls.
940 1.1 christos
941 1.1 christos May 10, 1988:
942 1.1 christos Fixed lib.c to permit _ in commandline variable names.
943 1.1 christos
944 1.1 christos Mar 25, 1988:
945 1.1 christos main.c fixed to recognize -- as terminator of command-
946 1.1 christos line options. Illegal options flagged.
947 1.1 christos Error reporting slightly cleaned up.
948 1.1 christos
949 1.1 christos Dec 2, 1987:
950 1.1 christos Newer C compilers apply a strict scope rule to extern
951 1.1 christos declarations within functions. Two extern declarations in
952 1.1 christos lib.c and tran.c have been moved to obviate this problem.
953 1.1 christos
954 1.1 christos Oct xx, 1987:
955 1.1 christos Reluctantly added toupper and tolower functions.
956 1.1 christos Subject to rescinding without notice.
957 1.1 christos
958 1.1 christos Sep 17, 1987:
959 1.1 christos Error-message printer had printf(s) instead of
960 1.1 christos printf("%s",s); got core dumps when the message
961 1.1 christos included a %.
962 1.1 christos
963 1.1 christos Sep 12, 1987:
964 1.1 christos Very long printf strings caused core dump;
965 1.1 christos fixed aprintf, asprintf, format to catch them.
966 1.1 christos Can still get a core dump in printf itself.
967 1.1 christos
968 1.1 christos
969