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