~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to ChangeLog.0

  • Committer: Andrew J. Schorr
  • Date: 2014-08-03 18:44:47 UTC
  • mfrom: (408.7.1)
  • mto: (408.2.352)
  • mto: This revision was merged to the branch mainline in revision 507.
  • Revision ID: git-v1:ff21da5c7f072a69e9582f1a7ae2039f27f564cf
Merge branch 'gawk-4.1-stable' to get --profile to work with -M.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1318
1318
                        OR
1319
1319
                break 1
1320
1320
                condition "condition expression"
1321
 
 
 
1321
 
1322
1322
        * command.y: grammar clean-ups.
1323
1323
        (find_command): Redo to fix bugs in abbreviation/partial-string
1324
1324
        search.
1330
1330
        * awk.h: new enum type redirval for I/O redirection types;
1331
1331
        remove redirection types from OPCODE.
1332
1332
        * awkgram.y: Adjust grammar for redirection type changes.
1333
 
        (yylex, mk_getline): Update for redirection type changes.
 
1333
        (yylex, mk_getline): Update for redirection type changes.
1334
1334
        * io.c (redirect, do_getline): Ditto.
1335
1335
        * profile.c (redir2str): New function to convert redirection types
1336
1336
        to string constants.
1652
1652
        Nuke /dev/pid etc. special files!
1653
1653
 
1654
1654
        * awk.h (IOP_IS_INTERNAL, IOP_NO_FREE): Removed. Other defines
1655
 
        renumbered.
 
1655
          renumbered.
1656
1656
        * io.c (iop_open, spec_setup, specfdopen, pidopen, useropen): Removed.
1657
 
        (do_input, redirect): Change uses of iop_open() to devopen() +
1658
 
        iop_alloc().
1659
 
        (iop_close, get_a_record): Remove special handling for IOP_INTERNAL,
1660
 
        IOP_NO_FREE.
1661
 
        (devopen): Remove comment relating to iop_open.
1662
 
        Add fstat check for valid fd for /dev/fd/N.
 
1657
          (do_input, redirect): Change uses of iop_open() to devopen() +
 
1658
          iop_alloc().
 
1659
          (iop_close, get_a_record): Remove special handling for IOP_INTERNAL,
 
1660
          IOP_NO_FREE.
 
1661
          (devopen): Remove comment relating to iop_open.
 
1662
          Add fstat check for valid fd for /dev/fd/N.
1663
1663
 
1664
1664
Sun Nov  4 10:27:58 2001  Arnold D. Robbins  <arnold@skeeve.com>
1665
1665
 
1677
1677
        with getline.
1678
1678
 
1679
1679
        * awk.h (IOBUF): New members save_start and rec_size.
1680
 
        (do_mark, do_reset): Add declarations.
 
1680
          (do_mark, do_reset): Add declarations.
1681
1681
        * awkgram.y (tokentab): Add entries for mark and reset.
1682
1682
        * io.c (specsetup): Initialize save_start and rec_size.
1683
 
        (iop_alloc): Ditto.
1684
 
        (do_getline): Update them as appropriate.
1685
 
        (do_mark, do_reset): New functions.
 
1683
          (iop_alloc): Ditto.
 
1684
          (do_getline): Update them as appropriate.
 
1685
          (do_mark, do_reset): New functions.
1686
1686
 
1687
1687
Fri Sep 17 12:42:42 2010  Arnold D. Robbins  <arnold@skeeve.com>
1688
1688
 
2242
2242
        * io.c (devoopen): Ditto.
2243
2243
 
2244
2244
Thu May 21 21:11:44 2009  Arnold D. Robbins  <arnold@skeeve.com>
2245
 
 
2246
 
        Add simple constant folding.
2247
 
 
 
2245
 
 
2246
        Add simple constant folding.
 
2247
 
2248
2248
        * awk.h (do_optimize): New declaration.
2249
2249
        (calc_exp): Add declaration.
2250
2250
        * eval.c (calc_exp): Make non-static.
2254
2254
        (usage): Update for new option.
2255
2255
        * awkgram.y (Node_concat, Node_exp, Node_times, Node_quotient, Node_mod,
2256
2256
        Node_plus, Node_minus): Call `constant_fold' to create the node in
2257
 
        the tree.
 
2257
        the tree.
2258
2258
        (constant_fold): New function.
2259
2259
 
2260
2260
Fri May 15 16:02:01 2009  Arnold D. Robbins  <arnold@skeeve.com>
2486
2486
 
2487
2487
        * re.c (research): Don't ever use DFA if need_start. It can
2488
2488
        break on some weird cases.  Reported by
2489
 
        "T. X. G." <leopardie333@yahoo.com>.
 
2489
         "T. X. G." <leopardie333@yahoo.com>.
2490
2490
 
2491
2491
Wed Jul 30 22:27:20 2008  Arnold D. Robbins  <arnold@skeeve.com>
2492
2492
 
3723
3723
        Workarounds for bugs and missing C89 features in old VAX C compiler.
3724
3724
 
3725
3725
        * regex_internal.h "mbsupport.h": Suppress inclusion if NO_MBSUPPORT
3726
 
        is defined.
 
3726
          is defined.
3727
3727
        [MB_CUR_MAX]: Define as 1 if mbsupport.h hasn't defined it.
3728
3728
        [ER_ERRMSG, ERRMSG_TYPE, ERRMSG_OFFSET, ERRMSG_SEPARATOR]: New macros
3729
 
        conditionalized upon gawk's NO_TOKEN_PASTING macro.
 
3729
          conditionalized upon gawk's NO_TOKEN_PASTING macro.
3730
3730
        * regcomp.c: Use them.
3731
3731
        (parse_dup_op): Use alternate initialization of start_token if
3732
 
        RE_TOKEN_INIT_BUG is defined.
 
3732
          RE_TOKEN_INIT_BUG is defined.
3733
3733
        * regexec.c (proceed_next_node): Compare push_fail_stack() result
3734
 
        explicitly against REG_NOERROR rather than implicitly against 0.
 
3734
          explicitly against REG_NOERROR rather than implicitly against 0.
3735
3735
 
3736
3736
Sat Feb 19 20:05:50 2005   Pat Rankin    <rankin@pactechdata.com>
3737
3737
 
3743
3743
        * regex.h <sys/types.h>: Guard inclusion with HAVE_SYS_TYPES_H.
3744
3744
        * regex.c <sys/types.h>: Likewise.
3745
3745
        * random.c "random.h": Include this first to get config.h setup.
3746
 
        <fcntl.h>: Guard inclusion with HAVE_FCNTL_H.
3747
 
        <unistd.h>: Guard inclusion with HAVE_UNISTD_H.
 
3746
          <fcntl.h>: Guard inclusion with HAVE_FCNTL_H.
 
3747
          <unistd.h>: Guard inclusion with HAVE_UNISTD_H.
3748
3748
        * io.c [#if defined(MSDOS) ||... defined(__CYGWIN__)]: Splice the
3749
 
        backslash continuation back into one long line.
 
3749
          backslash continuation back into one long line.
3750
3750
 
3751
3751
Wed Feb 16 10:11:21 2005   Arnold D. Robbins    <arnold@skeeve.com>
3752
3752
 
3836
3836
        Reinstate patch of 18 Nov 2001, for VMS, at least:
3837
3837
 
3838
3838
        * random.c (srandomdev): ifdef-out.  Lots of compile time
3839
 
        problems on multiple platforms, and gawk doesn't even
3840
 
        use the routine.  The heck with fine-grained solutions.
 
3839
          problems on multiple platforms, and gawk doesn't even
 
3840
          use the routine.  The heck with fine-grained solutions.
3841
3841
 
3842
3842
Thu Jan 20 14:15:32 2005   Arnold D. Robbins    <arnold@skeeve.com>
3843
3843
 
4057
4057
        * dfa.c (parse_bracket_exp_mb): 
4058
4058
        1. Build range correctly when IGNORECASE for [a-a] to also get 'A'.
4059
4059
        2. For [:lower:] and [:upper:], if ignoring case, set type string
4060
 
        to "alpha".  This parallels code in the regex routines.
 
4060
           to "alpha".  This parallels code in the regex routines.
4061
4061
        3. Reset wc1 to EOF when parsing bracket expressions.
4062
4062
 
4063
4063
Mon Nov 29 18:36:25 2004   Arnold D. Robbins    <arnold@skeeve.com>
4083
4083
Wed Oct 27 14:25:18 2004  Stepan Kasal  <kasal@ucw.cz>
4084
4084
 
4085
4085
        * builtin.c (do_tolower, do_toupper): Fix the wide char handling,
4086
 
        especially when the lowercased char doesn't ocuppy the same
4087
 
        number of bytes as its uppercase equivalent.  Make use of ...
 
4086
          especially when the lowercased char doesn't ocuppy the same
 
4087
          number of bytes as its uppercase equivalent.  Make use of ...
4088
4088
        (wide_tolower_toupper): ... this new static function.
4089
4089
 
4090
4090
Mon Oct 25 11:51:14 2004   Arnold D. Robbins    <arnold@skeeve.com>
4166
4166
        * main.c (gawk_mb_cur_max): Define.
4167
4167
        * awkgram.y (nextc_is_1stbyte): Without mbs support, define to 1.
4168
4168
        * builtin.c (index_multibyte_buffer): Define a dummy function
4169
 
        when there is no mbs support.
 
4169
          when there is no mbs support.
4170
4170
        * awkgram.y, builtin.c, re.c: Remove some `#ifdef MBS_SUPPORT'.
4171
4171
 
4172
4172
Sun Aug 15 22:08:04 2004   Arnold D. Robbins    <arnold@skeeve.com>
4176
4176
 
4177
4177
        * random.c: Imported from FreeBSD. Header includes tweaked.
4178
4178
        * random.h: Typdef gawk_uint32_t appropriately and #define uint32_t
4179
 
        to it.
 
4179
          to it.
4180
4180
        * configure.ac: Add calls to AC_CHECK_SIZEOF for unsigned int
4181
4181
        and unsigned long.
4182
4182
 
4241
4241
Thu Jul  8 16:59:51 2004  Stepan Kasal  <kasal@ucw.cz>
4242
4242
 
4243
4243
        * awkgram.y (output_redir): Make sure not to dereference NULL
4244
 
        pointer.  The bug was triggered by the following code:
 
4244
          pointer.  The bug was triggered by the following code:
4245
4245
 
4246
4246
                gawk 'BEGIN{print "date" |& getline}'
4247
4247
 
4418
4418
Mon May 31 11:49:20 2004  Stepan Kasal  <kasal@ucw.cz>
4419
4419
 
4420
4420
        * replace.c: #undef DEBUG before including mktime.c, it has
4421
 
        different meaning there.
 
4421
          different meaning there.
4422
4422
 
4423
4423
Mon May 31 08:25:30 2004  Arnold D. Robbins  <arnold@skeeve.com>
4424
4424
 
4436
4436
        * configure.ac: Look for missing `strtoul'.
4437
4437
        * replace.c: Include missing_d/stroul.c if not HAVE_STRTOUL.
4438
4438
        * io.c (devopen): Use `strtoul' instead of `strtod' for
4439
 
        extracting fd number from "/dev/fd/N".  (Thanks to Jim Meyering.)
 
4439
          extracting fd number from "/dev/fd/N".  (Thanks to Jim Meyering.)
4440
4440
        * field.c (set_FIELDWIDTHS): Use `strtoul' instead of `strtod'
4441
 
        when parsing FIELDWIDTHS values.  (Thanks to Jim Meyering.)
 
4441
          when parsing FIELDWIDTHS values.  (Thanks to Jim Meyering.)
4442
4442
 
4443
4443
Mon Apr 19 20:12:57 2004  Arnold D. Robbins  <arnold@skeeve.com>
4444
4444
 
4450
4450
        * eval.c (make_scalar): Comment clarification.
4451
4451
 
4452
4452
        * array.c (get_actual): Remove the condition ``canfatal''
4453
 
        before ``cant_happen()''; if the data are consistent, we
4454
 
        simply cannot get there with a non-func Node_param_list,
4455
 
        no matter whether we are called via get_array or not.
 
4453
          before ``cant_happen()''; if the data are consistent, we
 
4454
          simply cannot get there with a non-func Node_param_list,
 
4455
          no matter whether we are called via get_array or not.
4456
4456
 
4457
4457
        * awkgram.y (variable): Make one longer message, to help translators.
4458
4458
 
4889
4889
2003-07-23  Christophe Bisiere  <bisiere@univ-tlse1.fr>  (tiny change)
4890
4890
 
4891
4891
        * posix/regex.h (RE_TRANSLATE_TYPE): Define it to "unsigned char,"
4892
 
        to avoid problems at hosts with signed char.
 
4892
          to avoid problems at hosts with signed char.
4893
4893
        * posix/regexec.c (re_search_internal): Don't say
4894
 
        "unsigned RE_TRANSLATE_TYPE."
 
4894
          "unsigned RE_TRANSLATE_TYPE."
4895
4895
 
4896
4896
Thu Aug 28 11:09:41 2003  Arnold D. Robbins  <arnold@skeeve.com>
4897
4897
 
5021
5021
2003-06-20  Stepan Kasal  <kasal@ucw.cz>
5022
5022
 
5023
5023
        * eval.c (comp_func): If memcmp returns 0, we have to compare
5024
 
        the lengths.
 
5024
          the lengths.
5025
5025
 
5026
5026
2003-06-19  Stepan Kasal  <kasal@ucw.cz>
5027
5027
 
5028
5028
        * eval.c (interpret) <Node_K_arrayfor>: Use NULL, not 0, to
5029
 
        initialize the variable list.
5030
 
        (comp_func): Array indices no longer are string values,
5031
 
        you have to use ahname_str, ahname_len.
 
5029
          initialize the variable list.
 
5030
          (comp_func): Array indices no longer are string values,
 
5031
          you have to use ahname_str, ahname_len.
5032
5032
 
5033
5033
Tue Jun 17 11:53:46 2003  Arnold D. Robbins  <arnold@skeeve.com>
5034
5034
 
5038
5038
2003-06-17  Stepan Kasal  <kasal@ucw.cz>
5039
5039
 
5040
5040
        * array.c (get_actual): Even if canfatal is FALSE, don't
5041
 
        tolerate existence of things which can't happen.
 
5041
          tolerate existence of things which can't happen.
5042
5042
 
5043
5043
Mon Jun 16 16:21:44 2003  Arnold D. Robbins  <arnold@skeeve.com>
5044
5044
 
5060
5060
2003-06-10  Stepan Kasal  <kasal@ucw.cz>
5061
5061
 
5062
5062
        * awkgram.y (release_all_vars): Do not try to release a value of
5063
 
        Node_var_new; after get_lhs, use the lhs directly, do not try
5064
 
        to do (*lhs)->var_value; the Node_var case doesn't need
5065
 
        special treatment.
 
5063
          Node_var_new; after get_lhs, use the lhs directly, do not try
 
5064
          to do (*lhs)->var_value; the Node_var case doesn't need
 
5065
          special treatment.
5066
5066
        * builtin.c (do_match): `get_param' is successful iff it returns
5067
 
        Node_var_array---if the variable was new, get_param has already
5068
 
        changed the type.
 
5067
          Node_var_array---if the variable was new, get_param has already
 
5068
          changed the type.
5069
5069
        * field.c (do_split): Likewise.
5070
5070
 
5071
5071
Sun Jun 15 19:36:35 2003  Arnold D. Robbins  <arnold@skeeve.com>
5132
5132
 
5133
5133
        * field.c, awk.h (Null_field): No longer static.
5134
5134
        * field.c (init_fields): Initial value of $0 can be Nnull_string,
5135
 
        no need to copy it.
 
5135
          no need to copy it.
5136
5136
        * eval.c (r_get_lhs) <Node_field_spec>: Test for uninitialized field,
5137
 
        which is Nnull_string for $0 and Null_field for $(>0).
 
5137
          which is Nnull_string for $0 and Null_field for $(>0).
5138
5138
        * builtin.c (do_print_rec): Test for uninitialized $0.
5139
5139
 
5140
5140
Tue May 27 17:03:02 2003  Stepan Kasal  <kasal@math.cas.cz>
5588
5588
        ADR: More grammar rationalization/repair from Stepan.
5589
5589
 
5590
5590
        * awkgram.y (common_exp, simp_exp): The rule from getline (without
5591
 
        pipe) has been moved from common_exp to simp_exp.
 
5591
          pipe) has been moved from common_exp to simp_exp.
5592
5592
 
5593
5593
        The redirection of print statements reworked.  The idea comes from
5594
5594
        mawk-1.3.3; much thanks to Michael Brennan!
5595
5595
 
5596
5596
        * awkgram.y (IO_OUT, IO_IN): New tokens.
5597
 
        (APPEND_OP, TWOWAYIO): Swallowed by the above ones.
5598
 
        (in_print, in_parens): New static variables, to trace whether
5599
 
        IO_OUT is expected.
5600
 
        (yylex): Emit the new tokens, update in_parens on '(' and ')'.
5601
 
        (exp): The print command(s) reworked.
5602
 
        (oputput_redir): Reworked.
5603
 
        (print_expression_list): New non-terminal.
5604
 
        (rexp, rexpression_list opt_rexpression_list): Nuked.
5605
 
        (exp, simp_exp): ``cmd|getline'' rule changed to
5606
 
        ``cmd IO_IN getline'' and moved from exp to simp_exp.
 
5597
          (APPEND_OP, TWOWAYIO): Swallowed by the above ones.
 
5598
          (in_print, in_parens): New static variables, to trace whether
 
5599
          IO_OUT is expected.
 
5600
          (yylex): Emit the new tokens, update in_parens on '(' and ')'.
 
5601
          (exp): The print command(s) reworked.
 
5602
          (oputput_redir): Reworked.
 
5603
          (print_expression_list): New non-terminal.
 
5604
          (rexp, rexpression_list opt_rexpression_list): Nuked.
 
5605
          (exp, simp_exp): ``cmd|getline'' rule changed to
 
5606
          ``cmd IO_IN getline'' and moved from exp to simp_exp.
5607
5607
 
5608
5608
        Unrelated:
5609
5609
 
5610
5610
        * awkgram.y (variable): Don't return Node_func, issue a fatal
5611
 
        error instead.
 
5611
          error instead.
5612
5612
        * eval.c (r_tree_eval, r_get_lhs): Omit special checks for Node_func,
5613
 
        nodes of this type cannot get into the program tree.
 
5613
          nodes of this type cannot get into the program tree.
5614
5614
        * profile.c (tree_eval, pp_lhs): Likewise.
5615
5615
 
5616
5616
Thu Jan 30 17:42:05 2003  Stepan Kasal  <kasal@math.cas.cz>
5619
5619
 
5620
5620
        * array.c (do_delete_loop): Call after_assign for the loop index.
5621
5621
        * field.c (do_split): The third argument to split(), sep, has to be
5622
 
        evaluated and the result dupnoded before assoc_clear is called,
5623
 
        similarily as src.  And we needn't to evaluate the third argument
5624
 
        if it's CONSTant regex and the first parameter is null string.
 
5622
          evaluated and the result dupnoded before assoc_clear is called,
 
5623
          similarily as src.  And we needn't to evaluate the third argument
 
5624
          if it's CONSTant regex and the first parameter is null string.
5625
5625
        * awk.h (dupnode): Changed to macro, function renamed to r_dupnode.
5626
5626
        * node.c (dupnode, r_dupnode): Rename.
5627
5627
        * awkgram.y (parms_shadow): Return bool value, ...
5628
 
        (shadow_funcs): ... which will enable us to end the program if
5629
 
        lintfunc is fatal.
5630
 
        (program): Cleanup of the rules defining the ``program'' non-terminal.
5631
 
        (start, program, rule): No value associated,
5632
 
        expression_value is now treated similarily as begin_block and end_block.
5633
 
        (pattern, rule): Bison actions for non-terminal `pattern' now
5634
 
        add a new rule to the appropriate Node_rule_list, action for
5635
 
        non-terminal `rule' now only adds the associated code block
5636
 
        to the rnode of Node_rule_node.
5637
 
        (io_allowed): Renamed to !begin_or_end_rule.
5638
 
        (append_pattern): New function, adds new Node_rule_node to a rule_list.
5639
 
        (mkrangenode): Deleted, this tiny function was called only once.
5640
 
        (function_body): Non-terminal replaced by `action'.
5641
 
        (statements, action, statement): `statements' can now be empty;
5642
 
        both callers had to accomodate to this.
5643
 
        (statements): Don't call isnoeffect($2->type) if
5644
 
        $2 happens to be NULL.
 
5628
          (shadow_funcs): ... which will enable us to end the program if
 
5629
          lintfunc is fatal.
 
5630
          (program): Cleanup of the rules defining the ``program'' non-terminal.
 
5631
          (start, program, rule): No value associated,
 
5632
          expression_value is now treated similarily as begin_block and end_block.
 
5633
          (pattern, rule): Bison actions for non-terminal `pattern' now
 
5634
          add a new rule to the appropriate Node_rule_list, action for
 
5635
          non-terminal `rule' now only adds the associated code block
 
5636
          to the rnode of Node_rule_node.
 
5637
          (io_allowed): Renamed to !begin_or_end_rule.
 
5638
          (append_pattern): New function, adds new Node_rule_node to a rule_list.
 
5639
          (mkrangenode): Deleted, this tiny function was called only once.
 
5640
          (function_body): Non-terminal replaced by `action'.
 
5641
          (statements, action, statement): `statements' can now be empty;
 
5642
          both callers had to accomodate to this.
 
5643
          (statements): Don't call isnoeffect($2->type) if
 
5644
          $2 happens to be NULL.
5645
5645
 
5646
5646
Mon Jan 27 14:12:19 2003  Arnold D. Robbins  <arnold@skeeve.com>
5647
5647
 
5657
5657
Mon Jan 27 14:06:20 2003  Stepan Kasal  <kasal@math.cas.cz>
5658
5658
 
5659
5659
        * field.c (reset_record): No longer call set_record(), the code is
5660
 
        moved to the function body.  Do not set MAYBE_NUM.
5661
 
        (set_record): Call reset_record() to perform the common tasks.
5662
 
        The prototype has changed, change awk.h and all callers.
 
5660
          moved to the function body.  Do not set MAYBE_NUM.
 
5661
          (set_record): Call reset_record() to perform the common tasks.
 
5662
          The prototype has changed, change awk.h and all callers.
5663
5663
 
5664
5664
Mon Jan 27 10:50:03 2003  Arnold D. Robbins  <arnold@skeeve.com>
5665
5665
 
5666
5666
        * awk.h (NODE): `proc' renamed to `builtin,' to fix a conflict
5667
 
        on some systems.  Replaced on all spots where it was used.
 
5667
          on some systems.  Replaced on all spots where it was used.
5668
5668
 
5669
5669
Sun Jan 26 11:52:01 2003  Arnold D. Robbins  <arnold@skeeve.com>
5670
5670
 
5671
5671
        * awk.h [NUMSUBPATS]: New macro.
5672
5672
        * builtin.c (do_match): Use it in loop that fills in subpattern info.
5673
5673
        * eval.c (r_tree_eval): For Node_assign, don't call free_temp(),
5674
 
        as assign_val() contains dupnode(), which would clear the TEMP
5675
 
        flag. From Stepan Kasal <kasal@math.cas.cz>.
 
5674
          as assign_val() contains dupnode(), which would clear the TEMP
 
5675
          flag. From Stepan Kasal <kasal@math.cas.cz>.
5676
5676
        * config.sub: Updated from prep.
5677
5677
 
5678
5678
Sun Jan 19 22:34:01 2003  Arnold D. Robbins  <arnold@skeeve.com>
5750
5750
Mon Dec  9 14:20:42 2002  Stepan Kasal  <kasal@math.cas.cz>
5751
5751
 
5752
5752
        * main.c (main): When processing option '-f' don't ignore spaces
5753
 
        if optarg points at the beginning of the current argument
5754
 
        (like ``gawk -f " " file'').
 
5753
          if optarg points at the beginning of the current argument
 
5754
          (like ``gawk -f " " file'').
5755
5755
 
5756
5756
2002-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5757
5757
 
6583
6583
Sun Apr 28 17:19:07 2002  Arnold D. Robbins  <arnold@skeeve.com>
6584
6584
 
6585
6585
        * fixvers: Changed patterns to allow test versions of the
6586
 
        form `gawk-3.1.1a'.
 
6586
          form `gawk-3.1.1a'.
6587
6587
        * patchlev.h: Patchlevel is now a string constant.
6588
6588
        * main.c (version): Print patchlevel using %s, not %d.
6589
6589
        * Makefile.am: Rework DEFPATH stuff and datadir stuff yet again.
6673
6673
Sun Mar 17 17:41:55 2002  Arnold D. Robbins  <arnold@skeeve.com>
6674
6674
 
6675
6675
        * io.c (do_pathopen): Malloc buffers to hold constructed
6676
 
        filenames: No Arbitrary Limits!  Thanks to keoki@techie.com
6677
 
        for the bug report.
 
6676
          filenames: No Arbitrary Limits!  Thanks to keoki@techie.com
 
6677
          for the bug report.
6678
6678
 
6679
6679
Sun Mar 10 16:59:06 2002  Scott Deifik       <scottd@amgen.com>
6680
6680
 
6681
6681
        * awk.h (LOCALEDIR): Provide a definition in case not using
6682
 
        i18n stuff.
 
6682
          i18n stuff.
6683
6683
 
6684
6684
Wed Mar  6 18:14:44 2002  Arnold D. Robbins  <arnold@skeeve.com>
6685
6685
 
6688
6688
Sun Mar  3 16:42:50 2002  Arnold D. Robbins  <arnold@skeeve.com>
6689
6689
 
6690
6690
        * getopt.h, getopt.c, getopt1.c: Update to current version
6691
 
        from glibc CVS.
 
6691
          from glibc CVS.
6692
6692
 
6693
6693
Fri Feb 22 15:53:38 2002  Isamu Hasegawa  <isamu@yamato.ibm.com>
6694
6694
 
6706
6706
Thu Feb 21 19:02:22 2002  Isamu Hasegawa  <isamu@yamato.ibm.com>
6707
6707
 
6708
6708
        * builtin.c (sub_common): Avoid index_multibyte_buffer invocation
6709
 
        in single byte character environments.
 
6709
          in single byte character environments.
6710
6710
 
6711
6711
Thu Feb 21 10:08:56 2002  Isamu Hasegawa  <isamu@yamato.ibm.com>
6712
6712
 
6713
6713
        * dfa.c (parse_bracket_exp_mb): For ':', use wctype_t in MALLOC,
6714
 
        not wchar_t.
 
6714
          not wchar_t.
6715
6715
 
6716
6716
Thu Feb 21 09:52:16 2002  Arnold D. Robbins  <arnold@skeeve.com>
6717
6717
 
6722
6722
        * config.guess, config.sub, config.rpath, gettext.h, ylwrap: New files.
6723
6723
        * Makefile.am: Added above to appropriate places.
6724
6724
        * awk.h: Replace libintl.h and macros with include of gettext.h.
6725
 
        (emalloc, erealloc): Add num bytes to error message, put string inside _().
6726
 
        (index_multibyte_buffer): Removed decl.
 
6725
          (emalloc, erealloc): Add num bytes to error message, put string inside _().
 
6726
          (index_multibyte_buffer): Removed decl.
6727
6727
        * awklib/Makefile.am: Use $(EXEEXT) for grcat and pwcat targets.
6728
6728
        * builtin.c (index_multibyte_buffer): Made static to this file.
6729
 
        (sub_common): Add checks that replacement string is length > 0 so
6730
 
        that we don't try to malloc(0): this fails on some systems.
 
6729
          (sub_common): Add checks that replacement string is length > 0 so
 
6730
          that we don't try to malloc(0): this fails on some systems.
6731
6731
        * configure.in (AM_GNU_GETTEXT): Update macro for gettext 0.11.
6732
 
        (ALL_LINGUAS): Removed.
 
6732
          (ALL_LINGUAS): Removed.
6733
6733
        * m4/codeset.m4: New file.
6734
6734
        * m4/gettext.m4: Updated.
6735
6735
        * m4/glibc21.m4: New file.
6746
6746
Mon Feb 18 14:42:39 2002  Arnold D. Robbins  <arnold@skeeve.com>
6747
6747
 
6748
6748
        * builtin.c (nondec2awknum): Change assert to runtime check
6749
 
        in case user passed in bad data.
 
6749
          in case user passed in bad data.
6750
6750
 
6751
6751
2002-02-17  Paul Eggert  <eggert@twinsun.com>
6752
6752
 
