FIXES.1e 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 Sep 06, 2023:
29 1.1 christos Fix edge case where FS is changed on commandline. Thanks to
30 1.1 christos Gordon Shephard and Miguel Pineiro Jr.
31 1.1 christos
32 1.1 christos Fix regular expression clobbering in the lexer, where lexer does
33 1.1 christos not make a copy of regexp literals. also makedfa memory leaks have
34 1.1 christos been plugged. Thanks to Miguel Pineiro Jr.
35 1.1 christos
36 1.1 christos Dec 15, 2022:
37 1.1 christos Force hex escapes in strings to be no more than two characters,
38 1.1 christos as they already are in regular expressions. This brings internal
39 1.1 christos consistency, as well as consistency with gawk. Thanks to
40 1.1 christos Arnold Robbins.
41 1.1 christos
42 1.1 christos Sep 12, 2022:
43 1.1 christos adjbuf minlen error (cannot be 0) in cat, resulting in NULL pbuf.
44 1.1 christos discovered by todd miller. also use-after-free issue with
45 1.1 christos tempfree in cat, thanks to Miguel Pineiro Jr and valgrind.
46 1.1 christos
47 1.1 christos Aug 30, 2022:
48 1.1 christos Various leaks and use-after-free issues plugged/fixed.
49 1.1 christos Thanks to Miguel Pineiro Jr. <mpj@pineiro.cc>.
50 1.1 christos
51 1.1 christos May 23, 2022:
52 1.1 christos Memory leak when assigning a string to some of the built-in
53 1.1 christos variables. allocated string erroneously marked DONTFREE.
54 1.1 christos Thanks to Miguel Pineiro Jr. <mpj@pineiro.cc>.
55 1.1 christos
56 1.1 christos Mar 14, 2022:
57 1.1 christos Historic bug: command-line "name=value" assignment had been
58 1.1 christos truncating its entry in ARGV. (circa 1989) Thanks to
59 1.1 christos Miguel Pineiro Jr. <mpj@pineiro.cc>.
60 1.1 christos
61 1.1 christos Mar 3, 2022:
62 1.1 christos Fixed file management memory leak that appears to have been
63 1.1 christos there since the files array was first initialized with stdin,
64 1.1 christos stdout, and stderr (circa 1992). Thanks to Miguel Pineiro Jr.
65 1.1 christos <mpj@pineiro.cc>.
66 1.1 christos
67 1.1 christos December 8, 2021:
68 1.1 christos The error handling in closefile and closeall was mangled. Long
69 1.1 christos standing warnings had been made fatal and some fatal errors went
70 1.1 christos undetected. Thanks to Miguel Pineiro Jr. <mpj@pineiro.cc>.
71 1.1 christos
72 1.1 christos Nov 03, 2021:
73 1.1 christos getline accesses uninitialized data after getrec()
74 1.1 christos returns 0 on EOF and leaves the contents of buf unchanged.
75 1.1 christos Thanks to Volodymyr Gubarkov, and Todd C Miller.
76 1.1 christos
77 1.1 christos Oct 12, 2021:
78 1.1 christos The fix for #83 changed the code to insert 2 chars, but the
79 1.1 christos call to adjbuf just above it only allows for 1 char. This can
80 1.1 christos cause a heap buffer overflow.
81 1.1 christos
82 1.1 christos July 27, 2021:
83 1.1 christos As per IEEE Std 1003.1-2008, -F "str" is now consistent with
84 1.1 christos -v FS="str" when str is null. Thanks to Warner Losh.
85 1.1 christos
86 1.1 christos July 24, 2021:
87 1.1 christos Fix readrec's definition of a record. This fixes an issue
88 1.1 christos with NetBSD's RS regular expression support that can cause
89 1.1 christos an infinite read loop. Thanks to Miguel Pineiro Jr.
90 1.1 christos
91 1.1 christos Fix regular expression RS ^-anchoring. RS ^-anchoring needs to
92 1.1 christos know if it is reading the first record of a file. This change
93 1.1 christos restores a missing line that was overlooked when porting NetBSD's
94 1.1 christos RS regex functionality. Thanks to Miguel Pineiro Jr.
95 1.1 christos
96 1.1 christos Fix size computation in replace_repeat() for special case
97 1.1 christos REPEAT_WITH_Q. Thanks to Todd C. Miller.
98 1.1 christos
99 1.1 christos February 15, 2021:
100 1.1 christos Small fix so that awk will compile again with g++. Thanks to
101 1.1 christos Arnold Robbins.
102 1.1 christos
103 1.1 christos January 06, 2021:
104 1.1 christos Fix a decision bug with trailing stuff in lib.c:is_valid_number
105 1.1 christos after recent changes. Thanks to Ozan Yigit.
106 1.1 christos
107 1.1 christos December 18, 2020:
108 1.1 christos Fix problems converting inf and NaN values in lib.c:is_valid_number.
109 1.1 christos Enhance number to string conversion to do the right thing for
110 1.1 christos NaN and inf values. Things are now pretty much the same as in
111 1.1 christos gawk. (Found a gawk bug while we're at it.) Added a torture
112 1.1 christos test for these values. Thanks to Arnold Robbins. Allows closing
113 1.1 christos of PR #101.
114 1.1 christos
115 1.1 christos December 15, 2020:
116 1.1 christos Merge PR #99, which gets the right header for strcasecmp.
117 1.1 christos Thanks to GitHub user michaelforney.
118 1.1 christos
119 1.1 christos December 8, 2020:
120 1.1 christos Merge PR #98: Disallow hex data. Allow only +nan, -nan,
121 1.1 christos +inf, -inf (case independent) to give NaN and infinity values.
122 1.1 christos Improve things so that string to double conversion is only
123 1.1 christos done once, yielding something of a speedup. This obviate
124 1.1 christos PR #95. Thanks to Arnold Robbins.
125 1.1 christos
126 1.1 christos December 3, 2020:
127 1.1 christos Fix to argument parsing to avoid printing spurious newlines.
128 1.1 christos Thanks to Todd Miller. Merges PR #97.
129 1.1 christos
130 1.1 christos October 13, 2020:
131 1.1 christos Add casts before all the calls to malloc/calloc/realloc in order
132 1.1 christos to get it to compile with g++. Thanks to Arnold Robbins.
133 1.1 christos
134 1.1 christos August 16, 2020:
135 1.1 christos Additional fixes for DJGPP. Thanks to Eli Zaretskii for
136 1.1 christos the testing.
137 1.1 christos
138 1.1 christos August 7, 2020:
139 1.1 christos Merge PR #93, which adds casts to (void*) for debug prints
140 1.1 christos using the %p format specifier. Thanks to GitHub user YongHaoWu
141 1.1 christos ("Chris") for the fixes.
142 1.1 christos
143 1.1 christos August 4, 2020:
144 1.1 christos In run.c, use non-restartable multibyte routines to attain
145 1.1 christos portability to DJGPP. Should fix Issue 92. Thanks to Albert Wik
146 1.1 christos for the report and to Todd Miller for the suggested fix.
147 1.1 christos
148 1.1 christos July 30, 2020:
149 1.1 christos Merge PRs 88-91 which fix small bugs. Thanks to Todd Miller and
150 1.1 christos Tim van der Molen for the fixes.
151 1.1 christos
152 1.1 christos In order to make life easier, we move exclusively to bison
153 1.1 christos as the parser generator.
154 1.1 christos
155 1.1 christos July 2, 2020:
156 1.1 christos Merge PRs 85 and 86 which fix regressions. Thanks to
157 1.1 christos Tim van der Molen for the fixes.
158 1.1 christos
159 1.1 christos June 25, 2020:
160 1.1 christos Merge PRs 82 and 84. The latter fixes issue #83. Thanks to
161 1.1 christos Todd Miller and awkfan77.
162 1.1 christos
163 1.1 christos June 12, 2020:
164 1.1 christos Clear errno before calling errcheck to avoid any spurious errors
165 1.1 christos left over from previous calls that may have set it. Thanks to
166 1.1 christos Todd Miller for the fix, from PR #80.
167 1.1 christos
168 1.1 christos Fix Issue #78 by allowing \r to follow floating point numbers in
169 1.1 christos lib.c:is_number. Thanks to GitHub user ajcarr for the report
170 1.1 christos and to Arnold Robbins for the fix.
171 1.1 christos
172 1.1 christos June 5, 2020:
173 1.1 christos In fldbld(), make sure that inputFS is set before trying to
174 1.1 christos use it. Thanks to Steffen Nurpmeso <steffen@sdaoden.eu>
175 1.1 christos for the report.
176 1.1 christos
177 1.1 christos May 5, 2020:
178 1.1 christos Fix checks for compilers that can handle noreturn. Thanks to
179 1.1 christos GitHub user enh-google for pointing it out. Closes Issue #79.
180 1.1 christos
181 1.1 christos April 16, 2020:
182 1.1 christos Handle old compilers that don't support C11 (for noreturn).
183 1.1 christos Thanks to Arnold Robbins.
184 1.1 christos
185 1.1 christos April 5, 2020:
186 1.1 christos Use <stdnoreturn.h> and noreturn instead of GCC attributes.
187 1.1 christos Thanks to GitHub user awkfan77. Closes PR #77.
188 1.1 christos
189 1.1 christos February 28, 2020:
190 1.1 christos More cleanups from Christos Zoulas: notably backslash continuation
191 1.1 christos inside strings removes the newline and a fix for RS = "^a".
192 1.1 christos Fix for address sanitizer-found problem. Thanks to GitHub user
193 1.1 christos enh-google.
194 1.1 christos
195 1.1 christos February 19, 2020:
196 1.1 christos More small cleanups from Christos Zoulas.
197 1.1 christos
198 1.1 christos February 18, 2020:
199 1.1 christos Additional cleanups from Christos Zoulas. It's no longer necessary
200 1.1 christos to use the -y flag to bison.
201 1.1 christos
202 1.1 christos February 6, 2020:
203 1.1 christos Additional small cleanups from Christos Zoulas. awk is now
204 1.1 christos a little more robust about reporting I/O errors upon exit.
205 1.1 christos
206 1.1 christos January 31, 2020:
207 1.1 christos Merge PR #70, which avoids use of variable length arrays. Thanks
208 1.1 christos to GitHub user michaelforney. Fix issue #60 ({0} in interval
209 1.1 christos expressions doesn't work). Also get all tests working again.
210 1.1 christos Thanks to Arnold Robbins.
211 1.1 christos
212 1.1 christos January 24, 2020:
213 1.1 christos A number of small cleanups from Christos Zoulas. Add the close
214 1.1 christos on exec flag to files/pipes opened for redirection; courtesy of
215 1.1 christos Arnold Robbins.
216 1.1 christos
217 1.1 christos January 19, 2020:
218 1.1 christos If POSIXLY_CORRECT is set in the environment, then sub and gsub
219 1.1 christos use POSIX rules for multiple backslashes. This fixes Issue #66,
220 1.1 christos while maintaining backwards compatibility.
221 1.1 christos
222 1.1 christos January 9, 2020:
223 1.1 christos Input/output errors on closing files are now fatal instead of
224 1.1 christos mere warnings. Thanks to Martijn Dekker <martijn (at) inlv.org>.
225 1.1 christos
226 1.1 christos January 5, 2020:
227 1.1 christos Fix a bug in the concatenation of two string constants into
228 1.1 christos one done in the grammar. Fixes GitHub issue #61. Thanks
229 1.1 christos to GitHub user awkfan77 for pointing out the direction for
230 1.1 christos the fix. New test T.concat added to the test suite.
231 1.1 christos Fix a few memory leaks reported by valgrind, as well.
232 1.1 christos
233 1.1 christos December 27, 2019:
234 1.1 christos Fix a bug whereby a{0,3} could match four a's. Thanks to
235 1.1 christos "Anonymous AWK fan" for the report.
236 1.1 christos
237 1.1 christos December 11, 2019:
238 1.1 christos Further printf-related fixes for 32 bit systems.
239 1.1 christos Thanks again to Christos Zoulas.
240 1.1 christos
241 1.1 christos December 8, 2019:
242 1.1 christos Fix the return value of sprintf("%d") on 32 bit systems.
243 1.1 christos Thanks to Jim Lowe for the report and to Christos Zoulas
244 1.1 christos for the fix.
245 1.1 christos
246 1.1 christos November 10, 2019:
247 1.1 christos Convert a number of Boolean integer variables into
248 1.1 christos actual bools. Convert compile_time variable into an
249 1.1 christos enum and simplify some of the related code. Thanks
250 1.1 christos to Arnold Robbins.
251 1.1 christos
252 1.1 christos November 8, 2019:
253 1.1 christos Fix from Ori Bernstein to get UTF-8 characters instead of
254 1.1 christos bytes when FS = "". This is currently the only bit of
255 1.1 christos the One True Awk that understands multibyte characters.
256 1.1 christos From Arnold Robbins, apply some cleanups in the test suite.
257 1.1 christos
258 1.1 christos October 25, 2019:
259 1.1 christos More fixes and cleanups from NetBSD, courtesy of Christos
260 1.1 christos Zoulas. Merges PRs 54 and 55.
261 1.1 christos
262 1.1 christos October 24, 2019:
263 1.1 christos Import second round of code cleanups from NetBSD. Much thanks
264 1.1 christos to Christos Zoulas (GitHub user zoulasc). Merges PR 53.
265 1.1 christos Add an optimization for string concatenation, also from
266 1.1 christos Christos.
267 1.1 christos
268 1.1 christos October 17, 2019:
269 1.1 christos Import code cleanups from NetBSD. Much thanks to Christos
270 1.1 christos Zoulas (GitHub user zoulasc). Merges PR 51.
271 1.1 christos
272 1.1 christos October 6, 2019:
273 1.1 christos Import code from NetBSD awk that implements RS as a regular
274 1.1 christos expression.
275 1.1 christos
276 1.1 christos September 10, 2019:
277 1.1 christos Fixes for various array / memory overruns found via gcc's
278 1.1 christos -fsanitize=unknown. Thanks to Alexander Richardson (GitHub
279 1.1 christos user arichardson). Merges PRs 47 and 48.
280 1.1 christos
281 1.1 christos July 28, 2019:
282 1.1 christos Import grammar optimization from NetBSD: Two string constants
283 1.1 christos concatenated together get turned into a single string.
284 1.1 christos
285 1.1 christos July 26, 2019:
286 1.1 christos Support POSIX-specified C-style escape sequences "\a" (alarm)
287 1.1 christos and "\v" (vertical tab) in command line arguments and regular
288 1.1 christos expressions, further to the support for them in strings added on
289 1.1 christos Apr 9, 1989. These now no longer match as literal "a" and "v"
290 1.1 christos characters (as they don't on other awk implementations).
291 1.1 christos Thanks to Martijn Dekker.
292 1.1 christos
293 1.1 christos July 17, 2019:
294 1.1 christos Pull in a number of code cleanups and minor fixes from
295 1.1 christos Warner Losh's bsd-ota branch. The only user visible change
296 1.1 christos is the use of random(3) as the random number generator.
297 1.1 christos Thanks to Warner Losh for collecting all these fixes in
298 1.1 christos one easy place to get them from.
299 1.1 christos
300 1.1 christos July 16, 2019:
301 1.1 christos Fix field splitting to use FS value as of the time a record
302 1.1 christos was read or assigned to. Thanks to GitHub user Cody Mello (melloc)
303 1.1 christos for the fix. (Merged from his branch, via PR #42.) Updated
304 1.1 christos testdir/T.split per said PR as well.
305 1.1 christos
306 1.1 christos June 24, 2019:
307 1.1 christos Extract awktest.tar into testdir directory. Add some very
308 1.1 christos simple mechanics to the makefile for running the tests and
309 1.1 christos for cleaning up. No changes to awk itself.
310 1.1 christos
311 1.1 christos June 17, 2019:
312 1.1 christos Disallow deleting SYMTAB and its elements, which creates
313 1.1 christos use-after-free bugs. Thanks to GitHub user Cody Mello (melloc)
314 1.1 christos for the fix. (Merged from PR #43.)
315 1.1 christos
316 1.1 christos June 5, 2019:
317 1.1 christos Allow unmatched right parenthesis in a regular expression to
318 1.1 christos be treated literally. Fixes Issue #40. Thanks to GitHub user
319 1.1 christos Warner Losh (bsdimp) for the report. Thanks to Arnold Robbins
320 1.1 christos for the fix.
321 1.1 christos
322 1.1 christos May 29,2019:
323 1.1 christos Fix check for command line arguments to no longer require that
324 1.1 christos first character after '=' not be another '='. Reverts change of
325 1.1 christos August 11, 1989. Thanks to GitHub user Jamie Landeg Jones for
326 1.1 christos pointing out the issue; from Issue #38.
327 1.1 christos
328 1.1 christos Apr 7, 2019:
329 1.1 christos Update awktest.tar(p.50) to use modern options to sort. Needed
330 1.1 christos for Android development. Thanks to GitHub user mohd-akram (Mohamed
331 1.1 christos Akram). From Issue #33.
332 1.1 christos
333 1.1 christos Mar 12, 2019:
334 1.1 christos Added very simplistic support for cross-compiling in the
335 1.1 christos makefile. We are NOT going to go in the direction of the
336 1.1 christos autotools, though. Thanks to GitHub user nee-san for
337 1.1 christos the basic change. (Merged from PR #34.)
338 1.1 christos
339 1.1 christos Mar 5, 2019:
340 1.1 christos Added support for POSIX-standard interval expressions (a.k.a.
341 1.1 christos bounds, a.k.a. repetition expressions) in regular expressions,
342 1.1 christos backported (via NetBSD) from Apple awk-24 (20070501).
343 1.1 christos Thanks to Martijn Dekker <martijn (at) inlv.org> for the port.
344 1.1 christos (Merged from PR #30.)
345 1.1 christos
346 1.1 christos Mar 3, 2019:
347 1.1 christos Merge PRs as follows:
348 1.1 christos #12: Avoid undefined behaviour when using ctype(3) functions in
349 1.1 christos relex(). Thanks to GitHub user iamleot.
350 1.1 christos #31: Make getline handle numeric strings, and update FIXES. Thanks
351 1.1 christos to GitHub user Arnold Robbins (arnoldrobbins)
352 1.1 christos #32: maketab: support build systems with read-only source. Thanks
353 1.1 christos to GitHub user enh.
354 1.1 christos
355 1.1 christos Jan 25, 2019:
356 1.1 christos Make getline handle numeric strings properly in all cases.
357 1.1 christos (Thanks, Arnold.)
358 1.1 christos
359 1.1 christos Jan 21, 2019:
360 1.1 christos Merged a number of small fixes from GitHub pull requests.
361 1.1 christos Thanks to GitHub users Arnold Robbins (arnoldrobbins),
362 1.1 christos Cody Mello (melloc) and Christoph Junghans (junghans).
363 1.1 christos PR numbers: 13-21, 23, 24, 27.
364 1.1 christos
365 1.1 christos Oct 25, 2018:
366 1.1 christos Added test in maketab.c to prevent generating a proctab entry
367 1.1 christos for YYSTYPE_IS_DEFINED. It was harmless but some gcc settings
368 1.1 christos generated a warning message. Thanks to Nan Xiao for report.
369 1.1 christos
370 1.1 christos Aug 27, 2018:
371 1.1 christos Disallow '$' in printf formats; arguments evaluated in order
372 1.1 christos and printed in order.
373 1.1 christos
374 1.1 christos Added some casts to silence warnings on debugging printfs.
375 1.1 christos (Thanks, Arnold.)
376 1.1 christos
377 1.1 christos Aug 23, 2018:
378 1.1 christos A long list of fixes courtesy of Arnold Robbins,
379 1.1 christos to whom profound thanks.
380 1.1 christos
381 1.1 christos 1. ofs-rebuild: OFS value used to rebuild the record was incorrect.
382 1.1 christos Fixed August 19, 2014. Revised fix August 2018.
383 1.1 christos
384 1.1 christos 2. system-status: Instead of a floating-point division by 256, use
385 1.1 christos the wait(2) macros to create a reasonable exit status.
386 1.1 christos Fixed March 12, 2016.
387 1.1 christos
388 1.1 christos 3. space: Use provided xisblank() function instead of ispace() for
389 1.1 christos matching [[:blank:]].
390 1.1 christos
391 1.1 christos 4. a-format: Add POSIX standard %a and %A to supported formats. Check
392 1.1 christos at runtime that this format is available.
393 1.1 christos
394 1.1 christos 5. decr-NF: Decrementing NF did not change $0. This is a decades-old
395 1.1 christos bug. There are interactions with the old and new value of OFS as well.
396 1.1 christos Most of the fix came from the NetBSD awk.
397 1.1 christos
398 1.1 christos 6. string-conv: String conversions of scalars were sticky. Once a
399 1.1 christos conversion to string happened, even with OFMT, that value was used until
400 1.1 christos a new numeric value was assigned, even if OFMT differed from CONVFMT,
401 1.1 christos and also if CONVFMT changed.
402 1.1 christos
403 1.1 christos 7. unary-plus: Unary plus on a string constant returned the string.
404 1.1 christos Instead, it should convert the value to numeric and give that value.
405 1.1 christos
406 1.1 christos Also added Arnold's tests for these to awktest.tar as T.arnold.
407 1.1 christos
408 1.1 christos Aug 15, 2018:
409 1.1 christos fixed mangled awktest.tar (thanks, Arnold), posted all
410 1.1 christos current (very minor) fixes to github / onetrueawk
411 1.1 christos
412 1.1 christos Jun 7, 2018:
413 1.1 christos (yes, a long layoff)
414 1.1 christos Updated some broken tests (beebe.tar, T.lilly)
415 1.1 christos [thanks to Arnold Robbins]
416 1.1 christos
417 1.1 christos Mar 26, 2015:
418 1.1 christos buffer overflow in error reporting; thanks to tobias ulmer
419 1.1 christos and john-mark gurney for spotting it and the fix.
420 1.1 christos
421 1.1 christos Feb 4, 2013:
422 1.1 christos cleaned up a handful of tests that didn't seem to actually
423 1.1 christos test for correct behavior: T.latin1, T.gawk.
424 1.1 christos
425 1.1 christos Jan 5, 2013:
426 1.1 christos added ,NULL initializer to static Cells in run.c; not really
427 1.1 christos needed but cleaner. Thanks to Michael Bombardieri.
428 1.1 christos
429 1.1 christos Dec 20, 2012:
430 1.1 christos fiddled makefile to get correct yacc and bison flags. pick yacc
431 1.1 christos (linux) or bison (mac) as necessary.
432 1.1 christos
433 1.1 christos added __attribute__((__noreturn__)) to a couple of lines in
434 1.1 christos proto.h, to silence someone's enthusiastic checker.
435 1.1 christos
436 1.1 christos fixed obscure call by value bug in split(a[1],a) reported on
437 1.1 christos 9fans. the management of temporary values is just a mess; i
438 1.1 christos took a shortcut by making an extra string copy. thanks
439 1.1 christos to paul patience and arnold robbins for passing it on and for
440 1.1 christos proposed patches.
441 1.1 christos
442 1.1 christos tiny fiddle in setfval to eliminate -0 results in T.expr, which
443 1.1 christos has irritated me for 20+ years.
444 1.1 christos
445 1.1 christos Aug 10, 2011:
446 1.1 christos another fix to avoid core dump with delete(ARGV); again, many thanks
447 1.1 christos to ruslan ermilov.
448 1.1 christos
449 1.1 christos Aug 7, 2011:
450 1.1 christos split(s, a, //) now behaves the same as split(s, a, "")
451 1.1 christos
452 1.1 christos Jun 12, 2011:
453 1.1 christos /pat/, \n /pat/ {...} is now legal, though bad style to use.
454 1.1 christos
455 1.1 christos added checks to new -v code that permits -vnospace; thanks to
456 1.1 christos ruslan ermilov for spotting this and providing the patch.
457 1.1 christos
458 1.1 christos removed fixed limit on number of open files; thanks to aleksey
459 1.1 christos cheusov and christos zoulos.
460 1.1 christos
461 1.1 christos fixed day 1 bug that resurrected deleted elements of ARGV when
462 1.1 christos used as filenames (in lib.c).
463 1.1 christos
464 1.1 christos minor type fiddles to make gcc -Wall -pedantic happier (but not
465 1.1 christos totally so); turned on -fno-strict-aliasing in makefile.
466 1.1 christos
467 1.1 christos May 6, 2011:
468 1.1 christos added #ifdef for isblank.
469 1.1 christos now allows -ffoo as well as -f foo arguments.
470 1.1 christos (thanks, ruslan)
471 1.1 christos
472 1.1 christos May 1, 2011:
473 1.1 christos after advice from todd miller, kevin lo, ruslan ermilov,
474 1.1 christos and arnold robbins, changed srand() to return the previous
475 1.1 christos seed (which is 1 on the first call of srand). the seed is
476 1.1 christos an Awkfloat internally though converted to unsigned int to
477 1.1 christos pass to the library srand(). thanks, everyone.
478 1.1 christos
479 1.1 christos fixed a subtle (and i hope low-probability) overflow error
480 1.1 christos in fldbld, by adding space for one extra \0. thanks to
481 1.1 christos robert bassett for spotting this one and providing a fix.
482 1.1 christos
483 1.1 christos removed the files related to compilation on windows. i no
484 1.1 christos longer have anything like a current windows environment, so
485 1.1 christos i can't test any of it.
486 1.1 christos
487 1.1 christos May 23, 2010:
488 1.1 christos fixed long-standing overflow bug in run.c; many thanks to
489 1.1 christos nelson beebe for spotting it and providing the fix.
490 1.1 christos
491 1.1 christos fixed bug that didn't parse -vd=1 properly; thanks to santiago
492 1.1 christos vila for spotting it.
493 1.1 christos
494 1.1 christos Feb 8, 2010:
495 1.1 christos i give up. replaced isblank with isspace in b.c; there are
496 1.1 christos no consistent header files.
497 1.1 christos
498 1.1 christos Nov 26, 2009:
499 1.1 christos fixed a long-standing issue with when FS takes effect. a
500 1.1 christos change to FS is now noticed immediately for subsequent splits.
501 1.1 christos
502 1.1 christos changed the name getline() to awkgetline() to avoid yet another
503 1.1 christos name conflict somewhere.
504 1.1 christos
505 1.1 christos Feb 11, 2009:
506 1.1 christos temporarily for now defined HAS_ISBLANK, since that seems to
507 1.1 christos be the best way through the thicket. isblank arrived in C99,
508 1.1 christos but seems to be arriving at different systems at different
509 1.1 christos times.
510 1.1 christos
511 1.1 christos Oct 8, 2008:
512 1.1 christos fixed typo in b.c that set tmpvec wrongly. no one had ever
513 1.1 christos run into the problem, apparently. thanks to alistair crooks.
514 1.1 christos
515 1.1 christos Oct 23, 2007:
516 1.1 christos minor fix in lib.c: increase inputFS to 100, change malloc
517 1.1 christos for fields to n+1.
518 1.1 christos
519 1.1 christos fixed memory fault caused by out of order test in setsval.
520 1.1 christos
521 1.1 christos thanks to david o'brien, freebsd, for both fixes.
522 1.1 christos
523 1.1 christos May 1, 2007:
524 1.1 christos fiddle in makefile to fix for BSD make; thanks to igor sobrado.
525 1.1 christos
526 1.1 christos Mar 31, 2007:
527 1.1 christos fixed some null pointer refs calling adjbuf.
528 1.1 christos
529 1.1 christos Feb 21, 2007:
530 1.1 christos fixed a bug in matching the null RE in sub and gsub. thanks to al aho
531 1.1 christos who actually did the fix (in b.c), and to wolfgang seeberg for finding
532 1.1 christos it and providing a very compact test case.
533 1.1 christos
534 1.1 christos fixed quotation in b.c; thanks to Hal Pratt and the Princeton Dante
535 1.1 christos Project.
536 1.1 christos
537 1.1 christos removed some no-effect asserts in run.c.
538 1.1 christos
539 1.1 christos fiddled maketab.c to not complain about bison-generated values.
540 1.1 christos
541 1.1 christos removed the obsolete -V argument; fixed --version to print the
542 1.1 christos version and exit.
543 1.1 christos
544 1.1 christos fixed wording and an outright error in the usage message; thanks to igor
545 1.1 christos sobrado and jason mcintyre.
546 1.1 christos
547 1.1 christos fixed a bug in -d that caused core dump if no program followed.
548 1.1 christos
549 1.1 christos Jan 1, 2007:
550 1.1 christos dropped mac.code from makefile; there are few non-MacOSX
551 1.1 christos mac's these days.
552 1.1 christos
553 1.1 christos Jan 17, 2006:
554 1.1 christos system() not flagged as unsafe in the unadvertised -safe option.
555 1.1 christos found it while enhancing tests before shipping the ;login: article.
556 1.1 christos practice what you preach.
557 1.1 christos
558 1.1 christos removed the 9-years-obsolete -mr and -mf flags.
559 1.1 christos
560 1.1 christos added -version and --version options.
561 1.1 christos
562 1.1 christos core dump on linux with BEGIN {nextfile}, now fixed.
563 1.1 christos
564 1.1 christos removed some #ifdef's in run.c and lex.c that appear to no
565 1.1 christos longer be necessary.
566 1.1 christos
567 1.1 christos Apr 24, 2005:
568 1.1 christos modified lib.c so that values of $0 et al are preserved in the END
569 1.1 christos block, apparently as required by posix. thanks to havard eidnes
570 1.1 christos for the report and code.
571 1.1 christos
572 1.1 christos Jan 14, 2005:
573 1.1 christos fixed infinite loop in parsing, originally found by brian tsang.
574 1.1 christos thanks to arnold robbins for a suggestion that started me
575 1.1 christos rethinking it.
576 1.1 christos
577 1.1 christos Dec 31, 2004:
578 1.1 christos prevent overflow of -f array in main, head off potential error in
579 1.1 christos call of SYNTAX(), test malloc return in lib.c, all with thanks to
580 1.1 christos todd miller.
581 1.1 christos
582 1.1 christos Dec 22, 2004:
583 1.1 christos cranked up size of NCHARS; coverity thinks it can be overrun with
584 1.1 christos smaller size, and i think that's right. added some assertions to b.c
585 1.1 christos to catch places where it might overrun. the RE code is still fragile.
586 1.1 christos
587 1.1 christos Dec 5, 2004:
588 1.1 christos fixed a couple of overflow problems with ridiculous field numbers:
589 1.1 christos e.g., print $(2^32-1). thanks to ruslan ermilov, giorgos keramidas
590 1.1 christos and david o'brien at freebsd.org for patches. this really should
591 1.1 christos be re-done from scratch.
592 1.1 christos
593 1.1 christos Nov 21, 2004:
594 1.1 christos fixed another 25-year-old RE bug, in split. it's another failure
595 1.1 christos to (re-)initialize. thanks to steve fisher for spotting this and
596 1.1 christos providing a good test case.
597 1.1 christos
598 1.1 christos Nov 22, 2003:
599 1.1 christos fixed a bug in regular expressions that dates (so help me) from 1977;
600 1.1 christos it's been there from the beginning. an anchored longest match that
601 1.1 christos was longer than the number of states triggered a failure to initialize
602 1.1 christos the machine properly. many thanks to moinak ghosh for not only finding
603 1.1 christos this one but for providing a fix, in some of the most mysterious
604 1.1 christos code known to man.
605 1.1 christos
606 1.1 christos fixed a storage leak in call() that appears to have been there since
607 1.1 christos 1983 or so -- a function without an explicit return that assigns a
608 1.1 christos string to a parameter leaked a Cell. thanks to moinak ghosh for
609 1.1 christos spotting this very subtle one.
610 1.1 christos
611 1.1 christos Jul 31, 2003:
612 1.1 christos fixed, thanks to andrey chernov and ruslan ermilov, a bug in lex.c
613 1.1 christos that mis-handled the character 255 in input. (it was being compared
614 1.1 christos to EOF with a signed comparison.)
615 1.1 christos
616 1.1 christos Jul 29, 2003:
617 1.1 christos fixed (i think) the long-standing botch that included the beginning of
618 1.1 christos line state ^ for RE's in the set of valid characters; this led to a
619 1.1 christos variety of odd problems, including failure to properly match certain
620 1.1 christos regular expressions in non-US locales. thanks to ruslan for keeping
621 1.1 christos at this one.
622 1.1 christos
623 1.1 christos Jul 28, 2003:
624 1.1 christos n-th try at getting internationalization right, with thanks to volker
625 1.1 christos kiefel, arnold robbins and ruslan ermilov for advice, though they
626 1.1 christos should not be blamed for the outcome. according to posix, "." is the
627 1.1 christos radix character in programs and command line arguments regardless of
628 1.1 christos the locale; otherwise, the locale should prevail for input and output
629 1.1 christos of numbers. so it's intended to work that way.
630 1.1 christos
631 1.1 christos i have rescinded the attempt to use strcoll in expanding shorthands in
632 1.1 christos regular expressions (cclenter). its properties are much too
633 1.1 christos surprising; for example [a-c] matches aAbBc in locale en_US but abBcC
634 1.1 christos in locale fr_CA. i can see how this might arise by implementation
635 1.1 christos but i cannot explain it to a human user. (this behavior can be seen
636 1.1 christos in gawk as well; we're leaning on the same library.)
637 1.1 christos
638 1.1 christos the issue appears to be that strcoll is meant for sorting, where
639 1.1 christos merging upper and lower case may make sense (though note that unix
640 1.1 christos sort does not do this by default either). it is not appropriate
641 1.1 christos for regular expressions, where the goal is to match specific
642 1.1 christos patterns of characters. in any case, the notations [:lower:], etc.,
643 1.1 christos are available in awk, and they are more likely to work correctly in
644 1.1 christos most locales.
645 1.1 christos
646 1.1 christos a moratorium is hereby declared on internationalization changes.
647 1.1 christos i apologize to friends and colleagues in other parts of the world.
648 1.1 christos i would truly like to get this "right", but i don't know what
649 1.1 christos that is, and i do not want to keep making changes until it's clear.
650 1.1 christos
651 1.1 christos Jul 4, 2003:
652 1.1 christos fixed bug that permitted non-terminated RE, as in "awk /x".
653 1.1 christos
654 1.1 christos Jun 1, 2003:
655 1.1 christos subtle change to split: if source is empty, number of elems
656 1.1 christos is always 0 and the array is not set.
657 1.1 christos
658 1.1 christos Mar 21, 2003:
659 1.1 christos added some parens to isblank, in another attempt to make things
660 1.1 christos internationally portable.
661 1.1 christos
662 1.1 christos Mar 14, 2003:
663 1.1 christos the internationalization changes, somewhat modified, are now
664 1.1 christos reinstated. in theory awk will now do character comparisons
665 1.1 christos and case conversions in national language, but "." will always
666 1.1 christos be the decimal point separator on input and output regardless
667 1.1 christos of national language. isblank(){} has an #ifndef.
668 1.1 christos
669 1.1 christos this no longer compiles on windows: LC_MESSAGES isn't defined
670 1.1 christos in vc6++.
671 1.1 christos
672 1.1 christos fixed subtle behavior in field and record splitting: if FS is
673 1.1 christos a single character and RS is not empty, \n is NOT a separator.
674 1.1 christos this tortuous reading is found in the awk book; behavior now
675 1.1 christos matches gawk and mawk.
676 1.1 christos
677 1.1 christos Dec 13, 2002:
678 1.1 christos for the moment, the internationalization changes of nov 29 are
679 1.1 christos rolled back -- programs like x = 1.2 don't work in some locales,
680 1.1 christos because the parser is expecting x = 1,2. until i understand this
681 1.1 christos better, this will have to wait.
682 1.1 christos
683 1.1 christos Nov 29, 2002:
684 1.1 christos modified b.c (with tiny changes in main and run) to support
685 1.1 christos locales, using strcoll and iswhatever tests for posix character
686 1.1 christos classes. thanks to ruslan ermilov (ru@freebsd.org) for code.
687 1.1 christos the function isblank doesn't seem to have propagated to any
688 1.1 christos header file near me, so it's there explicitly. not properly
689 1.1 christos tested on non-ascii character sets by me.
690 1.1 christos
691 1.1 christos Jun 28, 2002:
692 1.1 christos modified run/format() and tran/getsval() to do a slightly better
693 1.1 christos job on using OFMT for output from print and CONVFMT for other
694 1.1 christos number->string conversions, as promised by posix and done by
695 1.1 christos gawk and mawk. there are still places where it doesn't work
696 1.1 christos right if CONVFMT is changed; by then the STR attribute of the
697 1.1 christos variable has been irrevocably set. thanks to arnold robbins for
698 1.1 christos code and examples.
699 1.1 christos
700 1.1 christos fixed subtle bug in format that could get core dump. thanks to
701 1.1 christos Jaromir Dolecek <jdolecek (at) NetBSD.org> for finding and fixing.
702 1.1 christos minor cleanup in run.c / format() at the same time.
703 1.1 christos
704 1.1 christos added some tests for null pointers to debugging printf's, which
705 1.1 christos were never intended for external consumption. thanks to dave
706 1.1 christos kerns (dkerns@lucent.com) for pointing this out.
707 1.1 christos
708 1.1 christos GNU compatibility: an empty regexp matches anything (thanks to
709 1.1 christos dag-erling smorgrav, des@ofug.org). subject to reversion if
710 1.1 christos this does more harm than good.
711 1.1 christos
712 1.1 christos pervasive small changes to make things more const-correct, as
713 1.1 christos reported by gcc's -Wwrite-strings. as it says in the gcc manual,
714 1.1 christos this may be more nuisance than useful. provoked by a suggestion
715 1.1 christos and code from arnaud desitter, arnaud (at) nimbus.geog.ox.ac.uk
716 1.1 christos
717 1.1 christos minor documentation changes to note that this now compiles out
718 1.1 christos of the box on Mac OS X.
719 1.1 christos
720 1.1 christos Feb 10, 2002:
721 1.1 christos changed types in posix chars structure to quiet solaris cc.
722 1.1 christos
723 1.1 christos Jan 1, 2002:
724 1.1 christos fflush() or fflush("") flushes all files and pipes.
725 1.1 christos
726 1.1 christos length(arrayname) returns number of elements; thanks to
727 1.1 christos arnold robbins for suggestion.
728 1.1 christos
729 1.1 christos added a makefile.win to make it easier to build on windows.
730 1.1 christos based on dan allen's buildwin.bat.
731 1.1 christos
732 1.1 christos Nov 16, 2001:
733 1.1 christos added support for posix character class names like [:digit:],
734 1.1 christos which are not exactly shorter than [0-9] and perhaps no more
735 1.1 christos portable. thanks to dag-erling smorgrav for code.
736 1.1 christos
737 1.1 christos Feb 16, 2001:
738 1.1 christos removed -m option; no longer needed, and it was actually
739 1.1 christos broken (noted thanks to volker kiefel).
740 1.1 christos
741 1.1 christos Feb 10, 2001:
742 1.1 christos fixed an appalling bug in gettok: any sequence of digits, +,-, E, e,
743 1.1 christos and period was accepted as a valid number if it started with a period.
744 1.1 christos this would never have happened with the lex version.
745 1.1 christos
746 1.1 christos other 1-character botches, now fixed, include a bare $ and a
747 1.1 christos bare " at the end of the input.
748 1.1 christos
749 1.1 christos Feb 7, 2001:
750 1.1 christos more (const char *) casts in b.c and tran.c to silence warnings.
751 1.1 christos
752 1.1 christos Nov 15, 2000:
753 1.1 christos fixed a bug introduced in august 1997 that caused expressions
754 1.1 christos like $f[1] to be syntax errors. thanks to arnold robbins for
755 1.1 christos noticing this and providing a fix.
756 1.1 christos
757 1.1 christos Oct 30, 2000:
758 1.1 christos fixed some nextfile bugs: not handling all cases. thanks to
759 1.1 christos arnold robbins for pointing this out. new regressions added.
760 1.1 christos
761 1.1 christos close() is now a function. it returns whatever the library
762 1.1 christos fclose returns, and -1 for closing a file or pipe that wasn't
763 1.1 christos opened.
764 1.1 christos
765 1.1 christos Sep 24, 2000:
766 1.1 christos permit \n explicitly in character classes; won't work right
767 1.1 christos if comes in as "[\n]" but ok as /[\n]/, because of multiple
768 1.1 christos processing of \'s. thanks to arnold robbins.
769 1.1 christos
770 1.1 christos July 5, 2000:
771 1.1 christos minor fiddles in tran.c to keep compilers happy about uschar.
772 1.1 christos thanks to norman wilson.
773 1.1 christos
774 1.1 christos May 25, 2000:
775 1.1 christos yet another attempt at making 8-bit input work, with another
776 1.1 christos band-aid in b.c (member()), and some (uschar) casts to head
777 1.1 christos off potential errors in subscripts (like isdigit). also
778 1.1 christos changed HAT to NCHARS-2. thanks again to santiago vila.
779 1.1 christos
780 1.1 christos changed maketab.c to ignore apparently out of range definitions
781 1.1 christos instead of halting; new freeBSD generates one. thanks to
782 1.1 christos jon snader <jsnader (at) ix.netcom.com> for pointing out the problem.
783 1.1 christos
784 1.1 christos May 2, 2000:
785 1.1 christos fixed an 8-bit problem in b.c by making several char*'s into
786 1.1 christos unsigned char*'s. not clear i have them all yet. thanks to
787 1.1 christos Santiago Vila <sanvila (at) unex.es> for the bug report.
788 1.1 christos
789 1.1 christos Apr 21, 2000:
790 1.1 christos finally found and fixed a memory leak in function call; it's
791 1.1 christos been there since functions were added ~1983. thanks to
792 1.1 christos jon bentley for the test case that found it.
793 1.1 christos
794 1.1 christos added test in envinit to catch environment "variables" with
795 1.1 christos names beginning with '='; thanks to Berend Hasselman.
796 1.1 christos
797 1.1 christos Jul 28, 1999:
798 1.1 christos added test in defn() to catch function foo(foo), which
799 1.1 christos otherwise recurses until core dump. thanks to arnold
800 1.1 christos robbins for noticing this.
801 1.1 christos
802 1.1 christos Jun 20, 1999:
803 1.1 christos added *bp in gettok in lex.c; appears possible to exit function
804 1.1 christos without terminating the string. thanks to russ cox.
805 1.1 christos
806 1.1 christos Jun 2, 1999:
807 1.1 christos added function stdinit() to run to initialize files[] array,
808 1.1 christos in case stdin, etc., are not constants; some compilers care.
809 1.1 christos
810 1.1 christos May 10, 1999:
811 1.1 christos replaced the ERROR ... FATAL, etc., macros with functions
812 1.1 christos based on vprintf, to avoid problems caused by overrunning
813 1.1 christos fixed-size errbuf array. thanks to ralph corderoy for the
814 1.1 christos impetus, and for pointing out a string termination bug in
815 1.1 christos qstring as well.
816 1.1 christos
817 1.1 christos Apr 21, 1999:
818 1.1 christos fixed bug that caused occasional core dumps with commandline
819 1.1 christos variable with value ending in \. (thanks to nelson beebe for
820 1.1 christos the test case.)
821 1.1 christos
822 1.1 christos Apr 16, 1999:
823 1.1 christos with code kindly provided by Bruce Lilly, awk now parses
824 1.1 christos /=/ and similar constructs more sensibly in more places.
825 1.1 christos Bruce also provided some helpful test cases.
826 1.1 christos
827 1.1 christos Apr 5, 1999:
828 1.1 christos changed true/false to True/False in run.c to make it
829 1.1 christos easier to compile with C++. Added some casts on malloc
830 1.1 christos and realloc to be honest about casts; ditto. changed
831 1.1 christos ltype int to long in struct rrow to reduce some 64-bit
832 1.1 christos complaints; other changes scattered throughout for the
833 1.1 christos same purpose. thanks to Nelson Beebe for these portability
834 1.1 christos improvements.
835 1.1 christos
836 1.1 christos removed some horrible pointer-int casting in b.c and elsewhere
837 1.1 christos by adding ptoi and itonp to localize the casts, which are
838 1.1 christos all benign. fixed one incipient bug that showed up on sgi
839 1.1 christos in 64-bit mode.
840 1.1 christos
841 1.1 christos reset lineno for new source file; include filename in error
842 1.1 christos message. also fixed line number error in continuation lines.
843 1.1 christos (thanks to Nelson Beebe for both of these.)
844 1.1 christos
845 1.1 christos Mar 24, 1999:
846 1.1 christos Nelson Beebe notes that irix 5.3 yacc dies with a bogus
847 1.1 christos error; use a newer version or switch to bison, since sgi
848 1.1 christos is unlikely to fix it.
849 1.1 christos
850 1.1 christos Mar 5, 1999:
851 1.1 christos changed isnumber to is_number to avoid the problem caused by
852 1.1 christos versions of ctype.h that include the name isnumber.
853 1.1 christos
854 1.1 christos distribution now includes a script for building on a Mac,
855 1.1 christos thanks to Dan Allen.
856 1.1 christos
857 1.1 christos Feb 20, 1999:
858 1.1 christos fixed memory leaks in run.c (call) and tran.c (setfval).
859 1.1 christos thanks to Stephen Nutt for finding these and providing the fixes.
860 1.1 christos
861 1.1 christos Jan 13, 1999:
862 1.1 christos replaced srand argument by (unsigned int) in run.c;
863 1.1 christos avoids problem on Mac and potentially on Unix & Windows.
864 1.1 christos thanks to Dan Allen.
865 1.1 christos
866 1.1 christos added a few (int) casts to silence useless compiler warnings.
867 1.1 christos e.g., errorflag= in run.c jump().
868 1.1 christos
869 1.1 christos added proctab.c to the bundle output; one less thing
870 1.1 christos to have to compile out of the box.
871 1.1 christos
872 1.1 christos added calls to _popen and _pclose to the win95 stub for
873 1.1 christos pipes (thanks to Steve Adams for this helpful suggestion).
874 1.1 christos seems to work, though properties are not well understood
875 1.1 christos by me, and it appears that under some circumstances the
876 1.1 christos pipe output is truncated. Be careful.
877 1.1 christos
878 1.1 christos Oct 19, 1998:
879 1.1 christos fixed a couple of bugs in getrec: could fail to update $0
880 1.1 christos after a getline var; because inputFS wasn't initialized,
881 1.1 christos could split $0 on every character, a misleading diversion.
882 1.1 christos
883 1.1 christos fixed caching bug in makedfa: LRU was actually removing
884 1.1 christos least often used.
885 1.1 christos
886 1.1 christos thanks to ross ridge for finding these, and for providing
887 1.1 christos great bug reports.
888 1.1 christos
889 1.1 christos May 12, 1998:
890 1.1 christos fixed potential bug in readrec: might fail to update record
891 1.1 christos pointer after growing. thanks to dan levy for spotting this
892 1.1 christos and suggesting the fix.
893 1.1 christos
894 1.1 christos Mar 12, 1998:
895 1.1 christos added -V to print version number and die.
896 1.1 christos
897 1.1 christos [notify dave kerns, dkerns (at) dacsoup.ih.lucent.com]
898 1.1 christos
899 1.1 christos Feb 11, 1998:
900 1.1 christos subtle silent bug in lex.c: if the program ended with a number
901 1.1 christos longer than 1 digit, part of the input would be pushed back and
902 1.1 christos parsed again because token buffer wasn't terminated right.
903 1.1 christos example: awk 'length($0) > 10'. blush. at least i found it
904 1.1 christos myself.
905 1.1 christos
906 1.1 christos Aug 31, 1997:
907 1.1 christos s/adelete/awkdelete/: SGI uses this in malloc.h.
908 1.1 christos thanks to nelson beebe for pointing this one out.
909 1.1 christos
910 1.1 christos Aug 21, 1997:
911 1.1 christos fixed some bugs in sub and gsub when replacement includes \\.
912 1.1 christos this is a dark, horrible corner, but at least now i believe that
913 1.1 christos the behavior is the same as gawk and the intended posix standard.
914 1.1 christos thanks to arnold robbins for advice here.
915 1.1 christos
916 1.1 christos Aug 9, 1997:
917 1.1 christos somewhat regretfully, replaced the ancient lex-based lexical
918 1.1 christos analyzer with one written in C. it's longer, generates less code,
919 1.1 christos and more portable; the old one depended too much on mysterious
920 1.1 christos properties of lex that were not preserved in other environments.
921 1.1 christos in theory these recognize the same language.
922 1.1 christos
923 1.1 christos now using strtod to test whether a string is a number, instead of
924 1.1 christos the convoluted original function. should be more portable and
925 1.1 christos reliable if strtod is implemented right.
926 1.1 christos
927 1.1 christos removed now-pointless optimization in makefile that tries to avoid
928 1.1 christos recompilation when awkgram.y is changed but symbols are not.
929 1.1 christos
930 1.1 christos removed most fixed-size arrays, though a handful remain, some
931 1.1 christos of which are unchecked. you have been warned.
932 1.1 christos
933 1.1 christos Aug 4, 1997:
934 1.1 christos with some trepidation, replaced the ancient code that managed
935 1.1 christos fields and $0 in fixed-size arrays with arrays that grow on
936 1.1 christos demand. there is still some tension between trying to make this
937 1.1 christos run fast and making it clean; not sure it's right yet.
938 1.1 christos
939 1.1 christos the ill-conceived -mr and -mf arguments are now useful only
940 1.1 christos for debugging. previous dynamic string code removed.
941 1.1 christos
942 1.1 christos numerous other minor cleanups along the way.
943 1.1 christos
944 1.1 christos Jul 30, 1997:
945 1.1 christos using code provided by dan levy (to whom profuse thanks), replaced
946 1.1 christos fixed-size arrays and awkward kludges by a fairly uniform mechanism
947 1.1 christos to grow arrays as needed for printf, sub, gsub, etc.
948 1.1 christos
949 1.1 christos Jul 23, 1997:
950 1.1 christos falling off the end of a function returns "" and 0, not 0.
951 1.1 christos thanks to arnold robbins.
952 1.1 christos
953 1.1 christos Jun 17, 1997:
954 1.1 christos replaced several fixed-size arrays by dynamically-created ones
955 1.1 christos in run.c; added overflow tests to some previously unchecked cases.
956 1.1 christos getline, toupper, tolower.
957 1.1 christos
958 1.1 christos getline code is still broken in that recursive calls may wind
959 1.1 christos up using the same space. [fixed later]
960 1.1 christos
961 1.1 christos increased RECSIZE to 8192 to push problems further over the horizon.
962 1.1 christos
963 1.1 christos added \r to \n as input line separator for programs, not data.
964 1.1 christos damn CRLFs.
965 1.1 christos
966 1.1 christos modified format() to permit explicit printf("%c", 0) to include
967 1.1 christos a null byte in output. thanks to ken stailey for the fix.
968 1.1 christos
969 1.1 christos added a "-safe" argument that disables file output (print >,
970 1.1 christos print >>), process creation (cmd|getline, print |, system), and
971 1.1 christos access to the environment (ENVIRON). this is a first approximation
972 1.1 christos to a "safe" version of awk, but don't rely on it too much. thanks
973 1.1 christos to joan feigenbaum and matt blaze for the inspiration long ago.
974 1.1 christos
975 1.1 christos Jul 8, 1996:
976 1.1 christos fixed long-standing bug in sub, gsub(/a/, "\\\\&"); thanks to
977 1.1 christos ralph corderoy.
978 1.1 christos
979 1.1 christos Jun 29, 1996:
980 1.1 christos fixed awful bug in new field splitting; didn't get all the places
981 1.1 christos where input was done.
982 1.1 christos
983 1.1 christos Jun 28, 1996:
984 1.1 christos changed field-splitting to conform to posix definition: fields are
985 1.1 christos split using the value of FS at the time of input; it used to be
986 1.1 christos the value when the field or NF was first referred to, a much less
987 1.1 christos predictable definition. thanks to arnold robbins for encouragement
988 1.1 christos to do the right thing.
989 1.1 christos
990 1.1 christos May 28, 1996:
991 1.1 christos fixed appalling but apparently unimportant bug in parsing octal
992 1.1 christos numbers in reg exprs.
993 1.1 christos
994 1.1 christos explicit hex in reg exprs now limited to 2 chars: \xa, \xaa.
995 1.1 christos
996 1.1 christos May 27, 1996:
997 1.1 christos cleaned up some declarations so gcc -Wall is now almost silent.
998 1.1 christos
999 1.1 christos makefile now includes backup copies of ytab.c and lexyy.c in case
1000 1.1 christos one makes before looking; it also avoids recreating lexyy.c unless
1001 1.1 christos really needed.
1002 1.1 christos
1003 1.1 christos s/aprintf/awkprint, s/asprintf/awksprintf/ to avoid some name clashes
1004 1.1 christos with unwisely-written header files.
1005 1.1 christos
1006 1.1 christos thanks to jeffrey friedl for several of these.
1007 1.1 christos
1008 1.1 christos May 26, 1996:
1009 1.1 christos an attempt to rationalize the (unsigned) char issue. almost all
1010 1.1 christos instances of unsigned char have been removed; the handful of places
1011 1.1 christos in b.c where chars are used as table indices have been hand-crafted.
1012 1.1 christos added some latin-1 tests to the regression, but i'm not confident;
1013 1.1 christos none of my compilers seem to care much. thanks to nelson beebe for
1014 1.1 christos pointing out some others that do care.
1015 1.1 christos
1016 1.1 christos May 2, 1996:
1017 1.1 christos removed all register declarations.
1018 1.1 christos
1019 1.1 christos enhanced split(), as in gawk, etc: split(s, a, "") splits s into
1020 1.1 christos a[1]...a[length(s)] with each character a single element.
1021 1.1 christos
1022 1.1 christos made the same changes for field-splitting if FS is "".
1023 1.1 christos
1024 1.1 christos added nextfile, as in gawk: causes immediate advance to next
1025 1.1 christos input file. (thanks to arnold robbins for inspiration and code).
1026 1.1 christos
1027 1.1 christos small fixes to regexpr code: can now handle []], [[], and
1028 1.1 christos variants; [] is now a syntax error, rather than matching
1029 1.1 christos everything; [z-a] is now empty, not z. far from complete
1030 1.1 christos or correct, however. (thanks to jeffrey friedl for pointing out
1031 1.1 christos some awful behaviors.)
1032 1.1 christos
1033 1.1 christos Apr 29, 1996:
1034 1.1 christos replaced uchar by uschar everywhere; apparently some compilers
1035 1.1 christos usurp this name and this causes conflicts.
1036 1.1 christos
1037 1.1 christos fixed call to time in run.c (bltin); arg is time_t *.
1038 1.1 christos
1039 1.1 christos replaced horrible pointer/long punning in b.c by a legitimate
1040 1.1 christos union. should be safer on 64-bit machines and cleaner everywhere.
1041 1.1 christos (thanks to nelson beebe for pointing out some of these problems.)
1042 1.1 christos
1043 1.1 christos replaced nested comments by #if 0...#endif in run.c, lib.c.
1044 1.1 christos
1045 1.1 christos removed getsval, setsval, execute macros from run.c and lib.c.
1046 1.1 christos machines are 100x faster than they were when these macros were
1047 1.1 christos first used.
1048 1.1 christos
1049 1.1 christos revised filenames: awk.g.y => awkgram.y, awk.lx.l => awklex.l,
1050 1.1 christos y.tab.[ch] => ytab.[ch], lex.yy.c => lexyy.c, all in the aid of
1051 1.1 christos portability to nameless systems.
1052 1.1 christos
1053 1.1 christos "make bundle" now includes yacc and lex output files for recipients
1054 1.1 christos who don't have yacc or lex.
1055 1.1 christos
1056 1.1 christos Aug 15, 1995:
1057 1.1 christos initialized Cells in setsymtab more carefully; some fields
1058 1.1 christos were not set. (thanks to purify, all of whose complaints i
1059 1.1 christos think i now understand.)
1060 1.1 christos
1061 1.1 christos fixed at least one error in gsub that looked at -1-th element
1062 1.1 christos of an array when substituting for a null match (e.g., $).
1063 1.1 christos
1064 1.1 christos delete arrayname is now legal; it clears the elements but leaves
1065 1.1 christos the array, which may not be the right behavior.
1066 1.1 christos
1067 1.1 christos modified makefile: my current make can't cope with the test used
1068 1.1 christos to avoid unnecessary yacc invocations.
1069 1.1 christos
1070 1.1 christos Jul 17, 1995:
1071 1.1 christos added dynamically growing strings to awk.lx.l and b.c
1072 1.1 christos to permit regular expressions to be much bigger.
1073 1.1 christos the state arrays can still overflow.
1074 1.1 christos
1075 1.1 christos Aug 24, 1994:
1076 1.1 christos detect duplicate arguments in function definitions (mdm).
1077 1.1 christos
1078 1.1 christos May 11, 1994:
1079 1.1 christos trivial fix to printf to limit string size in sub().
1080 1.1 christos
1081 1.1 christos Apr 22, 1994:
1082 1.1 christos fixed yet another subtle self-assignment problem:
1083 1.1 christos $1 = $2; $1 = $1 clobbered $1.
1084 1.1 christos
1085 1.1 christos Regression tests now use private echo, to avoid quoting problems.
1086 1.1 christos
1087 1.1 christos Feb 2, 1994:
1088 1.1 christos changed error() to print line number as %d, not %g.
1089 1.1 christos
1090 1.1 christos Jul 23, 1993:
1091 1.1 christos cosmetic changes: increased sizes of some arrays,
1092 1.1 christos reworded some error messages.
1093 1.1 christos
1094 1.1 christos added CONVFMT as in posix (just replaced OFMT in getsval)
1095 1.1 christos
1096 1.1 christos FILENAME is now "" until the first thing that causes a file
1097 1.1 christos to be opened.
1098 1.1 christos
1099 1.1 christos Nov 28, 1992:
1100 1.1 christos deleted yyunput and yyoutput from proto.h;
1101 1.1 christos different versions of lex give these different declarations.
1102 1.1 christos
1103 1.1 christos May 31, 1992:
1104 1.1 christos added -mr N and -mf N options: more record and fields.
1105 1.1 christos these really ought to adjust automatically.
1106 1.1 christos
1107 1.1 christos cleaned up some error messages; "out of space" now means
1108 1.1 christos malloc returned NULL in all cases.
1109 1.1 christos
1110 1.1 christos changed rehash so that if it runs out, it just returns;
1111 1.1 christos things will continue to run slow, but maybe a bit longer.
1112 1.1 christos
1113 1.1 christos Apr 24, 1992:
1114 1.1 christos remove redundant close of stdin when using -f -.
1115 1.1 christos
1116 1.1 christos got rid of core dump with -d; awk -d just prints date.
1117 1.1 christos
1118 1.1 christos Apr 12, 1992:
1119 1.1 christos added explicit check for /dev/std(in,out,err) in redirection.
1120 1.1 christos unlike gawk, no /dev/fd/n yet.
1121 1.1 christos
1122 1.1 christos added (file/pipe) builtin. hard to test satisfactorily.
1123 1.1 christos not posix.
1124 1.1 christos
1125 1.1 christos Feb 20, 1992:
1126 1.1 christos recompile after abortive changes; should be unchanged.
1127 1.1 christos
1128 1.1 christos Dec 2, 1991:
1129 1.1 christos die-casting time: converted to ansi C, installed that.
1130 1.1 christos
1131 1.1 christos Nov 30, 1991:
1132 1.1 christos fixed storage leak in freefa, failing to recover [N]CCL.
1133 1.1 christos thanks to Bill Jones (jones (at) cs.usask.ca)
1134 1.1 christos
1135 1.1 christos Nov 19, 1991:
1136 1.1 christos use RAND_MAX instead of literal in builtin().
1137 1.1 christos
1138 1.1 christos Nov 12, 1991:
1139 1.1 christos cranked up some fixed-size arrays in b.c, and added a test for
1140 1.1 christos overflow in penter. thanks to mark larsen.
1141 1.1 christos
1142 1.1 christos Sep 24, 1991:
1143 1.1 christos increased buffer in gsub. a very crude fix to a general problem.
1144 1.1 christos and again on Sep 26.
1145 1.1 christos
1146 1.1 christos Aug 18, 1991:
1147 1.1 christos enforce variable name syntax for commandline variables: has to
1148 1.1 christos start with letter or _.
1149 1.1 christos
1150 1.1 christos Jul 27, 1991:
1151 1.1 christos allow newline after ; in for statements.
1152 1.1 christos
1153 1.1 christos Jul 21, 1991:
1154 1.1 christos fixed so that in self-assignment like $1=$1, side effects
1155 1.1 christos like recomputing $0 take place. (this is getting subtle.)
1156 1.1 christos
1157 1.1 christos Jun 30, 1991:
1158 1.1 christos better test for detecting too-long output record.
1159 1.1 christos
1160 1.1 christos Jun 2, 1991:
1161 1.1 christos better defense against very long printf strings.
1162 1.1 christos made break and continue illegal outside of loops.
1163 1.1 christos
1164 1.1 christos May 13, 1991:
1165 1.1 christos removed extra arg on gettemp, tempfree. minor error message rewording.
1166 1.1 christos
1167 1.1 christos May 6, 1991:
1168 1.1 christos fixed silly bug in hex parsing in hexstr().
1169 1.1 christos removed an apparently unnecessary test in isnumber().
1170 1.1 christos warn about weird printf conversions.
1171 1.1 christos fixed unchecked array overwrite in relex().
1172 1.1 christos
1173 1.1 christos changed for (i in array) to access elements in sorted order.
1174 1.1 christos then unchanged it -- it really does run slower in too many cases.
1175 1.1 christos left the code in place, commented out.
1176 1.1 christos
1177 1.1 christos Feb 10, 1991:
1178 1.1 christos check error status on all writes, to avoid banging on full disks.
1179 1.1 christos
1180 1.1 christos Jan 28, 1991:
1181 1.1 christos awk -f - reads the program from stdin.
1182 1.1 christos
1183 1.1 christos Jan 11, 1991:
1184 1.1 christos failed to set numeric state on $0 in cmd|getline context in run.c.
1185 1.1 christos
1186 1.1 christos Nov 2, 1990:
1187 1.1 christos fixed sleazy test for integrality in getsval; use modf.
1188 1.1 christos
1189 1.1 christos Oct 29, 1990:
1190 1.1 christos fixed sleazy buggy code in lib.c that looked (incorrectly) for
1191 1.1 christos too long input lines.
1192 1.1 christos
1193 1.1 christos Oct 14, 1990:
1194 1.1 christos fixed the bug on p. 198 in which it couldn't deduce that an
1195 1.1 christos argument was an array in some contexts. replaced the error
1196 1.1 christos message in intest() by code that damn well makes it an array.
1197 1.1 christos
1198 1.1 christos Oct 8, 1990:
1199 1.1 christos fixed horrible bug: types and values were not preserved in
1200 1.1 christos some kinds of self-assignment. (in assign().)
1201 1.1 christos
1202 1.1 christos Aug 24, 1990:
1203 1.1 christos changed NCHARS to 256 to handle 8-bit characters in strings
1204 1.1 christos presented to match(), etc.
1205 1.1 christos
1206 1.1 christos Jun 26, 1990:
1207 1.1 christos changed struct rrow (awk.h) to use long instead of int for lval,
1208 1.1 christos since cfoll() stores a pointer in it. now works better when int's
1209 1.1 christos are smaller than pointers!
1210 1.1 christos
1211 1.1 christos May 6, 1990:
1212 1.1 christos AVA fixed the grammar so that ! is uniformly of the same precedence as
1213 1.1 christos unary + and -. This renders illegal some constructs like !x=y, which
1214 1.1 christos now has to be parenthesized as !(x=y), and makes others work properly:
1215 1.1 christos !x+y is (!x)+y, and x!y is x !y, not two pattern-action statements.
1216 1.1 christos (These problems were pointed out by Bob Lenk of Posix.)
1217 1.1 christos
1218 1.1 christos Added \x to regular expressions (already in strings).
1219 1.1 christos Limited octal to octal digits; \8 and \9 are not octal.
1220 1.1 christos Centralized the code for parsing escapes in regular expressions.
1221 1.1 christos Added a bunch of tests to T.re and T.sub to verify some of this.
1222 1.1 christos
1223 1.1 christos Feb 9, 1990:
1224 1.1 christos fixed null pointer dereference bug in main.c: -F[nothing]. sigh.
1225 1.1 christos
1226 1.1 christos restored srand behavior: it returns the current seed.
1227 1.1 christos
1228 1.1 christos Jan 18, 1990:
1229 1.1 christos srand now returns previous seed value (0 to start).
1230 1.1 christos
1231 1.1 christos Jan 5, 1990:
1232 1.1 christos fix potential problem in tran.c -- something was freed,
1233 1.1 christos then used in freesymtab.
1234 1.1 christos
1235 1.1 christos Oct 18, 1989:
1236 1.1 christos another try to get the max number of open files set with
1237 1.1 christos relatively machine-independent code.
1238 1.1 christos
1239 1.1 christos small fix to input() in case of multiple reads after EOF.
1240 1.1 christos
1241 1.1 christos Oct 11, 1989:
1242 1.1 christos FILENAME is now defined in the BEGIN block -- too many old
1243 1.1 christos programs broke.
1244 1.1 christos
1245 1.1 christos "-" means stdin in getline as well as on the commandline.
1246 1.1 christos
1247 1.1 christos added a bunch of casts to the code to tell the truth about
1248 1.1 christos char * vs. unsigned char *, a right royal pain. added a
1249 1.1 christos setlocale call to the front of main, though probably no one
1250 1.1 christos has it usefully implemented yet.
1251 1.1 christos
1252 1.1 christos Aug 24, 1989:
1253 1.1 christos removed redundant relational tests against nullnode if parse
1254 1.1 christos tree already had a relational at that point.
1255 1.1 christos
1256 1.1 christos Aug 11, 1989:
1257 1.1 christos fixed bug: commandline variable assignment has to look like
1258 1.1 christos var=something. (consider the man page for =, in file =.1)
1259 1.1 christos
1260 1.1 christos changed number of arguments to functions to static arrays
1261 1.1 christos to avoid repeated malloc calls.
1262 1.1 christos
1263 1.1 christos Aug 2, 1989:
1264 1.1 christos restored -F (space) separator
1265 1.1 christos
1266 1.1 christos Jul 30, 1989:
1267 1.1 christos added -v x=1 y=2 ... for immediate commandline variable assignment;
1268 1.1 christos done before the BEGIN block for sure. they have to precede the
1269 1.1 christos program if the program is on the commandline.
1270 1.1 christos Modified Aug 2 to require a separate -v for each assignment.
1271 1.1 christos
1272 1.1 christos Jul 10, 1989:
1273 1.1 christos fixed ref-thru-zero bug in environment code in tran.c
1274 1.1 christos
1275 1.1 christos Jun 23, 1989:
1276 1.1 christos add newline to usage message.
1277 1.1 christos
1278 1.1 christos Jun 14, 1989:
1279 1.1 christos added some missing ansi printf conversion letters: %i %X %E %G.
1280 1.1 christos no sensible meaning for h or L, so they may not do what one expects.
1281 1.1 christos
1282 1.1 christos made %* conversions work.
1283 1.1 christos
1284 1.1 christos changed x^y so that if n is a positive integer, it's done
1285 1.1 christos by explicit multiplication, thus achieving maximum accuracy.
1286 1.1 christos (this should be done by pow() but it seems not to be locally.)
1287 1.1 christos done to x ^= y as well.
1288 1.1 christos
1289 1.1 christos Jun 4, 1989:
1290 1.1 christos ENVIRON array contains environment: if shell variable V=thing,
1291 1.1 christos ENVIRON["V"] is "thing"
1292 1.1 christos
1293 1.1 christos multiple -f arguments permitted. error reporting is naive.
1294 1.1 christos (they were permitted before, but only the last was used.)
1295 1.1 christos
1296 1.1 christos fixed a really stupid botch in the debugging macro dprintf
1297 1.1 christos
1298 1.1 christos fixed order of evaluation of commandline assignments to match
1299 1.1 christos what the book claims: an argument of the form x=e is evaluated
1300 1.1 christos at the time it would have been opened if it were a filename (p 63).
1301 1.1 christos this invalidates the suggested answer to ex 4-1 (p 195).
1302 1.1 christos
1303 1.1 christos removed some code that permitted -F (space) fieldseparator,
1304 1.1 christos since it didn't quite work right anyway. (restored aug 2)
1305 1.1 christos
1306 1.1 christos Apr 27, 1989:
1307 1.1 christos Line number now accumulated correctly for comment lines.
1308 1.1 christos
1309 1.1 christos Apr 26, 1989:
1310 1.1 christos Debugging output now includes a version date,
1311 1.1 christos if one compiles it into the source each time.
1312 1.1 christos
1313 1.1 christos Apr 9, 1989:
1314 1.1 christos Changed grammar to prohibit constants as 3rd arg of sub and gsub;
1315 1.1 christos prevents class of overwriting-a-constant errors. (Last one?)
1316 1.1 christos This invalidates the "banana" example on page 43 of the book.
1317 1.1 christos
1318 1.1 christos Added \a ("alert"), \v (vertical tab), \xhhh (hexadecimal),
1319 1.1 christos as in ANSI, for strings. Rescinded the sloppiness that permitted
1320 1.1 christos non-octal digits in \ooo. Warning: not all compilers and libraries
1321 1.1 christos will be able to deal with \x correctly.
1322 1.1 christos
1323 1.1 christos Jan 9, 1989:
1324 1.1 christos Fixed bug that caused tempcell list to contain a duplicate.
1325 1.1 christos The fix is kludgy.
1326 1.1 christos
1327 1.1 christos Dec 17, 1988:
1328 1.1 christos Catches some more commandline errors in main.
1329 1.1 christos Removed redundant decl of modf in run.c (confuses some compilers).
1330 1.1 christos Warning: there's no single declaration of malloc, etc., in awk.h
1331 1.1 christos that seems to satisfy all compilers.
1332 1.1 christos
1333 1.1 christos Dec 7, 1988:
1334 1.1 christos Added a bit of code to error printing to avoid printing nulls.
1335 1.1 christos (Not clear that it actually would.)
1336 1.1 christos
1337 1.1 christos Nov 27, 1988:
1338 1.1 christos With fear and trembling, modified the grammar to permit
1339 1.1 christos multiple pattern-action statements on one line without
1340 1.1 christos an explicit separator. By definition, this capitulation
1341 1.1 christos to the ghost of ancient implementations remains undefined
1342 1.1 christos and thus subject to change without notice or apology.
1343 1.1 christos DO NOT COUNT ON IT.
1344 1.1 christos
1345 1.1 christos Oct 30, 1988:
1346 1.1 christos Fixed bug in call() that failed to recover storage.
1347 1.1 christos
1348 1.1 christos A warning is now generated if there are more arguments
1349 1.1 christos in the call than in the definition (in lieu of fixing
1350 1.1 christos another storage leak).
1351 1.1 christos
1352 1.1 christos Oct 20, 1988:
1353 1.1 christos Fixed %c: if expr is numeric, use numeric value;
1354 1.1 christos otherwise print 1st char of string value. still
1355 1.1 christos doesn't work if the value is 0 -- won't print \0.
1356 1.1 christos
1357 1.1 christos Added a few more checks for running out of malloc.
1358 1.1 christos
1359 1.1 christos Oct 12, 1988:
1360 1.1 christos Fixed bug in call() that freed local arrays twice.
1361 1.1 christos
1362 1.1 christos Fixed to handle deletion of non-existent array right;
1363 1.1 christos complains about attempt to delete non-array element.
1364 1.1 christos
1365 1.1 christos Sep 30, 1988:
1366 1.1 christos Now guarantees to evaluate all arguments of built-in
1367 1.1 christos functions, as in C; the appearance is that arguments
1368 1.1 christos are evaluated before the function is called. Places
1369 1.1 christos affected are sub (gsub was ok), substr, printf, and
1370 1.1 christos all the built-in arithmetic functions in bltin().
1371 1.1 christos A warning is generated if a bltin() is called with
1372 1.1 christos the wrong number of arguments.
1373 1.1 christos
1374 1.1 christos This requires changing makeprof on p167 of the book.
1375 1.1 christos
1376 1.1 christos Aug 23, 1988:
1377 1.1 christos setting FILENAME in BEGIN caused core dump, apparently
1378 1.1 christos because it was freeing space not allocated by malloc.
1379 1.1 christos
1380 1.1 christos July 24, 1988:
1381 1.1 christos fixed egregious error in toupper/tolower functions.
1382 1.1 christos still subject to rescinding, however.
1383 1.1 christos
1384 1.1 christos July 2, 1988:
1385 1.1 christos flush stdout before opening file or pipe
1386 1.1 christos
1387 1.1 christos July 2, 1988:
1388 1.1 christos performance bug in b.c/cgoto(): not freeing some sets of states.
1389 1.1 christos partial fix only right now, and the number of states increased
1390 1.1 christos to make it less obvious.
1391 1.1 christos
1392 1.1 christos June 1, 1988:
1393 1.1 christos check error status on close
1394 1.1 christos
1395 1.1 christos May 28, 1988:
1396 1.1 christos srand returns seed value it's using.
1397 1.1 christos see 1/18/90
1398 1.1 christos
1399 1.1 christos May 22, 1988:
1400 1.1 christos Removed limit on depth of function calls.
1401 1.1 christos
1402 1.1 christos May 10, 1988:
1403 1.1 christos Fixed lib.c to permit _ in commandline variable names.
1404 1.1 christos
1405 1.1 christos Mar 25, 1988:
1406 1.1 christos main.c fixed to recognize -- as terminator of command-
1407 1.1 christos line options. Illegal options flagged.
1408 1.1 christos Error reporting slightly cleaned up.
1409 1.1 christos
1410 1.1 christos Dec 2, 1987:
1411 1.1 christos Newer C compilers apply a strict scope rule to extern
1412 1.1 christos declarations within functions. Two extern declarations in
1413 1.1 christos lib.c and tran.c have been moved to obviate this problem.
1414 1.1 christos
1415 1.1 christos Oct xx, 1987:
1416 1.1 christos Reluctantly added toupper and tolower functions.
1417 1.1 christos Subject to rescinding without notice.
1418 1.1 christos
1419 1.1 christos Sep 17, 1987:
1420 1.1 christos Error-message printer had printf(s) instead of
1421 1.1 christos printf("%s",s); got core dumps when the message
1422 1.1 christos included a %.
1423 1.1 christos
1424 1.1 christos Sep 12, 1987:
1425 1.1 christos Very long printf strings caused core dump;
1426 1.1 christos fixed aprintf, asprintf, format to catch them.
1427 1.1 christos Can still get a core dump in printf itself.
1428 1.1 christos
1429 1.1 christos
1430