Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / contrib / awk / ChangeLog
1 Mon Aug  7 15:23:00 2000  Arnold D. Robbins  <arnold@skeeve.com>
2
3         * Release 3.0.6: Release tar file made.
4
5 Thu Aug  3 17:47:53 2000  Greg McGary  <greg@mcgary.org>
6
7         * regex.c: patches for gcc bounded pointer handling.
8
9 Thu Aug  3 13:09:09 2000  Arnold D. Robbins  <arnold@skeeve.com>
10
11         * array.c (in_array, do_delete): fix tests for index equality
12           when searching through the array to work correctly when
13           index is "".
14
15 Fri Jul 14 21:40:17 2000  Pat Rankin  <rankin@eql.caltech.edu>
16
17         * builtin.c (format_tree): Workaround a DEC C V5.7 bug by
18           splitting `strcpy() + 3' into two expressions (the builtin
19           inline strcpy evidently has erroneous return type of void *
20           instead of char *; reputedly fixed in V6.1).
21
22         * eval.c (C): New macro.
23         [casetable]: Use it to add explicit casts for the character
24           values outside the range of 0 to 127.
25         * missing/strncasecmp.c [C, charmap]: Likewise.
26
27         * io.c (redirect): Add EIO check on failed open for VMS.
28
29 Fri Jul 14 11:57:23 2000  Arnold D. Robbins  <arnold@skeeve.com>
30
31         Efficiency hack: turn `for (iggy in foo) delete foo[iggy]'
32         into moral equivalent of `delete foo'.
33         * array.c (do_delete_loop): new routine.
34         * awk.h [NODETYPE]: new Node_K_delete_loop value.
35           Add declaration of do_delete_loop.
36         * awk.y [LEX_FOR]: Fix code to recognize special case.
37         * eval.c (nodetypes): new entry for Node_K_delete_loop.
38         (interpret): add case for Node_K_delete_loop, add more
39         diagnostic info in default  (cant_happen) case.
40
41 Tue Jul 11 22:15:10 2000  Pat Rankin  <rankin@eql.caltech.edu>
42
43         * awk.y (nextc): Recast unsigned char values back to int to
44           prevent VAX C from truncating EOF to 255.
45
46 Tue Jul 11 14:08:23 2000  Arnold D. Robbins  <arnold@skeeve.com>
47
48         * array.c (do_delete): switch to string comparison, not
49           cmp_nodes.
50           (assoc_find): add call to force_string on subscript.
51         * eval.c (interpret): Case Node_K_arrayfor: check for
52           Node_array_ref and fetch original_array. Yowser.
53
54 Fri Jun 30 21:57:00 2000  Arnold D. Robbins  <arnold@skeeve.com>
55
56         * array.c (assoc_lookup): Don't force the subscript
57           to be a string.  Not a good idea after the change
58           to using dupnode.
59
60 Sun Jun 25 15:08:19 2000  Arnold D. Robbins  <arnold@skeeve.com>
61
62         * Release 3.0.5: Release tar file made.
63
64 Wed Jun 14 13:03:45 2000  Arnold D. Robbins  <arnold@skeeve.com>
65
66         * field.c (set_record): manage a private buffer for $0.
67           Keeps things safe in case `getline var' rearranges the
68           IOBUF's contents that $0 is still pointing into.
69
70 Tue Jun 13 16:27:55 2000  Paul Eggert  <eggert@twinsun.com>
71
72         Upgrade to latest and greatest version of largefile code.
73
74         * configure.in (AC_CANONICAL_HOST): Remove.
75         (GAWK_AC_SYS_LARGEFILE): Defer until after AC_MINIX,
76         to avoid autoconf warnings.
77
78         Rewrite largefile configuration so that we don't need to run
79         getconf and don't need AC_CANONICAL_HOST.
80         * config.guess, config.sub: Remove these files.    
81         * Makefile.in (MISC): Remove config.guess, config.sub.
82         * m4/largefile.m4 (GAWK_AC_SYS_LARGEFILE_FLAGS,
83         GAWK_AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
84         (GAWK_AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
85         (GAWK_AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
86         CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY.
87         All uses changed.
88         Instead of inspecting the output of getconf, try to compile the
89         test program without and with the macro definition.
90         (GAWK_AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check
91         for getconf.  Instead, check for the needed flags by compiling
92         test programs.
93
94         (GAWK_AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to be 500 to
95         work around glibc 2.1.3 bug.
96
97         (GAWK_AC_SYS_LARGEFILE_FLAGS): Don't use -n32 on IRIX if the
98         installer said otherwise.
99
100         (GAWK_AC_SYS_LARGEFILE_FLAGS): Work around a bug in the QNX shell,
101         which doesn't propagate exit status of failed commands inside
102         shell assignments.
103
104 Wed Jun  7 13:23:09 2000  Arnold D. Robbins  <arnold@skeeve.com>
105
106         * Updated copyright dates in appropriate files.
107
108 Mon May 22 17:29:43 2000  Arnold D. Robbins  <arnold@skeeve.com>
109
110         * Makefile.in (clean): get `*/core' too.
111
112 Sun May  7 16:33:05 2000  Arnold D. Robbins  <arnold@skeeve.com>
113
114         * array.c (concat_exp): Change ref to `lnode->stlen' and
115           `lnode->stptr' for SUBSEP to use `var_value->...'.
116
117 Tue May  2 09:54:29 2000  Arnold D. Robbins  <arnold@skeeve.com>
118
119         Fix referencing freed memory as shown by test/arynocls.* tests.
120         * awk.h [Node_array_ref]: new node type.
121           [orig_array]: new macro element in NODE structure.
122         * field.c (do_split): handle case for Node_array_ref, fetch
123           the original array.
124         * array.c (in_array, do_delete): ditto.
125         * eval.c (nodetypes[]): add Node_array_ref string.
126           (r_tree_eval): handle case for Node_array_ref.
127           (push_args): push arrays as Node_array_ref, and pass them on.
128           (pop_fcall): don't unref lnode if it's an array when releasing
129           local arguments.  Check for both Node_array and Node_array_ref.
130           (r_get_lhs): choke on Node_array_ref as for Node_array.
131           For Node_subscript, handle Node_array_ref.
132
133 Tue May  2 09:52:12 2000  Bruno Haible  <haible@clisp.cons.org>
134
135         * io.c (redirect): After reopening a `struct redirect', move it to
136           the head of the list.
137
138 Sun Apr  2 17:51:40 2000  Arnold D. Robbins  <arnold@skeeve.com>
139
140         * re.c (re_update): Check if IGNORECASE has changed, and
141           if so recompute the re.  See test/igncdym.awk.
142
143 Mon Mar 20 16:18:34 2000  Arnold D. Robbins  <arnold@skeeve.com>
144
145         * io.c (set_RS): Added a lint warning about multicharacter RS,
146           per suggestion from Akim DeMaille (akim@epita.fr).
147
148 Sun Feb 13 14:40:32 2000  Arnold D. Robbins  <arnold@skeeve.com>
149
150         * eval.c (push_args): Fix from Nide Naoyuki <nide@ics.nara-wu.ac.jp>,
151           re-assign `f' in case tree_eval moved fcall_list around.
152
153 Sun Feb  6 11:39:33 2000  Arnold D. Robbins  <arnold@skeeve.com>
154
155         * eval.c (op_assign):  Fix it right.  For ++ and --, get the lhs
156           in the operations, do the op, and then return.  For += etc,
157           get the rhs FIRST, since the lhs can move around as a result,
158           *then* get the lhs and do the operation. See test/opasnidx.awk.
159
160 Tue Feb  1 18:41:40 2000  Arnold D. Robbins  <arnold@skeeve.com>
161
162         * eval.c (op_assign): reget the rval after regetting
163           the left hand side.  See test/opasnslf.awk for why.
164
165 Thu Jan 27 18:06:31 2000  Arnold D. Robbins  <arnold@skeeve.com>
166
167         * awk.y (yylex): Made ']' not one of the characters
168           that sets `want_assign' to false.  `a[i] /= 2' was
169           broken.  Per bug report from Kristofer T. Karas
170           <ktk@ktk.bidmc.harvard.edu>.
171
172 Wed Dec 22 15:06:37 1999  Arnold D. Robbins  <arnold@skeeve.com>
173
174         * awk.y: Removed declarations of functions before
175           definition of `tokentab[]'.  They're redundant with
176           what's in awk.h.
177
178 Thu Dec  9 17:01:07 1999  Arnold D. Robbins  <arnold@skeeve.com>
179
180         * node.c (parse_escape): Add lint warning for unrecognized
181           escape sequences.
182
183 Mon Dec  6 15:17:34 1999  Arnold D. Robbins  <arnold@skeeve.com>
184
185         * main.c (usage): Changed bug reporting email addresses to
186           be a reference to `Bugs' node in the online and printed
187           doc, instead.
188
189 Thu Dec  2 13:08:18 1999  Arnold D. Robbins  <arnold@skeeve.com>
190
191         * builtin.c (do_compl): test `d' for negative inside the do_lint
192           test, not uval.  Ooops.
193
194 Fri Nov 26 10:58:36 1999  Arnold D. Robbins  <arnold@skeeve.com>
195
196         * array.c (assoc_find):  ALWAYS compare indexes as strings,
197           don't use cmp_nodes in case they are numeric.  Oh my.
198           Talk about a Day 1 bug!
199
200 Tue Nov 23 11:58:53 1999  Arnold D. Robbins  <arnold@skeeve.com>
201
202         * regex.c (SYNTAX): cast argument to `unsigned char' instead of
203           &-ing with 0xFF.  Hopefully somewhat more portable, ala 21 Nov 99
204           changes to awk.y.
205
206 Sun Nov 21 22:25:27 1999  Paul Eggert  <eggert@twinsun.com>
207
208         * aclocal.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a
209           problem with the QNX 4.25 shell, which doesn't propagate exit
210           status of failed commands inside shell assignments.
211
212 Sun Nov 21 20:33:35 1999 Arnold D. Robbins  <arnold@skeeve.com>
213
214         * awk.h (nextc): remove declaration, don't need it here.
215           awk.y (nextc): Cast values to unsigned char so that latin-1
216           characters in strings don't turn themselves into EOF.
217           Most notably y-umlaut, which is decimal 255.
218
219 Mon Nov  1 20:00:25 1999  Arnold D. Robbins  <arnold@skeeve.com>
220
221         * regex.c (init_syntax_once): move below definition of
222           ISALNUM etc., then use ISALNUM to init the table, so that
223           the word ops will work if i18n'ed.
224           (SYNTAX): And subscript with 0xFF for Latin-1 characters.
225
226 Mon Oct 25 18:37:13 1999  Arnold D. Robbins  <arnold@skeeve.com>
227
228         * awk.h, main.c, io.c: undo previous changes (22 Oct 1999).
229         * main.c (main): move call to `init_fields()' to before
230           arg parsing.  This allows `-v NF=blah' to work ok.
231
232 Fri Oct 22 17:43:40 1999  Arnold D. Robbins  <arnold@skeeve.com>
233
234         * main.c (arg_assign): Add new arg, `initing' for icky special
235           casing of -v of special variables.  Use it to check for NF.
236           May need to add other cases later.
237           (pre_assign): change call arg_assign, passing initing=TRUE;
238           io.c (nextfile): change call arg_assign, passing initing=FALSE;
239           awk.h: Change prototype for arg_assign.
240
241 Tue Oct 19 16:06:48 1999  Paul Eggert  <eggert@twinsun.com>
242
243         * io.c (close_redir): Don't munge errno between setting it and
244           using it.
245
246 Wed Oct  6 17:47:47 1999  Arnold D. Robbins  <arnold@skeeve.com>
247
248         * main.c (arg_assign): return NULL on bad variable.  Allows
249           things like `./3x=stuff' to work as a filename.
250
251 Thu Sep 23 21:35:46 1999  Paul Eggert  <eggert@twinsun.com>
252
253         * aclocal.m4 (GAWK_AC_SYS_LARGEFILE_FLAGS): Work around GCC
254           2.95.1 bug in HP-UX 10.20 or later. (Had to fix the fix. ADR. :-)
255
256 Tue Sep 21 13:31:36 1999  Arnold D. Robbins  <arnold@skeeve.com>
257
258         * builtin.c (format_tree): For '0', only set zero_flag if we
259           haven't seen the field width or precision yet.
260
261 Mon Aug  9 13:06:01 1999  Arnold D. Robbins  <arnold@skeeve.com>
262
263         * array.c (assoc_lookup): Removed code that gave each array
264           a private copy of each index.  Balloons memory usage for
265           no good reason that I can see.  Just use dupnode in all
266           cases.
267         * configure.in: check for $srcdir/.developing adds extra
268           defines for my testing/debugging use.  Yes, hack alert.
269
270 Sun Aug  1 11:02:02 1999  Arnold D. Robbins  <arnold@skeeve.com>
271
272         * node.c (dupnode): turn off FIELD when copying nodes.
273         * array.c (do_adump, assoc_dump): new functions for array debugging.
274         * awk.y (tokentab): conditionally add "adump" function for debugging.
275         * awk.h: delcare new functions.
276
277 Thu Jul 29 23:26:40 1999  Arnold D. Robbins  <arnold@skeeve.com>
278
279         From wsanchez@apple.com:
280         * Makefile.in (install-strip): new target, coding stds. compatibility.
281         * config.guess, config.sub: Add MacOS X recognition.
282
283 Thu Jul 29 19:09:19 1999  Arnold D. Robbins  <arnold@skeeve.com>
284
285         * awk.y (func_install): make `function foo(foo)' a fatal error.
286           eval.c (r_tree_eval): diagnose use of a function name as a
287           variable inside the function.
288
289 Sun Jul  4 16:53:14 1999  Arnold D. Robbins  <arnold@skeeve.com>
290
291         * eval.c (eval_condition): add extra braces to avoid
292           gcc warning.  I'm not going to bother for the library
293           code like dfa and regex.
294
295 Wed Jun 30 16:14:36 1999  Arnold D. Robbins  <arnold@gnu.org>
296
297         * Release 3.0.4: Release tar file made.  This time for sure.
298
299 Wed Jun 30 16:10:11 1999  Arnold D. Robbins  <arnold@gnu.org>
300
301         * awk.h: add include of <assert.h>, and comment about config.h
302           having to be included before any system headers.  Otherwise,
303           with egcs-2.91.66 and later on Linux systems, and possibly
304           others, things break badly, due to the LFS macros.
305         * awk.y, builtin.c, eval.c, field.c, io.c: removed include
306           of assert.h
307
308 Wed Jun  9 11:39:19 1999  Paul Eggert  <eggert@twinsun.com>
309
310         Port the large-file code to AIX, HP-UX, and IRIX.
311         Add cross-compilation support for large files.
312
313         * config.guess, config.sub: New files.
314
315         * configure.in (AC_CANONICAL_HOST):
316           Add; GAWK_AC_SYS_LARGEFILE needs this.
317           (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
318
319         * aclocal.m4 (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
320           Add support for AIX and HP-UX.
321           (GAWK_AC_SYS_LARGEFILE_FLAGS, GAWK_AC_SYS_LARGEFILE_SPACE_APPEND,
322           GAWK_AC_SYS_LARGEFILE_MACRO_VALUE): New macros.
323
324         * acconfig.h (_FILE_OFFSET_BITS, _LARGEFILE_SOURCE, _LARGE_FILES):
325           New macros.
326
327         * Makefile.in (MISC): add config.guess and config.sub so they get
328           included in the distribution.
329
330 Wed Jun  9 11:29:29 1999  Paul Eggert  <eggert@twinsun.com>
331
332         * io.c (iop_alloc): Don't mmap files whose sizes don't fit in `int'.
333           [ This isn't really needed, as HAVE_MMAP is #undef'ed at the top,
334           but it's there in case people want to take their life in their hands. ]
335
336 Sun Jun  6 11:28:07 1999  Arnold D. Robbins  <arnold@gnu.org>
337
338         * BETA Release 3.0.46: Release tar file made.
339
340 Wed Jun  2 14:36:24 1999  Arnold D. Robbins  <arnold@gnu.org>
341
342         * PORTS: Updated with a more recent list of systems
343           that gawk compiles and tests ok on.
344
345 Tue Jun  1 14:24:59 1999  Arnold D. Robbins  <arnold@gnu.org>
346
347         * BETA Release 3.0.45: Release tar file made.
348
349 Tue May 25 16:32:37 1999  Arnold D. Robbins  <arnold@gnu.org>
350
351         * builtin.c (format_tree): more smarts for weird cases, such as
352           zero precisions and zero values used with the `#' flag.
353           Thanks to Andreas Schwab (schwab@gnu.org) for pointing these out.
354
355 Wed May 19 14:02:54 1999  Arnold D. Robbins  <arnold@gnu.org>
356
357         * io.c (do_close): move test for `close(FILENAME)' to after
358           loop through all open redirections. Fixes problems in obscure
359           cases with redirections in END rules.
360
361 Sun May 16 14:08:39 1999  Arnold D. Robbins  <arnold@gnu.org>
362
363         * awk.y (yylex): fix group of characters including ',' to
364           set want_assign = FALSE.  Fixes bizarre parsing problems in
365           function call lists, for example.
366         * io.c (get_a_record): repair logic for single-leading-newline
367           case.
368
369 Tue May 11 16:48:11 1999  Arnold D. Robbins  <arnold@gnu.org>
370
371         * aclocal.m4 (GAWK_AC_AIX_TWEAK): new macro.
372         * configure.in: call it
373         * Makefile.in: (awklib/all): pass CFLAGS on to sub-make so
374           that password programs will get AIX magic defines. Avoids
375           having to tweak program code for those in doc/gawk.texi.
376
377 Mon May  3 16:56:23 1999  Arnold D. Robbins  <arnold@gnu.org>
378
379         * array.c (do_delete): don't free_temp(subs) until after all
380           references to it are finished.
381
382 Mon May  3 13:41:16 1999  Arnold D. Robbins  <arnold@gnu.org>
383
384         * BETA Release 3.0.44: Release tar file made.
385
386 Sun May  2 18:25:43 1999  Arnold D. Robbins  <arnold@gnu.org>
387
388         * io.c (get_a_record): Do a really good job of stripping newlines
389           from the front of records when RS = "" and there's only one
390           newline at the front of the file, which the regex didn't catch.
391
392 Wed Apr 28 12:27:49 1999  Arnold D. Robbins  <arnold@gnu.org>
393
394         * configure.in: more HP stuff: fix the manual alloca code so that
395           gawk will compile and link on HP systems. See the comments.
396
397 Sun Apr 25 13:39:16 1999  Arnold D. Robbins  <arnold@gnu.org>
398
399         * Makefile.in (gawk): add $(CFLAGS) to linking step.
400         * configure.in: correctly do AC_FUNC_GETPGRP on HP systems too.
401
402 Tue Apr 13 20:21:00 1999  Arnold D. Robbins  <arnold@gnu.org>
403
404         * BETA Release 3.0.43: Release tar file made.
405
406 Tue Apr 13 19:02:20 1999  Arnold D. Robbins  <arnold@gnu.org>
407
408         * io.c (useropen, pidopen): add casts to int on arguments to
409           silence gcc warnings.
410         * regex.c (regcomp,regexec,regfree): add ifdef for APPLE.
411
412 Thu Feb  4 10:38:02 1999  Arnold D. Robbins  <arnold@gnu.org>
413
414         * custom.h: hacks for BeOS. Not documented in the manual right now.
415         * configure.in: hacks for BeOS.  Check for HP-UX and define C_ALLOCA
416           if not using gcc.  I wish they'd just fix bison already.
417
418 Sun Dec 20 16:57:38 1998  Arnold D. Robbins  <arnold@gnu.org>
419
420         * BETA Release 3.0.42: Release tar file made.
421
422 Sun Nov 15 21:05:39 1998  Arnold D. Robbins  <arnold@gnu.org>
423
424         * io.c (gawk_popen): Add WIN32 to list of systems that use
425           the non-real-pipe version. From the PC gawk guys.
426
427 Wed Nov  4 11:32:24 1998  Arnold D. Robbins  <arnold@gnu.org>
428
429         * BETA Release 3.0.41: Release tar file made.
430
431 Tue Nov  3 16:24:35 1998  Arnold D. Robbins  <arnold@gnu.org>
432
433         * eval.c (r_get_lhs): Fix the cases for the special variables,
434           don't unref their current value if it's the same as the internal
435           copy; perhaps the current one is used in a concatenation or some
436           other expression somewhere higher up in the call chain.  Ouch.
437           See test/getnr2tm.awk.
438
439 Sun Nov  1 15:24:52 1998  Arnold D. Robbins  <arnold@gnu.org>
440
441         * builtin.c (format_tree): improve handling of zero-fill
442           when a precision is present. See test/zeroflag.awk.
443
444 Wed Oct 28 20:40:17 1998  Arnold D. Robbins  <arnold@gnu.org>
445
446         * eval.c (r_tree_eval): Case for Node_concat. Get lengths
447           separately, in case one expression has a side effect that
448           that changes another. Ugly, but it keeps gawk from core
449           dumping. See test/nasty.awk.
450
451 Sun Oct 18 21:27:24 1998  Arnold D. Robbins  <arnold@gnu.org>
452
453         * awk.y (append_right): bug fix, if `list' or `new' are NULL,
454           return `list', so that things don't break too badly.
455         * regex.c (re_compile_fastmap): remove unused variable `num_regs'.
456
457 Thu Oct  8 19:36:57 1998  Arnold D. Robbins  <arnold@gnu.org>
458
459         * BETA Release 3.0.40: Release tar file made.
460
461 Mon Jul 27 10:14:33 1998  Arnold D. Robbins  <arnold@gnu.org>
462
463         * node.c (parse_escape): Remove assignment with side effects
464           from ISXDIGIT test. Thanks to "Mihai T. LAZARESCU"
465           <mihai@ccmserv.polito.it> for pointing this out.
466
467 Mon Apr 27 11:31:32 1998  Arnold D. Robbins  <arnold@gnu.org>
468
469         * main.c (usage): fix the email address for the bug list.
470           (copyleft): update the copyright year.
471
472 Mon Mar 23 21:22:32 1998  Arnold D. Robbins  <arnold@gnu.org>
473
474         * eval.c (r_get_lhs): make sure that values of type
475           Node_param_list don't have the FUNC flag set. This means
476           we don't allow the use of a function name as a variable or
477           array from within the function.
478
479 Sun Mar 22 19:12:32 1998  Paul Eggert  <eggert@twinsun.com>
480
481         * aclocal.m4 (GAWK_AC_LARGE_FILES): new macro that checks for
482           large file support, and updates CPPFLAGS, LDFLAGS, LIBS as
483           needed.
484         * configure.in: call GAWK_AC_LARGE_FILES.
485         * Makefile.in (CPPFLAGS, LDFLAGS): Let autoconf configure.
486         (COMPFLAGS): Add $(CPPFLAGS).
487
488 Mon Mar 16 14:06:41 1998  Arnold D. Robbins  <arnold@gnu.org>
489
490         * field.c (using_FIELDWIDTHS): new macro.
491           (using_fieldwidths): use new macro.
492           (do_split): in case for FS_DFLT, also check that
493           we're not using FIELDWIDTHS. Otherwise, split() would use
494           FIELDWIDTHS, not current value of FS. Oops.
495
496 Sun Nov 16 20:08:59 1997  Arnold D. Robbins  <arnold@gnu.org>
497
498         * builtin.c (sub_common): fix for count of matches in gsub
499           from Geert.Debyser@esat.kuleuven.ac.be.
500
501 Wed Oct 15 03:38:12 1997  Arnold D. Robbins  <arnold@gnu.org>
502
503         * field.c (set_FS): Use `sc_parsefield' if the value of FS is not
504           alphabetic OR if not ignoring case. Bug fix if IGNORECASE
505           is true and FS happens to be '^'. Sheesh, talk about obscure.
506           (rebuild_record): Add more smarts to the code that sets up the
507           fields. Thanks to Alan J. Broder (ajb@dtmr.com).
508
509 Sun Oct  5 11:56:52 1997  Arnold D. Robbins  <arnold@gnu.org>
510
511         * configure.in: if ISC add -D_SYSV3 to CFLAGS, per email from
512           Mario Vanoni (vanonim@dial.eunet.ch).
513
514 Fri Sep 26 00:57:49 1997  Arnold D. Robbins  <arnold@gnu.org>
515
516         * awk.y (append_right): return if either list is NULL. Prevents
517           syntax errors from causing core dumps.
518
519 Wed Sep 17 15:34:15 1997  Arnold D. Robbins  <arnold@gnu.org>
520
521         * field.c (rebuild_record): set things up so that all fields point
522           into the new record and release any changed fields without
523           causing memory leaks.  Avoids problems when fields are extended
524           with the value of $0 or other fields and then $0 is assigned to.
525
526 Mon Sep 15 16:12:55 1997  Arnold D. Robbins  <arnold@gnu.org>
527
528         * builtin.c (do_print): when testing for NUMBER, make sure
529           it's not a string too. Thanks to Michael Brennan for
530           clarifying the semantics.
531
532 Sun Sep 14 19:55:12 1997  Arnold D. Robbins  <arnold@gnu.org>
533
534         * node.c (format_val): always format values ourselves: avoids
535           problems if OFMT is bizarre, like %s.
536
537 Sun Sep 14 00:08:53 1997  Arnold D. Robbins  <arnold@gnu.org>
538
539         * io.c (get_a_record): replace all occurrences of the test
540           `grRS == FALSE' with `RS_is_null' which makes ` RS = "\0" '
541           actually work, is clearer code, and actually makes use of
542           the `RS_is_null' variable!
543
544 Sun Aug 17 07:15:12 1997  Arnold D. Robbins  <arnold@gnu.org>
545
546         * field.c (set_FS): Change logic to always set parse_field, even
547           if FS hasn't changed. Thanks to Igor Sheyn for catching this.
548
549 Wed Aug  6 21:04:37 1997  Arnold D. Robbins  <arnold@gnu.org>
550
551         * io.c (VMS et al gawk_popen): use pclose, not fclose, if
552           iop_alloc fails.
553
554 Wed Jul 30 19:53:52 1997  Arnold D. Robbins  <arnold@gnu.org>
555
556         * awk.y [variable]: fix case for subscript if $3 == NULL.
557
558 Sun Jul 27 22:47:30 1997  Arnold D. Robbins  <arnold@gnu.org>
559
560         * awk.y (get_src_buf): don't close file if it's stdin.
561
562 Sun Jul 27 22:47:15 1997  Pat Rankin  <rankin@eql.caltech.edu>
563
564         * io.c (#if VMS: vmsrtl_fileno): new routine.
565           (#if VMS: fileno): new macro substituted for stdio one.
566
567 Thu Jul 17 20:05:59 1997  Arnold D. Robbins  <arnold@gnu.org>
568
569         * builtin.c (do_print): When OFMT != CONVFMT, create a new
570           temporary node with just the numeric value valid and format it,
571           and use that for printing. Avoids memory corruption.
572
573 Wed Jul 16 10:01:16 1997  Arnold D. Robbins  <arnold@gnu.org>
574
575         * regex.c: When SYNTAX_TABLE is defined, but not emacs, then
576           CHAR_SET_SIZE is not defined, though used in regcomp.  It should
577           be taken out of #ifdef SYNTAX_TABLE. Fix from bug group, from
578           Akim Demaille, demaille@inf.enst.fr.
579         * awk.h (isnondecimal): make test a little smarter.
580           builtin.c (nondec2awknum): add bailout for decimal numbers, e.g.
581           `00.1'. Fix from Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
582
583 Thu Jun 19 19:00:40 1997  Arnold D. Robbins  <arnold@gnu.org>
584
585         * eval.c (interpret): case Node_K_next, Node_K_nextfile: fatal
586           error if called from BEGIN or END.
587           (Fixed completely Mon May  3 13:31:42 1999.)
588
589 Mon Jun  9 22:40:04 1997  Arnold D. Robbins  <arnold@gnu.org>
590
591         * builtin.c (nondec2awknum): Allow `f' and `F' in hexadecimal numbers.
592           Gotta get more sleep...
593         * array.c (assoc_lookup): Fix from Tom Karzes (karzes@equator.com)
594           for memory leak when forcing type to Node_var_array.
595
596 Thu May 15 12:49:08 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
597
598         * Release 3.0.3: Release tar file made.
599
600 Wed May 14 08:06:08 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
601
602         * io.c (do_close): add lint warning if closing something that
603           isn't open.
604
605 Tue May 13 12:14:12 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
606
607         * random.c, builtin.c: remove __GLIBC__ tests, since it breaks
608           `make test'. I prefer consistency across platforms.
609         * Makefile.in (gawk): undid April 25 changes and added comment.
610           Putting COMPLAGS in breaks with -g on VMS POSIX.
611
612 Sun May 11 14:48:04 1997  Darrell Hankerson  <hankedr@mail.auburn.edu>
613
614         * io.c [MSC_VER]: add cases for WIN32.
615         * regex.c [MSC_VER]: add cases for WIN32.
616
617 Sun May 11 07:04:01 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
618
619         * builtin.c (do_print): in the loop that evaluates each expression
620           to be printed, do a dupnode to avoid bizarre output. Thanks to
621           Michal for finding this problem.
622         * awk.y (yylex): fix scanning of hexadecimal constants.
623
624 Wed May  7 15:09:25 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
625
626         * io.c (get_a_record): fix casetable indexing with cast to int.
627           Keeps Michal happy.
628
629 Tue May  6 16:40:19 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
630
631         * eval.c (func_call): removed unneeded variables.
632
633 Mon May  5 21:17:37 1997  Pat Rankin  <rankin@eql.caltech.edu>
634
635         * missing/strftime.c [case 'v', VMS_EXT]: for VMS date format, two
636           digit day of month should not be zero padded on the 1st through
637           the 9th.
638
639 Mon May  5 06:33:47 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
640
641         * regex.h, regex.c: merge with current GLIBC version.
642
643 Mon May  5 06:33:47 1997  Pat Rankin  <rankin@eql.caltech.edu>
644
645         * io.c (nextfile): move the check for null return from iop_open
646           in the normal case and add one for the "no args" case.
647
648 Fri Apr 25 16:52:33 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
649
650         * array.c (grow_table): add a bunch more large primes so arrays
651           can get really big. Thanks to christos@deshaw.com.
652         * all files: remove ifdef'ed out code and update copyrights.
653         * Makefile.in (gawk): add $(COMPFLAGS) to command line.
654         * eval.c (flags2str): added case for FIELD.
655
656 Thu Apr 24 22:39:23 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
657
658         * COPYING: changed to current official version from FSF.
659         * regex.c: merge with GLIBC version.
660         * awk.h [_GNU_SOURCE]: bracket definition inside ifdef.
661           (NODE.source_line): move name member out of `x' union and
662           into `nodep'; avoids problems doing diagnostics.
663           (nondec2num): put decl into #if BITOPS || NONDECDATA
664         * posix/gawkmisc.c, missing/system.c, missing/strtod.c,
665           missing/strerror.c: move to generic GPL statement at top.
666         * builtin.c (nondec2num): put into #if BITOPS || NONDECDATA
667
668 Wed Apr 23 22:14:14 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
669
670         * dfa.c: misc changes for really pedantic SGI compilers.
671         * builtin.c: bracket defs of random() etc for GLIBC.
672         * random.c: bracket whole file for GLIBC.
673         * configure.in: extra goop for GETPGRP test for VMS POSIX.
674         * custom.h [VMS]: remove hard definition of GETPGRP_VOID.
675
676 Fri Apr 18 07:55:47 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
677
678         * BETA Release 3.0.34: Release tar file made.
679
680 Tue Apr 15 21:35:45 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
681
682         NEW UNDOCUMENTED FEATURE. USE THE SOURCE LUKE!
683         * acconfig.h [NONDECDATA]: new macro.
684         * awk.h: add decl of do_strtonum.
685         * awk.y (tokentab): add entry for strtonum function.
686         * builtin.c (do_strtonum): new function.
687         * configure.in (non-decimal-data): new --enable-* option.
688         * node.c (r_force_number): change to allow non-decimal data inside
689           ifdef NONDECDATA.
690
691 Tue Apr 15 06:32:50 1997  Pat Rankin  <rankin@eql.caltech.edu>
692
693         * missing/strftime.c (malloc, realloc, getenv, strchr): only
694           declare these when STDC_HEADERS is not defined.
695           <stdlib.h, string.h>: include these when STDC_HEADERS is defined.
696         * awk.h (freenode, tree_eval, m_tree_eval): reorganize definitions.
697         * alloca.c (malloc): if malloc is already defined as a macro,
698           presumeably by config.h, don't define or declare it.
699
700 Wed Apr  9 22:45:27 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
701
702         * Makefile.in [COMPFLAGS]: per suggestion from Karl Berry, put
703           $(CFLAGS) last.
704
705 Tue Apr  8 23:54:46 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
706
707         * eval.c (interpret): For Node_K_break and Node_K_continue, if
708           treating them like `next', also check the function call stack
709           and pop it if necessary.
710
711 Mon Apr  7 18:22:37 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
712
713         * awk.h: Add decls of new routines do_compl() and set_loc().
714         * awk.y (tokentab): add entry for "compl" function.
715         * builtin.c (do_compl): new function to do ones complement.
716           (do_substr): rationalized yet again, now notices negative start
717           and length parameters.
718         * eval.c (push_args): fix if call_list gets realloc'ed in the
719           middle of things. Avoids crash for deeply nested function calls.
720         * main.c (catch_sig): add call to set_loc().
721         * msg.c (set_loc, srcfile, srcline): new function and private
722           variables to help out in tracing down source of error messages.
723
724 Fri Mar 28 08:42:27 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
725
726         * io.c (iop_alloc, iop_close): Undo changes of Feb 11, apparently
727           other cleanups in io.c made mmap stuff start working again.
728           BAH! It's a mess, the test suite still fails. I'm leaving the
729           mmap stuff undefined for now. It'll probably get ripped out in 3.1.
730
731 Thu Mar 27 08:48:57 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
732
733         * custom.h [_SEQUENT_]: undef HAVE_MMAP.
734
735 Wed Mar 26 09:08:16 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
736
737         * io.c (iop_alloc): fix definition to make it static.
738
739 Mon Mar 24 23:09:07 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
740
741         * field.c (init_fields, etc..): more clean up use of Null_field
742           and the various flags.
743         * node.c (unref): if a field, free the node itself. Fixes
744           memory leak problems.
745
746 Sun Mar 23 22:51:09 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
747
748         * awk.h [FIELD]: new flag for node->flags field.
749         * builtin.c (sub_common): if FIELD is set, dup the string.
750         * field.c (init_fields): set up a new Null_field global var.
751           (init_fields, set_field, set_record) use the FIELD flag.
752           (getfield): use Null_field instead of private variable.
753         * io.c (wait_any): comment out calls to pclose and iop_close,
754           caused weird race conditions. See test/pipeio1.awk. Thanks
755           to Darrell Hankerson for tracing this one down.
756
757 Tue Mar 18 20:57:18 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
758
759         * dfa.c (inboth): free templist; plugs memory leak.
760         * field.c (init_fields, grow_fields_arr, set_field, rebuild_record,
761           set_record): remove PERM flag from entries in fields_arr[]. Fixes
762           nasty memory leak.
763
764 Tue Mar 18 06:33:00 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
765
766         * awk.y (dup_parms): robustified against parameter errors.
767
768 Sun Mar 16 21:31:40 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
769
770         NEW UNDOCUMENTED FEATURE. USE THE SOURCE LUKE!
771         * acconfig.h [BITOPS]: new macro. If set, do octal & hex and bit ops.
772         * awk.h [isnondecimal]: new macro, and decl of new functions.
773         * awk.y (yylex): add recognition of octal and hex constants.
774         * builtin.c (do_and, do_or, do_xor, do_lshift, do_rshift): new
775           functions that do bit operations.
776           (nondec2awknum): new function to convert octal or hex to double.
777         * configure.in: Add AC_ARG_ENABLE for bit operations.
778         * node.c (r_force_number): add octal and hex conversion.
779
780 Sun Mar 16 21:28:56 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
781
782         * awk.h [IOP_NOFREE_OBJ]: new macro.
783         * io.c (iop_open, iop_alloc): add new third parameter, which is
784           either NULL, meaning allocate a new IOP, or the address of one
785           already allocated.  Have a static one in the `nextfile'
786           routine, and use the IOP_NOFREE_OBJ flag for it.  All of this
787           keeps us from reading freed memory. The `swaplns' test fails
788           otherwise.
789           (iop_close): if IOP_NOFREE_OBJ is set, don't free the IOBUF.
790
791 Wed Feb 26 06:21:02 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
792
793         * eval.c (in_function, pop_fcall_stack, pop_fcall, push_args):
794           new functions. These manage "frames" of awk function call arguments.
795           The problem is that a `next' or a `nextfile' from a function
796           leaks memory. These changes allow us to free up that memory.
797           (interpret): for Node_K_next and Node_K_nextfile, check if in
798           a function call and free all function call frames.
799
800 Fri Feb 21 06:23:19 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
801
802         * Misc changes from Katsuyuki Okabe <HGC02147@niftyserve.or.jp>:
803         * builtin.c (do_substr): change a %d to %ld in warning message.
804         * eval.c (op_assign): fix format string for warning about %=.
805         
806 Wed Feb 19 23:29:02 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
807
808         * main.c (main): add do_intervals to condition that causes
809           resetup() to be called again. Makes the --re-interval option
810           actually work. What a concept.
811
812 Fri Feb 14 09:47:31 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
813
814         * io.c [#include "awk.h"]: undef HAVE_MMAP to just use the old code.
815           Something is causing a file descriptor leak, and this is getting to
816           be just too much hair. I reserve the right to rip out the mmap
817           code entirely at a future date.
818
819 Tue Feb 11 06:28:29 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
820
821         * io.c (iop_alloc): for an mmap'ed file, close the file descriptor,
822           and then touch each page to get a private copy. Fixes nasty case
823           of truncating our input file.
824           (iop_close): don't call close on mmap'ed file.
825
826 Wed Feb  5 17:59:04 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
827
828         * eval.c (interpret): For Node_K_delete, just call do_delete; let
829           it handle the case of `delete array'.
830         * array.c (do_delete): Changed to handle case of `delete array',
831           and made smarter if the array is actually an uninitialized
832           parameter.
833
834 Sun Jan 26 22:58:29 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
835
836         * getopt.h, getopt.c, getopt1.c: replaced with new versions from
837           GLIBC 2.
838
839 Sun Jan 19 23:37:03 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
840
841         * eval.c (nodetype2str): not static, for debugging.
842           (flags2str) new function: for debugging.
843         * field.c (get_field): add new var that is like Nnull_string but
844           does not have numeric attributes, so that new fields are strings.
845           (set_record): turn off PERM flag before unrefing fields and field 0.
846         * array.c (in_array): always evaluate subscript, could have
847           side effects.
848         * builtin.c (do_strftime): way increase size of buffer to make sure
849           we don't have overflow problem. Keeps Paul Eggert happy.
850         * custom.h [__amigaos__]: define fork to vfork. From Fred Fish.
851         * dfa.c: move include of config.h to top, for RSXNT. From Kai
852           Uwe Rommel.
853           (ISALPHA, etc): change from Jacob Engelbrecht (jaen@novo.dk)
854           to better handle non-ascii environments.
855         * gawkmisc.c: remove amigados case, posix should now work fine.
856         * amiga/*: nuked per previous entry.
857         * Makefile.in: removed all references to amiga
858         * io.c [HAVE_SYS_PARAM_H]: Add #undef RE_DUP_MAX to avoid
859           spurious conflict with regex.h.
860           (flush_io): remove amiga ifdefs, not needed anymore.
861           (spec_setup): set getrec field for special files. Fix from
862           Mark Gray (markgray@pdt.net).
863         * node.c (more_nodes): fix to get the last entry in the array.
864
865 Wed Jan  8 17:42:37 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
866
867         * io.c (mmap_get_record): Fix return value if file ends without
868           record separator.
869
870 Fri Jan  3 19:57:16 1997  Pat Rankin  <rankin@eql.caltech.edu>
871
872         * awk.y (get_src_buf):  Test for an empty source file by detecting
873           an initial read of 0 bytes rather than by relying on info from
874           stat().
875
876 Wed Dec 25 11:25:22 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
877
878         * Release 3.0.2: Release tar file made.
879
880 Wed Dec 25 11:17:32 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
881
882         * Makefile.in (install, uninstall): use $(srcdir)/patchlevel.h.
883           Thanks to Richard Levitte, LeViMS@stacken.kth.se.
884           (install): remove chmod command; let $(INSTALL_PROGRAM) use -m.
885
886 Mon Dec 23 20:36:59 1996  Pat Rankin  <rankin@eql.caltech.edu>
887
888         * custom.h (#if VMS_POSIX):  Define GETPGRP_VOID.
889
890 Fri Dec 20 08:59:55 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
891
892         * getopt.c, getopt1.c: comment out the `#if defined (_LIBC) ||
893           !defined (__GNU_LIBRARY__)' and `#endif' to force use of this
894           getopt, even on systems like linux.  This will be handled
895           better in 3.1 / glibc 2.
896
897 Thu Dec 19 22:52:39 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
898
899         * awk.y (yylex): In several places, after yyerror(), add call to
900           exit(). Otherwise, infinite messages. This should probably
901           be handled better.
902
903 Wed Dec 18 22:42:10 1996  Darrel Hankerson  <hankedr@mail.auburn.edu>
904
905         * getopt.c (_getopt_internal): if 'W' and ';', if optind == argc,
906           return c, don't fall through.
907
908 Wed Dec 18 10:09:44 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
909
910         * configure.in [AC_PREREQ]: Update to 2.12 in order to switch to
911           autoconf 2.12. Lots of other files will be rebuilt automatically.
912           [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
913         * aclocal.m4 [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
914
915 Tue Dec 17 22:23:16 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
916
917         * builtin.c (do_strftime): fix case if format string is "".
918           Also fix it if format is not "" but result of strftime is "".
919           See comments in code.
920
921 Tue Dec 10 23:09:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
922
923         * Release 3.0.1: Release tar file made.
924
925 Tue Dec 10 22:39:41 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
926
927         * Makefile.in (dist): add dependency on `info'. Remove line that
928           does makeinfo.
929           (install): use $(LN) not $(LN_S) to link gawk gawk-version.
930
931 Sun Dec  8 07:53:44 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
932
933         * Makefile.in (gawk): took COMPFLAGS out of link line for help
934           on VMS posix. Shouldn't (I hope) affect anything else.
935
936 Thu Nov 28 11:52:24 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
937
938         * configure.in (AC_PROG_INSTALL): Set INSTALL to install-sh.
939
940 Tue Nov 26 22:42:00 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
941
942         * PORTS: Updated list of systems.
943         * Makefile.in (install): Fix some typos and add some improvements
944           for Ultrix.
945
946 Sun Nov 24 22:16:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
947
948         * builtin.c (do_printf): if no args, fatal error. Return silently
949           if --traditional.
950
951 Thu Nov  7 20:54:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
952
953         * io.c (inrec): make sure EOF hasn't already happened before
954           trying to read; prevents accessing freed buffer. Thanks to
955           Michal Jaegermann.
956         * Makefile.in [AWKSRC]: add random.h.
957           random.h: new file, redefines names of the `random' functions.
958           random.c, builtin.c: add include of random.h.
959
960 Thu Nov  7 09:06:21 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
961
962         * awk.y (snode): undo 4 Oct change, put do_split code back.
963           field.c (do_split): restore old code; add test for CONST, so
964           that re_parse_field is used if third arg to split is a regexp
965           constant.
966
967 Mon Nov  4 12:57:11 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
968
969         * main.c (main): Research -m[fr] options don't need literal '='
970           characters. Brian's documentation was confusing.  Fixed, not
971           that anyone actually uses these options with gawk.
972
973 Sun Nov  3 11:23:21 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
974
975         * field.c (def_parse_field): add \n to list of acceptable white space.
976           (posix_def_parse_field): new routine, just like def_parse_field(),
977           but only allows space and tab as separators.
978           (do_split, set_FS): make appropriate choice between the two
979           *def_parse_field() routines.
980
981 Fri Oct 25 10:13:06 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
982
983         * configure.in: remove test for random.
984         * Makefile.in: add random.c to list of files always compiled.
985         * missing.c: remove HAVE_RANDOM test.
986         * builtin.c: remove ifdef's for HAVE_RANDOM.
987           [GAWK_RAND_MAX]: use constant we know works with our random().
988         * random.c: new file - moved from missing/ directory.
989
990 Wed Oct 23 19:46:01 1996  Pat Rankin  <rankin@eql.caltech.edu>
991
992         * builtin.c (do_tolower, do_toupper): Add `unsigned char *' casts.
993
994 Tue Oct 22 21:27:52 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
995
996         * builtin.c [GAWK_RANDOM_MAX]: Try to make definition a bit
997           smarter; don't use RAND_MAX if it's equal to SHRT_MAX, blows
998           things up.
999
1000 Tue Oct 22 08:49:20 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1001
1002         * main.c (copyleft): update copyright date to 1996.
1003           too many files to list: update copyright date to 1996.
1004
1005 Sun Oct 20 12:21:09 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1006
1007         * awk.y, dfa.c, eval.c, io.c, re.c: added various FIXME comments.
1008
1009 Sat Oct 19 22:06:42 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1010
1011         * eval.c (nodetype2str): make static, add prototype.
1012         * field.c (sc_parse_field): cast array subscripts to int to
1013           shut up gcc warnings.
1014         * gawkmisc.c: add prototype for xmalloc.
1015         * awk.h: add prototype for getredirect.
1016         * builtin.c (do_fflush): remove extern decl of getredirect.
1017         * io.c (get_a_record, mmap_get_record): change decl of rs to int,
1018           to shut up gcc warnings.
1019         * awk.y (isassignable): add a default to switch to quiet gcc.
1020         * getopt.c (_getopt_internal): give default value to `indfound'.
1021
1022 Fri Oct 18 09:00:49 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1023
1024         * regex.h [RE_SYNTAX_AWK]: add RE_CONTEXT_INDEP_ANCHORS.
1025
1026 Thu Oct 17 22:32:55 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1027
1028         * aclocal.m4 [AM_SANITY_CHECK_CC]: added.
1029         * configure.in: use it.
1030
1031 Thu Oct 17 21:43:25 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1032
1033         * configure.in: add checks for locale.h and setlocale().
1034           awk.h: include locale.h and define out setlocale() if not available.
1035           main.c (main): call setlocale().
1036           builtin.c (do_tolower, do_toupper): use unsigned char pointers,
1037           to get other charsets right in different locales.
1038
1039 Wed Oct 16 21:32:53 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1040
1041         * builtin.c (format_tree): Change initial buffer size to 512
1042           and use a constant. Allows large values of %f per bug report
1043           from sheyn@cs.bu.edu.
1044
1045 Wed Oct 16 21:22:08 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1046
1047         * Makefile.in [MISC]: removed TAGS and tags
1048           (local-distclean): added TAGS and tags
1049           (maintainer-clean): removed TAGS and tags
1050
1051 Wed Oct 16 12:28:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1052
1053         * main.c (version): Add call to copyleft(), per new standards.
1054           version.c: Fix text of version string to match new standards.
1055
1056 Sun Oct  6 22:19:45 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1057
1058         * regex.c: updated to Emacs 19.34b base.
1059
1060 Sun Oct  6 21:57:34 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1061
1062         * re.c (make_regexp): fixed to handle \8 and \9 in the middle
1063           of a regexp.
1064
1065 Fri Oct  4 10:26:16 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1066
1067         * awk.y (snode): remove case for do_split; always making the
1068           third arg a Node_regex is wrong.
1069           field.c (do_split): rationalized to distinguish `/ /' from `" "'.
1070           Generally fixed up.
1071         * node.c (parse_escape): Allow single digit \x escapes.
1072
1073 1996-10-02  Paul Eggert  <eggert@twinsun.com>
1074
1075         * builtin.c (format_tree):
1076         Fix bug in %d and %i format: NaNs, and values
1077         in the range LONG_MAX+1 .. ULONG_MAX, were mishandled.
1078         Don't assume that double values <= -1 are converted to unsigned
1079         long in the expected way; the C Standard doesn't guarantee this.
1080
1081 1996-10-02  Paul Eggert  <eggert@twinsun.com>
1082
1083         * awk.h (INT_MAX): Remove unused symbol.
1084
1085 Mon Sep 30 22:19:11 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1086
1087         * getopt.c (_getopt_internal): If 'W' is in the optstring followed
1088           by a ';' then search through the long opts table. This makes
1089           `-W foo=bar' same as `--foo=bar'.
1090         * main.c (main): 'W' now prints an error message.
1091           (gawk_option): deleted the routine.
1092
1093 Sun Sep 29 23:04:54 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1094
1095         * builtin.c (sub_common): fix several bugs with gsub when
1096           matching null strings. See test/gsubtest.awk.
1097
1098 Fri Sep 20 17:35:54 1996  Pat Rankin  <rankin@eql.caltech.edu>
1099
1100         * alloca.c (NULL): don't define if <config.h> has already done so.
1101
1102 Fri Sep 20 11:54:31 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1103
1104         * builtin.c (do_print): evaluate all the expressions first and
1105           then print them. Avoids surprising behavior. See test/prtoeval.awk
1106           for an example.
1107
1108 Tue Sep 10 06:21:40 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1109
1110         * awk.h [FUNC]: new flag, marks a Node_parameter_list as really
1111           being the function name; allows more checking in awk.y.
1112         * awk.y (isassignable): now takes a NODE * instead of a type, to
1113           check if a function parameter is marked FUNC, then it's the function
1114           name, which is not assignable. Fix call from snode().
1115           (function_prologue): mark function name as FUNC.
1116           (yyerror): don't call exit() anymore; gawk will now report
1117           all syntax errors.
1118
1119 Sun Sep  1 19:36:30 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1120
1121         * field.c (rebuild_record): after building new field 0, go through
1122           all old fields, and if they used to point into the old one,
1123           have them point into the new one.  Then turn off PERM flag before
1124           unref-ing field 0.
1125
1126 Wed Aug 28 19:13:34 1996  Arnold D. Robbins  <arnold@math.utah.edu>
1127
1128         * eval.c (set_IGNORECASE): Correctly parenthesize bit operations
1129           in test and fix logic for string value.
1130
1131 Wed Aug 28 22:06:33 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1132
1133         * main.c (usage): add email addresses for bug reporting, per
1134           change in GNU Coding Standards from RMS.
1135
1136 Sun Aug 11 23:13:22 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1137
1138         * Makefile.in (install): correct use of $(INSTALL_PROGRAM).
1139
1140 Thu Aug  8 23:29:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1141
1142         * parse.y (isassignable): new function, checks in type can
1143           be assigned to.
1144           (snode): changed checking for 3rd arg of gsub to be more
1145           general, supersedes earlier change.
1146
1147 Thu Aug  8 13:58:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1148
1149         * parse.y (snode): If third arg to sub or gsub is builtin
1150           function, complain, since can't substitute into result.
1151         * eval.c (r_get_lhs): diagnose Node_builtin as an error, instead
1152           of falling through into default case and using cant_happen().
1153
1154 Thu Aug  1 07:13:14 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1155
1156         * regex.h [RE_DEBUG]: new macro.
1157           [RE_SYNTAX_GNU_AWK]: add RE_DEBUG.
1158           [RE_SYNTAX_POSIX_AWK]: add RE_INTERVALS.
1159         * regex.c (re_set_syntax): add #ifdef DEBUG code to turn on `debug'
1160           flag if RE_DEBUG set, and turn off debug if not set and debug
1161           was on.
1162         * main.c (main): remove `do_intervals = TRUE' from `if (do_posix)',
1163           it's now handled in the definition of RE_SYNTAX_POSIX_AWK.
1164
1165 Mon Jul 29 17:49:07 1996  Pat Rankin  <rankin@eql.caltech.edu>
1166
1167         * io.c (O_ACCMODE): define it if <fcntl.h> doesn't.
1168
1169 Mon Jul 29 12:02:48 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1170
1171         * eval.c (set_IGNORECASE): made somewhat smarter. gawk -v IGNORECASE=0
1172           was acting the same as -v IGNORECASE=1. Thanks to Darrell Hankerson
1173           for the bug report.
1174
1175 Fri Jul 26 12:04:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1176
1177         * awk.h (format_val): add declaration of new routine.
1178         * node.c (format_val): new routine, abstracts old guts of
1179           r_forcestring; accepts format string and index as additional params.
1180           (r_force_string): changed to call format_val.
1181         * builtin.c (do_print):  don't tree_eval the tree twice in case
1182           OFMTidx != CONVFMTidx; doing so could cause side effects
1183           (from bug report by Tobias Rettstadt, xassp@ipds.uni-kiel.de).
1184           Instead, call format_val.
1185
1186 Mon Jul 22 21:59:15 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1187
1188         * io.c (iop_close): change check for "is $0 in the input buffer"
1189           to use `< (iop->buf + iop->secsiz + iop->size)' instead of
1190           `< iop->end'. The latter is bogus if EOF has been hit on the
1191           file.  Fix from Darrel Hankerson based on bug report by
1192           Charles Howes (howes@grid.direct.ca).  See test/eofsplit.awk.
1193
1194 Thu Jul 18 19:43:20 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1195
1196         * builtin.c (sub_common): backed out change of Feb 14 in favor of:
1197           (do_gensub): Changed to use make_string and then to |= TEMP
1198           flag, based on bug report and patch from Katsuyuki Okabe,
1199           hgc02147@niftyserve.or.jp.
1200
1201 Thu Jul 18 19:23:53 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1202
1203         * custom.h: added ifdef for QNX, based on bug report from
1204           Michael Hunter, mphunter@qnx.com.
1205
1206 Mon Jul 15 09:31:01 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1207
1208         * io.c (redirect): When finding the rp pointer, if it's not
1209           NULL, set str = rp->value. This gets the '\0' terminated
1210           version. Motivated by bug report from John Hawkinson
1211           (jhawk@bbnplanet.com).
1212
1213 Sun Jul 14 18:40:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1214
1215         * configure.in: added call to AC_CHECK_LIB(m, fmod), since
1216           apparently some systems have fmod in the math library.
1217           Portability: the Holy Grail.  Sigh.
1218
1219 Sun Jul 14 18:08:01 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1220
1221         * awk.h: add Jim Meyerings ISASCII etc hacks for ctype macros.
1222         * builtin.c (do_toupper, do_tolower, sub_common): changed to use
1223           upper-case versions of ctype macros.
1224         * main.c (main): ditto.
1225         * node.c (r_force_number, parse_escape): ditto.
1226
1227 Sun Jul 14 06:34:18 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1228
1229         * field.c (set_record): made it always do the PERM flag.
1230           Fixes cases where $0 is assigned to, e.g. by gsub, keeps
1231           the fields valid.
1232           (get_field): removed the call to reset_record in
1233           case where ! field0_valid. We want to leave the fields alone
1234           if they've been changed.
1235
1236 Thu Jul 11 23:04:20 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1237
1238         * io.c (devopen): change tests of (flag & O_fooONLY) to
1239           (flag & O_ACCMODE) == O_fooONLY. Per (long standing) bug
1240           report from Chapman Flack.
1241           (close_redir): change final conditional to just (status != 0)
1242           so that ERRNO always set; the warning had its own `if (do_lint)'
1243           anyway.
1244         * eval.c (do_split): force type of array to be Node_var_array
1245           instead of Node_var.  Per (long standing) bug report from
1246           Chapman Flack.
1247
1248 Thu Jul 11 22:17:14 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1249
1250         * Makefile.in (install): added symlink of gawk to awk if
1251           no awk in $(bindir).
1252           (LN_S): new variable for symlinking.
1253           (uninstall): remove awk if it's the same gawk.
1254         * Configure.in: Added call to AC_PROG_LN_S for Makefile.in.
1255
1256 Sun Jul  7 15:47:13 1996  Arnold D. Robbins  <arnold@infographix.com>
1257
1258         * main.c (main): made `--posix' turn on interval expressions.
1259           Gawk now matches its documentation. (What a concept!)
1260
1261 Wed Jul  3 15:02:48 1996  Arnold D. Robbins  <arnold@infographix.com>
1262
1263         * regex.h, regex.c: upgraded to changes from Emacs 19.31.
1264
1265 Fri May 17 08:46:07 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1266
1267         * io.c (get_a_record): added `continued' flag. Fix from
1268           Darrell Hankerson for when RS = "\n|something".
1269
1270 Wed May 15 02:34:55 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1271
1272         * Makefile.in (awklib/all): now depends on gawk, fixes problem
1273           with parallel make.
1274
1275 Tue May 14 15:02:52 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1276
1277         * builtin.c (format_tree): fix handling of '*' to deal with
1278           negative value for fieldwidth -- make positive and turn on
1279           left justify. Per bug report from Michael Brennan.
1280
1281 Sun May 12 20:42:06 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1282
1283         * eval.c (r_get_lhs): case Node_subscript. Check if array name
1284           is actually a function, fatal error if so.
1285
1286 Sun May  5 10:11:52 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1287
1288         * io.c (redirect): call flush_io() before creating a new output pipe,
1289           per bug report from Brian Kernighan (bwk@research.bell-labs.com).
1290
1291 Fri Mar 15 06:38:33 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1292
1293         * Makefile.in (install): use $(INSTALL_PROGRAM), not $(INSTALL).
1294           (local-distclean): add `*~' to list of files to be removed.
1295           (CFLAGS): now contains just @CFLAGS@.
1296           (COMPFLAGS): replaces use of CFLAGS, has CFLAGS plus all the
1297           other stuff.
1298
1299 Wed Mar 13 14:19:38 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1300
1301         * io.c (mmap_get_record): fixed to not place sentinel at end
1302           of mmap'ed object. Won't work if file is exact multiple of
1303           disk block size. See comments in code for more info.
1304           Thanks to Rick Adams (rick@uunet.uu.net) for help in testing.
1305
1306 Sun Mar 10 22:50:23 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1307
1308         * io.c (do_close): notice if we were called as `close(FILENAME)'
1309           and arrange to close the current input file. This turns out
1310           to be easy to do, just call `nextfile(TRUE)'. Based on bug report
1311           from Pascal A. Dupuis, <dupuis@lei.ucl.ac.be>.
1312
1313 Thu Mar  7 08:08:51 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1314
1315         * field.c (init_fields, grow_fields, set_field, rebuild_record):
1316           Nuke the `nodes' array everywhere.  Anytime a field is unref'ed,
1317           allocate a new node that is a copy of Nnull_string. This avoids
1318           subtle memory management problems when doing a lot of assignment
1319           to fields, and tweaking of NF. Make sure that fields_arr[0] always
1320           has a type of Node_val!
1321         * field.c (set_NF): If NF is decremented, clear fields between
1322           NF and parse_high_water, otherwise if NF incremented, clear
1323           fields between parse_high_water and NF.
1324         * eval.c (nodetype2str): new function, used for diagnostics.
1325           eval.c (interpret): use nodetype2str when finding invalid node.
1326           
1327 Mon Mar  4 09:02:28 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1328
1329         * builtin.c (do_toupper, do_tolower): use isascii along with
1330           isupper/islower before changing case, in case characters have
1331           the high bit set. This is a hack.
1332
1333 Mon Feb 26 22:24:44 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1334
1335         * builtin.c (sub_common): if no match, and called from gensub,
1336           don't free the temporary string, since the tmp_number then
1337           writes over it.
1338
1339 Sun Feb 25 23:13:01 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1340
1341         * builtin.c (format_tree): fixed %c to treat user input as
1342           numeric also by adding test for MAYBE_NUM.
1343
1344 Tue Feb 20 12:25:50 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1345
1346         * configure.in: Added AC_FUNC_MMAP call and add madvise to
1347           list of functions to look for.
1348         * awk.h [IOP_ISMAPPED]: new flag value for mmap support and new
1349           `getrec' structure member in struct iobuf.
1350         * io.c (iop_alloc, iop_close): changed to map/unmap input file
1351           into memory if possible.
1352           (mmap_get_record): new function to actually retrieve the
1353           record from mmaped file.
1354
1355 Thu Feb  1 08:56:46 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1356
1357         * builtin.c (do_substr): fixed lint message to use indx+1 when
1358           start position is past end of string.
1359
1360 Sun Jan 28 07:00:56 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1361
1362         * builtin.c (do_substr): rationalized handling of missing length
1363           argument, as well as various accompanying lint warnings. Previous
1364           code was slightly bogus. Talk about your Day 1 bugs.
1365
1366 Thu Jan 25 14:09:11 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1367
1368         * builtin.c (do_substr): if length exceeds length of actual
1369           string, do computation of needed substring length *after*
1370           the lint warning.
1371
1372 Wed Jan 24 10:06:16 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1373
1374         * Makefile.in (gawk): Add $(CFLAGS) to link line.
1375           (Makefile): target depends on the Makefile.in files.
1376           (OTHERS): Added TAGS and tags to the distribution.
1377           (local-distclean): New rule.
1378           (distclean): Use it.
1379           (maintainer-clean): Don't `make distclean' before running submakes,
1380           since that removes makefiles needed for the submakes.
1381         * builtin.c (do_strftime): Remove hard coded limit on length of result.
1382           Based on code from Paul Eggert (eggert@twinsun.com).
1383
1384 Mon Jan 22 13:16:37 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1385
1386         * main.c (usage): takes new fp parameter which is either
1387           stdout for `--help' (per the GNU Coding Standards) or stderr
1388           if an error occurs. Fix all calls.
1389           (version): prints to stdout per the coding stds.
1390           (copyleft): prints to stdout now, not stderr, and exits.
1391
1392 Fri Jan 19 08:10:29 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1393
1394         * regex.h [RE_GNU_AWK]: added RE_CONTEXT_INDEP_OPS to set of
1395           bits we turn off for regular operation. Breaks things like
1396           /^+[0-9]+/ to match a literal `+' at the beginning of, say,
1397           a phone number.
1398
1399 Wed Jan 10 23:19:36 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1400
1401         * 3.0.0 polished up and release tar file made.
1402
1403 Wed Dec 27 11:46:16 1995  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1404
1405         * 2.94.0 released to porting group (no, I haven't been good
1406           about this file; I'll do better once 3.0 is released).
1407
1408 Mon Aug 28 23:04:30 1995  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1409
1410         * awk.h updated for NeXT - bracket TRUE/FALSE
1411         * io.c (get_a_record): removed shadowing of 'start' in
1412         * Makefile.in and doc/Makefile.in: fixed to use gawk.1 and gawk.texi,
1413           instead of gawk.1.in and gawk.texi.in.
1414
1415 Mon Aug 25 11:04:30 1995  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
1416
1417         * 2.90.0 released to porting group.
1418
1419 Fri Aug 18 12:43:31 1995  Arnold D. Robbins  <arnold@puny.ssc.com>
1420
1421         * ChangeLog created.