6756
6756
Sun Feb 17 14:57:43 2002  Arnold D. Robbins  <arnold@skeeve.com>
6757
6757
 
6758
6758
        * builtin.c (research): If re_search() returns -2, the
6759
 
        match failed since regex couldn't allocate enough memory
6760
 
        for what it needed.  Fail with a fatal message instead.
6761
 
        This is a workaround, not a fix, but I don't mess with
6762
 
        regex.[ch].
 
6759
          match failed since regex couldn't allocate enough memory
 
6760
          for what it needed.  Fail with a fatal message instead.
 
6761
          This is a workaround, not a fix, but I don't mess with
 
6762
          regex.[ch].
6763
6763
 
6764
6764
Fri Feb  8 16:01:11 2002  Arnold D. Robbins  <arnold@skeeve.com>
6765
6765
 
6766
6766
        * awkgram.y (LEX_FOR): Fix case of array loop with body of single
6767
 
        delete statement to actually check the right things to make the
6768
 
        optimization.
 
6767
          delete statement to actually check the right things to make the
 
6768
          optimization.
6769
6769
        * profile.c (tree_eval): Add case for Node_K_delete_loop.
6770
 
        (prec_level): Ditto.
 
6770
          (prec_level): Ditto.
6771
6771
 
6772
6772
Mon Feb  4 10:38:00 2002  Bruno Haible  <bruno@clisp.org>
6773
6773
 
6797
6797
Wed Jan 23 14:46:04 2002  Arnold D. Robbins  <arnold@skeeve.com>
6798
6798
 
6799
6799
        * awkgram.y (yylex): Add test for lasttok != '$' when looking
6800
 
        at _"...".  See comments in code.
 
6800
          at _"...".  See comments in code.
6801
6801
 
6802
6802
Wed Aug 15 07:43:10 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6803
6803
 
6804
6804
        * regex.c : Implements the codes for exactn_bin to work correctly
6805
 
        in multibyte environments, in case of invalid multibyte sequence.
 
6805
          in multibyte environments, in case of invalid multibyte sequence.
6806
6806
 
6807
6807
Wed Aug 15 07:36:56 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6808
6808
 
6809
6809
        * regex.c : Implements the codes for charset/charset_not to
6810
 
        work in multibyte environments.
 
6810
          work in multibyte environments.
6811
6811
 
6812
6812
Wed Aug 15 05:04:34 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6813
6813
 
6816
6816
Wed Aug 15 05:04:15 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6817
6817
 
6818
6818
        * regex.c (count_mbs_length): New function, check the mutibyte
6819
 
        strings and count how many wchar_t the substring occupy.
6820
 
        (CHAR_T): New macro, character type depending on
6821
 
        environments(singlebyte/multibyte).
6822
 
        (UCHAR_T): New macro, unsigned character type.
6823
 
        (COMPILED_BUFFER_VAR): New macro, the buffer containing
6824
 
        the compiled buffer.
6825
 
        Adapt singlebyte/multibyte environments with CHAR_T, UCHAR_T,
6826
 
        and COMPILED_BUFFER_VAR.
 
6819
          strings and count how many wchar_t the substring occupy.
 
6820
          (CHAR_T): New macro, character type depending on
 
6821
          environments(singlebyte/multibyte).
 
6822
          (UCHAR_T): New macro, unsigned character type.
 
6823
          (COMPILED_BUFFER_VAR): New macro, the buffer containing
 
6824
          the compiled buffer.
 
6825
          Adapt singlebyte/multibyte environments with CHAR_T, UCHAR_T,
 
6826
          and COMPILED_BUFFER_VAR.
6827
6827
 
6828
6828
Mon Jun 25 09:00:41 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6829
6829
 
6830
6830
        * regex.c : Reorganize code to build code twice.  byte_* are
6831
 
        for single byte, wcs_* are for multibyte character sets.
6832
 
        Chose functions according to current locale dynamically.
 
6831
          for single byte, wcs_* are for multibyte character sets.
 
6832
          Chose functions according to current locale dynamically.
6833
6833
        * regex.c (convert_mbs_to_wcs): New function, convert multibyte
6834
 
        strings to wide character strings for multibyte environments.
 
6834
          strings to wide character strings for multibyte environments.
6835
6835
 
6836
6836
Fri Jun 22 05:43:50 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6837
6837
 
6838
6838
        * regex.c (MBS_SUPPORT): New macro, defined if the environment
6839
 
        can handle multibyte characters.
6840
 
        (OFFSET_ADDRESS_SIZE): Offset address size in the
6841
 
        compiled buffer.
6842
 
        Rewrite offset addresses with OFFSET_ADDRESS_SIZE.
 
6839
          can handle multibyte characters.
 
6840
          (OFFSET_ADDRESS_SIZE): Offset address size in the
 
6841
          compiled buffer.
 
6842
          Rewrite offset addresses with OFFSET_ADDRESS_SIZE.
6843
6843
 
6844
6844
Thu Apr 26 08:03:17 2001  Isamu Hasegawa  <isamu@yamato.ibm.com>
6845
6845
 
6973
6973
Wed Jan 16 16:32:40 2002  Arnold D. Robbins  <arnold@skeeve.com>
6974
6974
 
6975
6975
        * builtin.c (do_strtonum): Simplified.  Check first if the
6976
 
        value matches a non-decimal number, and if so convert it.
6977
 
        Otherwise do a regular force_number.
 
6976
          value matches a non-decimal number, and if so convert it.
 
6977
          Otherwise do a regular force_number.
6978
6978
 
6979
6979
Mon Jan  7 22:12:15 2002  Arnold D. Robbins  <arnold@skeeve.com>
6980
6980
 
6981
6981
        * awkgram.y (statement): Moved delete, print, and expressions into
6982
 
        new non-terminal `simple_stmt'.  Allow opt_simple_stmt in the
6983
 
        first and third part of a for loop, per latest POSIX, which documents
6984
 
        an otherwise undocumented historical oddity in Unix awk.  This has
6985
 
        the pleasant side effect of making line numbers more accurate for
6986
 
        messages involving delete statements.
6987
 
        (opt_simple_stmt, simple_stmt): New non-terminals.
 
6982
          new non-terminal `simple_stmt'.  Allow opt_simple_stmt in the
 
6983
          first and third part of a for loop, per latest POSIX, which documents
 
6984
          an otherwise undocumented historical oddity in Unix awk.  This has
 
6985
          the pleasant side effect of making line numbers more accurate for
 
6986
          messages involving delete statements.
 
6987
          (opt_simple_stmt, simple_stmt): New non-terminals.
6988
6988
 
6989
 
        Based on bug report from drj@pobox.com.
 
6989
          Based on bug report from drj@pobox.com.
6990
6990
 
6991
6991
Mon Dec 24 14:04:02 2001  Arnold D. Robbins  <arnold@skeeve.com>
6992
6992
 
7020
7020
 
7021
7021
        * configure.in (AC_ARG_WITH): Add appropriate code for autoconf.
7022
7022
        * accondig.h (USE_INCLUDED_STRFTIME): Add #undef for it.
7023
 
        * custom.h (USE_INCLUDED_STRFTIME): Set things up right.
 
7023
        * custom.h (USE_INCLUDED_STRFTIME): Set things up write.
7024
7024
 
7025
7025
Tue Dec  4 16:44:07 2001  Andreas Buening    <andreas.buening@nexgo.de>
7026
7026
 
7030
7030
        * awkgram.y (extproc feature): Add ifdef for __EMX__.
7031
7031
        * gawkmisc.c (__EMX__): Include pc/gawkmisc.c directly.
7032
7032
        * io.c (__EMX__): Added for a number of places in addition to OS2 def.
7033
 
        (two_way_open): Added OS/2 specific code added that uses spawn.
7034
 
        (gawk_popen): Ditto.
 
7033
          (two_way_open): Added OS/2 specific code added that uses spawn.
 
7034
          (gawk_popen): Ditto.
7035
7035
 
7036
7036
Mon Dec  3 14:07:56 2001  Arnold D. Robbins  <arnold@skeeve.com>
7037
7037
 
7041
7041
        * awk.h (groupset, ngroups): New extern variables.
7042
7042
        * configure.in (AC_CHECK_FUNCS): Add getgroups to list.
7043
7043
        * io.c (user_open): Use global ngroups and groupset variables,
7044
 
        don't call getgroups here.
 
7044
          don't call getgroups here.
7045
7045
        * main.c (init_groupset): New function to init global
7046
 
        vars using malloc.  Declare it at top.
7047
 
        (main): Call init_groupset().
7048
 
        (load_procinfo): Use global ngroups and groupset variables.
 
7046
          vars using malloc.  Declare it at top.
 
7047
          (main): Call init_groupset().
 
7048
          (load_procinfo): Use global ngroups and groupset variables.
7049
7049
 
7050
7050
Sun Nov 18 11:56:01 2001  Arnold D. Robbins  <arnold@skeeve.com>
7051
7051
 
7052
7052
        * random.c (srandomdev): ifdef-out.  Lots of compile time
7053
 
        problems on multiple platforms, and gawk doesn't even
7054
 
        use the routine.  The heck with fine-grained solutions.
 
7053
          problems on multiple platforms, and gawk doesn't even
 
7054
          use the routine.  The heck with fine-grained solutions.
7055
7055
 
7056
7056
Wed Nov 14 16:12:40 2001  Pat Rankin  <rankin@eql.caltech.edu>
7057
7057
 
7058
7058
        * builtin.c (bchunk_one): Use `ofre < 1' instead of `ofre <= 0'
7059
 
        to avoid compiler complaint about suspicious comparison for
