ChangeLog revision 1.1 1 2020-01-20 Arnold D. Robbins <arnold (a] skeeve.com>
2
3 * run.c (openfile): Set the close-on-exec flag for file
4 and pipe redirections that aren't stdin/stdout/stderr.
5
6 2020-01-06 Arnold D. Robbins <arnold (a] skeeve.com>
7
8 Minor fixes.
9 * b.c (replace_repeat): Turn init_q back into an int.
10 * lex.c (string): Use \a instead of \007.
11 * tran.c (catstr): Use snprintf instead of sprintf.
12
13 2020-01-01 Arnold D. Robbins <arnold (a] skeeve.com>
14
15 * tran.c (syminit, arginit, envinit): Free sval member before
16 setting it. Thanks to valgrind.
17 * b.c: Small formatting cleanups in several routines.
18
19 2019-12-27 Arnold D. Robbins <arnold (a] skeeve.com>
20
21 * b.c (replace_repeat): Fix a bug whereby a{0,3} could match
22 four a's. Thanks to Anonymous AWK fan <awkfan77 (a] mailfence.com>
23 for the report. Also, minor code formatting cleanups.
24 * testdir/T.int-expr: New file.
25
26 2019-12-11 Arnold D. Robbins <arnold (a] skeeve.com>
27
28 * README: Renamed to ...
29 * README.md: ... this. Cleaned up some as well,
30 including moving to Markdown.
31
32 2019-11-08 Arnold D. Robbins <arnold (a] skeeve.com>
33
34 * test/T.chem: Use $oldawk instead of hardwiring 'awk'.
35 * test/T.lilly: Remove gawk warnings from output, improves
36 portability.
37
38 2019-10-17 Arnold D. Robbins <arnold (a] skeeve.com>
39
40 Pull in systime() and strftime() from the NetBSD awk.
41
42 * awk.1: Document the functions.
43 * run.c (bltin): Implement the functions.
44 * awk.h: Add defines for systime and strftime.
45 * lex.c: Add support for systime and strftime.
46
47 2019-10-07 Arnold D. Robbins <arnold (a] skeeve.com>
48
49 Integrate features from different *BSD versions of awk.
50 Gensub support from NetBSD. Bitwise functions from OpenBSD.
51
52 * awk.h: Add defines for and, or, xor, compl, lshift and rshift.
53 * awkgram.y: Add support for gensub.
54 * maketab.c: Ditto.
55 * lex.c: Add support for gensub and bitwise functions.
56 * parse.c (node5, op5): New functions.
57 * proto.h (node5, op5): New declarations.
58 * run.c (bltin): Implement the bitwise functions.
59 (gensub): New function.
60 * awk.1: Document additional functions.
61
62 2019-10-07 Arnold D. Robbins <arnold (a] skeeve.com>
63
64 * b.c (fnematch): Change type of pbuf from unsigned char to char.
65 * proto.h (fnematch): Ditto.
66
67 2019-10-06 Arnold D. Robbins <arnold (a] skeeve.com>
68
69 * lib.c (readrec): Allow RS a regular expression. Imported
70 the code from the NetBSD awk.
71 * b.c (fnematch): New function for implementing the feature.
72 * awk.1: Updated.
73 * main.c (version): Updated.
74
75 2019-06-24 Arnold D. Robbins <arnold (a] skeeve.com>
76
77 * makefile: Revise to take into account there is no more awktest.tar,
78 add targets 'check' and 'test', and also 'testclean' to clean up
79 after test run. Have 'clean' and 'cleaner' depend upon 'testclean'.
80
81 2019-06-23 Arnold D. Robbins <arnold (a] skeeve.com>
82
83 * testdir: Extracted from awktest.tar and added to Git.
84 * awktest.tar: Removed.
85
86 2019-06-06 Arnold D. Robbins <arnold (a] skeeve.com>
87
88 * awk.1: Fix a typo, minor edits.
89
90 2019-06-05 Arnold D. Robbins <arnold (a] skeeve.com>
91
92 * b.c (relex): Count parentheses and treat umatched right paren
93 as a literal character.
94 * awktest.tar (testdir/T.re): Added a test case.
95 * main.c (version): Updated.
96
97 2019-05-29 Arnold D. Robbins <arnold (a] skeeve.com>
98
99 * lib.c (isclvar): Remove check for additional '=' after
100 first one. No longer needed.
101
102 2019-01-26 Arnold D. Robbins <arnold (a] skeeve.com>
103
104 * main.c (version): Updated.
105
106 2019-01-25 Arnold D. Robbins <arnold (a] skeeve.com>
107
108 * run.c (awkgetline): Check for numeric value in all getline
109 variants. See the numeric-getline.* files in bugs-fixed directory.
110
111 2018-08-29 Arnold D. Robbins <arnold (a] skeeve.com>
112
113 * REGRESS: Check for existence of a.out. If not there, run
114 make. Enable core dumps for T.arnold system status test
115 to work on MacOS X.
116
117 2018-08-22 Arnold D. Robbins <arnold (a] skeeve.com>
118
119 * awktest.tar (testdir/T.expr): Fix test for unary plus.
120
121 2018-08-22 Arnold D. Robbins <arnold (a] skeeve.com>
122
123 * REGRESS: Extract tests if necessary, set PATH to include '.'.
124 * regdir/beebe.tar (Makefile): Fix longwrds test to prefix
125 sort with LC_ALL=C.
126 * awktest.tar: Updated from fixed test suite, directory
127 it extracts is now called 'testdir' to match what's in top-level
128 REGRESS script.
129 * regdir: Removed, as Brian wants to keep the test suite in
130 the tar file.
131
132 2018-08-22 Arnold D. Robbins <arnold (a] skeeve.com>
133
134 * FIXES, lib.c, run.c, makefile, main.c: Merge from Brian's tree.
135 * REGRESS: New file, from Brian.
136 * awktest.tar: Restored from Brian's tree.
137
138 2018-08-22 Arnold D. Robbins <arnold (a] skeeve.com>
139
140 * awkgram.y (UPLUS): New token. In the grammar, call op1()
141 with it.
142 * maketab.c (proc): Add entry for UPLUS.
143 * run.c (arith): Handle UPLUS.
144 * main.c (version): Updated.
145 * bugs-fixed/unary-plus.awk, bugs-fixed/unary-plus.bad,
146 bugs-fixed/unary-plus.ok: New files.
147
148 2018-08-10 Arnold D. Robbins <arnold (a] skeeve.com>
149
150 * TODO: Updated.
151 * awk.1: Improve use of macros, add some additional explanation
152 in a few places, alphabetize list of variables.
153
154 2018-08-08 Arnold D. Robbins <arnold (a] skeeve.com>
155
156 * awk.h (Cell): Add new field `fmt' to track xFMT value used
157 for a string conversion.
158 [CONVC, CONVO]: New flag macros.
159 * bugs-fixed/README: Updated.
160 * bugs-fixed/string-conv.awk, bugs-fixed/string-conv.bad,
161 bugs-fixed/string-conv.ok: New files.
162 * main.c (version): Updated.
163 * proto.h (flags2str): Add declaration.
164 * tran.c (setfval): Clear CONVC and CONVO flags and set vp->fmt
165 to NULL.
166 (setsval): Ditto. Add large comment and new code to manage
167 correct conversion of number to string based on various flags
168 and the value of vp->fmt. The idea is to not convert again
169 if xFMT is the same as before and we're doing the same conversion.
170 Otherwise, clear the old flags, set the new, and reconvert.
171 (flags2str): New function. For debug prints and for use from a debugger.
172
173 2018-08-05 Arnold D. Robbins <arnold (a] skeeve.com>
174
175 Fix filename conflicts in regdir where the only difference was
176 in letter case. This caused problems on Windows systems.
177
178 * regdir/Compare.T1: Renamed from regdir/Compare.T.
179 * regdir/t.delete0: Renamed from regdir/t.delete.
180 * regdir/t.getline1: Renamed from regdir/t.getline.
181 * regdir/t.redir1: Renamed from regdir/t.redir.
182 * regdir/t.split1: Renamed from regdir/t.split.
183 * regdir/t.sub0: Renamed from regdir/t.sub.
184 * regdir/REGRESS: Adjusted.
185
186 2018-08-04 Arnold D. Robbins <arnold (a] skeeve.com>
187
188 With scalpel, tweasers, magnifying glass and bated breath,
189 borrow code from the NetBSD version of nawk to fix the years-old
190 bug whereby decrementing the value of NF did not change the
191 record.
192
193 * lib.c (fldbld): Set donerec to 1 when done.
194 (setlastfld): New function.
195 * proto.h (setlastfld): Add declaration.
196 * run.c (copycell): Make code smarter about flags (from NetBSD code).
197 * tran.c (setfree): New function.
198 * tran.c (setfval): Normalize negative zero to positive zero.
199 If setting NF, clear donerec and call setlastfld().
200 (setsval): Remove call to save_old_OFS(). If setting OFS, call
201 recbld(). If setting NF, clear donerec and call setlastfld().
202
203 As part of the process, revert OFS-related changes of 2018-05-22:
204
205 * awk.h (saveOFS, saveOFSlen, save_old_OFS): Remove declarations.
206 * lib.c (recbld): Use *OFS instead of saveOFS.
207 * run.c (saveOFS, saveOFSlen, save_old_OFS): Remove.
208 * tran.c (syminit): Remove initialization of saveOFS and saveOFSlen.
209
210 General stuff that goes along with all this:
211
212 * bugs-fixed/README: Updated.
213 * bugs-fixed/decr-NF.awk, bugs-fixed/decr-NF.bad,
214 bugs-fixed/decr-NF.ok: New files.
215 * main.c (version): Updated.
216 * regdir/README.TESTS: Fix awk book title.
217 * regdir/T.misc: Revise test to match fixed code.
218 * run.c (format): Increase size of buffer used for %a test. (Unrelated
219 to NF or OFS, but fixes a compiler complaint.)
220
221 2018-06-07 Arnold D. Robbins <arnold (a] skeeve.com>
222
223 * regdir/beebe.tar: Fix longwrds.ok so that the test will pass.
224 The file was incorrectly sorted.
225
226 2018-06-06 Arnold D. Robbins <arnold (a] skeeve.com>
227
228 * regdir/T.lilly: Fix the bug again in the second instance
229 of the code. Thanks to BWK for pointing this out.
230
231 2018-05-31 Arnold D. Robbins <arnold (a] skeeve.com>
232
233 * regdir/T.lilly: Fix a syntax error and ordering bug
234 in creating the 'foo' file.
235
236 2018-05-23 Arnold D. Robbins <arnold (a] skeeve.com>
237
238 * awk.1: Remove standalone 'awk' at the top of file, it messed up
239 the formatting. Arrange built-in variable list in alphabetical
240 order.
241
242 2018-05-23 Arnold D. Robbins <arnold (a] skeeve.com>
243
244 * main.c (version): Add my email address and a date so that
245 users can tell this isn't straight BWK awk.
246 * README.md: Minor updates.
247 * TODO: Updated.
248
249 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
250
251 Add POSIX-required formats %a and %A.
252
253 * run.c (format): Check for %a support in C library. If there,
254 allow %a and %A as valid formats.
255 * TODO: Updated.
256 * bugs-fixed/README: Updated.
257 * bugs-fixed/a-format.awk, bugs-fixed/a-format.bad,
258 bugs-fixed/a-format.ok: New files.
259
260 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
261
262 * FIXES: Restored a line from a much earlier version that
263 apparently got lost when the dates were reordered.
264 * TODO: Updated.
265
266 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
267
268 * README.md: New file.
269
270 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
271
272 * regdir/echo.c, regdir/time.c: Minor fixes to compile without
273 warning on current GCC / Linux.
274
275 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
276
277 * TODO: New file.
278
279 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
280
281 * makefile (gitadd, gitpush): Remove these targets. They
282 should not be automated and were incorrect for things that
283 would be done regularly.
284
285 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
286
287 Fix nawk so that [[:blank:]] only matches space and tab instead
288 of any whitespace character, originally made May 10, 2018.
289 See bugs-fixed/space.awk.
290
291 This appears to have been a thinko on Brian's part.
292
293 * b.c (charclasses): Use xisblank() function for [[:blank:]].
294 * bugs-fixed/README: Updated.
295 * bugs-fixed/space.awk, bugs-fixed/space.bad,
296 bugs-fixed/space.ok: New files.
297
298 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
299
300 * .gitignore: New file.
301
302 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
303
304 Fix nawk to provide reasonable exit status for system(),
305 a la gawk, originally made March 12, 2016. See
306 bugs-fixed/system-status.awk.
307
308 * run.c (bltin): For FSYSTEM, use the macros defined for wait(2)
309 to produce a reasonable exit value, instead of doing a floating-point
310 division by 256.
311 * awk.1: Document the return status values.
312 * bugs-fixed/README: Updated.
313 * bugs-fixed/system-status.awk, bugs-fixed/system-status.bad,
314 bugs-fixed/system-status.ok: New files.
315
316 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
317
318 Bug fix with respect to rebuilding a record, originally
319 made August 19, 2014. See bugs-fixed/ofs-rebuild.awk.
320
321 * awk.h (saveOFS, saveOFSlen): Declare new variables.
322 * lib.c (recbld): Use them when rebuilding the record.
323 * run.c (saveOFS, saveOFSlen): Define new variables.
324 (save_old_OFS): New function to save OFS aside.
325 * tran.c (syminit): Initialize saveOFS and saveOFSlen.
326 (setsval): If setting a field, call save_old_OFS().
327 * bugs-fixed/README, bugs-fixed/ofs-rebuild.awk,
328 bugs-fixed/ofs-rebuild.bad, bugs-fixed/ofs-rebuild.ok: New files.
329
330 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
331
332 * makefile (YACC): Use bison.
333
334 2018-05-22 Arnold D. Robbins <arnold (a] skeeve.com>
335
336 * ChangeLog: Created.
337 * regdir: Created. Based on contents of awktest.a.
338 * .gitattributes: Created, to preserve CR LF in regdir/t.crlf.
339 * awktest.a: Removed.
340 * regdir/T.gawk, regdir/T.latin1: Updated from awktest.tar.
341 * awktest.tar: Removed.
342