gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, feature/regex-to-api, updated. gawk-4.1.


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, feature/regex-to-api, updated. gawk-4.1.0-2379-gcd820dc
Date: Thu, 22 Dec 2016 15:35:16 +0000 (UTC)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/regex-to-api has been updated
       via  cd820dc4359b8dc1a40fedc0c5d3924ed8f88df0 (commit)
       via  0f15f82e19b32823fe3fdf51052389ca3b60e92e (commit)
       via  a87bc7765999c01467ad9c7fb2c8921de7b9b523 (commit)
       via  0bc03599d592abe1a594373fbc0ffc9b4ec6b231 (commit)
       via  b76409d4d7fe75c018a80c685668cb65769a613c (commit)
       via  570758ee453fb42451f52a451e75d0a51c732cde (commit)
       via  0855ef4db6d8e0d1d57776eb273c9de321bfd6cf (commit)
       via  539de0a854fb94fd6ba47e91cee55f22fcd851a3 (commit)
       via  1bacda9f09bbb55c0ea3de42114c2dfe6cceec09 (commit)
       via  f2b6d100d8958a9c811c950f113a0ce38a25d484 (commit)
      from  0eb15bcef4ca13a329c9bf3d5e608e29bbce42ad (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=cd820dc4359b8dc1a40fedc0c5d3924ed8f88df0

commit cd820dc4359b8dc1a40fedc0c5d3924ed8f88df0
Merge: 0eb15bc 0f15f82
Author: Arnold D. Robbins <address@hidden>
Date:   Thu Dec 22 17:35:08 2016 +0200

    Merge branch 'master' into feature/regex-to-api

diff --cc ChangeLog
index d70d961,50e4a4f..ebe138b
--- a/ChangeLog
+++ b/ChangeLog
@@@ -30,14 -73,20 +73,28 @@@
  
        * dfa.c: Sync with GNULIB.
  
+ 2016-12-06         Arnold D. Robbins     <address@hidden>
+ 
+       Add minimum required and maximum expected number of arguments
+       to the API.
+ 
+       * awk.h (INSTRUCTION): Add new members min_required and max_expected.
+       * ext.c (make_builtin): Store values from extension function struct
+       into the INSTRUCTION.
+       * gawkapi.h (awk_ext_func): Add min_required args. Make both it and
+       max_expected_args into unsigned short to match type in INSTRUCTION.
+       * interpret.h (Op_ext_builtin): Store min_required and max_expected
+       in instructions. Add checking code and lint checks.
+       (Op_ext_func): Copy min_required and max_expected from function info.
+ 
 +2016-12-04         Andrew J. Schorr     <address@hidden>
 +
 +      * gawkapi.h (r_make_string_type): New inline function to create strings
 +      of any type, currently AWK_STRING or AWK_REGEX.
 +      (r_make_string): Now a wrapper around r_make_string_type.
 +      (make_regex): Convert from an inline function to a macro that
 +      calls r_make_string_type.
 +
  2016-11-30         Arnold D. Robbins     <address@hidden>
  
        * dfa.c: Sync with fixes in GNULIB.
diff --cc doc/ChangeLog
index ea02455,c9c618d..68c139a
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@@ -1,8 -1,17 +1,22 @@@
+ 2016-12-17         Arnold D. Robbins     <address@hidden>
+ 
+       * gawktexi.in: Further API clarifications and edits, add a
+       section on backwards compatibility.
+ 
+ 2016-12-16         Arnold D. Robbins     <address@hidden>
+ 
+       * gawktexi.in: Update description of awk_ext_func_t structure,
+       again.
+ 
+ 2016-12-14         Arnold D. Robbins     <address@hidden>
+ 
+       * gawktexi.in: Update description of awk_ext_func_t structure.
+ 
 +2016-11-30         Arnold D. Robbins     <address@hidden>
 +
 +      * gawktexi.in: Document typed regex changes as relates to API.
 +      Still stuff left to do.
 +
  2016-11-21         Arnold D. Robbins     <address@hidden>
  
        * gawktexi.in: Finish off discussion of strongly typed regexp
diff --cc doc/gawk.info
index 3bb2f35,9033aca..67b52f5
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@@ -23625,7 -23627,7 +23627,8 @@@ use them
  '    AWK_STRING,'
  '    AWK_ARRAY,'
  '    AWK_SCALAR,         /* opaque access to a variable */'
--'    AWK_VALUE_COOKIE    /* for updating a previously created value */'
++'    AWK_VALUE_COOKIE,   /* for updating a previously created value */'
++'    AWK_REGEX'
  '} awk_valtype_t;'
       This 'enum' indicates the type of a value.  It is used in the
       following 'struct'.
@@@ -23645,6 -23647,6 +23648,7 @@@
       type.
  
  '#define str_value      u.s'
++'#define regex_value    str_value'
  '#define num_value      u.d'
  '#define array_cookie   u.a'
  '#define scalar_cookie  u.scl'
@@@ -23663,7 -23665,7 +23667,7 @@@
       This is also discussed in a general fashion in the text following
       this list, and in more detail in *note Cached values::.
  
--   Scalar values in 'awk' are either numbers or strings.  The
++   Scalar values in 'awk' are numbers, strings, or typed regexps.  The
  'awk_value_t' struct represents values.  The 'val_type' member indicates
  what is in the 'union'.
  
@@@ -23672,6 -23674,6 +23676,12 @@@ require more work.  Because 'gawk' allo
  values, a string must be represented as a pair containing a data pointer
  and length.  This is the 'awk_string_t' type.
  
++   Typed regexp values (*note Strong Regexp Constants::) are not of much
++use to extension functions.  Extension functions can tell that they've
++received them, and create them for scalar values.  Otherwise, they can
++examine the text of the regexp through 'regex_value.str' and
++'regex_value.len'.
++
     Identifiers (i.e., the names of global variables) can be associated
  with either scalar values or with arrays.  In addition, 'gawk' provides
  true arrays of arrays, where any given array element can itself be an
@@@ -23831,6 -23833,6 +23841,11 @@@ code would use them
       This function simply creates a numeric value in the 'awk_value_t'
       variable pointed to by 'result'.
  
++'static inline awk_value_t *'
++'make_regex(const char *string, size_t length, awk_value_t *result);'
++     This function creates a strongly typed regexp value.  'string' is
++     the regular expression of length 'len'.
++
  
  File: gawk.info,  Node: Registration Functions,  Next: Printing Messages,  
Prev: Constructor Functions,  Up: Extension API Description
  
@@@ -24529,8 -24580,8 +24593,9 @@@ was discussed earlier, in *note Genera
  
  'awk_bool_t sym_update_scalar(awk_scalar_t cookie, awk_value_t *value);'
       Update the value associated with a scalar cookie.  Return false if
--     the new value is not of type 'AWK_STRING' or 'AWK_NUMBER'.  Here
--     too, the predefined variables may not be updated.
++     the new value is not of type 'AWK_STRING', 'AWK_REGEX', or
++     'AWK_NUMBER'.  Here too, the predefined variables may not be
++     updated.
  
     It is not obvious at first glance how to work with scalar cookies or
  what their raison d'e^tre really is.  In theory, the 'sym_lookup()' and
@@@ -24644,8 -24695,8 +24709,8 @@@ follows
  
  'awk_bool_t create_value(awk_value_t *value, awk_value_cookie_t *result);'
       Create a cached string or numeric value from 'value' for efficient
--     later assignment.  Only values of type 'AWK_NUMBER' and
--     'AWK_STRING' are allowed.  Any other type is rejected.
++     later assignment.  Only values of type 'AWK_NUMBER', 'AWK_REGEX',
++     and 'AWK_STRING' are allowed.  Any other type is rejected.
       'AWK_UNDEFINED' could be allowed, but doing so would result in
       inferior performance.
  
@@@ -25297,10 -25348,10 +25362,10 @@@ versions are available at compile time 
  support conditional compilation, and as enum constants to facilitate
  debugging:
  
- API Version              C preprocessor define    enum constant
- ---------------------------------------------------------------------------
- Major                    gawk_api_major_version   GAWK_API_MAJOR_VERSION
- Minor                    gawk_api_minor_version   GAWK_API_MINOR_VERSION
 -API Version   C preprocessor define      enum constant
++API Version   C Preprocessor Define      enum constant
+ --------------------------------------------------------------------
+ Major         'gawk_api_major_version'   'GAWK_API_MAJOR_VERSION'
+ Minor         'gawk_api_minor_version'   'GAWK_API_MINOR_VERSION'
  
  Table 16.2: gawk API version constants
  
@@@ -35320,573 -35374,574 +35388,574 @@@ Inde
  
  Tag Table:
  Node: Top1200
- Node: Foreword342726
- Node: Foreword447168
- Node: Preface48700
- Ref: Preface-Footnote-151559
- Ref: Preface-Footnote-251666
- Ref: Preface-Footnote-351900
- Node: History52042
- Node: Names54394
- Ref: Names-Footnote-155488
- Node: This Manual55635
- Ref: This Manual-Footnote-162120
- Node: Conventions62220
- Node: Manual History64574
- Ref: Manual History-Footnote-167569
- Ref: Manual History-Footnote-267610
- Node: How To Contribute67684
- Node: Acknowledgments68813
- Node: Getting Started73699
- Node: Running gawk76138
- Node: One-shot77328
- Node: Read Terminal78591
- Node: Long80584
- Node: Executable Scripts82097
- Ref: Executable Scripts-Footnote-184892
- Node: Comments84995
- Node: Quoting87479
- Node: DOS Quoting92996
- Node: Sample Data Files93671
- Node: Very Simple96266
- Node: Two Rules101168
- Node: More Complex103053
- Node: Statements/Lines105919
- Ref: Statements/Lines-Footnote-1110378
- Node: Other Features110643
- Node: When111579
- Ref: When-Footnote-1113333
- Node: Intro Summary113398
- Node: Invoking Gawk114282
- Node: Command Line115796
- Node: Options116594
- Ref: Options-Footnote-1132693
- Ref: Options-Footnote-2132923
- Node: Other Arguments132948
- Node: Naming Standard Input135895
- Node: Environment Variables136988
- Node: AWKPATH Variable137546
- Ref: AWKPATH Variable-Footnote-1140957
- Ref: AWKPATH Variable-Footnote-2140991
- Node: AWKLIBPATH Variable141252
- Node: Other Environment Variables142509
- Node: Exit Status146330
- Node: Include Files147007
- Node: Loading Shared Libraries150602
- Node: Obsolete152030
- Node: Undocumented152722
- Node: Invoking Summary153019
- Node: Regexp154679
- Node: Regexp Usage156133
- Node: Escape Sequences158170
- Node: Regexp Operators164402
- Ref: Regexp Operators-Footnote-1171818
- Ref: Regexp Operators-Footnote-2171965
- Node: Bracket Expressions172063
- Ref: table-char-classes174539
- Node: Leftmost Longest177676
- Node: Computed Regexps178979
- Node: GNU Regexp Operators182406
- Node: Case-sensitivity186085
- Ref: Case-sensitivity-Footnote-1188972
- Ref: Case-sensitivity-Footnote-2189207
- Node: Regexp Summary189315
- Node: Reading Files190781
- Node: Records192944
- Node: awk split records193677
- Node: gawk split records198608
- Ref: gawk split records-Footnote-1203148
- Node: Fields203185
- Node: Nonconstant Fields205926
- Ref: Nonconstant Fields-Footnote-1208162
- Node: Changing Fields208366
- Node: Field Separators214294
- Node: Default Field Splitting216992
- Node: Regexp Field Splitting218110
- Node: Single Character Fields221463
- Node: Command Line Field Separator222523
- Node: Full Line Fields225741
- Ref: Full Line Fields-Footnote-1227263
- Ref: Full Line Fields-Footnote-2227309
- Node: Field Splitting Summary227410
- Node: Constant Size229484
- Node: Splitting By Content234062
- Ref: Splitting By Content-Footnote-1238033
- Node: Multiple Line238196
- Ref: Multiple Line-Footnote-1244078
- Node: Getline244257
- Node: Plain Getline246724
- Node: Getline/Variable249363
- Node: Getline/File250512
- Node: Getline/Variable/File251898
- Ref: Getline/Variable/File-Footnote-1253501
- Node: Getline/Pipe253589
- Node: Getline/Variable/Pipe256294
- Node: Getline/Coprocess257427
- Node: Getline/Variable/Coprocess258692
- Node: Getline Notes259432
- Node: Getline Summary262227
- Ref: table-getline-variants262649
- Node: Read Timeout263397
- Ref: Read Timeout-Footnote-1267303
- Node: Retrying Input267361
- Node: Command-line directories268560
- Node: Input Summary269466
- Node: Input Exercises272638
- Node: Printing273366
- Node: Print275200
- Node: Print Examples276657
- Node: Output Separators279437
- Node: OFMT281454
- Node: Printf282810
- Node: Basic Printf283595
- Node: Control Letters285169
- Node: Format Modifiers289157
- Node: Printf Examples295172
- Node: Redirection297658
- Node: Special FD304499
- Ref: Special FD-Footnote-1307667
- Node: Special Files307741
- Node: Other Inherited Files308358
- Node: Special Network309359
- Node: Special Caveats310219
- Node: Close Files And Pipes311168
- Ref: table-close-pipe-return-values318075
- Ref: Close Files And Pipes-Footnote-1318858
- Ref: Close Files And Pipes-Footnote-2319006
- Node: Nonfatal319158
- Node: Output Summary321483
- Node: Output Exercises322705
- Node: Expressions323384
- Node: Values324572
- Node: Constants325250
- Node: Scalar Constants325941
- Ref: Scalar Constants-Footnote-1326805
- Node: Nondecimal-numbers327055
- Node: Regexp Constants330056
- Node: Using Constant Regexps330582
- Node: Standard Regexp Constants331204
- Node: Strong Regexp Constants334392
- Node: Variables337350
- Node: Using Variables338007
- Node: Assignment Options339917
- Node: Conversion341790
- Node: Strings And Numbers342314
- Ref: Strings And Numbers-Footnote-1345377
- Node: Locale influences conversions345486
- Ref: table-locale-affects348244
- Node: All Operators348862
- Node: Arithmetic Ops349491
- Node: Concatenation351997
- Ref: Concatenation-Footnote-1354844
- Node: Assignment Ops354951
- Ref: table-assign-ops359942
- Node: Increment Ops361255
- Node: Truth Values and Conditions364715
- Node: Truth Values365789
- Node: Typing and Comparison366837
- Node: Variable Typing367657
- Ref: Variable Typing-Footnote-1374120
- Ref: Variable Typing-Footnote-2374192
- Node: Comparison Operators374269
- Ref: table-relational-ops374688
- Node: POSIX String Comparison378183
- Ref: POSIX String Comparison-Footnote-1379878
- Ref: POSIX String Comparison-Footnote-2380017
- Node: Boolean Ops380101
- Ref: Boolean Ops-Footnote-1384583
- Node: Conditional Exp384675
- Node: Function Calls386411
- Node: Precedence390288
- Node: Locales393947
- Node: Expressions Summary395579
- Node: Patterns and Actions398152
- Node: Pattern Overview399272
- Node: Regexp Patterns400949
- Node: Expression Patterns401491
- Node: Ranges405272
- Node: BEGIN/END408380
- Node: Using BEGIN/END409141
- Ref: Using BEGIN/END-Footnote-1411877
- Node: I/O And BEGIN/END411983
- Node: BEGINFILE/ENDFILE414297
- Node: Empty417204
- Node: Using Shell Variables417521
- Node: Action Overview419795
- Node: Statements422120
- Node: If Statement423968
- Node: While Statement425463
- Node: Do Statement427491
- Node: For Statement428639
- Node: Switch Statement431797
- Node: Break Statement434183
- Node: Continue Statement436275
- Node: Next Statement438102
- Node: Nextfile Statement440485
- Node: Exit Statement443137
- Node: Built-in Variables445540
- Node: User-modified446673
- Node: Auto-set454259
- Ref: Auto-set-Footnote-1468912
- Ref: Auto-set-Footnote-2469118
- Node: ARGC and ARGV469174
- Node: Pattern Action Summary473387
- Node: Arrays475817
- Node: Array Basics477146
- Node: Array Intro477990
- Ref: figure-array-elements479965
- Ref: Array Intro-Footnote-1482669
- Node: Reference to Elements482797
- Node: Assigning Elements485261
- Node: Array Example485752
- Node: Scanning an Array487511
- Node: Controlling Scanning490533
- Ref: Controlling Scanning-Footnote-1495932
- Node: Numeric Array Subscripts496248
- Node: Uninitialized Subscripts498432
- Node: Delete500051
- Ref: Delete-Footnote-1502803
- Node: Multidimensional502860
- Node: Multiscanning505955
- Node: Arrays of Arrays507546
- Node: Arrays Summary512313
- Node: Functions514406
- Node: Built-in515444
- Node: Calling Built-in516525
- Node: Numeric Functions518521
- Ref: Numeric Functions-Footnote-1523354
- Ref: Numeric Functions-Footnote-2523711
- Ref: Numeric Functions-Footnote-3523759
- Node: String Functions524031
- Ref: String Functions-Footnote-1547535
- Ref: String Functions-Footnote-2547663
- Ref: String Functions-Footnote-3547911
- Node: Gory Details547998
- Ref: table-sub-escapes549789
- Ref: table-sub-proposed551308
- Ref: table-posix-sub552671
- Ref: table-gensub-escapes554212
- Ref: Gory Details-Footnote-1555035
- Node: I/O Functions555189
- Ref: table-system-return-values561771
- Ref: I/O Functions-Footnote-1563751
- Ref: I/O Functions-Footnote-2563899
- Node: Time Functions564019
- Ref: Time Functions-Footnote-1574541
- Ref: Time Functions-Footnote-2574609
- Ref: Time Functions-Footnote-3574767
- Ref: Time Functions-Footnote-4574878
- Ref: Time Functions-Footnote-5574990
- Ref: Time Functions-Footnote-6575217
- Node: Bitwise Functions575483
- Ref: table-bitwise-ops576077
- Ref: Bitwise Functions-Footnote-1582103
- Ref: Bitwise Functions-Footnote-2582276
- Node: Type Functions582467
- Node: I18N Functions585143
- Node: User-defined586794
- Node: Definition Syntax587599
- Ref: Definition Syntax-Footnote-1593286
- Node: Function Example593357
- Ref: Function Example-Footnote-1596279
- Node: Function Caveats596301
- Node: Calling A Function596819
- Node: Variable Scope597777
- Node: Pass By Value/Reference600771
- Node: Return Statement604270
- Node: Dynamic Typing607249
- Node: Indirect Calls608179
- Ref: Indirect Calls-Footnote-1618430
- Node: Functions Summary618558
- Node: Library Functions621263
- Ref: Library Functions-Footnote-1624870
- Ref: Library Functions-Footnote-2625013
- Node: Library Names625184
- Ref: Library Names-Footnote-1628644
- Ref: Library Names-Footnote-2628867
- Node: General Functions628953
- Node: Strtonum Function630056
- Node: Assert Function633078
- Node: Round Function636404
- Node: Cliff Random Function637945
- Node: Ordinal Functions638961
- Ref: Ordinal Functions-Footnote-1642024
- Ref: Ordinal Functions-Footnote-2642276
- Node: Join Function642486
- Ref: Join Function-Footnote-1644256
- Node: Getlocaltime Function644456
- Node: Readfile Function648198
- Node: Shell Quoting650170
- Node: Data File Management651571
- Node: Filetrans Function652203
- Node: Rewind Function656299
- Node: File Checking658205
- Ref: File Checking-Footnote-1659539
- Node: Empty Files659740
- Node: Ignoring Assigns661719
- Node: Getopt Function663269
- Ref: Getopt Function-Footnote-1674738
- Node: Passwd Functions674938
- Ref: Passwd Functions-Footnote-1683777
- Node: Group Functions683865
- Ref: Group Functions-Footnote-1691763
- Node: Walking Arrays691970
- Node: Library Functions Summary694978
- Node: Library Exercises696384
- Node: Sample Programs696849
- Node: Running Examples697619
- Node: Clones698347
- Node: Cut Program699571
- Node: Egrep Program709500
- Ref: Egrep Program-Footnote-1717012
- Node: Id Program717122
- Node: Split Program720802
- Ref: Split Program-Footnote-1724261
- Node: Tee Program724390
- Node: Uniq Program727180
- Node: Wc Program734606
- Ref: Wc Program-Footnote-1738861
- Node: Miscellaneous Programs738955
- Node: Dupword Program740168
- Node: Alarm Program742198
- Node: Translate Program747053
- Ref: Translate Program-Footnote-1751618
- Node: Labels Program751888
- Ref: Labels Program-Footnote-1755239
- Node: Word Sorting755323
- Node: History Sorting759395
- Node: Extract Program761230
- Node: Simple Sed768759
- Node: Igawk Program771833
- Ref: Igawk Program-Footnote-1786164
- Ref: Igawk Program-Footnote-2786366
- Ref: Igawk Program-Footnote-3786488
- Node: Anagram Program786603
- Node: Signature Program789665
- Node: Programs Summary790912
- Node: Programs Exercises792126
- Ref: Programs Exercises-Footnote-1796255
- Node: Advanced Features796346
- Node: Nondecimal Data798336
- Node: Array Sorting799927
- Node: Controlling Array Traversal800627
- Ref: Controlling Array Traversal-Footnote-1808994
- Node: Array Sorting Functions809112
- Ref: Array Sorting Functions-Footnote-1814203
- Node: Two-way I/O814399
- Ref: Two-way I/O-Footnote-1820949
- Ref: Two-way I/O-Footnote-2821136
- Node: TCP/IP Networking821218
- Node: Profiling824336
- Ref: Profiling-Footnote-1832829
- Node: Advanced Features Summary833152
- Node: Internationalization834996
- Node: I18N and L10N836476
- Node: Explaining gettext837163
- Ref: Explaining gettext-Footnote-1843055
- Ref: Explaining gettext-Footnote-2843240
- Node: Programmer i18n843405
- Ref: Programmer i18n-Footnote-1848354
- Node: Translator i18n848403
- Node: String Extraction849197
- Ref: String Extraction-Footnote-1850329
- Node: Printf Ordering850415
- Ref: Printf Ordering-Footnote-1853201
- Node: I18N Portability853265
- Ref: I18N Portability-Footnote-1855721
- Node: I18N Example855784
- Ref: I18N Example-Footnote-1858590
- Node: Gawk I18N858663
- Node: I18N Summary859308
- Node: Debugger860649
- Node: Debugging861671
- Node: Debugging Concepts862112
- Node: Debugging Terms863921
- Node: Awk Debugging866496
- Node: Sample Debugging Session867402
- Node: Debugger Invocation867936
- Node: Finding The Bug869322
- Node: List of Debugger Commands875800
- Node: Breakpoint Control877133
- Node: Debugger Execution Control880827
- Node: Viewing And Changing Data884189
- Node: Execution Stack887563
- Node: Debugger Info889200
- Node: Miscellaneous Debugger Commands893271
- Node: Readline Support898359
- Node: Limitations899255
- Node: Debugging Summary901364
- Node: Arbitrary Precision Arithmetic902643
- Node: Computer Arithmetic904059
- Ref: table-numeric-ranges907650
- Ref: Computer Arithmetic-Footnote-1908372
- Node: Math Definitions908429
- Ref: table-ieee-formats911743
- Ref: Math Definitions-Footnote-1912346
- Node: MPFR features912451
- Node: FP Math Caution914168
- Ref: FP Math Caution-Footnote-1915240
- Node: Inexactness of computations915609
- Node: Inexact representation916569
- Node: Comparing FP Values917929
- Node: Errors accumulate919011
- Node: Getting Accuracy920444
- Node: Try To Round923154
- Node: Setting precision924053
- Ref: table-predefined-precision-strings924750
- Node: Setting the rounding mode926580
- Ref: table-gawk-rounding-modes926954
- Ref: Setting the rounding mode-Footnote-1930362
- Node: Arbitrary Precision Integers930541
- Ref: Arbitrary Precision Integers-Footnote-1935458
- Node: POSIX Floating Point Problems935607
- Ref: POSIX Floating Point Problems-Footnote-1939489
- Node: Floating point summary939527
- Node: Dynamic Extensions941717
- Node: Extension Intro943270
- Node: Plugin License944536
- Node: Extension Mechanism Outline945333
- Ref: figure-load-extension945772
- Ref: figure-register-new-function947337
- Ref: figure-call-new-function948429
- Node: Extension API Description950491
- Node: Extension API Functions Introduction952064
- Node: General Data Types957375
- Ref: General Data Types-Footnote-1963330
- Node: Memory Allocation Functions963629
- Ref: Memory Allocation Functions-Footnote-1966474
- Node: Constructor Functions966573
- Node: Registration Functions968318
- Node: Extension Functions969003
- Node: Exit Callback Functions971626
- Node: Extension Version String972876
- Node: Input Parsers973539
- Node: Output Wrappers983421
- Node: Two-way processors987933
- Node: Printing Messages990198
- Ref: Printing Messages-Footnote-1991369
- Node: Updating ERRNO991522
- Node: Requesting Values992261
- Ref: table-value-types-returned992998
- Node: Accessing Parameters993881
- Node: Symbol Table Access995116
- Node: Symbol table by name995628
- Node: Symbol table by cookie997649
- Ref: Symbol table by cookie-Footnote-11001801
- Node: Cached values1001865
- Ref: Cached values-Footnote-11005372
- Node: Array Manipulation1005463
- Ref: Array Manipulation-Footnote-11006554
- Node: Array Data Types1006591
- Ref: Array Data Types-Footnote-11009249
- Node: Array Functions1009341
- Node: Flattening Arrays1013199
- Node: Creating Arrays1020107
- Node: Redirection API1024876
- Node: Extension API Variables1027707
- Node: Extension Versioning1028340
- Ref: gawk-api-version1028777
- Node: Extension API Informational Variables1030533
- Node: Extension API Boilerplate1031597
- Node: Finding Extensions1035411
- Node: Extension Example1035970
- Node: Internal File Description1036768
- Node: Internal File Ops1040848
- Ref: Internal File Ops-Footnote-11052610
- Node: Using Internal File Ops1052750
- Ref: Using Internal File Ops-Footnote-11055133
- Node: Extension Samples1055407
- Node: Extension Sample File Functions1056936
- Node: Extension Sample Fnmatch1064585
- Node: Extension Sample Fork1066072
- Node: Extension Sample Inplace1067290
- Node: Extension Sample Ord1070500
- Node: Extension Sample Readdir1071336
- Ref: table-readdir-file-types1072225
- Node: Extension Sample Revout1073030
- Node: Extension Sample Rev2way1073619
- Node: Extension Sample Read write array1074359
- Node: Extension Sample Readfile1076301
- Node: Extension Sample Time1077396
- Node: Extension Sample API Tests1078744
- Node: gawkextlib1079236
- Node: Extension summary1081683
- Node: Extension Exercises1085385
- Node: Language History1086883
- Node: V7/SVR3.11088539
- Node: SVR41090691
- Node: POSIX1092125
- Node: BTL1093504
- Node: POSIX/GNU1094233
- Node: Feature History1100095
- Node: Common Extensions1114465
- Node: Ranges and Locales1115748
- Ref: Ranges and Locales-Footnote-11120364
- Ref: Ranges and Locales-Footnote-21120391
- Ref: Ranges and Locales-Footnote-31120626
- Node: Contributors1120847
- Node: History summary1126407
- Node: Installation1127787
- Node: Gawk Distribution1128731
- Node: Getting1129215
- Node: Extracting1130176
- Node: Distribution contents1131814
- Node: Unix Installation1137899
- Node: Quick Installation1138581
- Node: Shell Startup Files1140995
- Node: Additional Configuration Options1142073
- Node: Configuration Philosophy1143878
- Node: Non-Unix Installation1146247
- Node: PC Installation1146707
- Node: PC Binary Installation1147545
- Node: PC Compiling1147980
- Node: PC Using1149097
- Node: Cygwin1152142
- Node: MSYS1152912
- Node: VMS Installation1153413
- Node: VMS Compilation1154204
- Ref: VMS Compilation-Footnote-11155433
- Node: VMS Dynamic Extensions1155491
- Node: VMS Installation Details1157176
- Node: VMS Running1159429
- Node: VMS GNV1163708
- Node: VMS Old Gawk1164443
- Node: Bugs1164914
- Node: Bug address1165577
- Node: Usenet1167974
- Node: Maintainers1168749
- Node: Other Versions1170125
- Node: Installation summary1176709
- Node: Notes1177744
- Node: Compatibility Mode1178609
- Node: Additions1179391
- Node: Accessing The Source1180316
- Node: Adding Code1181751
- Node: New Ports1187970
- Node: Derived Files1192458
- Ref: Derived Files-Footnote-11197943
- Ref: Derived Files-Footnote-21197978
- Ref: Derived Files-Footnote-31198576
- Node: Future Extensions1198690
- Node: Implementation Limitations1199348
- Node: Extension Design1200531
- Node: Old Extension Problems1201685
- Ref: Old Extension Problems-Footnote-11203203
- Node: Extension New Mechanism Goals1203260
- Ref: Extension New Mechanism Goals-Footnote-11206624
- Node: Extension Other Design Decisions1206813
- Node: Extension Future Growth1208926
- Node: Old Extension Mechanism1209762
- Node: Notes summary1211525
- Node: Basic Concepts1212707
- Node: Basic High Level1213388
- Ref: figure-general-flow1213670
- Ref: figure-process-flow1214355
- Ref: Basic High Level-Footnote-11217656
- Node: Basic Data Typing1217841
- Node: Glossary1221169
- Node: Copying1253116
- Node: GNU Free Documentation License1290655
- Node: Index1315773
+ Node: Foreword342794
+ Node: Foreword447236
+ Node: Preface48768
+ Ref: Preface-Footnote-151627
+ Ref: Preface-Footnote-251734
+ Ref: Preface-Footnote-351968
+ Node: History52110
+ Node: Names54462
+ Ref: Names-Footnote-155556
+ Node: This Manual55703
+ Ref: This Manual-Footnote-162188
+ Node: Conventions62288
+ Node: Manual History64642
+ Ref: Manual History-Footnote-167637
+ Ref: Manual History-Footnote-267678
+ Node: How To Contribute67752
+ Node: Acknowledgments68881
+ Node: Getting Started73767
+ Node: Running gawk76206
+ Node: One-shot77396
+ Node: Read Terminal78659
+ Node: Long80652
+ Node: Executable Scripts82165
+ Ref: Executable Scripts-Footnote-184960
+ Node: Comments85063
+ Node: Quoting87547
+ Node: DOS Quoting93064
+ Node: Sample Data Files93739
+ Node: Very Simple96334
+ Node: Two Rules101236
+ Node: More Complex103121
+ Node: Statements/Lines105987
+ Ref: Statements/Lines-Footnote-1110446
+ Node: Other Features110711
+ Node: When111647
+ Ref: When-Footnote-1113401
+ Node: Intro Summary113466
+ Node: Invoking Gawk114350
+ Node: Command Line115864
+ Node: Options116662
+ Ref: Options-Footnote-1132761
+ Ref: Options-Footnote-2132991
+ Node: Other Arguments133016
+ Node: Naming Standard Input135963
+ Node: Environment Variables137056
+ Node: AWKPATH Variable137614
+ Ref: AWKPATH Variable-Footnote-1141025
+ Ref: AWKPATH Variable-Footnote-2141059
+ Node: AWKLIBPATH Variable141320
+ Node: Other Environment Variables142577
+ Node: Exit Status146398
+ Node: Include Files147075
+ Node: Loading Shared Libraries150670
+ Node: Obsolete152098
+ Node: Undocumented152790
+ Node: Invoking Summary153087
+ Node: Regexp154747
+ Node: Regexp Usage156201
+ Node: Escape Sequences158238
+ Node: Regexp Operators164470
+ Ref: Regexp Operators-Footnote-1171886
+ Ref: Regexp Operators-Footnote-2172033
+ Node: Bracket Expressions172131
+ Ref: table-char-classes174607
+ Node: Leftmost Longest177744
+ Node: Computed Regexps179047
+ Node: GNU Regexp Operators182474
+ Node: Case-sensitivity186153
+ Ref: Case-sensitivity-Footnote-1189040
+ Ref: Case-sensitivity-Footnote-2189275
+ Node: Regexp Summary189383
+ Node: Reading Files190849
+ Node: Records193012
+ Node: awk split records193745
+ Node: gawk split records198676
+ Ref: gawk split records-Footnote-1203216
+ Node: Fields203253
+ Node: Nonconstant Fields205994
+ Ref: Nonconstant Fields-Footnote-1208230
+ Node: Changing Fields208434
+ Node: Field Separators214362
+ Node: Default Field Splitting217060
+ Node: Regexp Field Splitting218178
+ Node: Single Character Fields221531
+ Node: Command Line Field Separator222591
+ Node: Full Line Fields225809
+ Ref: Full Line Fields-Footnote-1227331
+ Ref: Full Line Fields-Footnote-2227377
+ Node: Field Splitting Summary227478
+ Node: Constant Size229552
+ Node: Splitting By Content234130
+ Ref: Splitting By Content-Footnote-1238101
+ Node: Multiple Line238264
+ Ref: Multiple Line-Footnote-1244146
+ Node: Getline244325
+ Node: Plain Getline246792
+ Node: Getline/Variable249431
+ Node: Getline/File250580
+ Node: Getline/Variable/File251966
+ Ref: Getline/Variable/File-Footnote-1253569
+ Node: Getline/Pipe253657
+ Node: Getline/Variable/Pipe256362
+ Node: Getline/Coprocess257495
+ Node: Getline/Variable/Coprocess258760
+ Node: Getline Notes259500
+ Node: Getline Summary262295
+ Ref: table-getline-variants262717
+ Node: Read Timeout263465
+ Ref: Read Timeout-Footnote-1267371
+ Node: Retrying Input267429
+ Node: Command-line directories268628
+ Node: Input Summary269534
+ Node: Input Exercises272706
+ Node: Printing273434
+ Node: Print275268
+ Node: Print Examples276725
+ Node: Output Separators279505
+ Node: OFMT281522
+ Node: Printf282878
+ Node: Basic Printf283663
+ Node: Control Letters285237
+ Node: Format Modifiers289225
+ Node: Printf Examples295240
+ Node: Redirection297726
+ Node: Special FD304567
+ Ref: Special FD-Footnote-1307735
+ Node: Special Files307809
+ Node: Other Inherited Files308426
+ Node: Special Network309427
+ Node: Special Caveats310287
+ Node: Close Files And Pipes311236
+ Ref: table-close-pipe-return-values318143
+ Ref: Close Files And Pipes-Footnote-1318926
+ Ref: Close Files And Pipes-Footnote-2319074
+ Node: Nonfatal319226
+ Node: Output Summary321551
+ Node: Output Exercises322773
+ Node: Expressions323452
+ Node: Values324640
+ Node: Constants325318
+ Node: Scalar Constants326009
+ Ref: Scalar Constants-Footnote-1326873
+ Node: Nondecimal-numbers327123
+ Node: Regexp Constants330124
+ Node: Using Constant Regexps330650
+ Node: Standard Regexp Constants331272
+ Node: Strong Regexp Constants334460
+ Node: Variables337418
+ Node: Using Variables338075
+ Node: Assignment Options339985
+ Node: Conversion341858
+ Node: Strings And Numbers342382
+ Ref: Strings And Numbers-Footnote-1345445
+ Node: Locale influences conversions345554
+ Ref: table-locale-affects348312
+ Node: All Operators348930
+ Node: Arithmetic Ops349559
+ Node: Concatenation352065
+ Ref: Concatenation-Footnote-1354912
+ Node: Assignment Ops355019
+ Ref: table-assign-ops360010
+ Node: Increment Ops361323
+ Node: Truth Values and Conditions364783
+ Node: Truth Values365857
+ Node: Typing and Comparison366905
+ Node: Variable Typing367725
+ Ref: Variable Typing-Footnote-1374188
+ Ref: Variable Typing-Footnote-2374260
+ Node: Comparison Operators374337
+ Ref: table-relational-ops374756
+ Node: POSIX String Comparison378251
+ Ref: POSIX String Comparison-Footnote-1379946
+ Ref: POSIX String Comparison-Footnote-2380085
+ Node: Boolean Ops380169
+ Ref: Boolean Ops-Footnote-1384651
+ Node: Conditional Exp384743
+ Node: Function Calls386479
+ Node: Precedence390356
+ Node: Locales394015
+ Node: Expressions Summary395647
+ Node: Patterns and Actions398220
+ Node: Pattern Overview399340
+ Node: Regexp Patterns401017
+ Node: Expression Patterns401559
+ Node: Ranges405340
+ Node: BEGIN/END408448
+ Node: Using BEGIN/END409209
+ Ref: Using BEGIN/END-Footnote-1411945
+ Node: I/O And BEGIN/END412051
+ Node: BEGINFILE/ENDFILE414365
+ Node: Empty417272
+ Node: Using Shell Variables417589
+ Node: Action Overview419863
+ Node: Statements422188
+ Node: If Statement424036
+ Node: While Statement425531
+ Node: Do Statement427559
+ Node: For Statement428707
+ Node: Switch Statement431865
+ Node: Break Statement434251
+ Node: Continue Statement436343
+ Node: Next Statement438170
+ Node: Nextfile Statement440553
+ Node: Exit Statement443205
+ Node: Built-in Variables445608
+ Node: User-modified446741
+ Node: Auto-set454327
+ Ref: Auto-set-Footnote-1468980
+ Ref: Auto-set-Footnote-2469186
+ Node: ARGC and ARGV469242
+ Node: Pattern Action Summary473455
+ Node: Arrays475885
+ Node: Array Basics477214
+ Node: Array Intro478058
+ Ref: figure-array-elements480033
+ Ref: Array Intro-Footnote-1482737
+ Node: Reference to Elements482865
+ Node: Assigning Elements485329
+ Node: Array Example485820
+ Node: Scanning an Array487579
+ Node: Controlling Scanning490601
+ Ref: Controlling Scanning-Footnote-1496000
+ Node: Numeric Array Subscripts496316
+ Node: Uninitialized Subscripts498500
+ Node: Delete500119
+ Ref: Delete-Footnote-1502871
+ Node: Multidimensional502928
+ Node: Multiscanning506023
+ Node: Arrays of Arrays507614
+ Node: Arrays Summary512381
+ Node: Functions514474
+ Node: Built-in515512
+ Node: Calling Built-in516593
+ Node: Numeric Functions518589
+ Ref: Numeric Functions-Footnote-1523422
+ Ref: Numeric Functions-Footnote-2523779
+ Ref: Numeric Functions-Footnote-3523827
+ Node: String Functions524099
+ Ref: String Functions-Footnote-1547603
+ Ref: String Functions-Footnote-2547731
+ Ref: String Functions-Footnote-3547979
+ Node: Gory Details548066
+ Ref: table-sub-escapes549857
+ Ref: table-sub-proposed551376
+ Ref: table-posix-sub552739
+ Ref: table-gensub-escapes554280
+ Ref: Gory Details-Footnote-1555103
+ Node: I/O Functions555257
+ Ref: table-system-return-values561839
+ Ref: I/O Functions-Footnote-1563819
+ Ref: I/O Functions-Footnote-2563967
+ Node: Time Functions564087
+ Ref: Time Functions-Footnote-1574609
+ Ref: Time Functions-Footnote-2574677
+ Ref: Time Functions-Footnote-3574835
+ Ref: Time Functions-Footnote-4574946
+ Ref: Time Functions-Footnote-5575058
+ Ref: Time Functions-Footnote-6575285
+ Node: Bitwise Functions575551
+ Ref: table-bitwise-ops576145
+ Ref: Bitwise Functions-Footnote-1582171
+ Ref: Bitwise Functions-Footnote-2582344
+ Node: Type Functions582535
+ Node: I18N Functions585211
+ Node: User-defined586862
+ Node: Definition Syntax587667
+ Ref: Definition Syntax-Footnote-1593354
+ Node: Function Example593425
+ Ref: Function Example-Footnote-1596347
+ Node: Function Caveats596369
+ Node: Calling A Function596887
+ Node: Variable Scope597845
+ Node: Pass By Value/Reference600839
+ Node: Return Statement604338
+ Node: Dynamic Typing607317
+ Node: Indirect Calls608247
+ Ref: Indirect Calls-Footnote-1618498
+ Node: Functions Summary618626
+ Node: Library Functions621331
+ Ref: Library Functions-Footnote-1624938
+ Ref: Library Functions-Footnote-2625081
+ Node: Library Names625252
+ Ref: Library Names-Footnote-1628712
+ Ref: Library Names-Footnote-2628935
+ Node: General Functions629021
+ Node: Strtonum Function630124
+ Node: Assert Function633146
+ Node: Round Function636472
+ Node: Cliff Random Function638013
+ Node: Ordinal Functions639029
+ Ref: Ordinal Functions-Footnote-1642092
+ Ref: Ordinal Functions-Footnote-2642344
+ Node: Join Function642554
+ Ref: Join Function-Footnote-1644324
+ Node: Getlocaltime Function644524
+ Node: Readfile Function648266
+ Node: Shell Quoting650238
+ Node: Data File Management651639
+ Node: Filetrans Function652271
+ Node: Rewind Function656367
+ Node: File Checking658273
+ Ref: File Checking-Footnote-1659607
+ Node: Empty Files659808
+ Node: Ignoring Assigns661787
+ Node: Getopt Function663337
+ Ref: Getopt Function-Footnote-1674806
+ Node: Passwd Functions675006
+ Ref: Passwd Functions-Footnote-1683845
+ Node: Group Functions683933
+ Ref: Group Functions-Footnote-1691831
+ Node: Walking Arrays692038
+ Node: Library Functions Summary695046
+ Node: Library Exercises696452
+ Node: Sample Programs696917
+ Node: Running Examples697687
+ Node: Clones698415
+ Node: Cut Program699639
+ Node: Egrep Program709568
+ Ref: Egrep Program-Footnote-1717080
+ Node: Id Program717190
+ Node: Split Program720870
+ Ref: Split Program-Footnote-1724329
+ Node: Tee Program724458
+ Node: Uniq Program727248
+ Node: Wc Program734674
+ Ref: Wc Program-Footnote-1738929
+ Node: Miscellaneous Programs739023
+ Node: Dupword Program740236
+ Node: Alarm Program742266
+ Node: Translate Program747121
+ Ref: Translate Program-Footnote-1751686
+ Node: Labels Program751956
+ Ref: Labels Program-Footnote-1755307
+ Node: Word Sorting755391
+ Node: History Sorting759463
+ Node: Extract Program761298
+ Node: Simple Sed768827
+ Node: Igawk Program771901
+ Ref: Igawk Program-Footnote-1786232
+ Ref: Igawk Program-Footnote-2786434
+ Ref: Igawk Program-Footnote-3786556
+ Node: Anagram Program786671
+ Node: Signature Program789733
+ Node: Programs Summary790980
+ Node: Programs Exercises792194
+ Ref: Programs Exercises-Footnote-1796323
+ Node: Advanced Features796414
+ Node: Nondecimal Data798404
+ Node: Array Sorting799995
+ Node: Controlling Array Traversal800695
+ Ref: Controlling Array Traversal-Footnote-1809062
+ Node: Array Sorting Functions809180
+ Ref: Array Sorting Functions-Footnote-1814271
+ Node: Two-way I/O814467
+ Ref: Two-way I/O-Footnote-1821017
+ Ref: Two-way I/O-Footnote-2821204
+ Node: TCP/IP Networking821286
+ Node: Profiling824404
+ Ref: Profiling-Footnote-1832897
+ Node: Advanced Features Summary833220
+ Node: Internationalization835064
+ Node: I18N and L10N836544
+ Node: Explaining gettext837231
+ Ref: Explaining gettext-Footnote-1843123
+ Ref: Explaining gettext-Footnote-2843308
+ Node: Programmer i18n843473
+ Ref: Programmer i18n-Footnote-1848422
+ Node: Translator i18n848471
+ Node: String Extraction849265
+ Ref: String Extraction-Footnote-1850397
+ Node: Printf Ordering850483
+ Ref: Printf Ordering-Footnote-1853269
+ Node: I18N Portability853333
+ Ref: I18N Portability-Footnote-1855789
+ Node: I18N Example855852
+ Ref: I18N Example-Footnote-1858658
+ Node: Gawk I18N858731
+ Node: I18N Summary859376
+ Node: Debugger860717
+ Node: Debugging861739
+ Node: Debugging Concepts862180
+ Node: Debugging Terms863989
+ Node: Awk Debugging866564
+ Node: Sample Debugging Session867470
+ Node: Debugger Invocation868004
+ Node: Finding The Bug869390
+ Node: List of Debugger Commands875868
+ Node: Breakpoint Control877201
+ Node: Debugger Execution Control880895
+ Node: Viewing And Changing Data884257
+ Node: Execution Stack887631
+ Node: Debugger Info889268
+ Node: Miscellaneous Debugger Commands893339
+ Node: Readline Support898427
+ Node: Limitations899323
+ Node: Debugging Summary901432
+ Node: Arbitrary Precision Arithmetic902711
+ Node: Computer Arithmetic904127
+ Ref: table-numeric-ranges907718
+ Ref: Computer Arithmetic-Footnote-1908440
+ Node: Math Definitions908497
+ Ref: table-ieee-formats911811
+ Ref: Math Definitions-Footnote-1912414
+ Node: MPFR features912519
+ Node: FP Math Caution914236
+ Ref: FP Math Caution-Footnote-1915308
+ Node: Inexactness of computations915677
+ Node: Inexact representation916637
+ Node: Comparing FP Values917997
+ Node: Errors accumulate919079
+ Node: Getting Accuracy920512
+ Node: Try To Round923222
+ Node: Setting precision924121
+ Ref: table-predefined-precision-strings924818
+ Node: Setting the rounding mode926648
+ Ref: table-gawk-rounding-modes927022
+ Ref: Setting the rounding mode-Footnote-1930430
+ Node: Arbitrary Precision Integers930609
+ Ref: Arbitrary Precision Integers-Footnote-1935526
+ Node: POSIX Floating Point Problems935675
+ Ref: POSIX Floating Point Problems-Footnote-1939557
+ Node: Floating point summary939595
+ Node: Dynamic Extensions941785
+ Node: Extension Intro943338
+ Node: Plugin License944604
+ Node: Extension Mechanism Outline945401
+ Ref: figure-load-extension945840
+ Ref: figure-register-new-function947405
+ Ref: figure-call-new-function948497
+ Node: Extension API Description950559
+ Node: Extension API Functions Introduction952201
+ Node: General Data Types957512
 -Ref: General Data Types-Footnote-1963467
 -Node: Memory Allocation Functions963766
 -Ref: Memory Allocation Functions-Footnote-1966611
 -Node: Constructor Functions966710
 -Node: Registration Functions968455
 -Node: Extension Functions969140
 -Node: Exit Callback Functions974338
 -Node: Extension Version String975588
 -Node: Input Parsers976251
 -Node: Output Wrappers986133
 -Node: Two-way processors990645
 -Node: Printing Messages992910
 -Ref: Printing Messages-Footnote-1994081
 -Node: Updating ERRNO994234
 -Node: Requesting Values994973
 -Ref: table-value-types-returned995710
 -Node: Accessing Parameters996593
 -Node: Symbol Table Access997828
 -Node: Symbol table by name998340
 -Node: Symbol table by cookie1000129
 -Ref: Symbol table by cookie-Footnote-11004281
 -Node: Cached values1004345
 -Ref: Cached values-Footnote-11007852
 -Node: Array Manipulation1007943
 -Ref: Array Manipulation-Footnote-11009034
 -Node: Array Data Types1009071
 -Ref: Array Data Types-Footnote-11011729
 -Node: Array Functions1011821
 -Node: Flattening Arrays1015679
 -Node: Creating Arrays1022587
 -Node: Redirection API1027356
 -Node: Extension API Variables1030187
 -Node: Extension Versioning1030820
 -Ref: gawk-api-version1031257
 -Node: Extension API Informational Variables1032985
 -Node: Extension API Boilerplate1034049
 -Node: Changes from API V11037911
 -Node: Finding Extensions1038571
 -Node: Extension Example1039130
 -Node: Internal File Description1039928
 -Node: Internal File Ops1044008
 -Ref: Internal File Ops-Footnote-11055408
 -Node: Using Internal File Ops1055548
 -Ref: Using Internal File Ops-Footnote-11057931
 -Node: Extension Samples1058205
 -Node: Extension Sample File Functions1059734
 -Node: Extension Sample Fnmatch1067383
 -Node: Extension Sample Fork1068870
 -Node: Extension Sample Inplace1070088
 -Node: Extension Sample Ord1073298
 -Node: Extension Sample Readdir1074134
 -Ref: table-readdir-file-types1075023
 -Node: Extension Sample Revout1075828
 -Node: Extension Sample Rev2way1076417
 -Node: Extension Sample Read write array1077157
 -Node: Extension Sample Readfile1079099
 -Node: Extension Sample Time1080194
 -Node: Extension Sample API Tests1081542
 -Node: gawkextlib1082034
 -Node: Extension summary1084481
 -Node: Extension Exercises1088183
 -Node: Language History1089681
 -Node: V7/SVR3.11091337
 -Node: SVR41093489
 -Node: POSIX1094923
 -Node: BTL1096302
 -Node: POSIX/GNU1097031
 -Node: Feature History1102893
 -Node: Common Extensions1117263
 -Node: Ranges and Locales1118546
 -Ref: Ranges and Locales-Footnote-11123162
 -Ref: Ranges and Locales-Footnote-21123189
 -Ref: Ranges and Locales-Footnote-31123424
 -Node: Contributors1123645
 -Node: History summary1129205
 -Node: Installation1130585
 -Node: Gawk Distribution1131529
 -Node: Getting1132013
 -Node: Extracting1132974
 -Node: Distribution contents1134612
 -Node: Unix Installation1140697
 -Node: Quick Installation1141379
 -Node: Shell Startup Files1143793
 -Node: Additional Configuration Options1144871
 -Node: Configuration Philosophy1146676
 -Node: Non-Unix Installation1149045
 -Node: PC Installation1149505
 -Node: PC Binary Installation1150343
 -Node: PC Compiling1150778
 -Node: PC Using1151895
 -Node: Cygwin1154940
 -Node: MSYS1155710
 -Node: VMS Installation1156211
 -Node: VMS Compilation1157002
 -Ref: VMS Compilation-Footnote-11158231
 -Node: VMS Dynamic Extensions1158289
 -Node: VMS Installation Details1159974
 -Node: VMS Running1162227
 -Node: VMS GNV1166506
 -Node: VMS Old Gawk1167241
 -Node: Bugs1167712
 -Node: Bug address1168375
 -Node: Usenet1170772
 -Node: Maintainers1171547
 -Node: Other Versions1172923
 -Node: Installation summary1179507
 -Node: Notes1180542
 -Node: Compatibility Mode1181407
 -Node: Additions1182189
 -Node: Accessing The Source1183114
 -Node: Adding Code1184549
 -Node: New Ports1190768
 -Node: Derived Files1195256
 -Ref: Derived Files-Footnote-11200741
 -Ref: Derived Files-Footnote-21200776
 -Ref: Derived Files-Footnote-31201374
 -Node: Future Extensions1201488
 -Node: Implementation Limitations1202146
 -Node: Extension Design1203329
 -Node: Old Extension Problems1204483
 -Ref: Old Extension Problems-Footnote-11206001
 -Node: Extension New Mechanism Goals1206058
 -Ref: Extension New Mechanism Goals-Footnote-11209422
 -Node: Extension Other Design Decisions1209611
 -Node: Extension Future Growth1211724
 -Node: Old Extension Mechanism1212560
 -Node: Notes summary1214323
 -Node: Basic Concepts1215505
 -Node: Basic High Level1216186
 -Ref: figure-general-flow1216468
 -Ref: figure-process-flow1217153
 -Ref: Basic High Level-Footnote-11220454
 -Node: Basic Data Typing1220639
 -Node: Glossary1223967
 -Node: Copying1255914
 -Node: GNU Free Documentation License1293453
 -Node: Index1318571
++Ref: General Data Types-Footnote-1963823
++Node: Memory Allocation Functions964122
++Ref: Memory Allocation Functions-Footnote-1966967
++Node: Constructor Functions967066
++Node: Registration Functions969028
++Node: Extension Functions969713
++Node: Exit Callback Functions974911
++Node: Extension Version String976161
++Node: Input Parsers976824
++Node: Output Wrappers986706
++Node: Two-way processors991218
++Node: Printing Messages993483
++Ref: Printing Messages-Footnote-1994654
++Node: Updating ERRNO994807
++Node: Requesting Values995546
++Ref: table-value-types-returned996283
++Node: Accessing Parameters997166
++Node: Symbol Table Access998401
++Node: Symbol table by name998913
++Node: Symbol table by cookie1000702
++Ref: Symbol table by cookie-Footnote-11004873
++Node: Cached values1004937
++Ref: Cached values-Footnote-11008458
++Node: Array Manipulation1008549
++Ref: Array Manipulation-Footnote-11009640
++Node: Array Data Types1009677
++Ref: Array Data Types-Footnote-11012335
++Node: Array Functions1012427
++Node: Flattening Arrays1016285
++Node: Creating Arrays1023193
++Node: Redirection API1027962
++Node: Extension API Variables1030793
++Node: Extension Versioning1031426
++Ref: gawk-api-version1031863
++Node: Extension API Informational Variables1033591
++Node: Extension API Boilerplate1034655
++Node: Changes from API V11038517
++Node: Finding Extensions1039177
++Node: Extension Example1039736
++Node: Internal File Description1040534
++Node: Internal File Ops1044614
++Ref: Internal File Ops-Footnote-11056014
++Node: Using Internal File Ops1056154
++Ref: Using Internal File Ops-Footnote-11058537
++Node: Extension Samples1058811
++Node: Extension Sample File Functions1060340
++Node: Extension Sample Fnmatch1067989
++Node: Extension Sample Fork1069476
++Node: Extension Sample Inplace1070694
++Node: Extension Sample Ord1073904
++Node: Extension Sample Readdir1074740
++Ref: table-readdir-file-types1075629
++Node: Extension Sample Revout1076434
++Node: Extension Sample Rev2way1077023
++Node: Extension Sample Read write array1077763
++Node: Extension Sample Readfile1079705
++Node: Extension Sample Time1080800
++Node: Extension Sample API Tests1082148
++Node: gawkextlib1082640
++Node: Extension summary1085087
++Node: Extension Exercises1088789
++Node: Language History1090287
++Node: V7/SVR3.11091943
++Node: SVR41094095
++Node: POSIX1095529
++Node: BTL1096908
++Node: POSIX/GNU1097637
++Node: Feature History1103499
++Node: Common Extensions1117869
++Node: Ranges and Locales1119152
++Ref: Ranges and Locales-Footnote-11123768
++Ref: Ranges and Locales-Footnote-21123795
++Ref: Ranges and Locales-Footnote-31124030
++Node: Contributors1124251
++Node: History summary1129811
++Node: Installation1131191
++Node: Gawk Distribution1132135
++Node: Getting1132619
++Node: Extracting1133580
++Node: Distribution contents1135218
++Node: Unix Installation1141303
++Node: Quick Installation1141985
++Node: Shell Startup Files1144399
++Node: Additional Configuration Options1145477
++Node: Configuration Philosophy1147282
++Node: Non-Unix Installation1149651
++Node: PC Installation1150111
++Node: PC Binary Installation1150949
++Node: PC Compiling1151384
++Node: PC Using1152501
++Node: Cygwin1155546
++Node: MSYS1156316
++Node: VMS Installation1156817
++Node: VMS Compilation1157608
++Ref: VMS Compilation-Footnote-11158837
++Node: VMS Dynamic Extensions1158895
++Node: VMS Installation Details1160580
++Node: VMS Running1162833
++Node: VMS GNV1167112
++Node: VMS Old Gawk1167847
++Node: Bugs1168318
++Node: Bug address1168981
++Node: Usenet1171378
++Node: Maintainers1172153
++Node: Other Versions1173529
++Node: Installation summary1180113
++Node: Notes1181148
++Node: Compatibility Mode1182013
++Node: Additions1182795
++Node: Accessing The Source1183720
++Node: Adding Code1185155
++Node: New Ports1191374
++Node: Derived Files1195862
++Ref: Derived Files-Footnote-11201347
++Ref: Derived Files-Footnote-21201382
++Ref: Derived Files-Footnote-31201980
++Node: Future Extensions1202094
++Node: Implementation Limitations1202752
++Node: Extension Design1203935
++Node: Old Extension Problems1205089
++Ref: Old Extension Problems-Footnote-11206607
++Node: Extension New Mechanism Goals1206664
++Ref: Extension New Mechanism Goals-Footnote-11210028
++Node: Extension Other Design Decisions1210217
++Node: Extension Future Growth1212330
++Node: Old Extension Mechanism1213166
++Node: Notes summary1214929
++Node: Basic Concepts1216111
++Node: Basic High Level1216792
++Ref: figure-general-flow1217074
++Ref: figure-process-flow1217759
++Ref: Basic High Level-Footnote-11221060
++Node: Basic Data Typing1221245
++Node: Glossary1224573
++Node: Copying1256520
++Node: GNU Free Documentation License1294059
++Node: Index1319177
  
  End Tag Table
diff --cc doc/gawk.texi
index 5f3d6ef,4998f81..35db347
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@@ -32557,7 -32559,7 +32559,8 @@@ multibyte encoding
  @itemx @ @ @ @ AWK_STRING,
  @itemx @ @ @ @ AWK_ARRAY,
  @itemx @ @ @ @ AWK_SCALAR,@ @ @ @ @ @ @ @ @ /* opaque access to a variable */
address@hidden @ @ @ @ AWK_VALUE_COOKIE@ @ @ @ /* for updating a previously 
created value */
address@hidden @ @ @ @ AWK_VALUE_COOKIE,@ @ @ /* for updating a previously 
created value */
address@hidden @ @ @ @ AWK_REGEX
  @itemx @} awk_valtype_t;
  This @code{enum} indicates the type of a value.
  It is used in the following @code{struct}.