7060
 
        unsigned variable.  (`ofre == 0' ought to suffice...)
 
7059
          to avoid compiler complaint about suspicious comparison for
 
7060
          unsigned variable.  (`ofre == 0' ought to suffice...)
7061
7061
 
7062
7062
Tue Nov 13 17:27:52 2001  Arnold D. Robbins  <arnold@skeeve.com>
7063
7063
 
7064
7064
        * awkgram.y (yyerror): Fix the code to behave like it
7065
 
        used to.  Keep "no arbitrary limits" by mallocing the
7066
 
        buffer and freeing it.
 
7065
          used to.  Keep "no arbitrary limits" by mallocing the
 
7066
          buffer and freeing it.
7067
7067
 
7068
7068
Wed Nov  7 16:46:20 2001  Arnold D. Robbins  <arnold@skeeve.com>
7069
7069
 
7070
7070
        * awkgram.y (yyerror): Remove dependency upon buf[] to
7071
 
        hold prepended space and `^' pointer.  Avoids core dumps
7072
 
        for long source lines.
 
7071
          hold prepended space and `^' pointer.  Avoids core dumps
 
7072
          for long source lines.
7073
7073
 
7074
7074
Sat Nov  3 22:27:21 2001  Arnold D. Robbins  <arnold@skeeve.com>
7075
7075
 
7078
7078
Mon Oct 29 14:53:57 2001  Arnold D. Robbins  <arnold@skeeve.com>
7079
7079
 
7080
7080
        * awkgram.y: Add semicolons in calls to count_args().
7081
 
        Apparently bisoon adds a semicolon to each body
7082
 
        automatically and byacc doesn't.
 
7081
          Apparently bisoon adds a semicolon to each body
 
7082
          automatically and byacc doesn't.
7083
7083
 
7084
7084
Sun Oct 28 16:53:18 2001  Arnold D. Robbins  <arnold@skeeve.com>
7085
7085
 
7086
7086
        * builtin.c (format_tree): Fix off-by-one error in "ran out
7087
 
        for this one" diagnostic.  Also fix lint check for too many
7088
 
        arguments vs. count in format string.
 
7087
          for this one" diagnostic.  Also fix lint check for too many
 
7088
          arguments vs. count in format string.
7089
7089
 
7090
7090
Wed Oct 10 11:01:47 2001  Arnold D. Robbins  <arnold@skeeve.com>
7091
7091
 
7092
7092
        * fixvers: Check that files exist before doing `cmp', in
7093
 
        case they're in a source code system and aren't there.
7094
 
        Fix from Grant Erickson (gerickson@brocade.com).
 
7093
          case they're in a source code system and aren't there.
 
7094
          Fix from Grant Erickson (gerickson@brocade.com).
7095
7095
 
7096
7096
Thu Oct  4 18:20:36 2001  Arnold D. Robbins  <arnold@skeeve.com>
7097
7097
 
7098
7098
        * eval.c (r_tree_eval): For comparison, dupnode() results of
7099
 
        evaluation so that we can hang on to them and avoid memory
7100
 
        corruption.  Change calls to free_temp() to unref().
 
7099
          evaluation so that we can hang on to them and avoid memory
 
7100
          corruption.  Change calls to free_temp() to unref().
7101
7101
 
7102
7102
Tue Sep 25 15:19:53 2001  Arnold D. Robbins  <arnold@skeeve.com>
7103
7103
 
7104
7104
        * io.c (iop_open): Only call os_close_on_exec() for
7105
 
        fd > fileno(stderr).
 
7105
          fd > fileno(stderr).
7106
7106
 
7107
7107
2001-09-07  Paul Eggert  <eggert@twinsun.com>
7108
7108
 
7109
7109
        * io.c (redirect): When deciding to use the fdopen bug hack,
7110
 
        use "__sun" rather than "solaris".  No compilers predefine
7111
 
        "solaris", but both GCC and Sun C predefine "__sun".
 
7110
          use "__sun" rather than "solaris".  No compilers predefine
 
7111
          "solaris", but both GCC and Sun C predefine "__sun".
7112
7112
 
7113
7113
Thu Aug 30 15:17:12 2001  Arnold D. Robbins  <arnold@skeeve.com>
7114
7114
 
7115
7115
        * main.c (copyleft): Use a printf %d for last year of update
7116
 
        to avoid translation strings changing when the file
7117
 
        is updated from now on.  Suggestion from Ulrich Drepper.
 
7116
          to avoid translation strings changing when the file
 
7117
          is updated from now on.  Suggestion from Ulrich Drepper.
7118
7118
 
7119
7119
Thu Aug 23 14:01:14 2001  Arnold D. Robbins  <arnold@skeeve.com>
7120
7120
 
7121
7121
        * awkgram.y (unary minus production): Add check that value
7122
 
        isn't a string. Based on bug report from drj@pobox.com.
 
7122
          isn't a string. Based on bug report from drj@pobox.com.
7123
7123
        * profile.c (tree_eval): For node_val, only test NUMBER
7124
 
        to see if value is numeric, not NUM|NUMBER.
 
7124
          to see if value is numeric, not NUM|NUMBER.
7125
7125
 
7126
7126
Thu Aug 16 12:21:28 2001  Arnold D. Robbins  <arnold@skeeve.com>
7127
7127
 
7153
7153
Fri Aug  3 13:38:54 2001  Arnold D. Robbins  <arnold@skeeve.com>
7154
7154
 
7155
7155
        * array.c (assoc_lookup): Change assert test on type to real test
7156
 
        to protect against FS[1] = "x" kinds of things.  It'd be better
7157
 
        to do this in the grammar, but this is easier and just as
7158
 
        effective.
 
7156
          to protect against FS[1] = "x" kinds of things.  It'd be better
 
7157
          to do this in the grammar, but this is easier and just as
 
7158
          effective.
7159
7159
 
7160
7160
        Undid BECAMEARRAY changes of 25 June 2001 in favor of correct code:
7161
7161
        * eval.c (pop_fcall): Change test and comment for freeing n->vname.
7162
 
        (flags2str): Removed BECAMEARRAY entry.
 
7162
          (flags2str): Removed BECAMEARRAY entry.
7163
7163
        * awk.h (BECAMEARRAY): Removed define.
7164
7164
        * array.c (assoc_lookup): Removed setting of BECAMEARRAY flag.
7165
7165
 
7166
7166
Mon Jul 23 17:33:13 2001  Arnold D. Robbins  <arnold@skeeve.com>
7167
7167
 
7168
7168
        * io.c (get_a_record): Handle case where RS = "" and input file
7169
 
        is only newlines.  See test/onlynl.   Bug report by
7170
 
        Michel Jouvin <jouvin@lal.in2p3.fr>.
 
7169
          is only newlines.  See test/onlynl.   Bug report by
 
7170
          Michel Jouvin <jouvin@lal.in2p3.fr>.
7171
7171
 
7172
7172
Wed Jul  4 18:34:19 2001  Arnold D. Robbins  <arnold@skeeve.com>
7173
7173
 
7174
7174
        * eval.c (assign_val): Don't allow negative values for NF.
7175
7175
        * field.c (set_NF): Robustify field-freeing code to make sure
7176
 
        values are always positive.
 
7176
          values are always positive.
7177
7177
 
7178
7178
Sun Jul  1 19:15:01 2001  Arnold D. Robbins  <arnold@skeeve.com>
7179
7179
 
7187
7187
        * awk.h (NODETYPE): New type, Node_dynregex.
7188
7188
        * awkgram.y (mk_rexp): Use Node_dynregex.
7189
7189
        * eval.c (nodetypes): Add Node_dynregex.
7190
 
        (r_tree_eval): Add Node_dynregex to case for match_op().
 
7190
          (r_tree_eval): Add Node_dynregex to case for match_op().
7191
7191
        * profile.c (tree_eval): Add Node_dynregex to case for pp_match_op().
7192
 
        (pp_match_op): Handle Node_dynregex, simplify cases for ~ and !~.
 
7192
          (pp_match_op): Handle Node_dynregex, simplify cases for ~ and !~.
7193
7193
        * re.c (re_update): Add assertion that type is Node_regex when flags
7194
 
        indicate CONST.
 
7194
          indicate CONST.
7195
7195
 
7196
7196
        New lint warning.
7197
7197
 
7198
7198
        * awkgram.y (yylex): Added lint warning that constant with leading
7199
 
        zero is treated as octal or hex.
 
7199
          zero is treated as octal or hex.
7200
7200
 
7201
7201
        Generalized code for those who are Strong In The Ways of the Source.
7202
7202
 
7203
7203
        * awk.h: New boolean variable.
7204
7204
        * main.c (main): Set it.
7205
7205
        * eval.c (interpret): For arrays, check it. Remove variable 'first',
7206
 
        not needed anymore.
 
7206
          not needed anymore.
7207
7207
        * profile.c (pp_string_fp): Enable printing of non-ASCII characters
7208
 
        verbatim if variable set.
 
7208
          verbatim if variable set.
7209
7209
 
7210
7210
        Fix memory corruption on SCO for array vars as params changed globally.
7211
7211
 
7212
7212
        * awk.h (BECAMEARRAY): New flag.
7213
7213
        * array.c (assoc_lookup): Set the flag as appropriate.
7214
7214
        * eval.c (flags2str): Add the flag.
7215
 
        (pop_fcall): Check the flag, don't free memory if set.
 
7215
          (pop_fcall): Check the flag, don't free memory if set.
7216
7216
 
7217
7217
Wed Jun 13 18:07:06 2001  Arnold D. Robbins  <arnold@skeeve.com>
7218
7218
 
7219
7219
        * eval.c (fmt_index): Actually call erealloc() to grow fmt_list
7220
 
        if that's really necessary.  Bug report from David Jones,
7221
 
        djones@zoonami.com.
 
7220
          if that's really necessary.  Bug report from David Jones,
 
7221
          djones@zoonami.com.
7222
7222
 
7223
7223
Sun Jun 10 14:24:48 2001  Arnold D. Robbins  <arnold@skeeve.com>
7224
7224
 
7227
7227
Thu Jun  7 11:54:36 2001  Arnold D. Robbins  <arnold@skeeve.com>
7228
7228
 
7229
7229
        * awk.h (O_BINARY): Don't define if already defined
7230
 
        (as is true for cygwin/gcc --- oops).
 
7230
          (as is true for cygwin/gcc --- oops).
7231
7231
 
7232
7232
Sun Jun  3 13:04:44 2001  Arnold D. Robbins  <arnold@skeeve.com>
7233
7233
 
7234
7234
        * Release 3.1.0: Release tar file made.  And there was
7235
 
        rejoicing.
 
7235
          rejoicing.
7236
7236
 
7237
7237
Wed Apr 25 11:44:07 2001  Arnold Robbins  <arnold@skeeve.com>
7238
7238
 
7239
7239
        * Makefile.am (AM_MAKEFLAGS): Add definition per advice from
7240
 
        Nelson Beebe.
 
7240
          Nelson Beebe.
7241
7241
 
7242
7242
Tue Apr 24 14:28:00 2001  Arnold Robbins  <arnold@skeeve.com>
7243
7243
 
7244
7244
        * io.c (devopen): Patch from Jeurgen to robustify pulling
7245
 
        out hostname, port numbers, etc, to avoid any buffer overrun
7246
 
        problems.
 
7245
          out hostname, port numbers, etc, to avoid any buffer overrun
 
7246
          problems.
7247
7247
 
7248
7248
Mon Apr 23 10:26:38 2001  Arnold Robbins  <arnold@skeeve.com>
7249
7249
 
7250
7250
        * awkgram.y: Fix grammar so that `print ... |& ".." |& getline'
7251
 
        dies with a parse-time error message.
 
7251
          dies with a parse-time error message.
7252
7252
 
7253
7253
Sun Apr 22 16:46:48 2001  Arnold Robbins  <arnold@skeeve.com>
7254
7254
 
7273
7273
Mon Apr  9 11:41:58 2001  Arnold D. Robbins  <arnold@skeeve.com>
7274
7274
 
7275
7275
        * dfa.c (dfainit): Initialize more members in the structure,
7276
 
        based on bug report in bug.gnu.utils by aaronl@vitelus.com
7277
 
        (Aaron Lehmann).
 
7276
          based on bug report in bug.gnu.utils by aaronl@vitelus.com
 
7277
          (Aaron Lehmann).
7278
7278
        * awk.h: Fix logic around include of <sys/types.h>.
7279
7279
 
7280
7280
Thu Apr  5 20:12:05 2001  Pat Rankin  <rankin@eql.caltech.edu>
7283
7283
        * missing_d/mktime.c: Likewise.
7284
7284
 
7285
7285
        * random.c: Reorder include directives to get gawk config info
7286
 
        from random.h sooner.
7287
 
        [fcntl.h]: Guard #include with HAVE_FCNTL_H test.
7288
 
        [unistd.h]: Guard #include with HAVE_UNISTD_H test.
 
7286
          from random.h sooner.
 
7287
          [fcntl.h]: Guard #include with HAVE_FCNTL_H test.
 
7288
          [unistd.h]: Guard #include with HAVE_UNISTD_H test.
7289
7289
 
7290
7290
        * random.c (srandomdev): Skip /dev/urandom usage if O_RDONLY
7291
 
        is not defined.
 
7291
          is not defined.
7292
7292
 
7293
7293
Tue Mar 20 11:07:11 2001  Arnold D. Robbins  <arnold@skeeve.com>
7294
7294
 
7302
7302
Sun Mar 18 15:10:56 2001  Arnold D. Robbins  <arnold@skeeve.com>
7303
7303
 
7304
7304
        * io.c (gawk_pclose): Set the exit value for close correctly
7305
 
        if the pipe died with a signal.
 
7305
          if the pipe died with a signal.
7306
7306
 
7307
7307
Wed Mar  7 11:28:52 2001  Arnold D. Robbins  <arnold@skeeve.com>
7308
7308
 
7309
7309
        * io.c (get_a_record): Correctly handle the case of a leading
7310
 
        single newline at the front of the file when RS = "".
 
7310
          single newline at the front of the file when RS = "".
7311
7311
 
7312
7312
2001-02-26  Paul Eggert  <eggert@twinsun.com>
7313
7313
 
7314
7314
        * COPYING: Incorporate latest version from FSF, which fixes a Y2k bug.
7315
7315
 
7316
7316
        * builtin.c (do_mktime): Allow the user to specify the
7317
 
        tm_isdst member as an optional trailing integer, and to
7318
 
        specify "out-of-range" members.  Check for overflow when
7319
 
        subtracting 1 from month or 1900 from year.  Allow years just
7320
 
        past INT_MAX, as they work on some hosts when INT_MAX - 1900
7321
 
        is representable as an int.
 
7317
          tm_isdst member as an optional trailing integer, and to
 
7318
          specify "out-of-range" members.  Check for overflow when
 
7319
          subtracting 1 from month or 1900 from year.  Allow years just
 
7320
          past INT_MAX, as they work on some hosts when INT_MAX - 1900
 
7321
          is representable as an int.
7322
7322
 
7323
7323
        * doc/gawk.1, doc/gawk.texi: Document the above changes.
7324
 
        Also, document that the origin-zero Gregorian calendar is used.
7325
 
        Fix confusing wording about "midnight" by replacing it with 00:00
7326
 
        ("midnight" is also 24:00, the end of the day).
7327
 
        Mention the typical range for time stamps.
7328
 
        Do not assume that years are nonnegative and are less than 10,000.
7329
 
        Suggest TZ=UTC0 instead of TZ=GMT0, as that's how recent versions
7330
 
        of GNU date behave.
7331
 
        GMT is not always the time of day in Greenwich these days.
7332
 
        Fix typos: "Emporer/Era", "1980's", "1970's".
 
7324
          Also, document that the origin-zero Gregorian calendar is used.
 
7325
          Fix confusing wording about "midnight" by replacing it with 00:00
 
7326
          ("midnight" is also 24:00, the end of the day).
 
7327
          Mention the typical range for time stamps.
 
7328
          Do not assume that years are nonnegative and are less than 10,000.
 
7329
          Suggest TZ=UTC0 instead of TZ=GMT0, as that's how recent versions
 
7330
          of GNU date behave.
 
7331
          GMT is not always the time of day in Greenwich these days.
 
7332
          Fix typos: "Emporer/Era", "1980's", "1970's".
7333
7333
 
7334
7334
        * m4/largefile.m4: Synchronized with latest version.
7335
7335
 
7340
7340
Wed Feb  7 14:46:50 2001  Arnold D. Robbins  <arnold@skeeve.com>
7341
7341
 
7342
7342
        * awkgram.y (LEX_FOR): Allow newline after `;' in for loops.
7343
 
        Per bug report from Brian Kernighan, bwk@research.bell-labs.com.
 
7343
          Per bug report from Brian Kernighan, bwk@research.bell-labs.com.
7344
7344
 
7345
7345
Tue Feb  6 18:35:27 2001  Martin C. Brown    <mc@whoever.com>
7346
7346
 
7347
7347
        * io.c (socket_open): Conditionalize various options based on
7348
 
        ifdef. Needed for BeOS port.
 
7348
          ifdef. Needed for BeOS port.
7349
7349
 
7350
7350
Tue Feb  6 18:17:13 2001  Michal Jaegermann  <michal@ellpspace.math.ualberta.ca>
7351
7351
 
7352
7352
        * regex.c (re_match_2_internal): Case maybe_pop_jump, for
7353
 
        charset and not_charset: Change cast from (unsigned char)
7354
 
        to (unsigned).  Catches last 8 chars with high bit set
7355
 
        if backtracking. See test/rebt8b1.awk, test/rebt8b2.awk.
 
7353
          charset and not_charset: Change cast from (unsigned char)
 
7354
          to (unsigned).  Catches last 8 chars with high bit set
 
7355
          if backtracking. See test/rebt8b1.awk, test/rebt8b2.awk.
7356
7356
 
7357
7357
Tue Feb  6 11:20:21 2001  Arnold D. Robbins  <arnold@skeeve.com>
7358
7358
 
7361
7361
        Still requires being Strong In The Ways Of The Source.
7362
7362
 
7363
7363
        * awk.h: (struct search): Removed.
7364
 
        (assoc_scan, assoc_next): Removed declarations.
 
7364
          (assoc_scan, assoc_next): Removed declarations.
7365
7365
        * array.c (assoc_scan, assoc_next): Removed functions.
7366
7366
        * eval.c (interpret): Remove Node_K_array_sorted_for. Change code
7367
 
        at Node_K_arrayfor.
7368
 
        (nodetypes): Remove Node_K_array_sorted_for.
 
7367
          at Node_K_arrayfor.
 
7368
          (nodetypes): Remove Node_K_array_sorted_for.
7369
7369
        * configure.in: Removed array sorting test.
7370
7370
        * awkgram.y: Removed sorted_in keyword and associated code.
7371
7371
 
7372
7372
Sun Feb  4 14:57:49 2001  Arnold D. Robbins  <arnold@skeeve.com>
7373
7373
 
7374
7374
        * eval.c (interpret): Use tree->rnode->exec_count to hold count of
7375
 
        times if was true.
7376
 
        profile.c (interpret): Ditto.
 
7375
          times if was true.
 
7376
          profile.c (interpret): Ditto.
7377
7377
        * main.c (pre_assign): Gross hack. malloc fresh copy of assign so can
7378
 
        clear the '=', otherwise screws up profiling print out.
 
7378
          clear the '=', otherwise screws up profiling print out.
7379
7379
 
7380
7380
Sun Jan 28 16:16:02 2001  Arnold D. Robbins  <arnold@skeeve.com>
7381
7381
 
7384
7384
        running.
7385
7385
 
7386
7386
        * eval.c (dump_fcall_stack): New function, dumps awk function call
7387
 
        stack.
 
7387
          stack.
7388
7388
        * awk.h (dump_fcall_stack): Add declaration.
7389
 
        (init_profiling_signals): Ditto.
 
7389
          (init_profiling_signals): Ditto.
7390
7390
        * main.c (main): Call init_profiling_signals.
7391
7391
        * profile.c (init_profiling_signals, dump_and_exit, just_dump): New
7392
 
        functions.
 
7392
          functions.
7393
7393
 
7394
7394
Sun Jan 28 15:50:02 2001  Eli Zaretskii  <eliz@is.elta.co.il>
7395
7395
 
7396
7396
        * io.c (gawk_popen): Restore the mode of stdin before running the
7397
 
        child process and switch it back if BINMODE is in effect after the
7398
 
        child returns.
7399
 
        (redirect): Restore the mode of stdin before running the child
7400
 
        process.
7401
 
        (close_redir): Switch mode of stdin back to binary if BINMODE is
7402
 
        in effect, after the child returns.
 
7397
          child process and switch it back if BINMODE is in effect after the
 
7398
          child returns.
 
7399
          (redirect): Restore the mode of stdin before running the child
 
7400
          process.
 
7401
          (close_redir): Switch mode of stdin back to binary if BINMODE is
 
7402
          in effect, after the child returns.
7403
7403
 
7404
7404
        * builtin.c (do_system): Restore the mode of stdin before running
7405
 
        the child process and switch it back if BINMODE is in effect after
7406
 
        the child returns.
 
7405
          the child process and switch it back if BINMODE is in effect after
 
7406
          the child returns.
7407
7407
 
7408
7408
        * awk.h (os_restore_mode): Add prototype.
7409
7409
 
7410
7410
Thu Jan 18 14:03:06 2001  Arnold D. Robbins  <arnold@skeeve.com>
7411
7411
 
7412
7412
        * custom.h, README_d/README.ultrix: Fixes for Ultrix
7413
 
        from Juergen Kahrs.
 
7413
          from Juergen Kahrs.
7414
7414
 
7415
7415
Wed Jan 17 11:03:40 2001  Eli Zaretskii  <eliz@is.elta.co.il>
7416
7416
 
7417
7417
        * io.c (redirect) [F_GETFL && O_APPEND]: Use binmode in the call
7418
 
        to fdopen.
 
7418
          to fdopen.
7419
7419
 
7420
7420
Mon Jan 15 16:29:52 2001  Arnold D. Robbins  <arnold@skeeve.com>
7421
7421
 
7422
7422
        * profile.c (prec_level): Made Node_K_getline higher than <
7423
 
        but lower than others.  Allows use of getline with redirection
7424
 
        inside an if.
 
7423
          but lower than others.  Allows use of getline with redirection
 
7424
          inside an if.
7425
7425
 
7426
7426
Wed Jan 10 15:35:06 2001  Arnold D. Robbins  <arnold@skeeve.com>
7427
7427
 
7430
7430
Sun Jan  7 15:26:16 2001  Arnold D. Robbins  <arnold@skeeve.com>
7431
7431
 
7432
7432
        * getopt.h: Removed names in prototypes for getopt_long
7433
 
        and getopt_long_only, fixes problems on MINGW32.
 
7433
          and getopt_long_only, fixes problems on MINGW32.
7434
7434
 
7435
7435
Thu Jan  4 10:13:46 2001  Arnold D. Robbins  <arnold@skeeve.com>
7436
7436
 
7437
7437
        * configure.in: Add check for mcheck.h
7438
7438
        * main.c: Include mcheck.h if have it.
7439
 
        (main):  If TIDYMEM turned on in environment, also call mtrace().
 
7439
          (main):  If TIDYMEM turned on in environment, also call mtrace().
7440
7440
 
7441
7441
Wed Jan  3 16:41:33 2001  Arnold D. Robbins  <arnold@skeeve.com>
7442
7442
 
7443
7443
        Fixed minor memory leaks.
7444
7444
        * re.c (re_update): When IGNORECASE changed, unref(t->re_text).
7445
7445
        * eval.c (pop_fcall): Fix the logic to correctly free the vname
7446
 
        when copying array args back to their underlying source.
 
7446
          when copying array args back to their underlying source.
7447
7447
 
7448
7448
        Fixed massive memory leaks.
7449
7449
        * node.c (dupnode): If PERM is set, do nothing.
7450
 
        (unref): Fix logic. Always turn off TEMP.  Check just for MALLOC
7451
 
        when incrementing the stref.
 
7450
          (unref): Fix logic. Always turn off TEMP.  Check just for MALLOC
 
7451
          when incrementing the stref.
7452
7452
        * array.c (assoc_lookup): Turn off PERM also when saving subscript.
7453
7453
        * builtin.c (sub_common): Turn off PERM also when making private copy
7454
 
        of string.
 
7454
          of string.
7455
7455
 
7456
7456
        Add a minor memory cleanup facility (undocumented):
7457
7457
        * awk.h (do_tidy_mem, release_all_vars): Add declarations.
7458
7458
        * main.c (do_tidy_mem): Add declaration.
7459
 
        (main): If $TIDYMEM exists, do_tidy_mem is true, and call mtrace().
 
7459
          (main): If $TIDYMEM exists, do_tidy_mem is true, and call mtrace().
7460
7460
        * awkgram.y (release_all_vars): New function.
7461
7461
 
7462
7462
Sun Dec 31 10:47:37 2000  Arnold D. Robbins  <arnold@skeeve.com>
7463
7463
 
7464
7464
        * awkgram.y (in_end_rule): Renamed `parsing_end_rule' to avoid
7465
 
        conflict with global var of same name.
 
7465
          conflict with global var of same name.
7466
7466
 
7467
7467
Sun Dec 24 10:36:54 2000  Eli Zaretskii  <eliz@is.elta.co.il>
7468
7468
 
7469
7469
        * awkgram.y (snode): Reword the error message about the number of
7470
 
        arguments for a builtin, so as not to use the English `s' as a
7471
 
        plural suffix.
 
7470
          arguments for a builtin, so as not to use the English `s' as a
 
7471
          plural suffix.
7472
7472
 
7473
7473
Tue Dec 12 08:38:03 2000  Arnold D. Robbins  <arnold@skeeve.com>
7474
7474
 
7475
7475
        * ext.c (do_ext): ifdef out use of `dummy'. Duh.
7476
7476
        * regex.c (re_error_msgid): Revert to array of `char *' so that can
7477
 
        compile on K&R compilers.  Fix all uses appropriately.
7478
 
        (re_error_msgid_idx): Removed.
 
7477
          compile on K&R compilers.  Fix all uses appropriately.
 
7478
          (re_error_msgid_idx): Removed.
7479
7479
 
7480
7480
Fri Dec  8 11:47:26 2000  Arnold D. Robbins  <arnold@skeeve.com>
7481
7481
 
7482
7482
        * ext.c (dummy): Make gcc specific via ifdef.
7483
7483
        * builtin.c (do_dcgettext): Make conditional compilation smarter.
7484
7484
        * msg.c (warning, error, r_fatal): Finish switching back to
7485
 
        multi-version function header.
 
7485
          multi-version function header.
7486
7486
 
7487
7487
Wed Dec  6 13:28:58 2000  Arnold D. Robbins  <arnold@skeeve.com>
7488
7488
 
7489
7489
        * random.h: Include <config.h> to get ssize_t definition.
7490
7490
        * awkgram.y (yyerror): Restore multi-version function header,
7491
 
        it seems that what ansi2knr produces doesn't quite do the
7492
 
        job on old compilers.
7493
 
        msg.c (msg): Ditto.
 
7491
          it seems that what ansi2knr produces doesn't quite do the
 
7492
          job on old compilers.
 
7493
          msg.c (msg): Ditto.
7494
7494
 
7495
7495
Tue Dec  5 15:05:35 2000  Arnold D. Robbins  <arnold@skeeve.com>
7496
7496
 
7500
7500
Sun Dec  3 17:28:53 2000  Arnold D. Robbins  <arnold@skeeve.com>
7501
7501
 
7502
7502
        * awk.h (os_setbinmode): Declare new function.
7503
 
        (setmode): Remove definition: conflicts with MacOS X.
 
7503
          (setmode): Remove definition: conflicts with MacOS X.
7504
7504
        * main.c (main): Change call of setmode to os_setbindmode.
7505
7505
 
7506
7506
        * builtin.c (do_dcgettext): Improve ifdef for code, fixes MacOS X.
7507
7507
        * custom.h (__APPLE__): Force definition of HAVE_MKTIME, won't
7508
 
        link otherwise.  Harumph.
 
7508
          link otherwise.  Harumph.
7509
7509
 
7510
7510
Sun Nov 26 11:58:52 2000  Arnold D. Robbins  <arnold@skeeve.com>
7511
7511
 
7512
7512
        * builtin.c (do_dcgettext, do_bindtextdomain): Add calls to
7513
 
        free_temp the various arguments.  Sigh.
 
7513
          free_temp the various arguments.  Sigh.
7514
7514
        * io.c (yylex): Nuked bstart variable, put all uses of mend variable
7515
 
        into TANDEM ifdef.
 
7515
          into TANDEM ifdef.
7516
7516
        * main.c (load_environ): Removed cp variable, value never used.
7517
7517
        * random.c: Remvoed uses of `inline' keyword.
7518
7518
        * Makefile.am (install-exec-hook, uninstall-local): New targets.
7519
 
        Adds creation of gawk-X.Y.Z and awk links, as in 3.0.x.
 
7519
          Adds creation of gawk-X.Y.Z and awk links, as in 3.0.x.
7520
7520
        * configure.in (GAWK_AC_TYPE_SSIZE_T): Added.
7521
 
        m4/ssize_t.m4: New file.
 
7521
          m4/ssize_t.m4: New file.
7522
7522
 
7523
7523
Wed Nov 22 14:47:18 2000  Arnold D. Robbins  <arnold@skeeve.com>
7524
7524
 
7527
7527
 
7528
7528
        * awk.h (Node_K_abort): Removed.
7529
7529
        * eval.c (aborting): Removed decl.
7530
 
        (interpret): Removed Node_K_abort case.
 
7530
          (interpret): Removed Node_K_abort case.
7531
7531
        * io.c (do_input): Removed checks for aborting.
7532
7532
        * main.c (aborting): Removed.
7533
 
        (main): Removed checks for aborting.
 
7533
          (main): Removed checks for aborting.
7534
7534
        * profile.c (pprint): Removed Node_K_abort case.
7535
7535
        * awk.y (LEX_ABORT): All stuff removed.
7536
7536
 
7537
7537
Wed Nov 22 10:45:57 2000  Arnold D. Robbins  <arnold@skeeve.com>
7538
7538
 
7539
7539
        * ext.c (dummy): Move inside #ifdef DYNAMIC. Helps on
7540
 
        PCs and other platforms that don't do dynamic loading.
 
7540
          PCs and other platforms that don't do dynamic loading.
7541
7541
        * awk.h (RED_TCP): New flag, means use shutdown.
7542
 
        io.c (redflags2str): Add RED_TCP.
7543
 
        (SHUT_RD, SHUT_WR, SHUT_RDWR): Add conditional defines.
7544
 
        (redirect): Add RED_TCP to tflag if appropriate.  Add more
7545
 
        #ifdef HAVE_SOCKETS as needed.
7546
 
        (close_redir): If RED_TCP set, shutdown(2) on each end of the socket.
 
7542
          io.c (redflags2str): Add RED_TCP.
 
7543
          (SHUT_RD, SHUT_WR, SHUT_RDWR): Add conditional defines.
 
7544
          (redirect): Add RED_TCP to tflag if appropriate.  Add more
 
7545
          #ifdef HAVE_SOCKETS as needed.
 
7546
          (close_redir): If RED_TCP set, shutdown(2) on each end of the socket.
7547
7547
 
7548
7548
Tue Nov 21 16:25:41 2000  Arnold D. Robbins  <arnold@skeeve.com>
7549
7549
 
7550
7550
        * awk.y: for (iggy in foo) loops: Add test that index
7551
 
        in delete statement is a simple variable.
 
7551
          in delete statement is a simple variable.
7552
7552
 
7553
7553
Tue Nov 14 16:11:39 2000  Arnold D. Robbins  <arnold@skeeve.com>
7554
7554
 
7555
7555
        * awk.h: Add appropriate conditional versions of the gettext
7556
 
        functions if we don't have <libintl.h> or if ENABLE_NLS
7557
 
        is not defined or zero.
 
7556
          functions if we don't have <libintl.h> or if ENABLE_NLS
 
7557
          is not defined or zero.
7558
7558
        * configure.in: Add check for libintl.h header.
7559
7559
 
7560
7560
        From Scott Deifik for PCs.
7561
7561
        * awk.h (lintwarn): Call set_loc unconditionally, makes
7562
 
        compilation work on PCs.
 
7562
          compilation work on PCs.
7563
7563
        * builtin.c (do_dcgettext): Compile out cat_tab and code
7564
 
        if not ENABLE_NLS.
 
7564
          if not ENABLE_NLS.
7565
7565
        * ext.c: For MSC, no long long variable.
7566
7566
        * random.c: Use clock() instead of gettimeofday().
7567
7567
        * builtin.c: Fixed prototypes for new random functions (ADR).
7569
7569
Sun Nov 12 17:45:44 2000  Arnold D. Robbins  <arnold@skeeve.com>
7570
7570
 
7571
7571
        * builtin.c (parse_next_arg): Fix call to >= num_args so
7572
 
        running out of args check is correct, instead of core dumping.
7573
 
        (format_tree): Save and restore `the_args' and `args_size'
7574
 
        if a nested call is in progress, see explanatory comment.
7575
 
        See also tests/addcomma.
 
7572
          running out of args check is correct, instead of core dumping.
 
7573
          (format_tree): Save and restore `the_args' and `args_size'
 
7574
          if a nested call is in progress, see explanatory comment.
 
7575
          See also tests/addcomma.
7576
7576
        * Makefile.am: Fix things so that gawk/pgawk built first,
7577
 
        even if `make check' called before make.  Add some
7578
 
        commentary.
 
7577
          even if `make check' called before make.  Add some
 
7578
          commentary.
7579
7579
 
7580
7580
Wed Nov  8 14:39:20 2000  Arnold D. Robbins  <arnold@skeeve.com>
7581
7581
 
7585
7585
Tue Nov  7 18:17:17 2000  Arnold D. Robbins  <arnold@skeeve.com>
7586
7586
 
7587
7587
        * All: Switched to ANSI function headers and added
7588
 
        `ansi2knr' automake option.  Really cool.
 
7588
          `ansi2knr' automake option.  Really cool.
7589
7589
 
7590
7590
Tue Nov  7 16:57:49 2000  Arnold D. Robbins  <arnold@skeeve.com>
7591
7591
 
7592
7592
        * io.c (redirect): Check for O_APPEND in flags when doing
7593
 
        fdopen() of /dev/fd/N.  Thanks to bug report from
7594
 
        "John H. DuBois III" <spcecdt@armory.com>.
 
7593
          fdopen() of /dev/fd/N.  Thanks to bug report from
 
7594
          "John H. DuBois III" <spcecdt@armory.com>.
7595
7595
 
7596
7596
Tue Nov  7 14:09:14 2000  Arnold D. Robbins  <arnold@skeeve.com>
7597
7597
 
7598
7598
        * awk.h (os_is_setuid): Declare function.
7599
7599
        * main.c (main): Call it if do_lint and warn if true.
7600
7600
        * awkgram.y (tokentab):
7601
 
        - Made sure all extensions are actually marked as such.  Ouch.
7602
 
        - Changed "sort" to "asort".  Potential to break too much old code.
 
7601
          - Made sure all extensions are actually marked as such.  Ouch.
 
7602
          - Changed "sort" to "asort".  Potential to break too much old code.
7603
7603
        * getopt.h, getopt.c, getopt1.c: Replaced with current versions
7604
 
        from glibc CVS archive.
 
7604
          from glibc CVS archive.
7605
7605
 
7606
7606
Mon Nov  6 18:14:33 2000  Arnold D. Robbins  <arnold@skeeve.com>
7607
7607
 
7612
7612
        Major simplification of automake machinery.
7613
7613
 
7614
7614
        * configure.in:
7615
 
        - INSTALL is forced only if not provided in environment
7616
 
        - lots of Makefile.in files removed since move to automake 1.4a
 
7615
          - INSTALL is forced only if not provided in environment
 
7616
          - lots of Makefile.in files removed since move to automake 1.4a
7617
7617
        * Makefile.am, */Makefile.am: Moved directories that don't need
7618
 
        the automake machinery into EXTRA_DIST as appropriate and
7619
 
        removed the Makefile{,.am,.in} files as needed.
 
7618
          the automake machinery into EXTRA_DIST as appropriate and
 
7619
          removed the Makefile{,.am,.in} files as needed.
7620
7620
        * eval_p.c, profile_p.c: New files to make it easier with automake
7621
 
        to compile pgawk.
 
7621
          to compile pgawk.
7622
7622
 
7623
7623
Tue Oct 24 12:20:18 2000  Arnold D. Robbins  <arnold@skeeve.com>
7624
7624
 
7625
7625
        * awkgram.y (valinfo, var_comp, dump_vars): New functions to dump
7626
 
        the list of global variables.
 
7626
          the list of global variables.
7627
7627
        * awk.h: Declare dump_vars.
7628
7628
        * main.c (optab): New option "dump-variables".
7629
 
        (main): Code to handle it, set the output file and then call
7630
 
        dump_vars() at the end.
7631
 
        (usage): New option added to usage message.
 
7629
          (main): Code to handle it, set the output file and then call
 
7630
          dump_vars() at the end.
 
7631
          (usage): New option added to usage message.
7632
7632
 
7633
7633
Sat Oct 21 22:59:59 2000  Arnold D. Robbins  <arnold@skeeve.com>
7634
7634
 
7635
7635
        * awkgram.y (parms_shadow): For a function, check if any
7636
 
        parameters shadow global variables and print a warning.
7637
 
        (shadow_funcs): Go through all functions and call parms_shadow().
7638
 
        (isnoeffect, isassignable): Add Node_LINT and NODE_BINMODE.
 
7636
          parameters shadow global variables and print a warning.
 
7637
          (shadow_funcs): Go through all functions and call parms_shadow().
 
7638
          (isnoeffect, isassignable): Add Node_LINT and NODE_BINMODE.
7639
7639
        * main.c (main): If do_lint, call shadow_funcs().
7640
7640
        * awk.h: Add declaration of shadow_funcs().
7641
7641
        * configure.in: Added m4/Makefile and awklib/eg/network/Makefile
7642
 
        to list of generated makefiles.
 
7642
          to list of generated makefiles.
7643
7643
 
7644
7644
Tue Oct 17 10:47:35 2000  Arnold D. Robbins  <arnold@skeeve.com>
7645
7645
 
7646
7646
        * array.c (assoc_lookup): Reverted change that did dupnode of
7647
 
        array indices.  Creates significant problems if index is
7648
 
        numeric value and CONVFMT changes.  Added fix to set
7649
 
        bucket->ahname->stfmt to -1 so that force_string never recalculates
7650
 
        the string value, and also turned off NUM and turned on STR.
7651
 
        See test/arynasty.awk.
 
7647
          array indices.  Creates significant problems if index is
 
7648
          numeric value and CONVFMT changes.  Added fix to set
 
7649
          bucket->ahname->stfmt to -1 so that force_string never recalculates
 
7650
          the string value, and also turned off NUM and turned on STR.
 
7651
          See test/arynasty.awk.
7652
7652
 
7653
7653
Mon Oct 16 12:21:26 2000  Arnold D. Robbins  <arnold@skeeve.com>
7654
7654
 
7655
7655
        * All: Cleaned up various lint warnings for consistent phrasing.
7656
7656
        * awk.y (in_end_rule): New variable for warning about unredirected
7657
 
        getline. It's ok in a BEGIN, but not in an END.
 
7657
          getline. It's ok in a BEGIN, but not in an END.
7658
7658
 
7659
7659
Sun Oct 15 14:14:05 2000  Arnold D. Robbins  <arnold@skeeve.com>
7660
7660
 
7661
7661
        * field.c (set_FS): Add lint warning for FS = "".
7662
 
        (do_split): Ditto for 3rd arg = "".
 
7662
          (do_split): Ditto for 3rd arg = "".
7663
7663
 
7664
7664
Fri Oct 13 09:17:04 2000  Arnold D. Robbins  <arnold@skeeve.com>
7665
7665
 
7666
7666
        * io.c (close_redir): Clear rp->fp on all closes.  Remove
7667
 
        rp from list if either closing both ends or both ends
7668
 
        have been closed separately. Add exitwarn message for
7669
 
        co-process.
7670
 
        (flush_io): Add warning message if fflush of co-process
7671
 
        fails.  Rationalize return value to either 0 or -1.
 
7667
          rp from list if either closing both ends or both ends
 
7668
          have been closed separately. Add exitwarn message for
 
7669
          co-process.
 
7670
          (flush_io): Add warning message if fflush of co-process
 
7671
          fails.  Rationalize return value to either 0 or -1.
7672
7672
        * builtin.c (do_gensub): 3rd arg of zero generates a
7673
 
        warning.
7674
 
        (do_fflush): Rationalize return value: -1 for unopen or read-only
7675
 
        redirection, status of fflush otherwise.
 
7673
          warning.
 
7674
          (do_fflush): Rationalize return value: -1 for unopen or read-only
 
7675
          redirection, status of fflush otherwise.
7676
7676
 
7677
7677
Wed Oct 11 22:11:19 2000  Arnold D. Robbins  <arnold@skeeve.com>
7678
7678
 
7679
7679
        * awk.y (for loop): Check that there is a body as
7680
 
        part of the `is it a delete statement' check.
 
7680
          part of the `is it a delete statement' check.
7681
7681
 
7682
7682
Thu Oct  5 11:56:42 2000  Arnold D. Robbins  <arnold@skeeve.com>
7683
7683
 
7684
7684
        * awk.h, awkgram.y, configure.in, eval.c: Enabled
7685
 
        `for (i in_sorted array)' loops for those who
7686
 
        are Strong In The Way Of The Source.  So there.
 
7685
          `for (i in_sorted array)' loops for those who
 
7686
          are Strong In The Way Of The Source.  So there.
7687
7687
 
7688
7688
Mon Oct  2 10:09:32 2000  Arnold D. Robbins  <arnold@skeeve.com>
7689
7689
 
7690
7690
        * io.c (do_close): Make close(x) for non-open x return -1
7691
 
        and update ERRNO.  close(FILENAME) no longer does anything
7692
 
        magic; this is all for better consistency with other awks
7693
 
        and is more logical, anyway.
 
7691
          and update ERRNO.  close(FILENAME) no longer does anything
 
7692
          magic; this is all for better consistency with other awks
 
7693
          and is more logical, anyway.
7694
7694
 
7695
7695
Thu Sep 28 17:27:16 2000  Arnold D. Robbins  <arnold@skeeve.com>
7696
7696
 
7697
7697
        * io.c (close_one): Added a lint warning if it becomes
7698
 
        necessary to start multiplexing fd's, per ancient suggestion
7699
 
        from Scott Deifik, <scottd@amgen.com>.
 
7698
          necessary to start multiplexing fd's, per ancient suggestion
 
7699
          from Scott Deifik, <scottd@amgen.com>.
7700
7700
 
7701
7701
Tue Sep 26 14:41:41 2000  Arnold D. Robbins  <arnold@skeeve.com>
7702
7702
 
7703
7703
        * profile.c: Move enum for redirection placement to top
7704
 
        of file, and make the value a parameter to pp_redir.
7705
 
        Fix all the calls.  This gets `|&' right everywhere.
 
7704
          of file, and make the value a parameter to pp_redir.
 
7705
          Fix all the calls.  This gets `|&' right everywhere.
7706
7706
 
7707
7707
Sun Sep 24 16:38:04 2000  Arnold D. Robbins  <arnold@skeeve.com>
7708
7708
 
7709
7709
        * awk.h (freenode): Set the flags straight to UNINITIALIZED.
7710
7710
        * node.c (unref): Fix test for MALLOC|TEMP to test the
7711
 
        actual flags, not zero.
 
7711
          actual flags, not zero.
7712
7712
        * builtin.c (format_tree): ala print and concat, dupnode
7713
 
        the temp nodes from tree_evaling the arguments.  See
7714
 
        test/nasty2.awk.
 
7713
          the temp nodes from tree_evaling the arguments.  See
 
7714
          test/nasty2.awk.
7715
7715
 
7716
7716
Mon Sep 18 10:16:58 2000  Arnold D. Robbins  <arnold@skeeve.com>
7717
7717
 
7718
7718
        * awkgram.y (snode): Make match 3rd arg and close 2nd arg fatal
7719
 
        errors if --tradtional.
 
7719
          errors if --tradtional.
7720
7720
 
7721
7721
Thu Sep 14 12:22:42 2000  Arnold D. Robbins  <arnold@skeeve.com>
7722
7722
 
7723
7723
        * eval.c (update_ERRNO): Call gettext on result of strerror.
7724
 
        i18n rules.
 
7724
          i18n rules.
7725
7725
 
7726
7726
Wed Sep 13 14:56:11 2000  Arnold D. Robbins  <arnold@skeeve.com>
7727
7727
 
7728
7728
        * eval.c (r_tree_eval): Case for Node_concat. Dupnode the
7729
 
        strings ala do_print to get more consistent results.
7730
 
        Compare gawk 3.0.6 to nawk/mawk on test/nasty.awk.
7731
 
        Thanks to Andrew Sumner (andrewsumner@yahoo.com) for
7732
 
        pointing this one out.
 
7729
          strings ala do_print to get more consistent results.
 
7730
          Compare gawk 3.0.6 to nawk/mawk on test/nasty.awk.
 
7731
          Thanks to Andrew Sumner (andrewsumner@yahoo.com) for
 
7732
          pointing this one out.
7733
7733
 
7734
7734
Wed Sep 13 10:06:47 2000  Arnold D. Robbins  <arnold@skeeve.com>
7735
7735
 
7736
7736
        * io.c (two_way_close_type): New enumerated type.
7737
 
        (close_redir): New third param of type two_way_close_type.
7738
 
        Add smarts to two-way case for different close types.
7739
 
        Only remove it from the redir list if closing is for both ends.
7740
 
        (gawk_pclose): Check that rp->iop != NULL before closing,
7741
 
        all three versions.
 
7737
          (close_redir): New third param of type two_way_close_type.
 
7738
          Add smarts to two-way case for different close types.
 
7739
          Only remove it from the redir list if closing is for both ends.
 
7740
          (gawk_pclose): Check that rp->iop != NULL before closing,
 
7741
          all three versions.
7742
7742
        * awkgram.y (tokentab): Allow 2nd argument to close.
7743
 
        (snode): Add lint warning.
 
7743
          (snode): Add lint warning.
7744
7744
 
7745
7745
Sun Sep 10 14:16:10 2000  Arnold D. Robbins  <arnold@skeeve.com>
7746
7746
 
7747
7747
        * field.c (set_FIELDWIDTHS): Generate a fatal error upon
7748
 
        encountering a negative width.
 
7748
          encountering a negative width.
7749
7749
 
7750
7750
Sun Sep 10 10:37:35 2000  Arnold D. Robbins  <arnold@skeeve.com>
7751
7751
 
7752
7752
        * awkgram.y (snode): If first argument to dcgettext is a
7753
 
        string constant and --gen-po, dump the string constant to
7754
 
        the .po file too.
 
7753
          string constant and --gen-po, dump the string constant to
 
7754
          the .po file too.
7755
7755
        * main.c (nostalgia): Add call to fflush(stderr).
7756
7756
        * eval.c (r_tree_eval): Add entries for Node_LINT and for
7757
 
        NODE_TEXTDOMAIN.
 
7757
          NODE_TEXTDOMAIN.
7758
7758
 
7759
7759
Thu Sep  7 10:46:20 2000  Arnold D. Robbins  <arnold@skeeve.com>
7760
7760
 
7761
7761
        * builtin.c (do_dcgettext): Per suggestion from Ulrich Drepper,
7762
 
        make the awk interface:
 
7762
          make the awk interface:
7763
7763
 
7764
 
                str = dcgettext(string [, domain [, category]])
 
7764
                str = dcgettext(string [, domain [, category]])
7765
7765
 
7766
7766
Wed Sep  6 16:28:12 2000  Arnold D. Robbins  <arnold@skeeve.com>
7767
7767
 
7768
7768
        Bring gettext features out to the awk level!
7769
7769
 
7770
7770
        * awk.h: Add declarations of new functions `do_dcgettext'
7771
 
        `do_bindtextdomain', `set_TEXTDOMAIN' and variables
7772
 
        `TEXTDOMAIN', `TEXTDOMAIN_node'.  New NODETYPE enum
7773
 
        `Node_TEXTDOMAIN'.
 
7771
          `do_bindtextdomain', `set_TEXTDOMAIN' and variables
 
7772
          `TEXTDOMAIN', `TEXTDOMAIN_node'.  New NODETYPE enum
 
7773
          `Node_TEXTDOMAIN'.
7774
7774
        * eval.c (nodetypes): Add Node_TEXTDOMAIN at end.
7775
 
        (set_TEXTDOMAIN): New function.
7776
 
        (r_get_lhs): Add case for Node_TEXTDOMAIN.
 
7775
          (set_TEXTDOMAIN): New function.
 
7776
          (r_get_lhs): Add case for Node_TEXTDOMAIN.
7777
7777
        * main.c (varinit): Add entry for TEXTDOMAIN.
7778
7778
        * node.c (format_val): If INTLSTR use dcgettext of string
7779
 
        and TEXTDOMAIN.
 
7779
          and TEXTDOMAIN.
7780
7780
        * awkgram.y (tokentab): Add entries for "dcgettext" and
7781
 
        "bindtextdomain".
 
7781
          "bindtextdomain".
7782
7782
        * builtin.c (do_dcgettext, do_bindtextdomain): New functions.
7783
7783
 
7784
7784
Tue Sep  5 17:01:34 2000  Arnold D. Robbins  <arnold@skeeve.com>
7785
7785
 
7786
7786
        * profile.c (pp_string_fp): Use lower case versions of
7787
 
        isascii and isprint to avoid printing high-bit-set
7788
 
        characters.  Make it smarter to break strings at 70
7789
 
        chars or after embedded newline, for --gen-po.
7790
 
        Fix the calls to it everywhere for new boolean option
7791
 
        to yes/no break lines.
 
7787
          isascii and isprint to avoid printing high-bit-set
 
7788
          characters.  Make it smarter to break strings at 70
 
7789
          chars or after embedded newline, for --gen-po.
 
7790
          Fix the calls to it everywhere for new boolean option
 
7791
          to yes/no break lines.
7792
7792
        * m4/strtod.m4: New file, defines GAWK_AC_FUNC_STRTOD_C89.
7793
7793
        * configure.in: GAWK_AC_FUNC_STRTOD_C89 call added
7794
7794
        * acinclude.m4: Include strtod.m4.
7795
7795
        * acconfig.h: Add entry for STRTOD_NOT_C89.
7796
 
        Remove entries for BITOPS and NON_DEC_DATA.
 
7796
          Remove entries for BITOPS and NON_DEC_DATA.
7797
7797
        * missing/missing.c: Add check for STRTOD_NOT_C89, use ours
7798
 
        if set.
 
7798
          if set.
7799
7799
        * missing/strtod.c: Make smarter for input like 0x345.
7800
7800
        * awk.h: [STRTOD_NOT_C89]: Define strtod gawk_strtod to get
7801
 
        our version.  Avoids linker weirdness.
 
7801
          our version.  Avoids linker weirdness.
7802
7802
 
7803
7803
Mon Sep  4 09:16:43 2000  Arnold D. Robbins  <arnold@skeeve.com>
7804
7804
 
7805
7805
        * field.c (set_record): Fix from Utz-Uwe Haus
7806
 
        <haus@saturn.Math.Uni-Magdeburg.DE> to make sure there's
7807
 
        always enough room in the record.
 
7806
          <haus@saturn.Math.Uni-Magdeburg.DE> to make sure there's
 
7807
          always enough room in the record.
7808
7808
        * builtin.c (nondec2awknum): Fix octal conversions to exit
7809
 
        when hitting a non-digit, and not go to decimal.  Make
7810
 
        check for non-octal better.  Based on bug report from
7811
 
        Morris_Lee@tvratings.com.
 
7809
          when hitting a non-digit, and not go to decimal.  Make
 
7810
          check for non-octal better.  Based on bug report from
 
7811
          Morris_Lee@tvratings.com.
7812
7812
 
7813
7813
Sun Sep  3 13:52:11 2000  Arnold D. Robbins  <arnold@skeeve.com>
7814
7814
 
7815
7815
        * builtin.c (format_tree): Allow positional parameters for
7816
 
        %*.* kinds of things.
 
7816
          %*.* kinds of things.
7817
7817
 
7818
7818
        Made octal/hex constants and strtonum on by default. Made
7819
7819
        --enable-non-decimal-data a runtime switch `--non-decimal-data'.
7820
7820
 
7821
7821
        * configure.in: Removed AC_ARG_ENABLE for --enable-bitops and
7822
 
        --enable-non-decimal-data.
7823
 
        In .developing check, remove the AC_DEFINEs.
 
7822
          --enable-non-decimal-data.
 
7823
          In .developing check, remove the AC_DEFINEs.
7824
7824
        * awk.h: Decls for bitwise functions now there by default.
7825
 
        Add decl of `do_non_decimal_data'.
 
7825
          Add decl of `do_non_decimal_data'.
7826
7826
        * main.c (do_non_decimal_data): New variable
7827
 
        (optlist): Add new entry for `--non-decimal-data'.
7828
 
        (main): Turn off `do_non_decimal_data' if `do_traditional'.
7829
 
        (usage): Add the new option.
 
7827
          (optlist): Add new entry for `--non-decimal-data'.
 
7828
          (main): Turn off `do_non_decimal_data' if `do_traditional'.
 
7829
          (usage): Add the new option.
7830
7830
        * node.c (r_force_number): Make check for non-decimal data a
7831
 
        runtime check based on do_non_decimal_data.
 
7831
          runtime check based on do_non_decimal_data.
7832
7832
        * awkgram.y (yylex): Make non-decimal constants a runtime check.
7833
7833
        * builtin.c: Remove the ifdefs around the bit functions and
7834
 
        nondec2awknum.
 
7834
          nondec2awknum.
7835
7835
 
7836
7836
Tue Aug 29 18:45:56 2000  Arnold D. Robbins  <arnold@skeeve.com>
7837
7837
 
7838
7838
        * configure.in: Go back to ARRAYDEBUG if .developing set.
7839
7839
        * awkgram.y: Use ARRAYDEBUG for adump(), use multiple tests
7840
 
        for stopme().
 
7840
          for stopme().
7841
7841
 
7842
7842
Mon Aug 28 17:09:06 2000  Arnold D. Robbins  <arnold@skeeve.com>
7843
7843
 
7844
7844
        * field.c (do_split): Add check for first arg is null string,
7845
 
        if so, skip the work and return zero.
 
7845
          if so, skip the work and return zero.
7846
7846
 
7847
7847
Mon Aug 14 23:01:55 2000  Arnold D. Robbins  <arnold@skeeve.com>
7848
7848
 
7849
7849
        Add %COUNT$... handling to printf.
7850
7850
 
7851
7851
        * awk.h (printf_count): New define in NODE structure.
7852
 
        (format_tree): Added decl.
 
7852
          (format_tree): Added decl.
7853
7853
        * awkgram.y (count_args): New function to set printf_count in
7854
7854
                a node.
7855
 
        [print productions]: Call the function.
 
7855
          [print productions]: Call the function.
7856
7856
        * (snode): For do_sprintf, call count_args, set the count
7857
 
                in the lnode.
 
7857
                in the lnode.
7858
7858
        * builtin.c (format_tree): New fourth arg is argument count.
7859
 
        Add smarts to handle the `$' in a format.
 
7859
          Add smarts to handle the `$' in a format.
7860
7860
        * (do_sprintf): Use new argument to format_tree.
7861
 
        node.c (format_val): Ditto.
 
7861
          node.c (format_val): Ditto.
7862
7862
 
7863
7863
Sun Aug 13 11:10:41 2000  Arnold D. Robbins  <arnold@skeeve.com>
7864
7864
 
7872
7872
 
7873
7873
        * awk.h (do_sort): Declared.
7874
7874
        * array.c (do_sort, dup_table, merge, merge_sort, assoc_from_list,
7875
 
        assoc_sort_inplace): New functions.
 
7875
          assoc_sort_inplace): New functions.
