-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathChangeLog
More file actions
2433 lines (1802 loc) · 90.1 KB
/
ChangeLog
File metadata and controls
2433 lines (1802 loc) · 90.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (snode): Make it a fatal error to use a regexp constant
as the second argument of index(). Thanks to Christopher Durant
<christopher.durant@marquesa.net> and Brian Kernighan for the report
and the advice.
2013-04-28 Eli Zaretskii <eliz@gnu.org>
* io.c (redirect): Remove the HACK that called close_one when
errno was zero in the MinGW build. This prevents failure in
several tests in the test suite, e.g., closebad.
2013-04-28 Arnold D. Robbins <arnold@skeeve.com>
* bootstrap.sh: Fix a comment.
2013-04-24 Arnold D. Robbins <arnold@skeeve.com>
* io.c (do_getline_redir): Fix the leading comment.
2013-04-23 Arnold D. Robbins <arnold@skeeve.com>
* main.c (load_procinfo): Add PROCINFO entries for API major
and minor versions.
2013-04-21 Arnold D. Robbins <arnold@skeeve.com>
* missing: Update from Automake 1.13.1.
2013-04-18 Arnold D. Robbins <arnold@skeeve.com>
* configure.ac: Fix a typo.
2013-04-17 Corinna Vinschen <vinschen@redhat.com>
* configure.ac: Remove special casing for cygwin for libiconv
and libintl.
2013-04-16 Arnold D. Robbins <arnold@skeeve.com>
* bootstrap.sh: Touch gawk.texi too. Update copyright.
2013-04-16 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.c: Regenerated from bison 2.7.1.
* command.c: Ditto.
* dfa.h, dfa.c: Minor edits to sync with GNU grep.
* gettext.h: Sync with gettext 0.18.2.1.
* random.h: Remove obsolete __P macro and use. Update copyright year.
* Makefile.am, array.c, builtin.c, cint_array.c, cmd.h, debug.c,
eval.c, ext.c, field.c, gawkapi.c, gawkapi.h, gettext.h, int_array.c,
interpret.h, msg.c, node.c, profile.c, re.c, replace.c, str_array.c,
symbol.c: Update copyright year.
Update to automake 1.13.1:
* configure.ac (AM_INIT_AUTOMAKE): Update version.
* configure, Makefile.in, aclocal.m4, awklib/Makefile.in,
doc/Makefile.in, test/Makefile.in: Regenerated.
* getopt.c, getopt.h, getopt1.c, getopt_int.h: Sync with GLIBC.
2013-04-14 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (check_funcs): Fix logic of test for called but
not defined warning. Thanks to Scott Deifik for the bug report.
2013-04-02 Arnold D. Robbins <arnold@skeeve.com>
* profile.c (print_lib_list): Send final newline to prof_fp
instead of stdout. Thanks to Hermann Peifer for the bug report.
2013-03-27 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (SUBDIRS): Move extension back into the middle of
the list so that `make check' without a prior `make' works.
Unrelated:
* main.c (main): Move env_lc into ifdef for LIBC_IS_BORKED.
2013-03-20 Arnold D. Robbins <arnold@skeeve.com>
For systems where libc is borked (MirBSD, maybe others).
* dfa.c: Force use of gawk_mb_cur_max instead of MB_CUR_MAX and make
mbrtowc a macro that always fails.
(using_utf8): Force utf8 to be 0 if libc borked and gawk_mb_cur_max
is one.
* main.c (main): If libc is borked and LC_ALL or LANG exist in the
environment and are set to "C" or "c", force gawk_mb_cur_max to one.
2013-03-11 Arnold D. Robbins <arnold@skeeve.com>
* re.c (check_bracket_exp): Make handling of embedded ] in
regexp smarter. Thanks to Ed Morton <mortoneccc@comcast.net>
for reporting the bug.
2013-03-01 Arnold D. Robbins <arnold@skeeve.com>
Don't build extensions if API isn't supported:
* Makefile.am (SUBDIRS): Move extension directory to last in case
building the extensions is not supported.
* configure.ac: Add check for MirBSD and don't even try to run the
checks for DYNAMIC if so.
Check for systems (MirBSD) where libc doesn't understand not
to use UTF-8 for LC_ALL=C.
* configure.ac (LIBC_IS_BORKED): AC_DEFINE if needed.
* regcomp.c (init_dfa): Change logic as needed if LIBC_IS_BORKED.
2013-02-28 Arnold D. Robbins <arnold@skeeve.com>
Cause profiling / pretty printing to include a list of
loaded extensions. Thanks to Hermann Peifer for the bug report.
* awk.h (srcfiles): Add declaration.
* profile.c (print_lib_list): New function.
(dump_prog): Call it.
2013-02-26 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (expression_list): In case of error return the list
instead of NULL so that snode gets something it can count.
2013-02-12 Arnold D. Robbins <arnold@skeeve.com>
* bisonfix.awk: Comment out code for fixing contined #if
statements. It is likely not needed anymore. Leave it there in
case I'm wrong.
2013-02-06 Arnold D. Robbins <arnold@skeeve.com>
* builtin.c (printf_common): Move nargs > 0 check into assert.
(do_sprintf): Add nargs check and fatal message to here.
2013-02-04 Arnold D. Robbins <arnold@skeeve.com>
* main.c (main): Remove undocumented -m option which was for
compatibility with BWK awk. His awk dropped it back in 2007.
2013-02-03 Arnold D. Robbins <arnold@skeeve.com>
* configure.ac: Add Automake test for cross compiling.
2013-01-31 Arnold D. Robbins <arnold@skeeve.com>
* regcomp.c, regex.c, regex_internal.c, regexec.c: Update
copyright years to sync with GLIBC.
From: http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html,
by Andreas Schwab <schwab@suse.de>:
* regexec.c (extend_buffers): Add parameter min_len.
(check_matching): Pass minimum needed length.
(clean_state_log_if_needed): Likewise.
(get_subexp): Likewise.`
2013-01-31 Arnold D. Robbins <arnold@skeeve.com>
* dfa.c: Include "dfa.h" which includes regex.h after limits.h
so that RE_DUP_MAX gets the correct value. Especially needed on
OpenVMS. Thanks to Anders Wallin.
* main.c (version): Print out API version numbers if DYNAMIC.
Helpful also for knowing if to run the shlib tests.
* configure: Regenerated after change in m4/readline.m4.
2013-01-31 Arnold D. Robbins <arnold@skeeve.com>
* PROBLEMS: Removed. It is no longer needed.
* Makefile.am (EXTRA_DIST): Remove PROBLEMS from list.
2013-01-31 Andrew J. Schorr <aschorr@telemetry-investments.com>
* configure.ac: Remove TEST_MPFR conditional added in last patch.
We will instead test for MPFR capability by looking at the output
from gawk --version.
2013-01-27 Andrew J. Schorr <aschorr@telemetry-investments.com>
* configure.ac: Add MPFR test for use in test/Makefile.am.
2013-01-25 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (parms_shadow): Change int param to bool.
* cmd.h (output_is_tty): Sync type with rest of code (is bool).
* dfa.c (MALLOC): Undef first, for Irix.
* Makefile.am (LDADD): Use LIBREADLINE and LIBMPFR instead of
automake substitutions.
* configure.ac (AC_INIT): Version bump.
(GAWK_CHECK_READLINE): Renamed from GNUPG_CHECK_READLINE.
2013-01-23 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (list_functions): Change parameter to bool.
* symbol.c (list_functions): Ditto.
(get_symbols): Change sort parameter to bool. Additional
code cleanup.
2013-01-22 Arnold D. Robbins <arnold@skeeve.com>
* symbol.c (get_symbols): Reset count after each loop to only
sort the actual items retrieved. Thanks to Hermann Peifer (by
way of Andrew Schorr) for reporting the bug. Also add some
commentary and fix function name in emalloc calls.
2013-01-20 Arnold D. Robbins <arnold@skeeve.com>
* re.c (regexflags2str): New routine.
(resetup): If do_intervals, also turn on RE_NO_BK_BRACES.
Thanks to Yan Lei <yanl.fnst@cn.fujitsu.com> for the
bug report.
2013-01-18 Arnold D. Robbins <arnold@skeeve.com>
Fix a problem with include ordering to get ptrdiff_t definition,
showed up on Debian Lenny. Reported by Manuel Collado.
Fix brought over from grep.
* dfa.h: Include regex.h and stddef.h directly.
* dfa.c: Adjust includes.
2013-01-11 John Haque <j.eh@mchsi.com>
* awk.h (do_mpfr_rshift): Renamed from do_mpfr_rhift.
* awkgram.y (do_mpfr_rshift): Renamed from do_mpfr_rhift.
* mpfr.c (_tz1, _tz2, _mpz1, _mpz2, mpz1, mpz2, get_bit_ops,
free_bit_ops): Removed.
(init_mpfr): Remove calls to mpz_init.
(get_intval, free_intval): New functions.
(do_mpfr_rshift, do_mpfr_lshift): Rework code.
(do_mpfr_and, do_mpfr_or, do_mpfr_xor): Accept two or more arguments
to match regular functions.
2013-01-11 Arnold D. Robbins <arnold@skeeve.com>
* bisonfix.awk: Adjust ARGV / ARGC to force reading of standard
input; apparently needed for Mac OS X. Thanks to Akim Demaille
for the report.
2013-01-06 Arnold D. Robbins <arnold@skeeve.com>
* io.c (redirect, two_way_open): Set the name field in the
awk_input_buf_t and awk_output_buf_t structures, as needed.
Thanks to Manuel Collado for the report.
2013-01-05 Arnold D. Robbins <arnold@skeeve.com>
* regex_internal.h (struct re_dfa_t): Restore ifdefs around
__libc_lock_define, they really were needed. Bleah.
2013-01-01 Arnold D. Robbins <arnold@skeeve.com>
Sync with GLIBC regex files.
* regex_internal.h (struct re_dfa_t): Remove ifdefs around
__libc_lock_define since it's already defined to empty in non-LIBC
case.
* regexec.c (check_node_accept_bytes): Restore decl with use from
GLIBC code since this is LIBC case.
2012-12-27 Arnold D. Robbins <arnold@skeeve.com>
* builtin.c (do_print, do_printf): Use output_fp as default
output for print/printf only if running under the debugger.
Otherwise use stdout as Brian, Peter, and Al intended.
2012-12-25 Arnold D. Robbins <arnold@skeeve.com>
Remove sym-constant from API after discussions with John
Haque and Andy Schorr.
* gawkapi.h (api_sym_constant): Removed field in API struct.
(sym_constant): Remove macro.
* gawkapi.c (set_constant, api_sym_update, api_sym_constant): Removed.
(sym_update_real): Renamed to api_sym_update(). is_const parameter
removed and code adjusted.
2012-12-24 Arnold D. Robbins <arnold@skeeve.com>
* 4.0.2: Release tar ball made.
2012-12-23 John Haque <j.eh@mchsi.com>
* eval.c (r_get_lhs): Node_array_ref. If original is Node_var,
don't assign null-string as value.
* ext.c (get_argument): Node_array_ref. Check if already a scalar.
2011-12-23 John Haque <j.eh@mchsi.com>
* awkgram.y (is_deferred_variable): New function.
(func_install): Call it.
* eval.c (r_interpret): Op_push_arg. Check for uninitialized scalar.
2012-12-23 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (tokentab): Whitespace fix for "include".
* builtin.c (printf_common): Do a fatal error if no args to printf()
or sprintf().
2012-12-19 Arnold D. Robbins <arnold@skeeve.com>
* bootstrap.sh: Touch extension/aclocal.m4 also.
Unrelated: Extend input parser API:
* awk.h (IOBUF): Remove read_func pointer.
* gawkapi.h (awk_input_buf_t): Move it to here.
* io.c (iop_alloc, get_a_record, get_read_timeout): Adjust code.
Unrelated: Make sure that variables like NF, NR, FNR are
accessable correctly both through SYMTAB and through API.
* gawkapi.c (api_sym_lookup): Call update_global_values().
(api_sym_lookup_scalar): Ditto.
* interpret.h (Op_subscript, Op_subscript_lhs): Ditto.
* main.c (update_global_values): Adjust comment.
Unrelated: Fix --disable-lint so that everything compiles.
* main.c (main): Move case lable inside ifdef.
* awkgram.y (isnoeffect): Add ifdefs around declaration, use,
and function body.
Unrelated: Restore building with tcc.
* awk.h (AFUNC): Move to array.c which is the only place its used.
(ainit_ind, atypeof_ind, etc.): New macros for use in array.c
* array.c (AFUNC): Change to use F##_ind. Works with tcc and other
compilers.
* configure.ac: Only add -export-dynamic flag if compiling with gcc.
2012-12-18 Andrew J. Schorr <aschorr@telemetry-investments.com>
* gawkapi.c (sym_update_real): If setting a scalar variable that exists
already in an undefined state with type set to Node_var_new, we must
update the type to Node_var if the new value is not undefined.
2012-12-18 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (tokentab): "extension" needs to be inside ifdef DYNAMIC.
Thanks to Anders Wallin for finding this.
2012-12-16 Arnold D. Robbins <arnold@skeeve.com>
* debug.c (do_set_var): Fix last remaining `*assoc_lookup() = x'.
2012-12-15 Arnold D. Robbins <arnold@skeeve.com>
Infrastructure Updates:
* awkgram.c, command.c: Regenerated with bison 2.7.
* config.guess, config.sub, depcomp: Updated from automake 1.12.6.
2012-12-09 Arnold D. Robbins <arnold@skeeve.com>
Clean up BINMODE to use symbolic values.
* awk.h (enum binmode_values): New enum.
* eval.c (set_BINMODE): Use them.
* io.c (binmode, close_rp, gawk_popen): Ditto.
* main.c (main): Ditto.
* builtin.c (do_system): Ditto.
Unrelated:
* configure.ac: Look for posix_openpt
* io.c (two_way_open): Use posix_openpt if it's available.
Thanks to Christian Weisgerber <naddy@mips.inka.de> for
the changes.
Also unrelated:
* regex.c: Don't include <sys/param.h> on VMS. Thanks to
Anders Wallin.
Also unrelated:
* ext.c (is_letter, is_identifier_char): New functions. Don't use
<ctype.h> functions since those could rely on the locale.
(make_builtin): Adjust test for valid name to call the new
functions and return false instead of throwing a fatal error.
(make_old_builtin): Adjust test for valid name to call the new
function.
* awk.h (is_identchar): Move from here, ...
* awkgram.y (is_identchar): ... to here. This is safe, since
the locale is C during parsing the program.
Also unrelated: Make all checks for bitflags being set consistent
in case we should wish to switch them to macro calls:
* awkgram.y, builtin.c, cint_array.c, debug.c, eval.c, gawkapi.c,
int_array.c, io.c, mpfr.c, node.c, profile.c, str_array.c: Fix
as needed.
2012-12-07 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (tokentab): `fflush()' is now in POSIX, remove the
RESX flag. This was the last use, so delete the flag.
(yylex): Don't check RESX.
Thanks to Nathan Weeks <weeks@iastate.edu> for helping make this
happen.
2012-12-01 Arnold D. Robbins <arnold@skeeve.com>
* interpret.h: For op_assign_concat, if both strings
have WSTRCUR, then do the realloc() and append for the
wide string too. Thanks to Janis Papanagnou
<janis_papanagnou@hotmail.com> for the discussion in
comp.lang.awk.
2012-11-30 Arnold D. Robbins <arnold@skeeve.com>
* regcomp.c, regex.c, regex_internal.h, regexec.c: Sync
with GLIBC. Why not.
* gawkapi.c (awk_bool_t): Change into an enum with awk_false and
awk_true values.
2012-01-30 Andrew J. Schorr <aschorr@telemetry-investments.com>
Further cleanups of macros in awk.h
* awk.h (_r, _t): Remove declarations.
(unref, m_force_string): Remove macros.
(r_unref): Move declaration.
(r_force_string): Remove declaration.
(DEREF, force_string, force_number, unref): Now inline functions.
(POP_STRING, TOP_STRING): Back to macros.
* eval.c (_t): Remove definition.
* main.c (_r): Remove definition.
* node.c (r_force_string): Remove.
2012-11-27 Arnold D. Robbins <arnold@skeeve.com>
* builtin.c (do_fflush): Make fflush() and fflush("") both
flush everything. See the comment in the code.
2012-11-26 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (Node_old_ext_func, Op_old_ext_func): New enum values.
* configure.ac: Use -export-dynamic if supported for old extension
mechanism.
* eval.c (nodeytpes): Add Node_old_ext_func.
(optypetab): Add Op_old_ext_func.
* ext.c (make_old_ext_builtin): "New" function.
* interpret.h: Special case Op_old_ext_builtin. Add checks for
Node_old_ext_func.
* msg.c: Adjust placement of a comment.
2012-05-02 John Haque <j.eh@mchsi.com>
* str_array.c (str_copy): Initialize next pointer in the linked list
to avoid memory corruption.
* int_array.c (int_copy): Ditto.
2012-04-21 John Haque <j.eh@mchsi.com>
Shutdown routine for a dynamic extension.
* awk.h (SRCFILE): New field fini_func.
* ext.c (load_ext): Takes an additional argument to look up and
save the clean up routine in SRCFILE struct.
(INIT_FUNC, FINI_FUNC): Defines for default init and fini routine
names.
(do_ext): Use default for the name of the init or fini routine if
one is not supplied. Adjust call to load_ext().
(close_extensions): Execute fini routines.
* interpret.h (Op_at_exit): Call close_extensions().
* msg.c (gawk_exit): Ditto.
* debug.c (close_all): Ditto.
* main.c (main): Adjust call to load_ext().
* awkgram.y (tokentab): Specify 2nd and 3rd optional arguments
for the extension() built-in.
Unrelated:
* interpret.h (Op_arrayfor_init): Use assoc_length for array size.
2012-04-19 John Haque <j.eh@mchsi.com>
Enhanced array interface to support transparent implementation
using external storage and ...
* awk.h (astore): Optional post-assignment store routine for
array subscripts.
(Op_subscript_assign): New opcode to support the store routine.
(alength): New array interface routine for array length.
(assoc_length): New macro.
(assoc_empty): Renamed from array_empty.
* awkgram.y (snode): Append Op_subscript_assign opcode if
(g)sub variable is an array element.
(mk_getline): Same for getline variable.
(mk_assignment): Same if assigning to an array element.
* field.c (set_element): Call store routine if needed.
* builtin.c (do_match): Ditto.
(do_length): Use length routine for array size.
* symbol.c (print_vars): Ditto.
* array.c (null_length): Default function for array length interface.
(asort_actual): Call store routine if defined.
(asort_actual, assoc_list): Use length routine for array size.
(null_array_func): Add length and store routine entries.
* str_array.c (str_array_func): Same.
* cint_array.c (cint_array_func): Same.
* int_array.c (int_array_func): Same.
* eval.c (optypetab): Add Op_subscript_assign.
* profile.c (pprint): Add case Op_subscript_assign.
* interpret.h (set_array, set_idx): New variables to keep track
of an array element with store routine.
(Op_sub_array, Op_subscript_lhs, Op_store_sub, Op_subscript_assign):
Add code to handle array store routine.
* debug.c (print_symbol, print_array, cmp_val, watchpoint_triggered,
initialize_watch_item): Use length routine for array size.
* awk.h (assoc_kind_t): New typedef for enum assoc_list_flags.
(sort_context_t): Renamed from SORT_CONTEXT.
* array.c (asort_actual, assoc_sort): Adjust.
* cint_array.c (cint_list, tree_list, leaf_list): Adjust.
* int_array.c (int_list): Adjust.
* str_array.c (str_list): Adjust.
2012-04-18 John Haque <j.eh@mchsi.com>
* awk.h (atypeof, AFUNC): New macros.
(afunc_t): Renamed typedef from array_ptr.
* array.c (register_array_func, null_lookup): Use AFUNC macro
instead of hard-coded index for array functions.
(asort_actual): Unref null array elements before overwriting.
(force_array): Renamed from get_array.
(null_array): Renamed from init_array. Also initialize flags to 0.
(array_types): Renamed from atypes.
(num_array_types): Renamed from num_atypes.
* interpret.h (r_interpret): In case Op_sub_array, unref null array element.
* str_array.c (str_array_init): Reworked for (re)initialization of array.
* int_array.c (int_array_init): Ditto.
* cint_array.c (cint_array_init): Ditto.
2012-11-24 Arnold D. Robbins <arnold@skeeve.com>
Directory cleanup.
* TODO.xgawk, FUTURES: Merged into TODO.
* TODO: More stuff added.
* Makefile.am (EXTRA_DIST): Updated.
2012-11-22 Arnold D. Robbins <arnold@skeeve.com>
Cleanup of awk.h.
* array.c (r_in_array): Removed.
* awk.h (MALLOC_ARG_T): Replaced with size_t everywhere.
(S_ISREG, setsid): Moved to io.c.
(__extension__): Removed.
(INT32_BIT): Moved to cint_array.c.
(_t): Always declare.
(DO_LINT_INVALID, et al): Moved into an enum.
(POP_ARRAY, POP_PARAM, POP_SCALAR, TOP_SCALAR, dupnode, in_array):
Moved into inline functions.
(force_number, force_string): Simplified.
(ZOS_USS): Remove undef of DYNAMIC, it's handled in configure.ac.
* io.c (S_ISREG, setsid): Moved to here.
* cint_array.c (INT32_BIT): Moved to here.
* eval.c (_t): Always define.
* protos.h: Use size_t directly instead of MALLOC_ARG_T.
Unrelated:
* gawkapi.h: Add `awk_' prefix to structure tags where they
were missing. Document the full list of include files needed.
2012-11-14 Arnold D. Robbins <arnold@skeeve.com>
* io.c (do_find_source): On VMS, don't add the `/' separater.
Thanks to Anders Wallin.
MPFR minor cleanup:
* awk.h (mpfr_unset): Declare new function.
* mpfr.c (mpfr_unset): New function.
* node.c (r_unref): Call it instead of inline code.
* gawk_api.c (api_sym_update_scalar): Call it instead of inline code.
2012-11-13 Arnold D. Robbins <arnold@skeeve.com>
* symbol.c (get_symbols): Check type, not vname. Keeps
valgrind happy. Thanks to Andrew Schorr for noticing the problem.
2012-11-10 Arnold D. Robbins <arnold@skeeve.com>
* Update to bison 2.6.5. Various files regenerated.
* io.c (find_source): Add a default value for SHLIBEXT.
(read_with_timeout): For VMS also, just use read().
2012-11-10 John Haque <j.eh@mchsi.com>
* int_array.c (int_copy): Initialize next pointer of newchain to null.
* eval.c (eval_condition): Force string context for an integer used
as array index.
2012-11-10 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.c (api_add_ext_func, api_awk_atexit, api_clear_array,
api_create_array, api_create_value, api_register_ext_version,
api_release_value, api_update_ERRNO_string, node_to_awk_value,
remove_element, run_ext_exit_handlers): Add null pointer checks.
Everywhere: Add / fixup leading comments.
* interpret.h (Op_store_sub): If assigning to an unitialized variable
through SYMTAB, change it to Node_var. Add explanatory comments.
* symbol.c (get_symbol): Rationalized. Skip non-variables in SYMTAB.
2012-11-04 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: Minor documentation edit.
2012-10-31 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (want_regexp): Use as a bool, not as an int.
* field.c: Fix a comment.
* gawkapi.h: Add comment to include <errno.h>.
* symbol.c (load_symbols): ``No automatic aggregate initialization.''
Here too. Sigh again.
* gawkapi.h: Minor documentation edits.
2012-11-27 Arnold D. Robbins <arnold@skeeve.com>
* builtin.c (do_fflush): Make fflush() and fflush("") both
flush everything. See the comment in the code.
2012-10-28 Arnold D. Robbins <arnold@skeeve.com>
* Update to bison 2.6.4. Various files regenerated.
2012-10-27 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: Continuing the minor formatting / doc cleanups.
2012-10-26 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: Continuing the minor formatting / doc cleanups.
2012-10-24 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: Still more minor formatting / doc cleanups.
2012-10-23 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: More minor formatting / doc cleanups.
2012-10-21 Arnold D. Robbins <arnold@skeeve.com>
Fixes for z/OS from Dave Pitts.
* awk.h (assoc_list_flags): No trailing comma on last enum value.
* gawkapi.h (awk_valtype_t): Ditto.
* symbol.c (lookup): ``No automatic aggregate initialization.'' Sigh.
Unrelated:
* gawkapi.h: Minor formatting / doc cleanups.
2012-10-19 Arnold D. Robbins <arnold@skeeve.com>
If SYMTAB is used, make sure ENVIRON and PROCINFO get loaded too.
* awkgram.y (process_deferred): New function. Call it when program
is completely parsed.
(symtab_used): New variable.
(variable): Set it to true if SYMTAB is looked up.
* main.c (load_environ, load_procinfo): Make sure the routines are
only called once.
Unrelated fixes:
* awkgram.y (yylex): Check continue_allowed and break_allowed as
soon as they are seen in the scanner; the rules that check them
can not be reduced until after a token that allows them is seen,
leading to errors at execution time.
* interpret.h (Op_K_break, Op_K_continue, Op_jmp): Add asssertion
that pc->target_jmp is not NULL.
* symbol.c (lookup): Correct a comment.
2012-10-14 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h (IOBUF_PUBLIC): Renamed awk_input_buf_t.
(struct iobuf_public): Renamed struct awk_input.
* awk.h: Adjust.
2012-10-13 Arnold D. Robbins <arnold@skeeve.com>
* Update to Automake 1.12.4. Various files regenerated.
2012-10-11 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (dup_ent): New member for Node_param_list.
* symbol.c (install): For parameters, if this is a duplicate, chain
it off the original using the dup_ent pointer.
(remove_params): If there's a duplicate, remove it from the list.
* awk.h: Fix flags to have unique numeric values. Oops.
2012-10-10 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: Add considerably more documentation. Rearrange order
of functions in the struct to make more sense, grouping related
functions together in a more logical order.
* gawkapi.c: Adjust as needed.
* ext.c (make_builtin): Adjust for name change in struct member.
2012-10-05 Arnold D. Robbins <arnold@skeeve.com>
* mbsupport.h: Add a bunch of undefs for z/OS.
2012-10-04 Arnold D. Robbins <arnold@skeeve.com>
* TODO.xgawk: Update.
* awk.h (make_str_node): Removed macro.
(make_string): Modified to call make_str_node.
(r_make_str_node): Renamed to make_str_node.
* gawkapi.c: Changed r_make_str_node to make_str_node everywhere.
* node.c (make_str_node): Renamed from make_str_node.
Update to automake 1.12.4.
* Makefile.in, aclocal.m4, awklib/Makefile.in, doc/Makefile.in,
extension/Makefile.in, extension/aclocal.m4, test/Makefile.in:
Regenerated.
* interpret.h (Op_Subscript): Added lint warnings for FUNCTAB
and SYMTAB.
2012-10-02 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (func_table): Declare.
* awkgram.y: If do_posix or do_traditional, then check for
delete on SYMTAB. Add check for delete on FUNCTAB, also.
* interpret.h (Op_Subscript): For FUNCTAB, return the element name
as its value too. Avoids lots of weirdness and allows indirect calls
after assignment from FUNCTAB["foo"] to work.
(Op_store_sub): Disallow assignment to elements of FUNCTAB.
(Op_indirect_func_all): Turn assert into check and fatal error.
* symbol.c (func_table): No longer static.
(lookup): If do_posix or do_traditional, skip the global table.
(release_all_vars): Clear func_table too.
2012-09-25 Arnold D. Robbins <arnold@skeeve.com>
First cut at SYMTAB and FUNCTAB. This does the following:
- Change symbol table handling to use gawk arrays.
- Store symbols in SYMTAB array and allow indirect access
through SYMTAB to variables, both getting and setting.
- List function names in FUNCTAB indexes; Values cannot be
used at the moment.
- No documentation yet.
* awk.h (Node_hashnode, hnext, hname, hlength, hcode, hvalue):
Removed, not needed any more.
(init_symbol_table, symbol_table): Add declarations.
* awkgram.y: Disallow delete on SYMTAB, fix warning for tawk
extension if traditional.
* eval.c (nodetypes): Remove Node_hashnode element.
* interpret.h (Op_subscript, Op_store_sub): Handle SYMTAB and go
through to the actual value.
* main.c (main): Init Nnull_string earlier. Add call to
init_symbol_table().
* profile.c (pp_str, pp_len): Change definitions.
(pp_next): New macro.
(pp_push, pp_pop): Adjust uses.
* symbol.c (variables): Removed.
(global_table, param_table, func_table, symbol_table,
installing_specials): New variables.
(lookup, make_params, install_params, remove_params, remove_symbol,
make_symbol, install, get_symbols, release_all_vars, append_symbol,
release_symbols, load_symbols): Rework logic considerably.
(init_symbol_table): New function.
2012-09-23 Arnold D. Robbins <arnold@skeeve.com>
`delete array' and `nextfile' are now in POSIX.
Thanks to Nathan Weeks <weeks@iastate.edu> for the
initiative and letting us know about it.
* awkgram.y: Make the right code changes for `delete array'
and `nextfile'.
(tokentab): Set flags to zero for nextfile.
2012-09-19 Arnold D. Robbins <arnold@skeeve.com>
* symbol.c (load_symbols): Zero out the new node. Prevents assertion
failure on PPC Mac OS X.
2012-09-14 Arnold D. Robbins <arnold@skeeve.com>
Allow read-only access to built-in variables from extensions.
* awk.h (NO_EXT_SET): New flag.
* gawkapi.c (api_sym_lookup, api_sym_update_real): Set flag if off
limits variable instead of failing. Adjust logic.
(api_sym_update_scalar, api_set_array_element, api_del_array_element,
api_release_flattened_array): Adjust logic.
* gawkapi.h: Adjust documentation.
Provide PROCINFO["identifiers"]. Undocumented for now.
* awk.h (load_symbols): Add declaration.
* awkgram.y (variable): Adjust comment formatting.
* main.c (main): Call load_symbols().
* symbol.c (load_symbols): New function.
2012-09-13 Arnold D. Robbins <arnold@skeeve.com>
* configure.ac: Determination of DYNAMIC adjusted. Hopefully is
smarter for z/OS.
2012-09-13 Dave Pitts <dpitts@cozx.com>
* awk.h: Add defines for z/OS for newer types.
2012-08-31 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.c: Wrap various bits in #ifdef DYNAMIC so that
gawk will compile on systems without dynamic loading.
2012-08-24 Arnold D. Robbins <arnold@skeeve.com>
Add version facility to API. Thanks to Manuel Collado
for the idea.
* awk.h (print_ext_versions): Declare.
Rearrange includes and decls to make more sense.
* gawkapi.h (register_ext_version): New API.
(dl_load_func): Add code for ext_version.
* gawkapi.c (api_register_ext_version, print_ext_versions):
New functions.
* main.c (do_version): New variable.
(optab): Set it for -v / --version.
(main): Set it in arg parsing switch. Call version() after the
extensions have been loaded.
2012-08-22 Arnold D. Robbins <arnold@skeeve.com>
Add output wrapper and two-way processor to extension API.
* awk.h (struct redirect): Replace output FILE * with awk_output_buf_t.
(register_output_wrapper, register_two_way_processor): Declare.
* builtin.c (efwrite): Adjust logic to use rp->output data and
functions if rp is not NULL. Remove redundant declaration of function.
(do_fflush, do_printf, do_print, do_print_rec): Same adjustment.
* ext.c (make_builtin): Adjust error messages.
* gawkapi.c (api_register_output_wrapper,
api_register_two_way_processor): New functions.
(sym_update_real): Adjust code formatting.
* gawkapi.h (awk_input_parser_t): Make next pointer awk_const.
(awk_output_buf_t, awk_two_way_processor_t): New structs.
(api_register_output_wrapper, api_register_two_way_processor): New APIs.
(dl_load_func): Allow for empty function table (NULL elements).
* io.c (find_output_wrapper, init_output_wrapper, find_two_processor,
gawk_fwrite, gawk_ferror, gawk_fflush, gawk_fclose): New functions.
(redirect): Call init_output_wrapper, find_output_wrapper as needed.
Adjust use of rp->fp to rp->output.fp and also function calls.
(close_rp, close_redir, flush_io): Same adjustment.
(two_way_open): Same adjustment. Call find_two_way_processor, and
find_output_wrapper, as needed.
2012-08-17 Arnold D. Robbins <arnold@skeeve.com>
* Update infrastructure: Automake 1.12.3 and bison 2.6.2.
2012-08-15 Arnold D. Robbins <arnold@skeeve.com>
* dfa.c: Sync w/GNU grep.
2012-08-12 Arnold D. Robbins <arnold@skeeve.com>
* gawkapi.h: Make the versions enum constants instead of defines.
2012-08-11 Andrew J. Schorr <aschorr@telemetry-investments.com>
* awkgram.y (add_srcfile): It is now a fatal error to load the
same file with -f and -i (or @include).
* TODO.xgawk: Update to reflect this change.
2012-08-10 Arnold D. Robbins <arnold@skeeve.com>
* FUTURES, TODO.xgawk: Updates.
2012-08-08 Arnold D. Robbins <arnold@skeeve.com>
* configure.ac: Add -DNDEBUG to remove asserts if not developing.
* gawkapi.h: Document how to build up arrays.
* gawkapi.c (api_sym_update): For an array, pass the new cookie
back out to the extension.
* awk.h (IOBUF): Move struct stat into IOBUF_PUBLIC.
(os_isreadable): Change to take an IOBUF_PUBLIC.
* gawkapi.h (IOBUF_PUBLIC): Received struct stat.
(INVALID_HANDLE): Moves to here.
* io.c (iop_alloc): Stat the fd and fill in stat buf.
(iop_finish): Use passed in stat info.
2012-08-05 Arnold D. Robbins <arnold@skeeve.com>
* README.git: More stuff added.
2012-08-01 Arnold D. Robbins <arnold@skeeve.com>
* io.c (iop_finish): New function.
(iop_alloc): Add errno_val parameter. Move code into iop_finish.
Add large explanatory leading comment.
(after_beginfile): Rework logic. Check for input parser first, then
check for invalid iop.
(nextfile): Organize code better. Call iop_alloc then iop_finish.
(redirect): Call iop_alloc, find_input_parser, iop_finish.
(two_way_open): Call iop_alloc, find_input_parser, iop_finish.
(gawk_popen): Call iop_alloc, find_input_parser, iop_finish.
(find_input_parser): Set iop->valid if input parser takes control.
(get_a_record): Rework setting RT to use macros.
2012-07-29 Andrew J. Schorr <aschorr@telemetry-investments.com>
* awk.h (set_RT_to_null, set_RT): Removed.
* gawkapi.h (api_set_RT): Removed.
(get_record): Signature changed in input parser struct.
* gawkapi.c (api_set_RT): Removed.
* io.c (set_RT_to_null, set_RT): Removed.
(get_a_record): Adjustments for new API for input parser.
2012-07-29 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (os_isreadable): Adjust declaration.
(struct iobuf): Add new member `valid'.
* io.c (iop_alloc): Remove do_input_parsers parameter, it's
always true. Adjust logic to set things to invalid if could not
find an input parser.
(after_beginfile): Use valid member to check if iobuf is valid.
Don't clear iop->errcode.
(nextfile): Adjust logic to clear errcode if valid is true and
also to update ERRNO.
(redirect): Check iop->valid and cleanup as necessary, including
setting ERRNO.
(two_way_open): Ditto.
(gawk_popen): Ditto.
(devopen): Remove check for directory.
2012-07-27 Andrew J. Schorr <aschorr@telemetry-investments.com>
* io.c (find_input_parser): Issue a warning if take_control_of fails.
2012-07-27 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (set_RT): Change to take a NODE * parameter.
* io.c (set_RT): Change to take a NODE * parameter.
* gawkapi.h: Change open hook to input parser in comment.
* gawkapi.c (api_set_RT): Adjust call to set_RT.
2012-07-26 Arnold D. Robbins <arnold@skeeve.com>
* awk.h (set_RT_to_null, set_RT): Declare functions.
(os_isreadable): Declare function.
* io.c (set_RT_to_null, set_RT): New functions.
(iop_close): Init ret to zero.
* gawkapi.c (api_register_input_parser): Check for null pointer.
(api_set_RT): New function.
* gawkapi.h (api_set_RT): New function.
2012-07-26 Andrew J. Schorr <aschorr@telemetry-investments.com>
* gawkapi.h (IOBUF_PUBLIC): Document the get_record and close_func
API.
(awk_input_parser_t) Change can_take_file argument to const, and
document the API.
* io.c (get_a_record): Document that the caller initializes *errcode
to 0, and remote the test for non-NULL errcode.
2012-07-26 Andrew J. Schorr <aschorr@telemetry-investments.com>
* gawkapi.c (api_sym_update_scalar): Fix some minor bugs. Was
not updating AWK_NUMBER when valref != 1. And strings were not
freeing MPFR values.
2012-07-25 Arnold D. Robbins <arnold@skeeve.com>
Start refactoring of IOBUF handling and turn "open hooks"
into "input parsers".
* awk.h (IOP_NOFREE_OBJ): Flag removed.
(register_input_parser): Renamed from register_open_hook.