@@@ -32577,6 -32579,6 +32580,7 @@@ The @code{val_type} member indicates wh
  @code{union} holds, and each member is of the appropriate type.
  
  @item #define str_value@ @ @ @ @ @ u.s
address@hidden #define regex_value@ @ @ @ str_value
  @itemx #define num_value@ @ @ @ @ @ u.d
  @itemx #define array_cookie@ @ @ u.a
  @itemx #define scalar_cookie@ @ u.scl
@@@ -32597,7 -32599,7 +32601,7 @@@ and in more detail in @ref{Cached value
  
  @end table
  
--Scalar values in @command{awk} are either numbers or strings. The
++Scalar values in @command{awk} are numbers, strings, or typed regexps. The
  @code{awk_value_t} struct represents values.  The @code{val_type} member
  indicates what is in the @code{union}.
  
@@@ -32606,6 -32608,6 +32610,12 @@@ require more work. Because @command{gaw
  in string values, a string must be represented as a pair containing a
  data pointer and length. This is the @code{awk_string_t} type.
  
++Typed regexp values (@pxref{Strong Regexp Constants}) are not of
++much use to extension functions.  Extension functions can tell that
++they've received them, and create them for scalar values. Otherwise,
++they can examine the text of the regexp through @code{regex_value.str}
++and @code{regex_value.len}.
++
  Identifiers (i.e., the names of global variables) can be associated
  with either scalar values or with arrays.  In addition, @command{gawk}
  provides true arrays of arrays, where any given array element can
@@@ -32772,6 -32774,6 +32782,11 @@@ It returns @code{result}
  @itemx make_number(double num, awk_value_t *result);
  This function simply creates a numeric value in the @code{awk_value_t} 
variable
  pointed to by @code{result}.
++
address@hidden static inline awk_value_t *
address@hidden make_regex(const char *string, size_t length, awk_value_t 
*result);
++This function creates a strongly typed regexp value.
address@hidden is the regular expression of length @code{len}.
  @end table
  
  @node Registration Functions
@@@ -33398,6 -33458,6 +33471,7 @@@ value type, as appropriate.  This behav
  
  @float Table,table-value-types-returned
  @caption{API value types returned}
address@hidden FIXME: This needs doing.
  @docbook
  <informaltable>
  <tgroup cols="6">
@@@ -33473,6 -33533,6 +33547,7 @@@
  </informaltable>
  @end docbook
  
address@hidden FIXME: This needs doing.
  @ifnotplaintext
  @ifnotdocbook
  @multitable @columnfractions .50 .50
@@@ -33495,27 -33555,27 +33570,29 @@@
  @end ifnotplaintext
  @ifplaintext
  @example
--                        +-------------------------------------------------+
--                        |                Type of Actual Value:            |
--                        +------------+------------+-----------+-----------+
--                        |   String   |   Number   | Array     | Undefined |
--+-----------+-----------+------------+------------+-----------+-----------+
--|           | String    |   String   |   String   | False     | False     |
--|           |-----------+------------+------------+-----------+-----------+
--|           | Number    | Number if  |   Number   | False     | False     |
--|           |           | can be     |            |           |           |
--|           |           | converted, |            |           |           |
--|           |           | else false |            |           |           |
--|           |-----------+------------+------------+-----------+-----------+
--|   Type    | Array     |   False    |   False    | Array     | False     |
--| Requested |-----------+------------+------------+-----------+-----------+
--|           | Scalar    |   Scalar   |   Scalar   | False     | False     |
--|           |-----------+------------+------------+-----------+-----------+
--|           | Undefined |  String    |   Number   | Array     | Undefined |
--|           |-----------+------------+------------+-----------+-----------+
--|           | Value     |   False    |   False    | False     | False     |
--|           | cookie    |            |            |           |           |
--+-----------+-----------+------------+------------+-----------+-----------+
++                        
+-------------------------------------------------------------+
++                        |                    Type of Actual Value:            
        |
++                        
+------------+------------+-----------+-----------+-----------+
++                        |   String   |   Number   | Regex     | Array     | 
Undefined |
+++-----------+-----------+------------+------------+-----------+-----------+-----------+
++|           | String    |   String   |   String   | String    | false     | 
false     |
++|           
+-----------+------------+------------+-----------+-----------+-----------+
++|           | Number    | Number if  |   Number   | false     | false     | 
false     |
++|           |           | can be     |            |           |           |   
        |
++|           |           | converted, |            |           |           |   
        |
++|           |           | else false |            |           |           |   
        |
++|           
+-----------+------------+------------+-----------+-----------+-----------+
++|           | Regex     |   false    |   false    |  Regex    | false     | 
false     |
++|           
+-----------+------------+------------+-----------+-----------+-----------+
++|   Type    | Array     |   false    |   false    |  false    | Array     | 
false     |
++| Requested 
+-----------+------------+------------+-----------+-----------+-----------+
++|           | Scalar    |   Scalar   |   Scalar   |  Scalar   | false     | 
false     |
++|           
+-----------+------------+------------+-----------+-----------+-----------+
++|           | Undefined |  String    |   Number   |  Regex    | Array     | 
Undefined |
++|           
+-----------+------------+------------+-----------+-----------+-----------+
++|           | Value     |   false    |   false    |  false    | false     | 
false     |
++|           | Cookie    |            |            |           |           |   
        |
+++-----------+-----------+------------+------------+-----------+-----------+-----------+
  @end example
  @end ifplaintext
  @end float
@@@ -33622,7 -33675,7 +33692,7 @@@ Return false if the value cannot be ret
  
  @item awk_bool_t sym_update_scalar(awk_scalar_t cookie, awk_value_t *value);
  Update the value associated with a scalar cookie.  Return false if
--the new value is not of type @code{AWK_STRING} or @code{AWK_NUMBER}.
++the new value is not of type @code{AWK_STRING}, @code{AWK_REGEX}, or 
@code{AWK_NUMBER}.
  Here too, the predefined variables may not be updated.
  @end table
  
@@@ -33743,7 -33796,7 +33813,7 @@@ is what the routines in this @value{SEC
  @table @code
  @item awk_bool_t create_value(awk_value_t *value, awk_value_cookie_t *result);
  Create a cached string or numeric value from @code{value} for
--efficient later assignment.  Only values of type @code{AWK_NUMBER}
++efficient later assignment.  Only values of type @code{AWK_NUMBER}, 
@code{AWK_REGEX},
  and @code{AWK_STRING} are allowed.  Any other type is rejected.
  @code{AWK_UNDEFINED} could be allowed, but doing so would result in
  inferior performance.
@@@ -34486,10 -34539,10 +34556,10 @@@ debugging
  
  @float Table,gawk-api-version
  @caption{gawk API version constants}
- @multitable @columnfractions .33 .33 .33
- @headitem API Version @tab C preprocessor define @tab enum constant
- @item Major @tab gawk_api_major_version @tab GAWK_API_MAJOR_VERSION
- @item Minor @tab gawk_api_minor_version @tab GAWK_API_MINOR_VERSION
+ @multitable address@hidden Version}} address@hidden address@hidden
 address@hidden API Version @tab C preprocessor define @tab enum constant
address@hidden API Version @tab C Preprocessor Define @tab enum constant
+ @item Major @tab @code{gawk_api_major_version} @tab 
@code{GAWK_API_MAJOR_VERSION}
+ @item Minor @tab @code{gawk_api_minor_version} @tab 
@code{GAWK_API_MINOR_VERSION}
  @end multitable
  @end float
  
diff --cc doc/gawktexi.in
index c79cda3,ca57151..f7f232a
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@@ -33517,8 -33553,8 +33570,8 @@@ debugging
  
  @float Table,gawk-api-version
  @caption{gawk API version constants}
- @multitable @columnfractions .20 .33 .33
+ @multitable address@hidden Version}} address@hidden address@hidden
 address@hidden API Version @tab C preprocessor define @tab enum constant
 address@hidden API Version @tab C Preprocessor Define @tab enum constant
  @item Major @tab @code{gawk_api_major_version} @tab 