7876
7876
 
7877
7877
        * eval.c (tree_eval): In debug code, make uninitialized var
7878
 
        a warning, not a fatal error.  Breaks too many things.
 
7878
          a warning, not a fatal error.  Breaks too many things.
7879
7879
 
7880
7880
Wed Aug  9 10:51:41 2000  Arnold D. Robbins  <arnold@skeeve.com>
7881
7881
 
7882
7882
        * eval.c (func_call): Increment the exec_count on the
7883
 
        function's node; this allows printing a call count for
7884
 
        functions.
7885
 
        profile.c (pp_func): Print the count for functions.
 
7883
          function's node; this allows printing a call count for
 
7884
          functions.
 
7885
          profile.c (pp_func): Print the count for functions.
7886
7886
        * ALL: Changed DEBUG to GAWKDEBUG in all gawk files, so that
7887
 
        I don't get regex/dfa debugging.  In some cases, changed
7888
 
        memory-related stuff to MEMDEBUG.  Still have work to do.
 
7887
          I don't get regex/dfa debugging.  In some cases, changed
 
7888
          memory-related stuff to MEMDEBUG.  Still have work to do.
7889
7889
        * awk.h, node.c, profile.c: Removed exec_count_init variable;
7890
 
        code has been cleaned up to not need different values for
7891
 
        profiling/not profiling.
 
7890
          code has been cleaned up to not need different values for
 
7891
          profiling/not profiling.
7892
7892
 
7893
7893
Thu Jul  5 21:10:59 2000  Arnold D. Robbins  <arnold@skeeve.com>
7894
7894
 
7895
7895
        * eval.c (casetable): Removed the USE_PURE_ASCII stuff; it
7896
 
        was never documented.  Latin 1 forever.
 
7896
          was never documented.  Latin 1 forever.
7897
7897
        * main.c (main): Only call `init_profiling' after arg parsing
7898
 
        if `do_profiling' is still false.  Avoids resetting `prof_fp'
7899
 
        back to stderr.
 
7898
          if `do_profiling' is still false.  Avoids resetting `prof_fp'
 
7899
          back to stderr.
7900
7900
 
7901
7901
2000-02-17  Akim Demaille  <akim@epita.fr>
7902
7902
 
7913
7913
2000-02-15  Arnold Robbins  <arnold@skeeve.com>
7914
7914
 
7915
7915
        * MOVED TO AUTOMAKE AND GETTEXT.
7916
 
        Just about every file touched.  Work done by Arno Peters.
 
7916
          Just about every file touched.  Work done by Arno Peters.
7917
7917
 
7918
7918
Sun Jan  2 14:48:23 2000  Arnold D. Robbins  <arnold@skeeve.com>
7919
7919
 
7936
7936
 
7937
7937
        * awk.h (NODE): exec_count now in #ifndef NO_PROFILING.
7938
7938
        * Makefile.in: Changes to only recompile eval.c and profile.c to a
7939
 
        special version for profiling.
 
7939
          special version for profiling.
7940
7940
        * custom.h [MSC_VER]: Turn on NO_PROFILING to omit the exec_count
7941
 
        and save space.
 
7941
          and save space.
7942
7942
        * node.c (more_nodes): Move setting of exec_count to
7943
 
        #ifndef NO_PROFILING.
 
7943
          #ifndef NO_PROFILING.
7944
7944
 
7945
7945
Thu Jul  1 12:12:05 1999  Arnold D. Robbins  <arnold@skeeve.com>
7946
7946
 
7947
7947
        * configure.in (AC_PREREQ): Update to 2.13.
7948
 
        GAWK_AC_C_STRINGIZE: convert to AC_C_STRINGIZE.
 
7948
          GAWK_AC_C_STRINGIZE: convert to AC_C_STRINGIZE.
7949
7949
        * aclocal.m4 (GAWK_AC_C_STRINGIZE): Remove definition, now
7950
 
        part of autoconf.
 
7950
          part of autoconf.
7951
7951
        * acconfig.h (HAVE_STRINGIZE): Ditto.
7952
7952
 
7953
7953
Wed Apr 28 11:08:05 1999  Arnold D. Robbins  <arnold@skeeve.com>
7954
7954
 
7955
7955
        * array.c (assoc_lookup): Fix call to free_temp(subs) to after
7956
 
        last use of subs.
 
7956
          last use of subs.
7957
7957
 
7958
7958
Sun Apr 25 16:48:06 1999  Arnold D. Robbins  <arnold@skeeve.com>
7959
7959
 
7960
7960
        * io.c (redirect): Add lint warning when same file is used for
7961
 
        > and >>.
 
7961
          > and >>.
7962
7962
 
7963
7963
Thu Apr 22 15:05:30 1999  Arnold D. Robbins  <arnold@skeeve.com>
7964
7964
 
7965
7965
        * array.c (assoc_lookup): Fix call to fatal to lintwarn instead.
7966
7966
        * node.c (r_force_number): Use `0 &&' to disable warnings about
7967
 
        conversions: they're overzealous, methinks.
 
7967
          conversions: they're overzealous, methinks.
7968
7968
 
7969
7969
Thu Apr  8 14:27:58 1999  Arnold D. Robbins  <arnold@skeeve.com>
7970
7970
 
7971
 
        New features for profiling:
 
7971
          New features for profiling:
7972
7972
 
7973
7973
        * awk.h (NODE): Add `exec_count' member.
7974
 
        (freenode): Clear `exec_count' upon free.
 
7974
          (freenode): Clear `exec_count' upon free.
7975
7975
        * awk.y (func_count): New variable, counts total number of functions.
7976
 
        (func_install): Increment func_count.
7977
 
        (struct finfo): Information for use in sorting functions when
7978
 
        pretty printing.
7979
 
        (fcompare): Compare two finfo structures.
7980
 
        (dump_funcs): Print the functions in sorted order for profiling.
7981
 
        (getfname): Return the name of a builtin function.
 
7976
          (func_install): Increment func_count.
 
7977
          (struct finfo): Information for use in sorting functions when
 
7978
          pretty printing.
 
7979
          (fcompare): Compare two finfo structures.
 
7980
          (dump_funcs): Print the functions in sorted order for profiling.
 
7981
          (getfname): Return the name of a builtin function.
7982
7982
        * eval.c (INCREMENT): New macro for counting execution of nodes.
7983
 
        (interpret): Call INCREMENT() appropriately.
 
7983
          (interpret): Call INCREMENT() appropriately.
7984
7984
        * main.c (do_profiling): New flag if doing profiling.
7985
 
        `--profiling': New option added to getopt_long machinery.
7986
 
        (main): For profiled version, set do_profile and output file.
7987
 
        Call `dump_prog' and `dump_funcs' if do_profiling at end.
7988
 
        (usage): Add new argument.
 
7985
          `--profiling': New option added to getopt_long machinery.
 
7986
          (main): For profiled version, set do_profile and output file.
 
7987
          Call `dump_prog' and `dump_funcs' if do_profiling at end.
 
7988
          (usage): Add new argument.
7989
7989
        * node.c (more_nodes, freenode): Set exec_count to zero.
7990
7990
        * profile.c: New file, does pretty printing and prints counts.
7991
7991
        * Makefile.in: Update to create two versions of gawk, regular
7992
 
        and `pgawk' which does profiling.
 
7992
          and `pgawk' which does profiling.
7993
7993
 
7994
7994
Wed Mar 10 21:38:14 1999  Arnold D. Robbins  <arnold@skeeve.com>
7995
7995
 
7996
7996
        * io.c (close_redir): Use update_ERRNO() instead of manually
7997
 
        doing it.
 
7997
          doing it.
7998
7998
 
7999
7999
Mon Dec 21 15:58:21 1998  Arnold D. Robbins  <arnold@skeeve.com>
8000
8000
 
8001
8001
        * configure.in: Add BeOS to list of cases where we hardwire
8002
 
        GETPGRP_VOID.
8003
 
        custom.h: Remove the #define from __be_os case. Cleaner to
8004
 
        do it all in configure. Based on email from Martin C. Brown,
8005
 
        mc@whoever.com.
 
8002
          GETPGRP_VOID.
 
8003
          custom.h: Remove the #define from __be_os case. Cleaner to
 
8004
          do it all in configure. Based on email from Martin C. Brown,
 
8005
          mc@whoever.com.
8006
8006
 
8007
8007
Mon Nov 30 20:52:52 1998  Arnold D. Robbins  <arnold@skeeve.com>
8008
8008
 
8009
8009
        * eval.c (update_ERRNO): New function, mainly for use by
8010
 
        extension functions.
 
8010
          extension functions.
8011
8011
        * awk.h: Add decl.
8012
8012
 
8013
8013
Tue Nov 24 18:13:29 1998  Arnold D. Robbins  <arnold@skeeve.com>
8014
8014
 
8015
8015
        * Changes based on submission from Christos Zoulas at D.E. Shaw
8016
 
        that adds the following features:
8017
 
        - checking for use of uninitialized variables
8018
 
        - checking if a string that's not a number converts to 0
8019
 
        - ability to load a dynamic library to add built-ins
8020
 
        - VERSION variable (may or may not stay)
8021
 
        Additional change:
8022
 
        - --lint=fatal makes lint errors become fatal
8023
 
        - LINT="fatal" has the same effect, any other positive
8024
 
        value makes lint errors be just warnings
 
8016
          that adds the following features:
 
8017
          - checking for use of uninitialized variables
 
8018
          - checking if a string that's not a number converts to 0
 
8019
          - ability to load a dynamic library to add built-ins
 
8020
          - VERSION variable (may or may not stay)
 
8021
          Additional change:
 
8022
          - --lint=fatal makes lint errors become fatal
 
8023
          - LINT="fatal" has the same effect, any other positive
 
8024
            value makes lint errors be just warnings
8025
8025
        * Makefile.in (includedir): New variable for gawk header files
8026
 
        (ext.c, ext.o): New source and object files
8027
 
        (OTHERS, extension): New directory for macro with example extension
8028
 
        (install): Install header files
 
8026
          (ext.c, ext.o): New source and object files
 
8027
          (OTHERS, extension): New directory for macro with example extension
 
8028
          (install): Install header files
8029
8029
        * acconfig.h (DYNAMIC): New macro, true if can do dynamic loading
8030
8030
        * array.c (assoc_lookup): New parameter `reference' is true if we
8031
 
        want to do reference  checking. Add appropriate reference checking
8032
 
        code.
 
8031
          want to do reference  checking. Add appropriate reference checking
 
8032
          code.
8033
8033
        * awk.h (UNITITIALIZED): New flag
8034
 
        (lintfunc): Function pointer for correct function to use
8035
 
        (lintwarn): New macro to produce warnings
8036
 
        (result): New macro for func call result, used in commented out
8037
 
        code in eval.c.
8038
 
        (getnode, freenode): Revised to set UNINITIALIZED.
8039
 
        (get_lhs): Third arg for reference checking, change all calls
8040
 
        -- Add appropriate decls of new/changed functions
 
8034
          (lintfunc): Function pointer for correct function to use
 
8035
          (lintwarn): New macro to produce warnings
 
8036
          (result): New macro for func call result, used in commented out
 
8037
          code in eval.c.
 
8038
          (getnode, freenode): Revised to set UNINITIALIZED.
 
8039
          (get_lhs): Third arg for reference checking, change all calls
 
8040
          -- Add appropriate decls of new/changed functions
8041
8041
        * awk.y (tokentab): New builtin "extension" for adding extensions
8042
 
        (node_common): Set flags to UNINITIALIZED for Node_var.
 
8042
          (node_common): Set flags to UNINITIALIZED for Node_var.
8043
8043
        * configure.in (dynamic linking): New check. Probably should
8044
 
        be a separate macro.
 
8044
          be a separate macro.
8045
8045
        * eval.c (flag2str): Add UNINITIALIZED to the table.
8046
 
        (r_tree_eval): Add checks for UNINITIALIZED.
8047
 
        (push_args): Appropriate changes for UNINITIALIZED to work.
8048
 
        (r_get_lhs): New third argument for reference checking.
8049
 
        (set_LINT): Add code to handle setting `lintfunc' appropriately.
 
8046
          (r_tree_eval): Add checks for UNINITIALIZED.
 
8047
          (push_args): Appropriate changes for UNINITIALIZED to work.
 
8048
          (r_get_lhs): New third argument for reference checking.
 
8049
          (set_LINT): Add code to handle setting `lintfunc' appropriately.
8050
8050
        * ext.c: New file, for doing dynamic library extensions.
8051
8051
        * extension/*: New directory with simple example code.
8052
8052
        * main.c (VERSION_node, EXTENSION_node): New nodes for new vars.
8053
 
        (optab): Change for "lint" to allow optional argument.
8054
 
        (lintfunc): Definition.
8055
 
        (main): Add case in option processing for --lint.
8056
 
        (varinit): Add entries for VERSION and EXTENSION.
 
8053
          (optab): Change for "lint" to allow optional argument.
 
8054
          (lintfunc): Definition.
 
8055
          (main): Add case in option processing for --lint.
 
8056
          (varinit): Add entries for VERSION and EXTENSION.
8057
8057
        * node.c (r_force_number): Checks that string really is a number.
8058
 
        (morenodes): Set UNITIALIZED in the flags.
 
8058
          (morenodes): Set UNITIALIZED in the flags.
8059
8059
        * re.c (all): Change `result' to `res' globally to avoid conflict
8060
 
        with new macro.
 
8060
          with new macro.
8061
8061
        * GLOBAL: Change lint calls to warning() to  lintwarn().
8062
8062
        * GLOBAL: Change all calls to get_lhs() to have 3rd arg.
8063
8063
        * GLOBAL: Change all calls to assoc_lookup() to have 3rd arg.
8065
8065
Sun Nov 22 17:07:39 1998  Arnold D. Robbins  <arnold@skeeve.com>
8066
8066
 
8067
8067
        * patchlev.h: Renamed from patchlevel.h to make life
8068
 
        easier for the PC guys.
8069
 
        (main.c): Changed to include patchlev.h.
8070
 
        (Makefile.in): Changed to ref patchlev.h where needed.
 
8068
          easier for the PC guys.
 
8069
          (main.c): Changed to include patchlev.h.
 
8070
          (Makefile.in): Changed to ref patchlev.h where needed.
8071
8071
 
8072
8072
Sat Nov  7 21:29:52 1998  Arnold D. Robbins  <arnold@skeeve.com>
8073
8073
 
8074
8074
        * eval.c (r_get_lhs): case Node_field_spec.  Fix the lint
8075
 
        warnings for field reference of null string or non-numeric value.
8076
 
        When turned on, $0 generated a warning!  Oops.
 
8075
          warnings for field reference of null string or non-numeric value.
 
8076
          When turned on, $0 generated a warning!  Oops.
8077
8077
 
8078
8078
Thu Nov  5 16:58:38 1998 Arnold D. Robbins  <arnold@skeeve.com>
8079
8079
 
8080
8080
        * main.c (init_fds): New function to pre-open 0, 1, and 2 on
8081
 
        /dev/null if they're not open. Robustness, more or less.
8082
 
        (main): Call init_fds.
 
8081
          /dev/null if they're not open. Robustness, more or less.
 
8082
          (main): Call init_fds.
8083
8083
        * io.c (str2mode): Add smarts for two-letter strings
8084
 
        such as "rw", "r+", "wr", "w+" and "a+".
 
8084
          such as "rw", "r+", "wr", "w+" and "a+".
8085
8085
 
8086
8086
Mon Nov  2 16:55:46 1998 Arnold D. Robbins  <arnold@skeeve.com>
8087
8087
 
8088
8088
        * builtin.c (do_*): Added lint checks for non-numeric
8089
 
        and/or non-string arguments, as appropriate. This should
8090
 
        have been done long ago.
 
8089
          and/or non-string arguments, as appropriate. This should
 
8090
          have been done long ago.
8091
8091
 
8092
8092
Tue Oct 20 21:56:06 1998  Arnold D. Robbins  <arnold@skeeve.com>
8093
8093
 
8094
8094
        * awk.h (LINT_node): New variable for LINT special var
8095
 
        (Node_LINT): New node type.
8096
 
        (set_LINT): Declare function.
 
8095
          (Node_LINT): New node type.
 
8096
          (set_LINT): Declare function.
8097
8097
        * main.c (varinit): Add LINT variable.
8098
 
        (usage): Print an emphatic pointer to the manual for bug reports.
 
8098
          (usage): Print an emphatic pointer to the manual for bug reports.
8099
8099
        * eval.c (nodetypes): New entry for Node_LINT.
8100
 
        (r_get_lhs): Case added for Node_LINT.
8101
 
        (set_LINT): Set do_lint from LINT variable.
 
8100
          (r_get_lhs): Case added for Node_LINT.
 
8101
          (set_LINT): Set do_lint from LINT variable.
8102
8102
 
8103
8103
Mon Oct 19 22:35:46 1998  Arnold D. Robbins  <arnold@skeeve.com>
8104
8104
 
8106
8106
        * Makefile.in (awktab.c): Move sed stuff to separate script.
8107
8107
        * bisonfix.sed: New script, with old fix and Solaris x86 fix.
8108
8108
        * awk.h (nodetype2str): Add declaration.
8109
 
        (load_procinfo): Add declaration.
 
8109
          (load_procinfo): Add declaration.
8110
8110
 
8111
8111
Tue Oct 13 22:28:56 1998  Arnold D. Robbins  <arnold@skeeve.com>
8112
8112
 
8113
 
        Changes to make PROCINFO["FS"] reflect the use of FIELDWIDTHS or FS.
 
8113
          Changes to make PROCINFO["FS"] reflect the use of FIELDWIDTHS or FS.
8114
8114
 
8115
8115
        * eval.c (assign_val): New function that does the mechanics of
8116
 
                 assignment
 
8116
                 assignment
8117
8117
        * main.c (load_procinfo): Add setting of PROCINFO["FS"] to "FS".
8118
8118
        * field.c (update_PROCINFO): New function to update the array.
8119
 
        (set_FS): Call update_PROCINFO.
8120
 
        (set_FIELDWIDTHS): Ditto.
 
8119
          (set_FS): Call update_PROCINFO.
 
8120
          (set_FIELDWIDTHS): Ditto.
8121
8121
 
8122
8122
Sun Sep 27 10:18:05 1998  Arnold D. Robbins  <arnold@skeeve.com>
8123
8123
 
8124
8124
        * awk.h (reisstring): New prototype.
8125
8125
        * re.c (reisstring): New function, returns true if the re did
8126
 
        a simple string match. This is rather simplistic in its logic.
 
8126
          a simple string match. This is rather simplistic in its logic.
8127
8127
        * io.c (get_a_record): In the case that RS is a regexp, AND
8128
 
        the re matched at the exact end of the buffer, add a call to
8129
 
        `reisstring' in case it's a simple string match. If so, we
8130
 
        don't need to read more into the buffer because we don't
8131
 
        have a regex like `x.*y' that might extend longer.
8132
 
        This should be very helpful for interactive /inet clients
8133
 
        where something like `RS = "\r\n"' happens.
 
8128
          the re matched at the exact end of the buffer, add a call to
 
8129
          `reisstring' in case it's a simple string match. If so, we
 
8130
          don't need to read more into the buffer because we don't
 
8131
          have a regex like `x.*y' that might extend longer.
 
8132
          This should be very helpful for interactive /inet clients
 
8133
          where something like `RS = "\r\n"' happens.
8134
8134
 
8135
8135
Thu Aug 13 22:07:40 1998  Arnold D. Robbins  <arnold@skeeve.com>
8136
8136
 
8137
8137
        * io.c (socketopen): Fixes from Juergen Kahrs to socket
8138
 
        opening code for "any host".
 
8138
          opening code for "any host".
8139
8139
 
8140
8140
Tue Jul 14 19:02:33 1998  Arnold D. Robbins  <arnold@skeeve.com>
8141
8141
 
8142
8142
        * aclocal.m4 (GAWK_AC_LIB_SOCKETS): Removed the caching;
8143
 
        configure gave different results the second time it was run!
 
8143
          configure gave different results the second time it was run!
