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