@code{GAWK_API_MAJOR_VERSION}
  @item Minor @tab @code{gawk_api_minor_version} @tab 
@code{GAWK_API_MINOR_VERSION}
  @end multitable
diff --cc extension/ChangeLog
index dc0373f,0642a95..bf7d3fa
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@@ -1,12 -1,46 +1,55 @@@
+ 2016-12-16         Arnold D. Robbins     <address@hidden>
+ 
+       * filefuncs.c: Update func_table again.
+ 
+ 2016-12-14         Arnold D. Robbins     <address@hidden>
+ 
+       * filefuncs.c: Update do_xxx to match new API. Update func_table.
+       * fnmatch.c: Ditto.
+       * fork.c: Ditto.
+       * inplace.c: Ditto.
+       * ordchr.c: Ditto.
+       * readdir.c: Ditto.
+       * readfile.c: Ditto.
+       * revoutput.c: Ditto.
+       * revtwoway.c: Ditto.
+       * rwarray.c: Ditto.
+       * rwarray0.c: Ditto.
+       * testext.c: Ditto.
+       * time.c: Ditto.
+ 
+ 2016-12-12         Arnold D. Robbins     <address@hidden>
+ 
+       * filefuncs.c (func_table): Adjust ordering of min and max
+       for stat.
+ 
+ 2016-12-06         Arnold D. Robbins     <address@hidden>
+ 
+       Add minimum required and maximum expected number of arguments
+       to the API.
+ 
+       * filefuncs.c: Update with max expected value. Remove lint
+       checks since that's now done by gawk.
+       * fnmatch.c: Ditto.
+       * fork.c: Ditto.
+       * inplace.c: Ditto.
+       * ordchr.c: Ditto.
+       * readdir.c: Ditto.
+       * readfile.c: Ditto.
+       * rwarray.c: Ditto.
+       * rwarray0.c: Ditto.
+       * testext.c: Ditto.
+       * time.c: Ditto.
+ 
 +2016-11-30         Arnold D. Robbins     <address@hidden>
 +
 +      * rwarray.c: Restore read comparion of major and minor versions
 +      to use !=.
 +
 +2016-11-29         Arnold D. Robbins     <address@hidden>
 +
 +      * rwarray.c: Adjust to read and write regexes also.
 +
  2016-10-23         Arnold D. Robbins     <address@hidden>
  
        * General: Remove trailing whitespace from all relevant files.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog             |   57 +++
 NEWS                  |    8 +
 awk.h                 |    7 +-
 doc/ChangeLog         |   14 +
 doc/gawk.info         | 1309 ++++++++++++++++++++++++++-----------------------
 doc/gawk.texi         |  223 ++++++---
 doc/gawktexi.in       |  150 ++++--
 ext.c                 |    2 +-
 extension/ChangeLog   |   43 ++
 extension/filefuncs.c |   35 +-
 extension/fnmatch.c   |   11 +-
 extension/fork.c      |   24 +-
 extension/inplace.c   |    8 +-
 extension/ordchr.c    |   30 +-
 extension/readdir.c   |    2 +-
 extension/readfile.c  |    9 +-
 extension/revoutput.c |    2 +-
 extension/revtwoway.c |    2 +-
 extension/rwarray.c   |   14 +-
 extension/rwarray0.c  |   14 +-
 extension/testext.c   |   56 +--
 extension/time.c      |   14 +-
 gawkapi.c             |    2 +-
 gawkapi.h             |   36 +-
 interpret.h           |   21 +-
 25 files changed, 1182 insertions(+), 911 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]