8144
8144
 
8145
8145
Fri Jul 10 09:11:06 1998  Arnold D. Robbins  <arnold@skeeve.com>
8146
8146
 
8147
8147
        * eval.c (interpret): Minor cleanups: add variable name to
8148
 
        fatal error Node_K_array_for and other minor changes.
 
8148
          fatal error Node_K_array_for and other minor changes.
8149
8149
 
8150
8150
Mon Jun 22 16:53:34 1998  Arnold D. Robbins  <arnold@skeeve.com>
8151
8151
 
8154
8154
Tue Jun  2 15:23:05 1998  Arnold D. Robbins  <arnold@skeeve.com>
8155
8155
 
8156
8156
        * io.c (devopen): Relax previous change, don't require "any",
8157
 
        just that a port be there. The user can put 0 if they
8158
 
        don't care.
 
8157
          just that a port be there. The user can put 0 if they
 
8158
          don't care.
8159
8159
 
8160
8160
Wed May 27 21:33:45 1998  Arnold D. Robbins  <arnold@skeeve.com>
8161
8161
 
8162
8162
        * io.c (devopen): For /inet, require that local and remote
8163
 
        ports and the remote hostname be there, and that `any'
8164
 
        be used for a port if they don't care.
 
8163
          ports and the remote hostname be there, and that `any'
 
8164
          be used for a port if they don't care.
8165
8165
 
8166
8166
Thu May 21 14:13:46 1998  Arnold D. Robbins  <arnold@skeeve.com>
8167
8167
 
8168
8168
        * node.c (parse_escape): Add warning that is always on
8169
 
        for \q for any unknown q inside string or regex constant.
8170
 
        I got bit by this myself once too often. Or else I'm
8171
 
        just getting old and senile.
 
8169
          for \q for any unknown q inside string or regex constant.
 
8170
          I got bit by this myself once too often. Or else I'm
 
8171
          just getting old and senile.
8172
8172
 
8173
8173
Mon May  4 12:42:49 1998  Arnold D. Robbins  <arnold@skeeve.com>
8174
8174
 
8175
8175
        * awk.h (NODETYPE): Sorted the Node_xxx entries for the
8176
 
        builtin variables. Gotta look nice, don't we?
 
8176
          builtin variables. Gotta look nice, don't we?
8177
8177
        * eval.c (nodetypes): Ditto.
8178
 
        (genflags2str): Added code to check that we don't
8179
 
        overflow the static buffer. This is just a debugging
8180
 
        routine, not worth the hassle of dynamic allocation.
 
8178
          (genflags2str): Added code to check that we don't
 
8179
          overflow the static buffer. This is just a debugging
 
8180
          routine, not worth the hassle of dynamic allocation.
8181
8181
 
8182
8182
Mon Mar  2 16:06:16 1998  Arnold D. Robbins  <arnold@skeeve.com>
8183
8183
 
8184
8184
        * Makefile.in (dist): Remove any embedded copied RCS or CVS
8185
 
        directories.
 
8185
          directories.
8186
8186
 
8187
8187
Mon Feb 23 00:09:52 1998  Arnold D. Robbins  <arnold@skeeve.com>
8188
8188
 
8189
8189
        * awk.h (genflags2str): Add declaration.
8190
8190
        * eval.c (genflags2str): New function.
8191
 
        (flags2str): Use new general purpose function.
 
8191
          (flags2str): Use new general purpose function.
8192
8192
        * io.c (redflags2str): Same.
8193
8193
 
8194
8194
Sun Feb 22 23:57:29 1998  Arnold D. Robbins  <arnold@skeeve.com>
8199
8199
        * acconfig.h: Add HAVE_SOCKETS and HAVE_PORTALS defs.
8200
8200
        * aclocal.m4: New macro GAWK_AC_LIB_SOCKETS.
8201
8201
        * awk.h: New node type, Node_redirect_twoway, and new redirection
8202
 
        flags: RED_TWOWAY, and RED_SOCKET.
 
8202
          flags: RED_TWOWAY, and RED_SOCKET.
8203
8203
        * awk.y (parser): Add TWOWAYIO token and appropriate productions.
8204
 
        (yylex): Recognize `|&' token if not traditional.
 
8204
          (yylex): Recognize `|&' token if not traditional.
8205
8205
        * builtin.c (do_print, do_printf): Flush buffer if TWOWAYIO.
8206
8206
        * configure.in: Add header checks for networking header files,
8207
 
        add --enable-portals switch, call GAWK_AC_LIB_SOCKETS
 
8207
          add --enable-portals switch, call GAWK_AC_LIB_SOCKETS
8208
8208
        * eval.c (nodetypes): Add string constant for Node_redirect_twoway.
8209
8209
        * io.c (redflags2str): New function.
8210
 
        (redirect): Better error message in default case, add code for
8211
 
        Node_redirect_twoway.
8212
 
        (socketopen): New function.
8213
 
        (iop_open, devopen): Add recognition of `/inet/...'.
8214
 
        (two_way_open): New function.
 
8210
          (redirect): Better error message in default case, add code for
 
8211
          Node_redirect_twoway.
 
8212
          (socketopen): New function.
 
8213
          (iop_open, devopen): Add recognition of `/inet/...'.
 
8214
          (two_way_open): New function.
8215
8215
 
8216
8216
Sat Dec 13 21:15:07 1997  Arnold D. Robbins  <arnold@skeeve.com>
8217
8217
 
8218
8218
        * awk.h (struct node): New member, `param_list' in union `x', becomes
8219
 
        `node->parmlist' in the code.
 
8219
          `node->parmlist' in the code.
8220
8220
        * awk.y (func_install): Rearranged a bit, to build up a list of
8221
 
        the function parameter names and to save it in the `parmlist' field.
 
8221
          the function parameter names and to save it in the `parmlist' field.
8222
8222
        * eval.c (push_args): New parameter, `varnames', which is the list
8223
 
        of variable names.  Use this to set the vname field of each
8224
 
        parameter's value as it's created. Special case arrays to include
8225
 
        where they came from, mainly for array vs. scalar diagnostics.
8226
 
        (r_tree_eval): Don't set the `vname' field for parameters.
8227
 
        (pop_fcall): Free the `vname' field if it's an array.
8228
 
        (func_call): Pass in the `parmlist' field to call of push_args().
8229
 
        (r_get_lhs): For Node_subscript, change error message to use
8230
 
        the `vname' field.
8231
 
        (stopme): New do-nothing function for use with debugging code
8232
 
        and setting breakpoints.
 
8223
          of variable names.  Use this to set the vname field of each
 
8224
          parameter's value as it's created. Special case arrays to include
 
8225
          where they came from, mainly for array vs. scalar diagnostics.
 
8226
          (r_tree_eval): Don't set the `vname' field for parameters.
 
8227
          (pop_fcall): Free the `vname' field if it's an array.
 
8228
          (func_call): Pass in the `parmlist' field to call of push_args().
 
8229
          (r_get_lhs): For Node_subscript, change error message to use
 
8230
          the `vname' field.
 
8231
          (stopme): New do-nothing function for use with debugging code
 
8232
          and setting breakpoints.
8233
8233
 
8234
8234
Thu Dec  4 15:18:17 1997  Arnold D. Robbins  <arnold@skeeve.com>
8235
8235
 
8236
8236
        * awk.y: Fixed several lint checks and moved some into
8237
 
        test for do_lint_old.
 
8237
          test for do_lint_old.
8238
8238
        * eval.c (fmt_index): Add value of bad format spec to
8239
 
        error message.
 
8239
          error message.
8240
8240
 
8241
8241
Tue Nov 18 22:19:02 1997  Arnold D. Robbins  <arnold@skeeve.com>
8242
8242
 
8243
8243
        * Makefile.in (install): Strip the installed binary.
8244
 
        From Anatoly A. Orehovsky (tolik@mpeks.tomsk.su).
 
8244
          From Anatoly A. Orehovsky (tolik@mpeks.tomsk.su).
8245
8245
 
8246
8246
Sun Nov 16 22:12:39 1997  Arnold D. Robbins  <arnold@skeeve.com>
8247
8247
 
8248
8248
        * array.c (in_array, assoc_lookup): Add symbol->vname to
8249
 
        fatal calls for scalar in array context.
 
8249
          fatal calls for scalar in array context.
8250
8250
 
8251
8251
Wed Nov 12 22:18:33 1997  Arnold D. Robbins  <arnold@skeeve.com>
8252
8252
 
8253
8253
        * awk.h [ISASCII]: On all IS* macros, add cast to unsigned char.
8254
 
        [TOUPPER, TOLOWER]: New macros using unsigned char.
 
8254
          [TOUPPER, TOLOWER]: New macros using unsigned char.
8255
8255
        * awk.y: Change to use of IS* vs. is* macros.
8256
8256
        * builtin.c (nondec2awknum): Change to use of IS* vs. is* macros,
8257
 
        change casts for casetable[] from int to unsigned char.
8258
 
        use new TOLOWER, TOUPPER macros
 
8257
          change casts for casetable[] from int to unsigned char.
 
8258
          use new TOLOWER, TOUPPER macros
8259
8259
        * dfa.c [ISASCII]: On all IS* macros, add cast to unsigned char.
8260
 
        (lex): Change isdigit to ISDIGIT.
8261
 
        [TOUPPER, TOLOWER]: New macros using unsigned char, now used.
 
8260
          (lex): Change isdigit to ISDIGIT.
 
8261
          [TOUPPER, TOLOWER]: New macros using unsigned char, now used.
8262
8262
        * eval.c (fmt_ok): Change to use of IS* vs. is* macros.
8263
8263
        * field.c (sc_parse_field): Change to use of IS* vs. is* macros,
8264
 
        change casts for casetable[] from int to unsigned char.
8265
 
        (set_FS): Change to use of IS* vs. is* macros.
 
8264
          change casts for casetable[] from int to unsigned char.
 
8265
          (set_FS): Change to use of IS* vs. is* macros.
8266
8266
        * io.c (get_a_record): Change to use of IS* vs. is* macros,
8267
 
        change casts for casetable[] from int to unsigned char.
 
8267
          change casts for casetable[] from int to unsigned char.
8268
8268
        * main.c (main): Change to use of IS* vs. is* macros.
8269
8269
        * node.c (r_force_number, parse_escape): Change to use of IS* vs.
8270
 
        is* macros.
 
8270
          is* macros.
8271
8271
        * re.c (make_regexp): Change to use of IS* vs. is* macros.
8272
8272
        * regex.c [ISASCII]: On all IS* macros, add cast to unsigned char.
8273
8273
 
8282
8282
Thu Oct  9 19:28:39 1997  Arnold D. Robbins  <arnold@skeeve.com>
8283
8283
 
8284
8284
        * custom.h [SEQUENT]: Removed; not needed any more since the
8285
 
        mmap code was ripped out.
 
8285
          mmap code was ripped out.
8286
8286
 
8287
8287
Wed Oct  8 17:22:03 1997  Arnold D. Robbins  <arnold@skeeve.com>
8288
8288
 
8289
8289
        * configure.in: Remove check for madvise; don't need it any more
8290
 
        after nuking use of mmap.
 
8290
          after nuking use of mmap.
8291
8291
 
8292
8292
Tue Oct  7 11:14:21 1997  Arnold D. Robbins  <arnold@skeeve.com>
8293
8293
 
8296
8296
Tue Sep 30 20:59:17 1997  Arnold D. Robbins  <arnold@skeeve.com>
8297
8297
 
8298
8298
        * eval.c (r_get_lhs): case Node_field_spec.  Add lint warnings
8299
 
        for field reference of null string or non-numeric value.
8300
 
        Based on patch submitted by Alan Broder, ajb@dtmr.com.
 
8299
          for field reference of null string or non-numeric value.
 
8300
          Based on patch submitted by Alan Broder, ajb@dtmr.com.
8301
8301
 
8302
8302
Wed Sep 24 20:47:59 1997  Arnold D. Robbins  <arnold@skeeve.com>
8303
8303
 
8304
8304
        * custom.h [TANDEM]: New changes. Finishes up Tandem
8305
 
        integration.
 
8305
          integration.
8306
8306
 
8307
8307
Mon Sep 22 00:42:34 1997  Arnold D. Robbins  <arnold@skeeve.com>
8308
8308
 
8309
8309
        * custom.h [__be_os]: Remove BROKEN_TOKEN definition.
8310
8310
        * dfa.c, dfa.h: Change `token' to `dfa_token' to avoid BeOS
8311
 
        compile problems.
 
8311
          compile problems.
8312
8312
 
8313
8313
Thu Aug  7 22:35:17 1997  Arnold D. Robbins  <arnold@skeeve.com>
8314
8314
 
8315
8315
        Changes for BeOS from mc@whoever.com
8316
8316
 
8317
8317
        * awk.h (strncasecmp): Bracket prototype.
8318
 
        custom.h [__be_os]: New stuff.
8319
 
        dfa.h, dfa.c [BROKEN_TOK]: New ifdefs to use dfa_token, not token.
 
8318
          custom.h [__be_os]: New stuff.
 
8319
          dfa.h, dfa.c [BROKEN_TOK]: New ifdefs to use dfa_token, not token.
8320
8320
 
8321
8321
Fri Aug  1 13:32:49 1997  Arnold D. Robbins  <arnold@skeeve.com>
8322
8322
 
8324
8324
 
8325
8325
        * awk.h [TANDEM]: Misc additions, as needed.
8326
8326
        * io.c (get_a_record): Changes for fixed length records; not used
8327
 
        on other systems.
 
8327
          on other systems.
8328
8328
        * main.c (MRL): New variable, TANDEM specific.
8329
 
        (main): Update handling -mr option for TANDEM.
8330
 
        (load_environ): Comment out whole routine if TANDEM.
8331
 
        missing.c [TANDEM]: New includes.
8332
 
        gawkmisc.c [TANDEM]: Include `tmiscc'.
 
8329
          (main): Update handling -mr option for TANDEM.
 
8330
          (load_environ): Comment out whole routine if TANDEM.
 
8331
          missing.c [TANDEM]: New includes.
 
8332
          gawkmisc.c [TANDEM]: Include `tmiscc'.
8333
8333
 
8334
8334
Wed Jul 30 19:53:52 1997  Arnold D. Robbins  <arnold@skeeve.com>
8335
8335
 
8339
8339
        * gawkmisc.c: Add include fcntl.h.
8340
8340
        * configure.in [AC_CHECK_HEADERS]: Add fcntl.h.
8341
8341
        * io.c (devopen, iop_open): Change to use os_isdir(), not S_IFDIR().
8342
 
        (redirect, devopen, iop_open, gawk_popen): Change all calls to
8343
 
        fcntl() to os_close_on_exec().
 
8342
          (redirect, devopen, iop_open, gawk_popen): Change all calls to
 
8343
          fcntl() to os_close_on_exec().
8344
8344
 
8345
8345
Tue Jul 29 11:09:45 1997  Arnold D. Robbins  <arnold@skeeve.com>
8346
8346
 
8347
8347
        * eval.c (set_BINMODE): Fixed check for digits to use isdigit()
8348
 
        instead of looping over digits and using strchr(). Duh.
 
8348
          instead of looping over digits and using strchr(). Duh.
8349
8349
 
8350
8350
Sat Jul 26 22:52:08 1997  Arnold D. Robbins  <arnold@skeeve.com>
8351
8351
 
8352
8352
        * eval.c (set_BINMODE): Fix so that `-v BINMODE=w' works.
8353
8353
        * node.c (r_force_number): Add decl of strtod(); makes things
8354
 
        work on MIPS.
 
8354
          work on MIPS.
8355
8355
        * Makefile.in (install-strip): New target.
8356
8356
 
8357
8357
Fri Jul 18 13:28:05 1997  Arnold D. Robbins  <arnold@skeeve.com>
8358
8358
 
8359
8359
        * io.c (redirect, devopen, iop_open, gawk_popen): Set the
8360
 
        close-on-exec flag on all files and pipes opened for I/O.
8361
 
        Keeps children run via system() or other pipes from running out
8362
 
        of file descriptors.
 
8360
          close-on-exec flag on all files and pipes opened for I/O.
 
8361
          Keeps children run via system() or other pipes from running out
 
8362
          of file descriptors.
8363
8363
 
8364
 
        (Reported by Kenny McCormack, gazelle@yin.interaccess.com.)
 
8364
          (Reported by Kenny McCormack, gazelle@yin.interaccess.com.)
8365
8365
 
8366
8366
Tue Jul  8 22:18:00 1997  Arnold D. Robbins  <arnold@skeeve.com>
8367
8367
 
8370
8370
Tue Jul  8 06:46:32 1997  Arnold D. Robbins  <arnold@skeeve.com>
8371
8371
 
8372
8372
        * dfa.c: Changes from pjr@jet.UK (Paul J Rippin) from an old
8373
 
        bug report against 2.14.0 that speed up initialization and
8374
 
        rewrite the inner loop into readable code.
 
8373
          bug report against 2.14.0 that speed up initialization and
 
8374
          rewrite the inner loop into readable code.
8375
8375
 
8376
8376
Thu Jul  3 11:44:50 1997  Arnold D. Robbins  <arnold@skeeve.com>
8377
8377
 
8378
8378
        * Atari support moved into new `unsupported' directory.
8379
 
        awk.h, Makefile.in, gawkmisc.c, and missing.c modified.
 
8379
          awk.h, Makefile.in, gawkmisc.c, and missing.c modified.
8380
8380
 
8381
8381
Sun Jun 29 14:17:37 1997  Arnold D. Robbins  <arnold@skeeve.com>
8382
8382
 
8392
8392
        BINMODE changes.
8393
8393
 
8394
8394
        * awk.h (Node_BINMODE): Added.
8395
 
        (struct redirect): Added mode field to save for io.c:close_one().
8396
 
        (BINMODE, BINMODE_node, set_BINMODE): Add declarations.
 
8395
          (struct redirect): Added mode field to save for io.c:close_one().
 
8396
          (BINMODE, BINMODE_node, set_BINMODE): Add declarations.
8397
8397
        * awk.y (isnoeffect): Add Node_BINMODE.
8398
8398
        * eval.c (nodetypes): Add Node_BINMODE string.
8399
 
        (r_tree_eval, r_get_lhs): Add cases for Node_BINMODE.
8400
 
        (set_BINMODE): New function.
 
8399
          (r_tree_eval, r_get_lhs): Add cases for Node_BINMODE.
 
8400
          (set_BINMODE): New function.
8401
8401
        * io.c (binmode): New function.
8402
 
        (nextfile, redirect, gawk_popen): Add calls to binmode().
 
8402
          (nextfile, redirect, gawk_popen): Add calls to binmode().
8403
8403
        * main.c (BINMODE, BINMODE_node): Add decls.
8404
 
        (main): Add call to setmode() if BINMODE is set.
8405
 
        (varinit): Add entry for BINMODE.
 
8404
          (main): Add call to setmode() if BINMODE is set.
 
8405
          (varinit): Add entry for BINMODE.
8406
8406
 
8407
8407
Wed Jun  4 21:52:25 1997  Arnold D. Robbins  <arnold@skeeve.com>
8408
8408
 
8425
8425
 
8426
8426
        * awk.h (Node_K_abort): New enum value for NODETYPE.
8427
8427
        * main.c (aborting): New flag variable.
8428
 
        (main): Add logic to handle aborting.
 
8428
          (main): Add logic to handle aborting.
8429
8429
        * eval.c (interpret): Add case for Node_K_abort.
8430
8430
        * io.c (do_input): If aborting, break loop.
8431
8431
        * awk.y (tokentab): Add entry for "abort" keyword
8432
 
        (PRODUCTIONS): Add production for LEX_ABORT.
 
8432
          (PRODUCTIONS): Add production for LEX_ABORT.
8433
8433
 
8434
8434
Wed Jul 24 12:49:52 1996  Arnold D. Robbins  <arnold@skeeve.com>
8435
8435
 
8436
8436
        First cut at changes for i18n.
8437
8437
 
8438
8438
        * awk.h (do_intl): Declare new flag variable.
8439
 
        [INTLSTR]: New flag def.
8440
 
        (m_tree_eval): Fix definitions for INTLSTR.
8441
 
        (force_string): Fix definitions for INTLSTR.
 
8439
          [INTLSTR]: New flag def.
 
8440
          (m_tree_eval): Fix definitions for INTLSTR.
 
8441
          (force_string): Fix definitions for INTLSTR.
8442
8442
        * awk.y (yylex): Add _"..." for international strings.
8443
 
        (dumpintlstr): New function.
 
8443
          (dumpintlstr): New function.
8444
8444
        * main.c (do_intl): Define new flag variable.
8445
 
        (optab): Add "gen-po" entry.
8446
 
        (main): If do_intl, exit, don't run the program.
8447
 
        (gawkoption): Add "gen-po" entry.
 
8445
          (optab): Add "gen-po" entry.
 
8446
          (main): If do_intl, exit, don't run the program.
 
8447
          (gawkoption): Add "gen-po" entry.
8448
8448
        * node.c (r_force_string): Call gettext if flags indicate INTLSTR.
8449
8449
 
8450
8450
Thu Mar 14 06:29:42 1996  Arnold D. Robbins  <arnold@skeeve.com>
8457
8457
Mon Feb 26 22:32:19 1996  Arnold D. Robbins  <arnold@skeeve.com>
8458
8458
 
8459
8459
        * io.c (pidopen, useropen): Added warnings to use PROCINFO[],
8460
 
        not special files.
 
8460
          not special files.
8461
8461
        * main.c (load_procinfo): New function.
8462
8462
        * awk.y (variable): Added call to load_procinfo() function.
8463
8463
 
8472
8472
Thu Aug  3 13:09:09 2000  Arnold D. Robbins  <arnold@skeeve.com>
8473
8473
 
8474
8474
        * array.c (in_array, do_delete): Fix tests for index equality
8475
 
        when searching through the array to work correctly when
8476
 
        index is "".
 
8475
          when searching through the array to work correctly when
 
8476
          index is "".
8477
8477
 
8478
8478
Fri Jul 14 21:40:17 2000  Pat Rankin  <rankin@eql.caltech.edu>
8479
8479
 
8480
8480
        * builtin.c (format_tree): Workaround a DEC C V5.7 bug by
8481
 
        splitting `strcpy() + 3' into two expressions (the builtin
8482
 
        inline strcpy evidently has erroneous return type of void *
8483
 
        instead of char *; reputedly fixed in V6.1).
 
8481
          splitting `strcpy() + 3' into two expressions (the builtin
 
8482
          inline strcpy evidently has erroneous return type of void *
 
8483
          instead of char *; reputedly fixed in V6.1).
8484
8484
 
8485
8485
        * eval.c (C): New macro.
8486
 
        [casetable]: Use it to add explicit casts for the character
8487
 
        values outside the range of 0 to 127.
 
8486
          [casetable]: Use it to add explicit casts for the character
 
8487
          values outside the range of 0 to 127.
8488
8488
        * missing/strncasecmp.c [C, charmap]: Likewise.
8489
8489
 
8490
8490
        * io.c (redirect): Add EIO check on failed open for VMS.
8496
8496
 
8497
8497
        * array.c (do_delete_loop): New routine.
8498
8498
        * awk.h [NODETYPE]: New Node_K_delete_loop value.
8499
 
        Add declaration of do_delete_loop.
 
8499
          Add declaration of do_delete_loop.
8500
8500
        * awk.y [LEX_FOR]: Fix code to recognize special case.
8501
8501
        * eval.c (nodetypes): New entry for Node_K_delete_loop.
8502
8502
        (interpret): Add case for Node_K_delete_loop, add more
8505
8505
Tue Jul 11 22:15:10 2000  Pat Rankin  <rankin@eql.caltech.edu>
8506
8506
 
8507
8507
        * awk.y (nextc): Recast unsigned char values back to int to
8508
 
        prevent VAX C from truncating EOF to 255.
 
8508
          prevent VAX C from truncating EOF to 255.
8509
8509
 
8510
8510
Tue Jul 11 14:08:23 2000  Arnold D. Robbins  <arnold@skeeve.com>
8511
8511
 
8512
8512
        * array.c (do_delete): Switch to string comparison, not
8513
 
        cmp_nodes.
8514
 
        (assoc_find): Add call to force_string on subscript.
 
8513
          cmp_nodes.
 
8514
          (assoc_find): Add call to force_string on subscript.
8515
8515
        * eval.c (interpret): Case Node_K_arrayfor: check for
8516
 
        Node_array_ref and fetch original_array. Yowser.
 
8516
          Node_array_ref and fetch original_array. Yowser.
8517
8517
 
8518
8518
Fri Jun 30 21:57:00 2000  Arnold D. Robbins  <arnold@skeeve.com>
8519
8519
 
8520
8520
        * array.c (assoc_lookup): Don't force the subscript
8521
 
        to be a string.  Not a good idea after the change
8522
 
        to using dupnode.
 
8521
          to be a string.  Not a good idea after the change
 
8522
          to using dupnode.
8523
8523
 
8524
8524
Sun Jun 25 15:08:19 2000  Arnold D. Robbins  <arnold@skeeve.com>
8525
8525
 
8528
8528
Wed Jun 14 13:03:45 2000  Arnold D. Robbins  <arnold@skeeve.com>
8529
8529
 
8530
8530
        * field.c (set_record): Manage a private buffer for $0.
8531
 
        Keeps things safe in case `getline var' rearranges the
8532
 
        IOBUF's contents that $0 is still pointing into.
 
8531
          Keeps things safe in case `getline var' rearranges the
 
8532
          IOBUF's contents that $0 is still pointing into.
8533
8533
 
8534
8534
Tue Jun 13 16:27:55 2000  Paul Eggert  <eggert@twinsun.com>
8535
8535
 
8576
8576
Sun May  7 16:33:05 2000  Arnold D. Robbins  <arnold@skeeve.com>
8577
8577
 
8578
8578
        * array.c (concat_exp): Change ref to `lnode->stlen' and
8579
 
        `lnode->stptr' for SUBSEP to use `var_value->...'.
 
8579
          `lnode->stptr' for SUBSEP to use `var_value->...'.
8580
8580
 
8581
8581
Tue May  2 09:54:29 2000  Arnold D. Robbins  <arnold@skeeve.com>
8582
8582
 
8583
8583
        Fix referencing freed memory as shown by test/arynocls.* tests.
8584
8584
        * awk.h [Node_array_ref]: New node type.
8585
 
        [orig_array]: New macro element in NODE structure.
 
8585
          [orig_array]: New macro element in NODE structure.
8586
8586
        * field.c (do_split): Handle case for Node_array_ref, fetch
8587
 
        the original array.
 
8587
          the original array.
8588
8588
        * array.c (in_array, do_delete): Ditto.
8589
8589
        * eval.c (nodetypes[]): Add Node_array_ref string.
8590
 
        (r_tree_eval): Handle case for Node_array_ref.
8591
 
        (push_args): Push arrays as Node_array_ref, and pass them on.
8592
 
        (pop_fcall): Don't unref lnode if it's an array when releasing
8593
 
        local arguments.  Check for both Node_array and Node_array_ref.
8594
 
        (r_get_lhs): Choke on Node_array_ref as for Node_array.
8595
 
        For Node_subscript, handle Node_array_ref.
 
8590
          (r_tree_eval): Handle case for Node_array_ref.
 
8591
          (push_args): Push arrays as Node_array_ref, and pass them on.
 
8592
          (pop_fcall): Don't unref lnode if it's an array when releasing
 
8593
          local arguments.  Check for both Node_array and Node_array_ref.
 
8594
          (r_get_lhs): Choke on Node_array_ref as for Node_array.
 
8595
          For Node_subscript, handle Node_array_ref.
8596
8596
 
8597
8597
Tue May  2 09:52:12 2000  Bruno Haible  <haible@clisp.cons.org>
8598
8598
 
8599
8599
        * io.c (redirect): After reopening a `struct redirect', move it to
8600
 
        the head of the list.
 
8600
          the head of the list.
8601
8601
 
8602
8602
Sun Apr  2 17:51:40 2000  Arnold D. Robbins  <arnold@skeeve.com>
8603
8603
 
8604
8604
        * re.c (re_update): Check if IGNORECASE has changed, and
8605
 
        if so recompute the re.  See test/igncdym.awk.
 
8605
          if so recompute the re.  See test/igncdym.awk.
8606
8606
 
8607
8607
Mon Mar 20 16:18:34 2000  Arnold D. Robbins  <arnold@skeeve.com>
8608
8608
 
8609
8609
        * io.c (set_RS): Added a lint warning about multicharacter RS,
8610
 
        per suggestion from Akim DeMaille (akim@epita.fr).
 
8610
          per suggestion from Akim DeMaille (akim@epita.fr).
8611
8611
 
8612
8612
Sun Feb 13 14:40:32 2000  Arnold D. Robbins  <arnold@skeeve.com>
8613
8613
 
8614
8614
        * eval.c (push_args): Fix from Nide Naoyuki <nide@ics.nara-wu.ac.jp>,
8615
 
        re-assign `f' in case tree_eval moved fcall_list around.
 
8615
          re-assign `f' in case tree_eval moved fcall_list around.
8616
8616
 
8617
8617
Sun Feb  6 11:39:33 2000  Arnold D. Robbins  <arnold@skeeve.com>
8618
8618
 
8619
8619
        * eval.c (op_assign):  Fix it right.  For ++ and --, get the lhs
8620
 
        in the operations, do the op, and then return.  For += etc,
8621
 
        get the rhs FIRST, since the lhs can move around as a result,
8622
 
        *then* get the lhs and do the operation. See test/opasnidx.awk.
 
8620
          in the operations, do the op, and then return.  For += etc,
 
8621
          get the rhs FIRST, since the lhs can move around as a result,
 
8622
          *then* get the lhs and do the operation. See test/opasnidx.awk.
8623
8623
 
8624
8624
Tue Feb  1 18:41:40 2000  Arnold D. Robbins  <arnold@skeeve.com>
8625
8625
 
8626
8626
        * eval.c (op_assign): Reget the rval after regetting
8627
 
        the left hand side.  See test/opasnslf.awk for why.
 
8627
          the left hand side.  See test/opasnslf.awk for why.
8628
8628
 
8629
8629
Thu Jan 27 18:06:31 2000  Arnold D. Robbins  <arnold@skeeve.com>
8630
8630
 
8631
8631
        * awk.y (yylex): Made ']' not one of the characters
8632
 
        that sets `want_assign' to false.  `a[i] /= 2' was
8633
 
        broken.  Per bug report from Kristofer T. Karas
8634
 
        <ktk@ktk.bidmc.harvard.edu>.
 
8632
          that sets `want_assign' to false.  `a[i] /= 2' was
 
8633
          broken.  Per bug report from Kristofer T. Karas
 
8634
          <ktk@ktk.bidmc.harvard.edu>.
8635
8635
 
8636
8636
Wed Dec 22 15:06:37 1999  Arnold D. Robbins  <arnold@skeeve.com>
8637
8637
 
8638
8638
        * awk.y: Removed declarations of functions before
8639
 
        definition of `tokentab[]'.  They're redundant with
8640
 
        what's in awk.h.
 
8639
          definition of `tokentab[]'.  They're redundant with
 
8640
          what's in awk.h.
8641
8641
 
8642
8642
Thu Dec  9 17:01:07 1999  Arnold D. Robbins  <arnold@skeeve.com>
8643
8643
 
8644
8644
        * node.c (parse_escape): Add lint warning for unrecognized
8645
 
        escape sequences.
 
8645
          escape sequences.
8646
8646
 
8647
8647
Mon Dec  6 15:17:34 1999  Arnold D. Robbins  <arnold@skeeve.com>
8648
8648
 
8649
8649
        * main.c (usage): Changed bug reporting email addresses to
8650
 
        be a reference to `Bugs' node in the online and printed
8651
 
        doc, instead.
 
8650
          be a reference to `Bugs' node in the online and printed
 
8651
          doc, instead.
8652
8652
 
8653
8653
Thu Dec  2 13:08:18 1999  Arnold D. Robbins  <arnold@skeeve.com>
8654
8654
 
8655
8655
        * builtin.c (do_compl): Test `d' for negative inside the do_lint
8656
 
        test, not uval.  Ooops.
 
8656
          test, not uval.  Ooops.
8657
8657
 
8658
8658
Fri Nov 26 10:58:36 1999  Arnold D. Robbins  <arnold@skeeve.com>
8659
8659
 
8660
8660
        * array.c (assoc_find):  ALWAYS compare indexes as strings,
8661
 
        don't use cmp_nodes in case they are numeric.  Oh my.
8662
 
        Talk about a Day 1 bug!
 
8661
          don't use cmp_nodes in case they are numeric.  Oh my.
 
8662
          Talk about a Day 1 bug!
8663
8663
 
8664
8664
Tue Nov 23 11:58:53 1999  Arnold D. Robbins  <arnold@skeeve.com>
8665
8665
 
8666
8666
        * regex.c (SYNTAX): Cast argument to `unsigned char' instead of
8667
 
        &-ing with 0xFF.  Hopefully somewhat more portable, ala 21 Nov 99
8668
 
        changes to awk.y.
 
8667
          &-ing with 0xFF.  Hopefully somewhat more portable, ala 21 Nov 99
 
8668
          changes to awk.y.
8669
8669
 
8670
8670
Sun Nov 21 22:25:27 1999  Paul Eggert  <eggert@twinsun.com>
8671
8671
 
8672
8672
        * aclocal.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a
8673
 
        problem with the QNX 4.25 shell, which doesn't propagate exit
8674
 
        status of failed commands inside shell assignments.
 
8673
          problem with the QNX 4.25 shell, which doesn't propagate exit
 
8674
          status of failed commands inside shell assignments.
8675
8675
 
8676
8676
Sun Nov 21 20:33:35 1999 Arnold D. Robbins  <arnold@skeeve.com>
8677
8677
 
8678
8678
        * awk.h (nextc): Remove declaration, don't need it here.
8679
 
        awk.y (nextc): Cast values to unsigned char so that latin-1
8680
 
        characters in strings don't turn themselves into EOF.
8681
 
        Most notably y-umlaut, which is decimal 255.
 
8679
          awk.y (nextc): Cast values to unsigned char so that latin-1
 
8680
          characters in strings don't turn themselves into EOF.
 
8681
          Most notably y-umlaut, which is decimal 255.
8682
8682
 
8683
8683
Mon Nov  1 20:00:25 1999  Arnold D. Robbins  <arnold@skeeve.com>
8684
8684
 
8685
8685
        * regex.c (init_syntax_once): Move below definition of
8686
 
        ISALNUM etc., then use ISALNUM to init the table, so that
8687
 
        the word ops will work if i18n'ed.
8688
 
        (SYNTAX): And subscript with 0xFF for Latin-1 characters.
 
8686
          ISALNUM etc., then use ISALNUM to init the table, so that
 
8687
          the word ops will work if i18n'ed.
 
8688
          (SYNTAX): And subscript with 0xFF for Latin-1 characters.
8689
8689
 
8690
8690
Mon Oct 25 18:37:13 1999  Arnold D. Robbins  <arnold@skeeve.com>
8691
8691
 
8692
8692
        * awk.h, main.c, io.c: Undo previous changes (22 Oct 1999).
8693
8693
        * main.c (main): Move call to `init_fields()' to before
8694
 
        arg parsing.  This allows `-v NF=blah' to work ok.
 
8694
          arg parsing.  This allows `-v NF=blah' to work ok.
8695
8695
 
8696
8696
Fri Oct 22 17:43:40 1999  Arnold D. Robbins  <arnold@skeeve.com>
8697
8697
 
8698
8698
        * main.c (arg_assign): Add new arg, `initing' for icky special
8699
 
        casing of -v of special variables.  Use it to check for NF.
8700
 
        May need to add other cases later.
8701
 
        (pre_assign): Change call arg_assign, passing initing=TRUE;
8702
 
        io.c (nextfile): Change call arg_assign, passing initing=FALSE;
8703
 
        awk.h: Change prototype for arg_assign.
 
8699
          casing of -v of special variables.  Use it to check for NF.
 
8700
          May need to add other cases later.
 
8701
          (pre_assign): Change call arg_assign, passing initing=TRUE;
 
8702
          io.c (nextfile): Change call arg_assign, passing initing=FALSE;
 
8703
          awk.h: Change prototype for arg_assign.
8704
8704
 
8705
8705
Tue Oct 19 16:06:48 1999  Paul Eggert  <eggert@twinsun.com>
8706
8706
 
8707
8707
        * io.c (close_redir): Don't munge errno between setting it and
8708
 
        using it.
 
8708
          using it.
8709
8709
 
8710
8710
Wed Oct  6 17:47:47 1999  Arnold D. Robbins  <arnold@skeeve.com>
8711
8711
 
8712
8712
        * main.c (arg_assign): Return NULL on bad variable.  Allows
8713
 
        things like `./3x=stuff' to work as a filename.
 
8713
          things like `./3x=stuff' to work as a filename.
8714
8714
 
8715
8715
Thu Sep 23 21:35:46 1999  Paul Eggert  <eggert@twinsun.com>
8716
8716
 
8717
8717
        * aclocal.m4 (GAWK_AC_SYS_LARGEFILE_FLAGS): Work around GCC
8718
 
        2.95.1 bug in HP-UX 10.20 or later. (Had to fix the fix. ADR. :-)
 
8718
          2.95.1 bug in HP-UX 10.20 or later. (Had to fix the fix. ADR. :-)
8719
8719
 
8720
8720
Tue Sep 21 13:31:36 1999  Arnold D. Robbins  <arnold@skeeve.com>
8721
8721
 
8722
8722
        * builtin.c (format_tree): For '0', only set zero_flag if we
8723
 
        haven't seen the field width or precision yet.
 
8723
          haven't seen the field width or precision yet.
8724
8724
 
8725
8725
Mon Aug  9 13:06:01 1999  Arnold D. Robbins  <arnold@skeeve.com>
8726
8726
 
8727
8727
        * array.c (assoc_lookup): Removed code that gave each array
8728
 
        a private copy of each index.  Balloons memory usage for
8729
 
        no good reason that I can see.  Just use dupnode in all
8730
 
        cases.
 
8728
          a private copy of each index.  Balloons memory usage for
 
8729
          no good reason that I can see.  Just use dupnode in all
 
8730
          cases.
8731
8731
        * configure.in: Check for $srcdir/.developing adds extra
8732
 
        defines for my testing/debugging use.  Yes, hack alert.
 
8732
          defines for my testing/debugging use.  Yes, hack alert.
8733
8733
 
8734
8734
Sun Aug  1 11:02:02 1999  Arnold D. Robbins  <arnold@skeeve.com>
8735
8735
 
8747
8747
Thu Jul 29 19:09:19 1999  Arnold D. Robbins  <arnold@skeeve.com>
8748
8748
 
8749
8749
        * awk.y (func_install): Make `function foo(foo)' a fatal error.
8750
 
        eval.c (r_tree_eval): Diagnose use of a function name as a
8751
 
        variable inside the function.
 
8750
          eval.c (r_tree_eval): Diagnose use of a function name as a
 
8751
          variable inside the function.
8752
8752
 
8753
8753
Sun Jul  4 16:53:14 1999  Arnold D. Robbins  <arnold@skeeve.com>
8754
8754
 
8755
8755
        * eval.c (eval_condition): Add extra braces to avoid
8756
 
        gcc warning.  I'm not going to bother for the library
8757
 
        code like dfa and regex.
 
8756
          gcc warning.  I'm not going to bother for the library
 
8757
          code like dfa and regex.
8758
8758
 
8759
8759
Wed Jun 30 16:14:36 1999  Arnold D. Robbins  <arnold@gnu.org>
8760
8760
 
8763
8763
Wed Jun 30 16:10:11 1999  Arnold D. Robbins  <arnold@gnu.org>
8764
8764
 
8765
8765
        * awk.h: Add include of <assert.h>, and comment about config.h
8766
 
        having to be included before any system headers.  Otherwise,
8767
 
        with egcs-2.91.66 and later on Linux systems, and possibly
8768
 
        others, things break badly, due to the LFS macros.
 
8766
          having to be included before any system headers.  Otherwise,
 
8767
          with egcs-2.91.66 and later on Linux systems, and possibly
 
8768
          others, things break badly, due to the LFS macros.
8769
8769
        * awk.y, builtin.c, eval.c, field.c, io.c: Removed include
8770
 
        of assert.h
 
8770
          of assert.h
8771
8771
 
8772
8772
Wed Jun  9 11:39:19 1999  Paul Eggert  <eggert@twinsun.com>
8773
8773
 
8777
8777
        * config.guess, config.sub: New files.
8778
8778
 
8779
8779
        * configure.in (AC_CANONICAL_HOST):
8780
 
        Add; GAWK_AC_SYS_LARGEFILE needs this.
8781
 
        (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
 
8780
          Add; GAWK_AC_SYS_LARGEFILE needs this.
 
8781
          (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
8782
8782
 
8783
8783
        * aclocal.m4 (GAWK_AC_SYS_LARGEFILE): Renamed from GAWK_AC_LARGE_FILES.
8784
 
        Add support for AIX and HP-UX.
8785
 
        (GAWK_AC_SYS_LARGEFILE_FLAGS, GAWK_AC_SYS_LARGEFILE_SPACE_APPEND,
8786
 
        GAWK_AC_SYS_LARGEFILE_MACRO_VALUE): New macros.
 
8784
          Add support for AIX and HP-UX.
 
8785
          (GAWK_AC_SYS_LARGEFILE_FLAGS, GAWK_AC_SYS_LARGEFILE_SPACE_APPEND,
 
8786
          GAWK_AC_SYS_LARGEFILE_MACRO_VALUE): New macros.
8787
8787
 
8788
8788
        * acconfig.h (_FILE_OFFSET_BITS, _LARGEFILE_SOURCE, _LARGE_FILES):
8789
 
        New macros.
 
8789
          New macros.
8790
8790
 
8791
8791
        * Makefile.in (MISC): Add config.guess and config.sub so they get
8792
 
        included in the distribution.
 
8792
          included in the distribution.
8793
8793
 
8794
8794
Wed Jun  9 11:29:29 1999  Paul Eggert  <eggert@twinsun.com>
8795
8795
 
8796
8796
        * io.c (iop_alloc): Don't mmap files whose sizes don't fit in `int'.
8797
 
        [ This isn't really needed, as HAVE_MMAP is #undef'ed at the top,
8798
 
        but it's there in case people want to take their life in their hands. ]
 
8797
          [ This isn't really needed, as HAVE_MMAP is #undef'ed at the top,
 
8798
          but it's there in case people want to take their life in their hands. ]
8799
8799
 
8800
8800
Sun Jun  6 11:28:07 1999  Arnold D. Robbins  <arnold@gnu.org>
8801
8801
 
8804
8804
Wed Jun  2 14:36:24 1999  Arnold D. Robbins  <arnold@gnu.org>
8805
8805
 
8806
8806
        * PORTS: Updated with a more recent list of systems
8807
 
        that gawk compiles and tests ok on.
 
8807
          that gawk compiles and tests ok on.
8808
8808
 
8809
8809
Tue Jun  1 14:24:59 1999  Arnold D. Robbins  <arnold@gnu.org>
8810
8810
 
8813
8813
Tue May 25 16:32:37 1999  Arnold D. Robbins  <arnold@gnu.org>
8814
8814
 
8815
8815
        * builtin.c (format_tree): More smarts for weird cases, such as
8816
 
        zero precisions and zero values used with the `#' flag.
8817
 
        Thanks to Andreas Schwab (schwab@gnu.org) for pointing these out.
 
8816
          zero precisions and zero values used with the `#' flag.
 
8817
          Thanks to Andreas Schwab (schwab@gnu.org) for pointing these out.
8818
8818
 
8819
8819
Wed May 19 14:02:54 1999  Arnold D. Robbins  <arnold@gnu.org>
8820
8820
 
8821
8821
        * io.c (do_close): Move test for `close(FILENAME)' to after
8822
 
        loop through all open redirections. Fixes problems in obscure
8823
 
        cases with redirections in END rules.
 
8822
          loop through all open redirections. Fixes problems in obscure
 
8823
          cases with redirections in END rules.
8824
8824
 
8825
8825
Sun May 16 14:08:39 1999  Arnold D. Robbins  <arnold@gnu.org>
8826
8826
 
8827
8827
        * awk.y (yylex): Fix group of characters including ',' to
8828
 
        set want_assign = FALSE.  Fixes bizarre parsing problems in
8829
 
        function call lists, for example.
 
8828
          set want_assign = FALSE.  Fixes bizarre parsing problems in
 
8829
          function call lists, for example.
8830
8830
        * io.c (get_a_record): Repair logic for single-leading-newline
8831
 
        case.
 
8831
          case.
8832
8832
 
8833
8833
Tue May 11 16:48:11 1999  Arnold D. Robbins  <arnold@gnu.org>
8834
8834
 
8835
8835
        * aclocal.m4 (GAWK_AC_AIX_TWEAK): New macro.
8836
8836
        * configure.in: Call it
8837
8837
        * Makefile.in: (awklib/all): Pass CFLAGS on to sub-make so
8838
 
        that password programs will get AIX magic defines. Avoids
8839
 
        having to tweak program code for those in doc/gawk.texi.
 
8838
          that password programs will get AIX magic defines. Avoids
 
8839
          having to tweak program code for those in doc/gawk.texi.
8840
8840
 
8841
8841
Mon May  3 16:56:23 1999  Arnold D. Robbins  <arnold@gnu.org>
8842
8842
 
8843
8843
        * array.c (do_delete): Don't free_temp(subs) until after all
8844
 
        references to it are finished.
 
8844
          references to it are finished.
8845
8845
 
8846
8846
Mon May  3 13:41:16 1999  Arnold D. Robbins  <arnold@gnu.org>
8847
8847
 
8850
8850
Sun May  2 18:25:43 1999  Arnold D. Robbins  <arnold@gnu.org>
8851
8851
 
8852
8852
        * io.c (get_a_record): Do a really good job of stripping newlines
8853
 
        from the front of records when RS = "" and there's only one
8854
 
        newline at the front of the file, which the regex didn't catch.
 
8853
          from the front of records when RS = "" and there's only one
 
8854
          newline at the front of the file, which the regex didn't catch.
8855
8855
 
8856
8856
Wed Apr 28 12:27:49 1999  Arnold D. Robbins  <arnold@gnu.org>
8857
8857
 
8858
8858
        * configure.in: More HP stuff: fix the manual alloca code so that
8859
 
        gawk will compile and link on HP systems. See the comments.
 
8859
          gawk will compile and link on HP systems. See the comments.
8860
8860
 
8861
8861
Sun Apr 25 13:39:16 1999  Arnold D. Robbins  <arnold@gnu.org>
8862
8862
 
8870
8870
Tue Apr 13 19:02:20 1999  Arnold D. Robbins  <arnold@gnu.org>
8871
8871
 
8872
8872
        * io.c (useropen, pidopen): Add casts to int on arguments to
8873
 
        silence gcc warnings.
 
8873
          silence gcc warnings.
8874
8874
        * regex.c (regcomp,regexec,regfree): Add ifdef for APPLE.
8875
8875
 
8876
8876
Thu Feb  4 10:38:02 1999  Arnold D. Robbins  <arnold@gnu.org>
8877
8877
 
8878
8878
        * custom.h: Hacks for BeOS. Not documented in the manual right now.
8879
8879
        * configure.in: Hacks for BeOS.  Check for HP-UX and define C_ALLOCA
8880
 
        if not using gcc.  I wish they'd just fix bison already.
 
8880
          if not using gcc.  I wish they'd just fix bison already.
8881
8881
 
8882
8882
Sun Dec 20 16:57:38 1998  Arnold D. Robbins  <arnold@gnu.org>
8883
8883
 
8886
8886
Sun Nov 15 21:05:39 1998  Arnold D. Robbins  <arnold@gnu.org>
8887
8887
 
8888
8888
        * io.c (gawk_popen): Add WIN32 to list of systems that use
8889
 
        the non-real-pipe version. From the PC gawk guys.
 
8889
          the non-real-pipe version. From the PC gawk guys.
8890
8890
 
8891
8891
Wed Nov  4 11:32:24 1998  Arnold D. Robbins  <arnold@gnu.org>
8892
8892
 
8895
8895
Tue Nov  3 16:24:35 1998  Arnold D. Robbins  <arnold@gnu.org>
8896
8896
 
8897
8897
        * eval.c (r_get_lhs): Fix the cases for the special variables,
8898
 
        don't unref their current value if it's the same as the internal
8899
 
        copy; perhaps the current one is used in a concatenation or some
8900
 
        other expression somewhere higher up in the call chain.  Ouch.
8901
 
        See test/getnr2tm.awk.
 
8898
          don't unref their current value if it's the same as the internal
 
8899
          copy; perhaps the current one is used in a concatenation or some
 
8900
          other expression somewhere higher up in the call chain.  Ouch.
 
8901
          See test/getnr2tm.awk.
8902
8902
 
8903
8903
Sun Nov  1 15:24:52 1998  Arnold D. Robbins  <arnold@gnu.org>
8904
8904
 
8905
8905
        * builtin.c (format_tree): Improve handling of zero-fill
8906
 
        when a precision is present. See test/zeroflag.awk.
 
8906
          when a precision is present. See test/zeroflag.awk.
8907
8907
 
8908
8908
Wed Oct 28 20:40:17 1998  Arnold D. Robbins  <arnold@gnu.org>
8909
8909
 
8910
8910
        * eval.c (r_tree_eval): Case for Node_concat. Get lengths
8911
 
        separately, in case one expression has a side effect that
8912
 
        that changes another. Ugly, but it keeps gawk from core
8913
 
        dumping. See test/nasty.awk.
 
8911
          separately, in case one expression has a side effect that
 
8912
          that changes another. Ugly, but it keeps gawk from core
 
8913
          dumping. See test/nasty.awk.
8914
8914
 
8915
8915
Sun Oct 18 21:27:24 1998  Arnold D. Robbins  <arnold@gnu.org>
8916
8916
 
8917
8917
        * awk.y (append_right): Bug fix, if `list' or `new' are NULL,
8918
 
        return `list', so that things don't break too badly.
 
8918
          return `list', so that things don't break too badly.
8919
8919
        * regex.c (re_compile_fastmap): Remove unused variable `num_regs'.
8920
8920
 
8921
8921
Thu Oct  8 19:36:57 1998  Arnold D. Robbins  <arnold@gnu.org>
8925
8925
Mon Jul 27 10:14:33 1998  Arnold D. Robbins  <arnold@gnu.org>
8926
8926
 
8927
8927
        * node.c (parse_escape): Remove assignment with side effects
8928
 
        from ISXDIGIT test. Thanks to "Mihai T. LAZARESCU"
8929
 
        <mihai@ccmserv.polito.it> for pointing this out.
 
8928
          from ISXDIGIT test. Thanks to "Mihai T. LAZARESCU"
 
8929
          <mihai@ccmserv.polito.it> for pointing this out.
8930
8930
 
8931
8931
Mon Apr 27 11:31:32 1998  Arnold D. Robbins  <arnold@gnu.org>
8932
8932
 
8933
8933
        * main.c (usage): Fix the email address for the bug list.
8934
 
        (copyleft): Update the copyright year.
 
8934
          (copyleft): Update the copyright year.
8935
8935
 
8936
8936
Mon Mar 23 21:22:32 1998  Arnold D. Robbins  <arnold@gnu.org>
8937
8937
 
8938
8938
        * eval.c (r_get_lhs): Make sure that values of type
8939
 
        Node_param_list don't have the FUNC flag set. This means
8940
 
        we don't allow the use of a function name as a variable or
8941
 
        array from within the function.
 
8939
          Node_param_list don't have the FUNC flag set. This means
 
8940
          we don't allow the use of a function name as a variable or
 
8941
          array from within the function.
8942
8942
 
8943
8943
Sun Mar 22 19:12:32 1998  Paul Eggert  <eggert@twinsun.com>
8944
8944
 
8945
8945
        * aclocal.m4 (GAWK_AC_LARGE_FILES): New macro that checks for
8946
 
        large file support, and updates CPPFLAGS, LDFLAGS, LIBS as
8947
 
        needed.
 
8946
          large file support, and updates CPPFLAGS, LDFLAGS, LIBS as
 
8947
          needed.
8948
8948
        * configure.in: Call GAWK_AC_LARGE_FILES.
8949
8949
        * Makefile.in (CPPFLAGS, LDFLAGS): Let autoconf configure.
8950
8950
        (COMPFLAGS): Add $(CPPFLAGS).
8952
8952
Mon Mar 16 14:06:41 1998  Arnold D. Robbins  <arnold@gnu.org>
8953
8953
 
8954
8954
        * field.c (using_FIELDWIDTHS): New macro.
8955
 
        (using_fieldwidths): Use new macro.
8956
 
        (do_split): In case for FS_DFLT, also check that
8957
 
        we're not using FIELDWIDTHS. Otherwise, split() would use
8958
 
        FIELDWIDTHS, not current value of FS. Oops.
 
8955
          (using_fieldwidths): Use new macro.
 
8956
          (do_split): In case for FS_DFLT, also check that
 
8957
          we're not using FIELDWIDTHS. Otherwise, split() would use
 
8958
          FIELDWIDTHS, not current value of FS. Oops.
8959
8959
 
8960
8960
Sun Nov 16 20:08:59 1997  Arnold D. Robbins  <arnold@gnu.org>
8961
8961
 
8962
8962
        * builtin.c (sub_common): Fix for count of matches in gsub
8963
 
        from Geert.Debyser@esat.kuleuven.ac.be.
 
8963
          from Geert.Debyser@esat.kuleuven.ac.be.
8964
8964
 
8965
8965
Wed Oct 15 03:38:12 1997  Arnold D. Robbins  <arnold@gnu.org>
8966
8966
 
8967
8967
        * field.c (set_FS): Use `sc_parsefield' if the value of FS is not
8968
 
        alphabetic OR if not ignoring case. Bug fix if IGNORECASE
8969
 
        is true and FS happens to be '^'. Sheesh, talk about obscure.
8970
 
        (rebuild_record): Add more smarts to the code that sets up the
8971
 
        fields. Thanks to Alan J. Broder (ajb@dtmr.com).
 
8968
          alphabetic OR if not ignoring case. Bug fix if IGNORECASE
 
8969
          is true and FS happens to be '^'. Sheesh, talk about obscure.
 
8970
          (rebuild_record): Add more smarts to the code that sets up the
 
8971
          fields. Thanks to Alan J. Broder (ajb@dtmr.com).
8972
8972
 
8973
8973
Sun Oct  5 11:56:52 1997  Arnold D. Robbins  <arnold@gnu.org>
8974
8974
 
8975
8975
        * configure.in: If ISC add -D_SYSV3 to CFLAGS, per email from
8976
 
        Mario Vanoni (vanonim@dial.eunet.ch).
 
8976
          Mario Vanoni (vanonim@dial.eunet.ch).
8977
8977
 
8978
8978
Fri Sep 26 00:57:49 1997  Arnold D. Robbins  <arnold@gnu.org>
8979
8979
 
8980
8980
        * awk.y (append_right): Return if either list is NULL. Prevents
8981
 
        syntax errors from causing core dumps.
 
8981
          syntax errors from causing core dumps.
8982
8982
 
8983
8983
Wed Sep 17 15:34:15 1997  Arnold D. Robbins  <arnold@gnu.org>
8984
8984
 
8985
8985
        * field.c (rebuild_record): Set things up so that all fields point
8986
 
        into the new record and release any changed fields without
8987
 
        causing memory leaks.  Avoids problems when fields are extended
8988
 
        with the value of $0 or other fields and then $0 is assigned to.
 
8986
          into the new record and release any changed fields without
 
8987
          causing memory leaks.  Avoids problems when fields are extended
 
8988
          with the value of $0 or other fields and then $0 is assigned to.
8989
8989
 
8990
8990
Mon Sep 15 16:12:55 1997  Arnold D. Robbins  <arnold@gnu.org>
8991
8991
 
8992
8992
        * builtin.c (do_print): When testing for NUMBER, make sure
8993
 
        it's not a string too. Thanks to Michael Brennan for
8994
 
        clarifying the semantics.
 
8993
          it's not a string too. Thanks to Michael Brennan for
 
8994
          clarifying the semantics.
8995
8995
 
8996
8996
Sun Sep 14 19:55:12 1997  Arnold D. Robbins  <arnold@gnu.org>
8997
8997
 
8998
8998
        * node.c (format_val): Always format values ourselves: avoids
8999
 
        problems if OFMT is bizarre, like %s.
 
8999
          problems if OFMT is bizarre, like %s.
9000
9000
 
9001
9001
Sun Sep 14 00:08:53 1997  Arnold D. Robbins  <arnold@gnu.org>
9002
9002
 
9003
9003
        * io.c (get_a_record): Replace all occurrences of the test
9004
 
        `grRS == FALSE' with `RS_is_null' which makes ` RS = "\0" '
9005
 
        actually work, is clearer code, and actually makes use of
9006
 
        the `RS_is_null' variable!
 
9004
          `grRS == FALSE' with `RS_is_null' which makes ` RS = "\0" '
 
9005
          actually work, is clearer code, and actually makes use of
 
9006
          the `RS_is_null' variable!
9007
9007
 
9008
9008
Sun Aug 17 07:15:12 1997  Arnold D. Robbins  <arnold@gnu.org>
9009
9009
 
9010
9010
        * field.c (set_FS): Change logic to always set parse_field, even
9011
 
        if FS hasn't changed. Thanks to Igor Sheyn for catching this.
 
9011
          if FS hasn't changed. Thanks to Igor Sheyn for catching this.
9012
9012
 
9013
9013
Wed Aug  6 21:04:37 1997  Arnold D. Robbins  <arnold@gnu.org>
9014
9014
 
9015
9015
        * io.c (VMS et al gawk_popen): Use pclose, not fclose, if
9016
 
        iop_alloc fails.
 
9016
          iop_alloc fails.
9017
9017
 
9018
9018
Wed Jul 30 19:53:52 1997  Arnold D. Robbins  <arnold@gnu.org>
9019
9019
 
9026
9026
Sun Jul 27 22:47:15 1997  Pat Rankin  <rankin@eql.caltech.edu>
9027
9027
 
9028
9028
        * io.c (#if VMS: vmsrtl_fileno): New routine.
9029
 
        (#if VMS: fileno): New macro substituted for stdio one.
 
9029
          (#if VMS: fileno): New macro substituted for stdio one.
9030
9030
 
9031
9031
Thu Jul 17 20:05:59 1997  Arnold D. Robbins  <arnold@gnu.org>
9032
9032
 
9033
9033
        * builtin.c (do_print): When OFMT != CONVFMT, create a new
9034
 
        temporary node with just the numeric value valid and format it,
9035
 
        and use that for printing. Avoids memory corruption.
 
9034
          temporary node with just the numeric value valid and format it,
 
9035
          and use that for printing. Avoids memory corruption.
9036
9036
 
9037
9037
Wed Jul 16 10:01:16 1997  Arnold D. Robbins  <arnold@gnu.org>
9038
9038
 
9039
9039
        * regex.c: When SYNTAX_TABLE is defined, but not emacs, then
9040
 
        CHAR_SET_SIZE is not defined, though used in regcomp.  It should
9041
 
        be taken out of #ifdef SYNTAX_TABLE. Fix from bug group, from
9042
 
        Akim Demaille, demaille@inf.enst.fr.
 
9040
          CHAR_SET_SIZE is not defined, though used in regcomp.  It should
 
9041
          be taken out of #ifdef SYNTAX_TABLE. Fix from bug group, from
 
9042
          Akim Demaille, demaille@inf.enst.fr.
9043
9043
        * awk.h (isnondecimal): Make test a little smarter.
9044
9044
        * builtin.c (nondec2awknum): Add bailout for decimal numbers, e.g.
9045
 
        `00.1'. Fix from Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
 
9045
          `00.1'. Fix from Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
9046
9046
 
9047
9047
Thu Jun 19 19:00:40 1997  Arnold D. Robbins  <arnold@gnu.org>
9048
9048
 
9049
9049
        * eval.c (interpret): case Node_K_next, Node_K_nextfile: fatal
9050
 
        error if called from BEGIN or END.
9051
 
        (Fixed completely Mon May  3 13:31:42 1999.)
 
9050
          error if called from BEGIN or END.
 
9051
          (Fixed completely Mon May  3 13:31:42 1999.)
9052
9052
 
9053
9053
Mon Jun  9 22:40:04 1997  Arnold D. Robbins  <arnold@gnu.org>
9054
9054
 
9055
9055
        * builtin.c (nondec2awknum): Allow `f' and `F' in hexadecimal numbers.
9056
 
        Gotta get more sleep...
 
9056
          Gotta get more sleep...
9057
9057
        * array.c (assoc_lookup): Fix from Tom Karzes (karzes@equator.com)
9058
 
        for memory leak when forcing type to Node_var_array.
 
9058
          for memory leak when forcing type to Node_var_array.
9059
9059
 
9060
9060
Thu May 15 12:49:08 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9061
9061
 
9064
9064
Wed May 14 08:06:08 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9065
9065
 
9066
9066
        * io.c (do_close): Add lint warning if closing something that
9067
 
        isn't open.
 
9067
          isn't open.
9068
9068
 
9069
9069
Tue May 13 12:14:12 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9070
9070
 
9071
9071
        * random.c, builtin.c: Remove __GLIBC__ tests, since it breaks
9072
 
        `make test'. I prefer consistency across platforms.
 
9072
          `make test'. I prefer consistency across platforms.
9073
9073
        * Makefile.in (gawk): Undid April 25 changes and added comment.
9074
 
        Putting COMPLAGS in breaks with -g on VMS POSIX.
 
9074
          Putting COMPLAGS in breaks with -g on VMS POSIX.
9075
9075
 
9076
9076
Sun May 11 14:48:04 1997  Darrell Hankerson  <hankedr@mail.auburn.edu>
9077
9077
 
9081
9081
Sun May 11 07:04:01 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9082
9082
 
9083
9083
        * builtin.c (do_print): In the loop that evaluates each expression
9084
 
        to be printed, do a dupnode to avoid bizarre output. Thanks to
9085
 
        Michal for finding this problem.
 
9084
          to be printed, do a dupnode to avoid bizarre output. Thanks to
 
9085
          Michal for finding this problem.
9086
9086
        * awk.y (yylex): Fix scanning of hexadecimal constants.
9087
9087
 
9088
9088
Wed May  7 15:09:25 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9089
9089
 
9090
9090
        * io.c (get_a_record): Fix casetable indexing with cast to int.
9091
 
        Keeps Michal happy.
 
9091
          Keeps Michal happy.
9092
9092
 
9093
9093
Tue May  6 16:40:19 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9094
9094
 
9097
9097
Mon May  5 21:17:37 1997  Pat Rankin  <rankin@eql.caltech.edu>
9098
9098
 
9099
9099
        * missing/strftime.c [case 'v', VMS_EXT]: For VMS date format, two
9100
 
        digit day of month should not be zero padded on the 1st through
9101
 
        the 9th.
 
9100
          digit day of month should not be zero padded on the 1st through
 
9101
          the 9th.
9102
9102
 
9103
9103
Mon May  5 06:33:47 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9104
9104
 
9107
9107
Mon May  5 06:33:47 1997  Pat Rankin  <rankin@eql.caltech.edu>
9108
9108
 
9109
9109
        * io.c (nextfile): Move the check for null return from iop_open
9110
 
        in the normal case and add one for the "no args" case.
 
9110
          in the normal case and add one for the "no args" case.
9111
9111
 
9112
9112
Fri Apr 25 16:52:33 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9113
9113
 
9114
9114
        * array.c (grow_table): Add a bunch more large primes so arrays
9115
 
        can get really big. Thanks to christos@deshaw.com.
 
9115
          can get really big. Thanks to christos@deshaw.com.
9116
9116
        * all files: Remove ifdef'ed out code and update copyrights.
9117
9117
        * Makefile.in (gawk): Add $(COMPFLAGS) to command line.
9118
9118
        * eval.c (flags2str): Added case for FIELD.
9122
9122
        * COPYING: Changed to current official version from FSF.
9123
9123
        * regex.c: Merge with GLIBC version.
9124
9124
        * awk.h [_GNU_SOURCE]: Bracket definition inside ifdef.
9125
 
        (NODE.source_line): Move name member out of `x' union and
9126
 
        into `nodep'; avoids problems doing diagnostics.
9127
 
        (nondec2num): Put decl into #if BITOPS || NONDECDATA
 
9125
          (NODE.source_line): Move name member out of `x' union and
 
9126
          into `nodep'; avoids problems doing diagnostics.
 
9127
          (nondec2num): Put decl into #if BITOPS || NONDECDATA
9128
9128
        * posix/gawkmisc.c, missing/system.c, missing/strtod.c,
9129
 
        missing/strerror.c: Move to generic GPL statement at top.
 
9129
          missing/strerror.c: Move to generic GPL statement at top.
9130
9130
        * builtin.c (nondec2num): Put into #if BITOPS || NONDECDATA
9131
9131
 
9132
9132
Wed Apr 23 22:14:14 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9150
9150
        * builtin.c (do_strtonum): New function.
9151
9151
        * configure.in (non-decimal-data): New --enable-* option.
9152
9152
        * node.c (r_force_number): Change to allow non-decimal data inside
9153
 
        ifdef NONDECDATA.
 
9153
          ifdef NONDECDATA.
9154
9154
 
9155
9155
Tue Apr 15 06:32:50 1997  Pat Rankin  <rankin@eql.caltech.edu>
9156
9156
 
9157
9157
        * missing/strftime.c (malloc, realloc, getenv, strchr): Only
9158
 
        declare these when STDC_HEADERS is not defined.
9159
 
        <stdlib.h, string.h>: Include these when STDC_HEADERS is defined.
 
9158
          declare these when STDC_HEADERS is not defined.
 
9159
          <stdlib.h, string.h>: Include these when STDC_HEADERS is defined.
9160
9160
        * awk.h (freenode, tree_eval, m_tree_eval): Reorganize definitions.
9161
9161
        * alloca.c (malloc): If malloc is already defined as a macro,
9162
 
        presumeably by config.h, don't define or declare it.
 
9162
          presumeably by config.h, don't define or declare it.
9163
9163
 
9164
9164
Wed Apr  9 22:45:27 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9165
9165
 
9166
9166
        * Makefile.in [COMPFLAGS]: Per suggestion from Karl Berry, put
9167
 
        $(CFLAGS) last.
 
9167
          $(CFLAGS) last.
9168
9168
 
9169
9169
Tue Apr  8 23:54:46 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9170
9170
 
9171
9171
        * eval.c (interpret): For Node_K_break and Node_K_continue, if
9172
 
        treating them like `next', also check the function call stack
9173
 
        and pop it if necessary.
 
9172
          treating them like `next', also check the function call stack
 
9173
          and pop it if necessary.
9174
9174
 
9175
9175
Mon Apr  7 18:22:37 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9176
9176
 
9177
9177
        * awk.h: Add decls of new routines do_compl() and set_loc().
9178
9178
        * awk.y (tokentab): Add entry for "compl" function.
9179
9179
        * builtin.c (do_compl): New function to do ones complement.
9180
 
        (do_substr): Rationalized yet again, now notices negative start
9181
 
        and length parameters.
 
9180
          (do_substr): Rationalized yet again, now notices negative start
 
9181
          and length parameters.
9182
9182
        * eval.c (push_args): Fix if call_list gets realloc'ed in the
9183
 
        middle of things. Avoids crash for deeply nested function calls.
 
9183
          middle of things. Avoids crash for deeply nested function calls.
9184
9184
        * main.c (catch_sig): Add call to set_loc().
9185
9185
        * msg.c (set_loc, srcfile, srcline): New function and private
9186
 
        variables to help out in tracing down source of error messages.
 
9186
          variables to help out in tracing down source of error messages.
9187
9187
 
9188
9188
Fri Mar 28 08:42:27 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9189
9189
 
9190
9190
        * io.c (iop_alloc, iop_close): Undo changes of Feb 11, apparently
9191
 
        other cleanups in io.c made mmap stuff start working again.
9192
 
        BAH! It's a mess, the test suite still fails. I'm leaving the
9193
 
        mmap stuff undefined for now. It'll probably get ripped out in 3.1.
 
9191
          other cleanups in io.c made mmap stuff start working again.
 
9192
          BAH! It's a mess, the test suite still fails. I'm leaving the
 
9193
          mmap stuff undefined for now. It'll probably get ripped out in 3.1.
9194
9194
 
9195
9195
Thu Mar 27 08:48:57 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9196
9196
 
9203
9203
Mon Mar 24 23:09:07 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9204
9204
 
9205
9205
        * field.c (init_fields, etc..): More clean up use of Null_field
9206
 
        and the various flags.
 
9206
          and the various flags.
9207
9207
        * node.c (unref): If a field, free the node itself. Fixes
9208
 
        memory leak problems.
 
9208
          memory leak problems.
9209
9209
 
9210
9210
Sun Mar 23 22:51:09 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9211
9211
 
9212
9212
        * awk.h [FIELD]: New flag for node->flags field.
9213
9213
        * builtin.c (sub_common): If FIELD is set, dup the string.
9214
9214
        * field.c (init_fields): Set up a new Null_field global var.
9215
 
        (init_fields, set_field, set_record) use the FIELD flag.
9216
 
        (getfield): Use Null_field instead of private variable.
 
9215
          (init_fields, set_field, set_record) use the FIELD flag.
 
9216
          (getfield): Use Null_field instead of private variable.
9217
9217
        * io.c (wait_any): Comment out calls to pclose and iop_close,
9218
 
        caused weird race conditions. See test/pipeio1.awk. Thanks
9219
 
        to Darrell Hankerson for tracing this one down.
 
9218
          caused weird race conditions. See test/pipeio1.awk. Thanks
 
9219
          to Darrell Hankerson for tracing this one down.
9220
9220
 
9221
9221
Tue Mar 18 20:57:18 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9222
9222
 
9223
9223
        * dfa.c (inboth): Free templist; plugs memory leak.
9224
9224
        * field.c (init_fields, grow_fields_arr, set_field, rebuild_record,
9225
 
        set_record): Remove PERM flag from entries in fields_arr[]. Fixes
9226
 
        nasty memory leak.
 
9225
          set_record): Remove PERM flag from entries in fields_arr[]. Fixes
 
9226
          nasty memory leak.
9227
9227
 
9228
9228
Tue Mar 18 06:33:00 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9229
9229
 
9236
9236
        * awk.h [isnondecimal]: New macro, and decl of new functions.
9237
9237
        * awk.y (yylex): Add recognition of octal and hex constants.
9238
9238
        * builtin.c (do_and, do_or, do_xor, do_lshift, do_rshift): New
9239
 
        functions that do bit operations.
9240
 
        (nondec2awknum): New function to convert octal or hex to double.
 
9239
          functions that do bit operations.
 
9240
          (nondec2awknum): New function to convert octal or hex to double.
9241
9241
        * configure.in: Add AC_ARG_ENABLE for bit operations.
9242
9242
        * node.c (r_force_number): Add octal and hex conversion.
9243
9243
 
9245
9245
 
9246
9246
        * awk.h [IOP_NOFREE_OBJ]: New macro.
9247
9247
        * io.c (iop_open, iop_alloc): Add new third parameter, which is
9248
 
        either NULL, meaning allocate a new IOP, or the address of one
9249
 
        already allocated.  Have a static one in the `nextfile'
9250
 
        routine, and use the IOP_NOFREE_OBJ flag for it.  All of this
9251
 
        keeps us from reading freed memory. The `swaplns' test fails
9252
 
        otherwise.
9253
 
        (iop_close): If IOP_NOFREE_OBJ is set, don't free the IOBUF.
 
9248
          either NULL, meaning allocate a new IOP, or the address of one
 
9249
          already allocated.  Have a static one in the `nextfile'
 
9250
          routine, and use the IOP_NOFREE_OBJ flag for it.  All of this
 
9251
          keeps us from reading freed memory. The `swaplns' test fails
 
9252
          otherwise.
 
9253
          (iop_close): If IOP_NOFREE_OBJ is set, don't free the IOBUF.
9254
9254
 
9255
9255
Wed Feb 26 06:21:02 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9256
9256
 
9257
9257
        * eval.c (in_function, pop_fcall_stack, pop_fcall, push_args):
9258
 
        New functions. These manage "frames" of awk function call arguments.
9259
 
        The problem is that a `next' or a `nextfile' from a function
9260
 
        leaks memory. These changes allow us to free up that memory.
9261
 
        (interpret): for Node_K_next and Node_K_nextfile, check if in
9262
 
        a function call and free all function call frames.
 
9258
          New functions. These manage "frames" of awk function call arguments.
 
9259
          The problem is that a `next' or a `nextfile' from a function
 
9260
          leaks memory. These changes allow us to free up that memory.
 
9261
          (interpret): for Node_K_next and Node_K_nextfile, check if in
 
9262
          a function call and free all function call frames.
9263
9263
 
9264
9264
Fri Feb 21 06:23:19 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9265
9265
 
9271
9271
Wed Feb 19 23:29:02 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9272
9272
 
9273
9273
        * main.c (main): Add do_intervals to condition that causes
9274
 
        resetup() to be called again. Makes the --re-interval option
9275
 
        actually work. What a concept.
 
9274
          resetup() to be called again. Makes the --re-interval option
 
9275
          actually work. What a concept.
9276
9276
 
9277
9277
Fri Feb 14 09:47:31 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9278
9278
 
9279
9279
        * io.c [#include "awk.h"]: Undef HAVE_MMAP to just use the old code.
9280
 
        Something is causing a file descriptor leak, and this is getting to
9281
 
        be just too much hair. I reserve the right to rip out the mmap
9282
 
        code entirely at a future date.
 
9280
          Something is causing a file descriptor leak, and this is getting to
 
9281
          be just too much hair. I reserve the right to rip out the mmap
 
9282
          code entirely at a future date.
9283
9283
 
9284
9284
Tue Feb 11 06:28:29 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9285
9285
 
9286
9286
        * io.c (iop_alloc): For an mmap'ed file, close the file descriptor,
9287
 
        and then touch each page to get a private copy. Fixes nasty case
9288
 
        of truncating our input file.
9289
 
        (iop_close): Don't call close on mmap'ed file.
 
9287
          and then touch each page to get a private copy. Fixes nasty case
 
9288
          of truncating our input file.
 
9289
          (iop_close): Don't call close on mmap'ed file.
9290
9290
 
9291
9291
Wed Feb  5 17:59:04 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9292
9292
 
9293
9293
        * eval.c (interpret): For Node_K_delete, just call do_delete; let
9294
 
        it handle the case of `delete array'.
 
9294
          it handle the case of `delete array'.
9295
9295
        * array.c (do_delete): Changed to handle case of `delete array',
9296
 
        and made smarter if the array is actually an uninitialized
9297
 
        parameter.
 
9296
          and made smarter if the array is actually an uninitialized
 
9297
          parameter.
9298
9298
 
9299
9299
Sun Jan 26 22:58:29 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9300
9300
 
9301
9301
        * getopt.h, getopt.c, getopt1.c: Replaced with new versions from
9302
 
        GLIBC 2.
 
9302
          GLIBC 2.
9303
9303
 
9304
9304
Sun Jan 19 23:37:03 1997  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9305
9305
 
9306
9306
        * eval.c (nodetype2str): Not static, for debugging.
9307
 
        (flags2str): New function for debugging.
 
9307
          (flags2str): New function for debugging.
9308
9308
        * field.c (get_field): Add new var that is like Nnull_string but
9309
 
        does not have numeric attributes, so that new fields are strings.
9310
 
        (set_record): Turn off PERM flag before unrefing fields and field 0.
 
9309
          does not have numeric attributes, so that new fields are strings.
 
9310
          (set_record): Turn off PERM flag before unrefing fields and field 0.
9311
9311
        * array.c (in_array): Always evaluate subscript, could have
9312
 
        side effects.
 
9312
          side effects.
9313
9313
        * builtin.c (do_strftime): Way increase size of buffer to make sure
9314
 
        we don't have overflow problem. Keeps Paul Eggert happy.
 
9314
          we don't have overflow problem. Keeps Paul Eggert happy.
9315
9315
        * custom.h [__amigaos__]: Define fork to vfork. From Fred Fish.
9316
9316
        * dfa.c: Move include of config.h to top, for RSXNT. From Kai
9317
 
        Uwe Rommel.
9318
 
        (ISALPHA, etc): Change from Jacob Engelbrecht (jaen@novo.dk)
9319
 
        to better handle non-ASCII environments.
 
9317
          Uwe Rommel.
 
9318
          (ISALPHA, etc): Change from Jacob Engelbrecht (jaen@novo.dk)
 
9319
          to better handle non-ASCII environments.
9320
9320
        * gawkmisc.c: Remove amigados case, posix should now work fine.
9321
9321
        * amiga/*: Nuked per previous entry.
9322
9322
        * Makefile.in: Removed all references to amiga
9323
9323
        * io.c [HAVE_SYS_PARAM_H]: Add #undef RE_DUP_MAX to avoid
9324
 
        spurious conflict with regex.h.
9325
 
        (flush_io): Remove amiga ifdefs, not needed anymore.
9326
 
        (spec_setup): Set getrec field for special files. Fix from
9327
 
        Mark Gray (markgray@pdt.net).
 
9324
          spurious conflict with regex.h.
 
9325
          (flush_io): Remove amiga ifdefs, not needed anymore.
 
9326
          (spec_setup): Set getrec field for special files. Fix from
 
9327
          Mark Gray (markgray@pdt.net).
9328
9328
        * node.c (more_nodes): Fix to get the last entry in the array.
9329
9329
 
9330
9330
Wed Jan  8 17:42:37 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
9331
9331
 
9332
9332
        * io.c (mmap_get_record): Fix return value if file ends without
9333
 
        record separator.
 
9333
          record separator.
9334
9334
 
9335
9335
Fri Jan  3 19:57:16 1997  Pat Rankin  <rankin@eql.caltech.edu>
9336
9336
 
9337
9337
        * awk.y (get_src_buf):  Test for an empty source file by detecting
9338
 
        an initial read of 0 bytes rather than by relying on info from
9339
 
        stat().
 
9338
          an initial read of 0 bytes rather than by relying on info from
 
9339
          stat().
9340
9340
 
9341
9341
Wed Dec 25 11:25:22 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9342
9342
 
9345
9345
Wed Dec 25 11:17:32 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9346
9346
 
9347
9347
        * Makefile.in (install, uninstall): Use $(srcdir)/patchlevel.h.
9348
 
        Thanks to Richard Levitte, LeViMS@stacken.kth.se.
9349
 
        (install): Remove chmod command; let $(INSTALL_PROGRAM) use -m.
 
9348
          Thanks to Richard Levitte, LeViMS@stacken.kth.se.
 
9349
          (install): Remove chmod command; let $(INSTALL_PROGRAM) use -m.
9350
9350
 
9351
9351
Mon Dec 23 20:36:59 1996  Pat Rankin  <rankin@eql.caltech.edu>
9352
9352
 
9355
9355
Fri Dec 20 08:59:55 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9356
9356
 
9357
9357
        * getopt.c, getopt1.c: Comment out the `#if defined (_LIBC) ||
9358
 
        !defined (__GNU_LIBRARY__)' and `#endif' to force use of this
9359
 
        getopt, even on systems like Linux.  This will be handled
9360
 
        better in 3.1 / glibc 2.
 
9358
          !defined (__GNU_LIBRARY__)' and `#endif' to force use of this
 
9359
          getopt, even on systems like Linux.  This will be handled
 
9360
          better in 3.1 / glibc 2.
9361
9361
 
9362
9362
Thu Dec 19 22:52:39 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9363
9363
 
9364
9364
        * awk.y (yylex): In several places, after yyerror(), add call to
9365
 
        exit(). Otherwise, infinite messages. This should probably
9366
 
        be handled better.
 
9365
          exit(). Otherwise, infinite messages. This should probably
 
9366
          be handled better.
9367
9367
 
9368
9368
Wed Dec 18 22:42:10 1996  Darrel Hankerson  <hankedr@mail.auburn.edu>
9369
9369
 
9370
9370
        * getopt.c (_getopt_internal): If 'W' and ';', if optind == argc,
9371
 
        return c, don't fall through.
 
9371
          return c, don't fall through.
9372
9372
 
9373
9373
Wed Dec 18 10:09:44 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9374
9374
 
9375
9375
        * configure.in [AC_PREREQ]: Update to 2.12 in order to switch to
9376
 
        autoconf 2.12. Lots of other files will be rebuilt automatically.
9377
 
        [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
 
9376
          autoconf 2.12. Lots of other files will be rebuilt automatically.
 
9377
          [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
9378
9378
        * aclocal.m4 [AM_SANITY_CHECK_CC]: Removed, autoconf does it now.
9379
9379
 
9380
9380
Tue Dec 17 22:23:16 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9381
9381
 
9382
9382
        * builtin.c (do_strftime): Fix case if format string is "".
9383
 
        Also fix it if format is not "" but result of strftime is "".
9384
 
        See comments in code.
 
9383
          Also fix it if format is not "" but result of strftime is "".
 
9384
          See comments in code.
9385
9385
 
9386
9386
Tue Dec 10 23:09:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9387
9387
 
9390
9390
Tue Dec 10 22:39:41 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9391
9391
 
9392
9392
        * Makefile.in (dist): Add dependency on `info'. Remove line that
9393
 
        does makeinfo.
9394
 
        (install): Use $(LN) not $(LN_S) to link gawk gawk-version.
 
9393
          does makeinfo.
 
9394
          (install): Use $(LN) not $(LN_S) to link gawk gawk-version.
9395
9395
 
9396
9396
Sun Dec  8 07:53:44 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9397
9397
 
9398
9398
        * Makefile.in (gawk): Took COMPFLAGS out of link line for help
9399
 
        on VMS posix. Shouldn't (I hope) affect anything else.
 
9399
          on VMS posix. Shouldn't (I hope) affect anything else.
9400
9400
 
9401
9401
Thu Nov 28 11:52:24 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9402
9402
 
9406
9406
 
9407
9407
        * PORTS: Updated list of systems.
9408
9408
        * Makefile.in (install): Fix some typos and add some improvements
9409
 
        for Ultrix.
 
9409
          for Ultrix.
9410
9410
 
9411
9411
Sun Nov 24 22:16:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9412
9412
 
9413
9413
        * builtin.c (do_printf): If no args, fatal error. Return silently
9414
 
        if --traditional.
 
9414
          if --traditional.
9415
9415
 
9416
9416
Thu Nov  7 20:54:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9417
9417
 
9418
9418
        * io.c (inrec): Make sure EOF hasn't already happened before
9419
 
        trying to read; prevents accessing freed buffer. Thanks to
9420
 
        Michal Jaegermann.
 
9419
          trying to read; prevents accessing freed buffer. Thanks to
 
9420
          Michal Jaegermann.
9421
9421
        * Makefile.in [AWKSRC]: Add random.h.
9422
9422
        * random.h: New file, redefines names of the `random' functions.
9423
9423
        * random.c, builtin.c: Add include of random.h.
9426
9426
 
9427
9427
        * awk.y (snode): Undo 4 Oct change, put do_split code back.
9428
9428
        * field.c (do_split): Restore old code; add test for CONST, so
9429
 
        that re_parse_field is used if third arg to split is a regexp
9430
 
        constant.
 
9429
          that re_parse_field is used if third arg to split is a regexp
 
9430
          constant.
9431
9431
 
9432
9432
Mon Nov  4 12:57:11 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9433
9433
 
9434
9434
        * main.c (main): Research -m[fr] options don't need literal '='
9435
 
        characters. Brian's documentation was confusing.  Fixed, not
9436
 
        that anyone actually uses these options with gawk.
 
9435
          characters. Brian's documentation was confusing.  Fixed, not
 
9436
          that anyone actually uses these options with gawk.
9437
9437
 
9438
9438
Sun Nov  3 11:23:21 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9439
9439
 
9440
9440
        * field.c (def_parse_field): Add \n to list of acceptable white space.
9441
 
        (posix_def_parse_field): New routine, just like def_parse_field(),
9442
 
        but only allows space and tab as separators.
9443
 
        (do_split, set_FS): Make appropriate choice between the two
9444
 
        *def_parse_field() routines.
 
9441
          (posix_def_parse_field): New routine, just like def_parse_field(),
 
9442
          but only allows space and tab as separators.
 
9443
          (do_split, set_FS): Make appropriate choice between the two
 
9444
          *def_parse_field() routines.
9445
9445
 
9446
9446
Fri Oct 25 10:13:06 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9447
9447
 
9449
9449
        * Makefile.in: Add random.c to list of files always compiled.
9450
9450
        * missing.c: Remove HAVE_RANDOM test.
9451
9451
        * builtin.c: Remove ifdef's for HAVE_RANDOM.
9452
 
        [GAWK_RAND_MAX]: Use constant we know works with our random().
 
9452
          [GAWK_RAND_MAX]: Use constant we know works with our random().
9453
9453
        * random.c: New file - moved from missing/ directory.
9454
9454
 
9455
9455
Wed Oct 23 19:46:01 1996  Pat Rankin  <rankin@eql.caltech.edu>
9459
9459
Tue Oct 22 21:27:52 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9460
9460
 
9461
9461
        * builtin.c [GAWK_RANDOM_MAX]: Try to make definition a bit
9462
 
        smarter; don't use RAND_MAX if it's equal to SHRT_MAX, blows
9463
 
        things up.
 
9462
          smarter; don't use RAND_MAX if it's equal to SHRT_MAX, blows
 
9463
          things up.
9464
9464
 
9465
9465
Tue Oct 22 08:49:20 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9466
9466
 
9475
9475
 
9476
9476
        * eval.c (nodetype2str): Make static, add prototype.
9477
9477
        * field.c (sc_parse_field): Cast array subscripts to int to
9478
 
        shut up gcc warnings.
 
9478
          shut up gcc warnings.
9479
9479
        * gawkmisc.c: Add prototype for xmalloc.
9480
9480
        * awk.h: Add prototype for getredirect.
9481
9481
        * builtin.c (do_fflush): Remove extern decl of getredirect.
9482
9482
        * io.c (get_a_record, mmap_get_record): Change decl of rs to int,
9483
 
        to shut up gcc warnings.
 
9483
          to shut up gcc warnings.
9484
9484
        * awk.y (isassignable): Add a default to switch to quiet gcc.
9485
9485
        * getopt.c (_getopt_internal): Give default value to `indfound'.
9486
9486
 
9499
9499
        * awk.h: Include locale.h and define out setlocale() if not available.
9500
9500
        * main.c (main): Call setlocale().
9501
9501
        * builtin.c (do_tolower, do_toupper): Use unsigned char pointers,
9502
 
        to get other charsets right in different locales.
 
9502
          to get other charsets right in different locales.
9503
9503
 
9504
9504
Wed Oct 16 21:32:53 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9505
9505
 
9506
9506
        * builtin.c (format_tree): Change initial buffer size to 512
9507
 
        and use a constant. Allows large values of %f per bug report
9508
 
        from sheyn@cs.bu.edu.
 
9507
          and use a constant. Allows large values of %f per bug report
 
9508
          from sheyn@cs.bu.edu.
9509
9509
 
9510
9510
Wed Oct 16 21:22:08 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9511
9511
 
9512
9512
        * Makefile.in [MISC]: Removed TAGS and tags.
9513
 
        (local-distclean): Added TAGS and tags.
9514
 
        (maintainer-clean): Removed TAGS and tags.
 
9513
          (local-distclean): Added TAGS and tags.
 
9514
          (maintainer-clean): Removed TAGS and tags.
9515
9515
 
9516
9516
Wed Oct 16 12:28:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9517
9517
 
9518
9518
        * main.c (version): Add call to copyleft(), per new standards.
9519
 
        version.c: Fix text of version string to match new standards.
 
9519
          version.c: Fix text of version string to match new standards.
9520
9520
 
9521
9521
Sun Oct  6 22:19:45 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9522
9522
 
9525
9525
Sun Oct  6 21:57:34 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9526
9526
 
9527
9527
        * re.c (make_regexp): Fixed to handle \8 and \9 in the middle
9528
 
        of a regexp.
 
9528
          of a regexp.
9529
9529
 
9530
9530
Fri Oct  4 10:26:16 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9531
9531
 
9532
9532
        * awk.y (snode): Remove case for do_split; always making the
9533
 
        third arg a Node_regex is wrong.
 
9533
          third arg a Node_regex is wrong.
9534
9534
        * field.c (do_split): Rationalized to distinguish `/ /' from `" "'.
9535
 
        Generally fixed up.
 
9535
          Generally fixed up.
9536
9536
        * node.c (parse_escape): Allow single digit \x escapes.
9537
9537
 
9538
9538
1996-10-02  Paul Eggert  <eggert@twinsun.com>
9539
9539
 
9540
9540
        * builtin.c (format_tree): Fix bug in %d and %i format: NaNs, and
9541
 
        values in the range LONG_MAX+1 .. ULONG_MAX, were mishandled.
9542
 
        Don't assume that double values <= -1 are converted to unsigned
9543
 
        long in the expected way; the C Standard doesn't guarantee this.
 
9541
          values in the range LONG_MAX+1 .. ULONG_MAX, were mishandled.
 
9542
          Don't assume that double values <= -1 are converted to unsigned
 
9543
          long in the expected way; the C Standard doesn't guarantee this.
9544
9544
 
9545
9545
1996-10-02  Paul Eggert  <eggert@twinsun.com>
9546
9546
 
9549
9549
Mon Sep 30 22:19:11 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9550
9550
 
9551
9551
        * getopt.c (_getopt_internal): If 'W' is in the optstring followed
9552
 
        by a ';' then search through the long opts table. This makes
9553
 
        `-W foo=bar' same as `--foo=bar'.
 
9552
          by a ';' then search through the long opts table. This makes
 
9553
          `-W foo=bar' same as `--foo=bar'.
9554
9554
        * main.c (main): 'W' now prints an error message.
9555
 
        (gawk_option): Deleted the routine.
 
9555
          (gawk_option): Deleted the routine.
9556
9556
 
9557
9557
Sun Sep 29 23:04:54 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9558
9558
 
9559
9559
        * builtin.c (sub_common): Fix several bugs with gsub when
9560
 
        matching null strings. See test/gsubtest.awk.
 
9560
          matching null strings. See test/gsubtest.awk.
9561
9561
 
9562
9562
Fri Sep 20 17:35:54 1996  Pat Rankin  <rankin@eql.caltech.edu>
9563
9563
 
9566
9566
Fri Sep 20 11:54:31 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9567
9567
 
9568
9568
        * builtin.c (do_print): Evaluate all the expressions first and
9569
 
        then print them. Avoids surprising behavior. See test/prtoeval.awk
9570
 
        for an example.
 
9569
          then print them. Avoids surprising behavior. See test/prtoeval.awk
 
9570
          for an example.
9571
9571
 
9572
9572
Tue Sep 10 06:21:40 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9573
9573
 
9574
9574
        * awk.h [FUNC]: New flag, marks a Node_parameter_list as really
9575
 
        being the function name; allows more checking in awk.y.
 
9575
          being the function name; allows more checking in awk.y.
9576
9576
        * awk.y (isassignable): Now takes a NODE * instead of a type, to
9577
 
        check if a function parameter is marked FUNC, then it's the function
9578
 
        name, which is not assignable. Fix call from snode().
9579
 
        (function_prologue): Mark function name as FUNC.
9580
 
        (yyerror): Don't call exit() anymore; gawk will now report
9581
 
        all syntax errors.
 
9577
          check if a function parameter is marked FUNC, then it's the function
 
9578
          name, which is not assignable. Fix call from snode().
 
9579
          (function_prologue): Mark function name as FUNC.
 
9580
          (yyerror): Don't call exit() anymore; gawk will now report
 
9581
          all syntax errors.
9582
9582
 
9583
9583
Sun Sep  1 19:36:30 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9584
9584
 
9585
9585
        * field.c (rebuild_record): After building new field 0, go through
9586
 
        all old fields, and if they used to point into the old one,
9587
 
        have them point into the new one.  Then turn off PERM flag before
9588
 
        unref-ing field 0.
 
9586
          all old fields, and if they used to point into the old one,
 
9587
          have them point into the new one.  Then turn off PERM flag before
 
9588
          unref-ing field 0.
9589
9589
 
9590
9590
Wed Aug 28 19:13:34 1996  Arnold D. Robbins  <arnold@math.utah.edu>
9591
9591
 
9592
9592
        * eval.c (set_IGNORECASE): Correctly parenthesize bit operations
9593
 
        in test and fix logic for string value.
 
9593
          in test and fix logic for string value.
9594
9594
 
9595
9595
Wed Aug 28 22:06:33 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9596
9596
 
9597
9597
        * main.c (usage): Add email addresses for bug reporting, per
9598
 
        change in GNU Coding Standards from RMS.
 
9598
          change in GNU Coding Standards from RMS.
9599
9599
 
9600
9600
Sun Aug 11 23:13:22 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9601
9601
 
9604
9604
Thu Aug  8 23:29:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9605
9605
 
9606
9606
        * parse.y (isassignable): New function, checks in type can
9607
 
        be assigned to.
9608
 
        (snode): Changed checking for 3rd arg of gsub to be more
9609
 
        general, supersedes earlier change.
 
9607
          be assigned to.
 
9608
          (snode): Changed checking for 3rd arg of gsub to be more
 
9609
          general, supersedes earlier change.
9610
9610
 
9611
9611
Thu Aug  8 13:58:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9612
9612
 
9613
9613
        * parse.y (snode): If third arg to sub or gsub is builtin
9614
 
        function, complain, since can't substitute into result.
 
9614
          function, complain, since can't substitute into result.
9615
9615
        * eval.c (r_get_lhs): Diagnose Node_builtin as an error, instead
9616
 
        of falling through into default case and using cant_happen().
 
9616
          of falling through into default case and using cant_happen().
9617
9617
 
9618
9618
Thu Aug  1 07:13:14 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9619
9619
 
9620
9620
        * regex.h [RE_DEBUG]: New macro.
9621
 
        [RE_SYNTAX_GNU_AWK]: Add RE_DEBUG.
9622
 
        [RE_SYNTAX_POSIX_AWK]: Add RE_INTERVALS.
 
9621
          [RE_SYNTAX_GNU_AWK]: Add RE_DEBUG.
 
9622
          [RE_SYNTAX_POSIX_AWK]: Add RE_INTERVALS.
9623
9623
        * regex.c (re_set_syntax): Add #ifdef DEBUG code to turn on `debug'
9624
 
        flag if RE_DEBUG set, and turn off debug if not set and debug
9625
 
        was on.
 
9624
          flag if RE_DEBUG set, and turn off debug if not set and debug
 
9625
          was on.
9626
9626
        * main.c (main): Remove `do_intervals = TRUE' from `if (do_posix)',
9627
 
        it's now handled in the definition of RE_SYNTAX_POSIX_AWK.
 
9627
          it's now handled in the definition of RE_SYNTAX_POSIX_AWK.
9628
9628
 
9629
9629
Mon Jul 29 17:49:07 1996  Pat Rankin  <rankin@eql.caltech.edu>
9630
9630
 
9633
9633
Mon Jul 29 12:02:48 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9634
9634
 
9635
9635
        * eval.c (set_IGNORECASE): Made somewhat smarter. gawk -v IGNORECASE=0
9636
 
        was acting the same as -v IGNORECASE=1. Thanks to Darrell Hankerson
9637
 
        for the bug report.
 
9636
          was acting the same as -v IGNORECASE=1. Thanks to Darrell Hankerson
 
9637
          for the bug report.
9638
9638
 
9639
9639
Fri Jul 26 12:04:43 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9640
9640
 
9641
9641
        * awk.h (format_val): Add declaration of new routine.
9642
9642
        * node.c (format_val): New routine, abstracts old guts of
9643
 
        r_forcestring; accepts format string and index as additional params.
9644
 
        (r_force_string): Changed to call format_val.
 
9643
          r_forcestring; accepts format string and index as additional params.
 
9644
          (r_force_string): Changed to call format_val.
9645
9645
        * builtin.c (do_print):  Don't tree_eval the tree twice in case
9646
 
        OFMTidx != CONVFMTidx; doing so could cause side effects
9647
 
        (from bug report by Tobias Rettstadt, xassp@ipds.uni-kiel.de).
9648
 
        Instead, call format_val.
 
9646
          OFMTidx != CONVFMTidx; doing so could cause side effects
 
9647
          (from bug report by Tobias Rettstadt, xassp@ipds.uni-kiel.de).
 
9648
          Instead, call format_val.
9649
9649
 
9650
9650
Mon Jul 22 21:59:15 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9651
9651
 
9652
9652
        * io.c (iop_close): Change check for "is $0 in the input buffer"
9653
 
        to use `< (iop->buf + iop->secsiz + iop->size)' instead of
9654
 
        `< iop->end'. The latter is bogus if EOF has been hit on the
9655
 
        file.  Fix from Darrel Hankerson based on bug report by
9656
 
        Charles Howes (howes@grid.direct.ca).  See test/eofsplit.awk.
 
9653
          to use `< (iop->buf + iop->secsiz + iop->size)' instead of
 
9654
          `< iop->end'. The latter is bogus if EOF has been hit on the
 
9655
          file.  Fix from Darrel Hankerson based on bug report by
 
9656
          Charles Howes (howes@grid.direct.ca).  See test/eofsplit.awk.
9657
9657
 
9658
9658
Thu Jul 18 19:43:20 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9659
9659
 
9660
9660
        * builtin.c (sub_common): Backed out change of Feb 14 in favor of:
9661
 
        (do_gensub): Changed to use make_string and then to |= TEMP
9662
 
        flag, based on bug report and patch from Katsuyuki Okabe,
9663
 
        hgc02147@niftyserve.or.jp.
 
9661
          (do_gensub): Changed to use make_string and then to |= TEMP
 
9662
          flag, based on bug report and patch from Katsuyuki Okabe,
 
9663
          hgc02147@niftyserve.or.jp.
9664
9664
 
9665
9665
Thu Jul 18 19:23:53 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9666
9666
 
9667
9667
        * custom.h: Added ifdef for QNX, based on bug report from
9668
 
        Michael Hunter, mphunter@qnx.com.
 
9668
          Michael Hunter, mphunter@qnx.com.
9669
9669
 
9670
9670
Mon Jul 15 09:31:01 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9671
9671
 
9672
9672
        * io.c (redirect): When finding the rp pointer, if it's not
9673
 
        NULL, set str = rp->value. This gets the '\0' terminated
9674
 
        version. Motivated by bug report from John Hawkinson
9675
 
        (jhawk@bbnplanet.com).
 
9673
          NULL, set str = rp->value. This gets the '\0' terminated
 
9674
          version. Motivated by bug report from John Hawkinson
 
9675
          (jhawk@bbnplanet.com).
9676
9676
 
9677
9677
Sun Jul 14 18:40:26 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9678
9678
 
9679
9679
        * configure.in: Added call to AC_CHECK_LIB(m, fmod), since
9680
 
        apparently some systems have fmod in the math library.
9681
 
        Portability: The Holy Grail.  Sigh.
 
9680
          apparently some systems have fmod in the math library.
 
9681
          Portability: The Holy Grail.  Sigh.
9682
9682
 
9683
9683
Sun Jul 14 18:08:01 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9684
9684
 
9685
9685
        * awk.h: Add Jim Meyerings ISASCII etc hacks for ctype macros.
9686
9686
        * builtin.c (do_toupper, do_tolower, sub_common): Changed to use
9687
 
        upper-case versions of ctype macros.
 
9687
          upper-case versions of ctype macros.
9688
9688
        * main.c (main): Ditto.
9689
9689
        * node.c (r_force_number, parse_escape): Ditto.
9690
9690
 
9691
9691
Sun Jul 14 06:34:18 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9692
9692
 
9693
9693
        * field.c (set_record): Made it always do the PERM flag.
9694
 
        Fixes cases where $0 is assigned to, e.g. by gsub, keeps
9695
 
        the fields valid.
9696
 
        (get_field): Removed the call to reset_record in
9697
 
        case where ! field0_valid. We want to leave the fields alone
9698
 
        if they've been changed.
 
9694
          Fixes cases where $0 is assigned to, e.g. by gsub, keeps
 
9695
          the fields valid.
 
9696
          (get_field): Removed the call to reset_record in
 
9697
          case where ! field0_valid. We want to leave the fields alone
 
9698
          if they've been changed.
9699
9699
 
9700
9700
Thu Jul 11 23:04:20 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9701
9701
 
9702
9702
        * io.c (devopen): Change tests of (flag & O_fooONLY) to
9703
 
        (flag & O_ACCMODE) == O_fooONLY. Per (long standing) bug
9704
 
        report from Chapman Flack.
9705
 
        (close_redir): Change final conditional to just (status != 0)
9706
 
        so that ERRNO always set; the warning had its own `if (do_lint)'
9707
 
        anyway.
 
9703
          (flag & O_ACCMODE) == O_fooONLY. Per (long standing) bug
 
9704
          report from Chapman Flack.
 
9705
          (close_redir): Change final conditional to just (status != 0)
 
9706
          so that ERRNO always set; the warning had its own `if (do_lint)'
 
9707
          anyway.
9708
9708
        * eval.c (do_split): Force type of array to be Node_var_array
9709
 
        instead of Node_var.  Per (long standing) bug report from
9710
 
        Chapman Flack.
 
9709
          instead of Node_var.  Per (long standing) bug report from
 
9710
          Chapman Flack.
9711
9711
 
9712
9712
Thu Jul 11 22:17:14 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9713
9713
 
9714
9714
        * Makefile.in (install): Added symlink of gawk to awk if
9715
 
        no awk in $(bindir).
9716
 
        (LN_S): New variable for symlinking.
9717
 
        (uninstall): Remove awk if it's the same gawk.
 
9715
          no awk in $(bindir).
 
9716
          (LN_S): New variable for symlinking.
 
9717
          (uninstall): Remove awk if it's the same gawk.
9718
9718
        * Configure.in: Added call to AC_PROG_LN_S for Makefile.in.
9719
9719
 
9720
9720
Sun Jul  7 15:47:13 1996  Arnold D. Robbins  <arnold@infographix.com>
9721
9721
 
9722
9722
        * main.c (main): Made `--posix' turn on interval expressions.
9723
 
        Gawk now matches its documentation. (What a concept!)
 
9723
          Gawk now matches its documentation. (What a concept!)
9724
9724
 
9725
9725
Wed Jul  3 15:02:48 1996  Arnold D. Robbins  <arnold@infographix.com>
9726
9726
 
9729
9729
Fri May 17 08:46:07 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9730
9730
 
9731
9731
        * io.c (get_a_record): Added `continued' flag. Fix from
9732
 
        Darrell Hankerson for when RS = "\n|something".
 
9732
          Darrell Hankerson for when RS = "\n|something".
9733
9733
 
9734
9734
Wed May 15 02:34:55 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9735
9735
 
9736
9736
        * Makefile.in (awklib/all): Now depends on gawk, fixes problem
9737
 
        with parallel make.
 
9737
          with parallel make.
9738
9738
 
9739
9739
Tue May 14 15:02:52 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9740
9740
 
9741
9741
        * builtin.c (format_tree): Fix handling of '*' to deal with
9742
 
        negative value for fieldwidth -- make positive and turn on
9743
 
        left justify. Per bug report from Michael Brennan.
 
9742
          negative value for fieldwidth -- make positive and turn on
 
9743
          left justify. Per bug report from Michael Brennan.
9744
9744
 
9745
9745
Sun May 12 20:42:06 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9746
9746
 
9747
9747
        * eval.c (r_get_lhs): case Node_subscript. Check if array name
9748
 
        is actually a function, fatal error if so.
 
9748
          is actually a function, fatal error if so.
9749
9749
 
9750
9750
Sun May  5 10:11:52 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9751
9751
 
9752
9752
        * io.c (redirect): Call flush_io() before creating a new output pipe,
9753
 
        per bug report from Brian Kernighan (bwk@research.bell-labs.com).
 
9753
          per bug report from Brian Kernighan (bwk@research.bell-labs.com).
9754
9754
 
9755
9755
Fri Mar 15 06:38:33 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9756
9756
 
9757
9757
        * Makefile.in (install): Use $(INSTALL_PROGRAM), not $(INSTALL).
9758
 
        (local-distclean): Add `*~' to list of files to be removed.
9759
 
        (CFLAGS): Now contains just @CFLAGS@.
9760
 
        (COMPFLAGS): Replaces use of CFLAGS, has CFLAGS plus all the
9761
 
        other stuff.
 
9758
          (local-distclean): Add `*~' to list of files to be removed.
 
9759
          (CFLAGS): Now contains just @CFLAGS@.
 
9760
          (COMPFLAGS): Replaces use of CFLAGS, has CFLAGS plus all the
 
9761
          other stuff.
9762
9762
 
9763
9763
Wed Mar 13 14:19:38 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9764
9764
 
9765
9765
        * io.c (mmap_get_record): Fixed to not place sentinel at end
9766
 
        of mmap'ed object. Won't work if file is exact multiple of
9767
 
        disk block size. See comments in code for more info.
9768
 
        Thanks to Rick Adams (rick@uunet.uu.net) for help in testing.
 
9766
          of mmap'ed object. Won't work if file is exact multiple of
 
9767
          disk block size. See comments in code for more info.
 
9768
          Thanks to Rick Adams (rick@uunet.uu.net) for help in testing.
9769
9769
 
9770
9770
Sun Mar 10 22:50:23 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9771
9771
 
9772
9772
        * io.c (do_close): Notice if we were called as `close(FILENAME)'
9773
 
        and arrange to close the current input file. This turns out
9774
 
        to be easy to do, just call `nextfile(TRUE)'. Based on bug report
9775
 
        from Pascal A. Dupuis, <dupuis@lei.ucl.ac.be>.
 
9773
          and arrange to close the current input file. This turns out
 
9774
          to be easy to do, just call `nextfile(TRUE)'. Based on bug report
 
9775
          from Pascal A. Dupuis, <dupuis@lei.ucl.ac.be>.
9776
9776
 
9777
9777
Thu Mar  7 08:08:51 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9778
9778
 
9779
9779
        * field.c (init_fields, grow_fields, set_field, rebuild_record):
9780
 
        Nuke the `nodes' array everywhere.  Anytime a field is unref'ed,
9781
 
        allocate a new node that is a copy of Nnull_string. This avoids
9782
 
        subtle memory management problems when doing a lot of assignment
9783
 
        to fields, and tweaking of NF. Make sure that fields_arr[0] always
9784
 
        has a type of Node_val!
 
9780
          Nuke the `nodes' array everywhere.  Anytime a field is unref'ed,
 
9781
          allocate a new node that is a copy of Nnull_string. This avoids
 
9782
          subtle memory management problems when doing a lot of assignment
 
9783
          to fields, and tweaking of NF. Make sure that fields_arr[0] always
 
9784
          has a type of Node_val!
9785
9785
        * field.c (set_NF): If NF is decremented, clear fields between
9786
 
        NF and parse_high_water, otherwise if NF incremented, clear
9787
 
        fields between parse_high_water and NF.
 
9786
          NF and parse_high_water, otherwise if NF incremented, clear
 
9787
          fields between parse_high_water and NF.
9788
9788
        * eval.c (nodetype2str): New function, used for diagnostics.
9789
 
        (interpret): Use nodetype2str when finding invalid node.
 
9789
          (interpret): Use nodetype2str when finding invalid node.
9790
9790
 
9791
9791
Mon Mar  4 09:02:28 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9792
9792
 
9793
9793
        * builtin.c (do_toupper, do_tolower): Use isascii along with
9794
 
        isupper/islower before changing case, in case characters have
9795
 
        the high bit set. This is a hack.
 
9794
          isupper/islower before changing case, in case characters have
 
9795
          the high bit set. This is a hack.
9796
9796
 
9797
9797
Mon Feb 26 22:24:44 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9798
9798
 
9799
9799
        * builtin.c (sub_common): If no match, and called from gensub,
9800
 
        don't free the temporary string, since the tmp_number then
9801
 
        writes over it.
 
9800
          don't free the temporary string, since the tmp_number then
 
9801
          writes over it.
9802
9802
 
9803
9803
Sun Feb 25 23:13:01 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9804
9804
 
9805
9805
        * builtin.c (format_tree): Fixed %c to treat user input as
9806
 
        numeric also by adding test for MAYBE_NUM.
 
9806
          numeric also by adding test for MAYBE_NUM.
9807
9807
 
9808
9808
Tue Feb 20 12:25:50 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9809
9809
 
9810
9810
        * configure.in: Added AC_FUNC_MMAP call and add madvise to
9811
 
        list of functions to look for.
 
9811
          list of functions to look for.
9812
9812
        * awk.h [IOP_ISMAPPED]: New flag value for mmap support and new
9813
 
        `getrec' structure member in struct iobuf.
 
9813
          `getrec' structure member in struct iobuf.
9814
9814
        * io.c (iop_alloc, iop_close): Changed to map/unmap input file
9815
 
        into memory if possible.
9816
 
        (mmap_get_record): New function to actually retrieve the
9817
 
        record from mmaped file.
 
9815
          into memory if possible.
 
9816
          (mmap_get_record): New function to actually retrieve the
 
9817
          record from mmaped file.
9818
9818
 
9819
9819
Thu Feb  1 08:56:46 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9820
9820
 
9821
9821
        * builtin.c (do_substr): Fixed lint message to use indx+1 when
9822
 
        start position is past end of string.
 
9822
          start position is past end of string.
9823
9823
 
9824
9824
Sun Jan 28 07:00:56 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9825
9825
 
9826
9826
        * builtin.c (do_substr): Rationalized handling of missing length
9827
 
        argument, as well as various accompanying lint warnings. Previous
9828
 
        code was slightly bogus. Talk about your Day 1 bugs.
 
9827
          argument, as well as various accompanying lint warnings. Previous
 
9828
          code was slightly bogus. Talk about your Day 1 bugs.
9829
9829
 
9830
9830
Thu Jan 25 14:09:11 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9831
9831
 
9832
9832
        * builtin.c (do_substr): If length exceeds length of actual
9833
 
        string, do computation of needed substring length *after*
9834
 
        the lint warning.
 
9833
          string, do computation of needed substring length *after*
 
9834
          the lint warning.
9835
9835
 
9836
9836
Wed Jan 24 10:06:16 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9837
9837
 
9838
9838
        * Makefile.in (gawk): Add $(CFLAGS) to link line.
9839
 
        (Makefile): Target depends on the Makefile.in files.
9840
 
        (OTHERS): Added TAGS and tags to the distribution.
9841
 
        (local-distclean): New rule.
9842
 
        (distclean): Use it.
9843
 
        (maintainer-clean): Don't `make distclean' before running submakes,
9844
 
        since that removes makefiles needed for the submakes.
 
9839
          (Makefile): Target depends on the Makefile.in files.
 
9840
          (OTHERS): Added TAGS and tags to the distribution.
 
9841
          (local-distclean): New rule.
 
9842
          (distclean): Use it.
 
9843
          (maintainer-clean): Don't `make distclean' before running submakes,
 
9844
          since that removes makefiles needed for the submakes.
9845
9845
        * builtin.c (do_strftime): Remove hard coded limit on length of result.
9846
 
        Based on code from Paul Eggert (eggert@twinsun.com).
 
9846
          Based on code from Paul Eggert (eggert@twinsun.com).
9847
9847
 
9848
9848
Mon Jan 22 13:16:37 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9849
9849
 
9850
9850
        * main.c (usage): Takes new fp parameter which is either
9851
 
        stdout for `--help' (per the GNU Coding Standards) or stderr
9852
 
        if an error occurs. Fix all calls.
9853
 
        (version): Prints to stdout per the coding stds.
9854
 
        (copyleft): Prints to stdout now, not stderr, and exits.
 
9851
          stdout for `--help' (per the GNU Coding Standards) or stderr
 
9852
          if an error occurs. Fix all calls.
 
9853
          (version): Prints to stdout per the coding stds.
 
9854
          (copyleft): Prints to stdout now, not stderr, and exits.
9855
9855
 
9856
9856
Fri Jan 19 08:10:29 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9857
9857
 
9858
9858
        * regex.h [RE_GNU_AWK]: Added RE_CONTEXT_INDEP_OPS to set of
9859
 
        bits we turn off for regular operation. Breaks things like
9860
 
        /^+[0-9]+/ to match a literal `+' at the beginning of, say,
9861
 
        a phone number.
 
9859
          bits we turn off for regular operation. Breaks things like
 
9860
          /^+[0-9]+/ to match a literal `+' at the beginning of, say,
 
9861
          a phone number.
9862
9862
 
9863
9863
Wed Jan 10 23:19:36 1996  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9864
9864
 
9867
9867
Wed Dec 27 11:46:16 1995  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9868
9868
 
9869
9869
        * 2.94.0 released to porting group (no, I haven't been good
9870
 
        about this file; I'll do better once 3.0 is released).
 
9870
          about this file; I'll do better once 3.0 is released).
9871
9871
 
9872
9872
Mon Aug 28 23:04:30 1995  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9873
9873
 
9874
9874
        * awk.h updated for NeXT - bracket TRUE/FALSE
9875
9875
        * io.c (get_a_record): Removed shadowing of 'start' in
9876
9876
        * Makefile.in and doc/Makefile.in: Fixed to use gawk.1 and gawk.texi,
9877
 
        instead of gawk.1.in and gawk.texi.in.
 
9877
          instead of gawk.1.in and gawk.texi.in.
9878
9878
 
9879
9879
Mon Aug 25 11:04:30 1995  Arnold D. Robbins  <arnold@skeeve.atl.ga.us>
9880
9880