aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-07-02 10:30:03 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-07-02 10:30:03 +0300
commitefd054b9800ec926587d2903f0712c68d4591d43 (patch)
tree8dae33a9da6044ae7a1bd9c26625e0a98150d6a5
parent85da96b705877b4a10b0a96b3d9722536674b2d0 (diff)
downloadegawk-efd054b9800ec926587d2903f0712c68d4591d43.tar.gz
egawk-efd054b9800ec926587d2903f0712c68d4591d43.tar.bz2
egawk-efd054b9800ec926587d2903f0712c68d4591d43.zip
Add instruction trace option.
-rw-r--r--ChangeLog8
-rw-r--r--NEWS3
-rw-r--r--awk.h4
-rw-r--r--doc/ChangeLog4
-rw-r--r--doc/gawk.113
-rw-r--r--doc/gawk.info1239
-rw-r--r--doc/gawk.texi12
-rw-r--r--doc/gawktexi.in12
-rw-r--r--interpret.h8
-rw-r--r--main.c8
-rw-r--r--pc/Makefile.tst15
-rw-r--r--test/ChangeLog4
-rw-r--r--test/badargs.ok1
13 files changed, 709 insertions, 622 deletions
diff --git a/ChangeLog b/ChangeLog
index eac3a124..394b0ed4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,14 @@
* eval.c (posix_compare): Rewrite contributed by
Michael Builov <mbuilov@gmail.com>.
+ Unrelated:
+
+ * awk.h: New option: do_itrace.
+ * interpret.h (r_interpret): Print instruction trace if enabled.
+ * main.c (optab): New option: -I/--trace.
+ (parse_args): Update optlist and the code to handle it.
+ * NEWS: Updated.
+
2020-06-29 Arnold D. Robbins <arnold@skeeve.com>
* debug.c: Cleanup messages. Error messages start with lower
diff --git a/NEWS b/NEWS
index 1974e7b4..1c5ddece 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,9 @@ Changes from 5.0.1 to 5.0.2
second destination array is supplied. Similarly, using either array as
the second argument is now a fatal error.
+3. The new -I/--trace option prints a trace of the byte codes as they
+ are executed.
+
Changes from 5.0.1 to 5.1.0
---------------------------
diff --git a/awk.h b/awk.h
index cccb8ce5..eec41147 100644
--- a/awk.h
+++ b/awk.h
@@ -1159,7 +1159,8 @@ enum do_flag_values {
DO_SANDBOX = 0x01000, /* sandbox mode - disable 'system' function & redirections */
DO_PROFILE = 0x02000, /* profile the program */
DO_DEBUG = 0x04000, /* debug the program */
- DO_MPFR = 0x08000 /* arbitrary-precision floating-point math */
+ DO_MPFR = 0x08000, /* arbitrary-precision floating-point math */
+ DO_ITRACE = 0x10000 /* trace byte-code instructions */
};
#define do_traditional (do_flags & DO_TRADITIONAL)
@@ -1174,6 +1175,7 @@ enum do_flag_values {
#define do_sandbox (do_flags & DO_SANDBOX)
#define do_debug (do_flags & DO_DEBUG)
#define do_mpfr (do_flags & DO_MPFR)
+#define do_itrace (do_flags & DO_ITRACE)
extern bool do_optimize;
extern int use_lc_numeric;
diff --git a/doc/ChangeLog b/doc/ChangeLog
index c1df31fc..4f8142d7 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2020-07-02 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.1, gawktexi.in: Document -I/--trace option.
+
2020-06-25 Arnold D. Robbins <arnold@skeeve.com>
* gawk.1: Applied some more troff "lint" fixes.
diff --git a/doc/gawk.1 b/doc/gawk.1
index 8005c26c..a4d8912c 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -13,7 +13,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "Mar 23 2020" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "Jul 2 2020" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -321,6 +321,17 @@ Files read with
are treated as if they begin with an implicit \fB@namespace "awk"\fR statement.
.TP
.PD 0
+.BI \-I
+.TP
+.PD
+.B \-\^\-trace
+Print the internal byte code names as they are executed when running
+the program. The trace is printed to standard error. Each ``op code''
+is preceded by a
+.B +
+sign in the output.
+.TP
+.PD 0
.BI "\-l " lib
.TP
.PD
diff --git a/doc/gawk.info b/doc/gawk.info
index 23729311..62bea4bf 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -2666,6 +2666,12 @@ The following list describes options mandated by the POSIX standard:
at their beginning. *Note Changing The Namespace::, for more
information.
+'-I'
+'--trace'
+ Print the internal byte code names as they are executed when
+ running the program. The trace is printed to standard error. Each
+ "op code" is preceded by a '+' sign in the output.
+
'-l' EXT
'--load' EXT
Load a dynamic extension named EXT. Extensions are stored as
@@ -33935,7 +33941,7 @@ Index
* + (plus sign), += operator <1>: Precedence. (line 94)
* , (comma), in range patterns: Ranges. (line 6)
* - (hyphen), file names beginning with: Options. (line 64)
-* - (hyphen), -- end of options marker: Options. (line 343)
+* - (hyphen), -- end of options marker: Options. (line 349)
* - (hyphen), in bracket expressions: Bracket Expressions. (line 25)
* - (hyphen), -= operator: Assignment Ops. (line 129)
* - (hyphen), -- operator: Increment Ops. (line 48)
@@ -33944,7 +33950,7 @@ Index
* - (hyphen), - operator <1>: Precedence. (line 57)
* - (hyphen), -= operator <1>: Precedence. (line 94)
* --assign option: Options. (line 36)
-* --bignum option: Options. (line 237)
+* --bignum option: Options. (line 243)
* --characters-as-bytes option: Options. (line 73)
* --copyright option: Options. (line 93)
* --debug option: Options. (line 112)
@@ -33970,32 +33976,33 @@ Index
* --help option: Options. (line 176)
* --include option: Options. (line 181)
* --lint option: Command Line. (line 20)
-* --lint option <1>: Options. (line 210)
-* --lint-old option: Options. (line 333)
-* --load option: Options. (line 198)
-* --no-optimize option: Options. (line 318)
-* --non-decimal-data option: Options. (line 243)
+* --lint option <1>: Options. (line 216)
+* --lint-old option: Options. (line 339)
+* --load option: Options. (line 204)
+* --no-optimize option: Options. (line 324)
+* --non-decimal-data option: Options. (line 249)
* --non-decimal-data option <1>: Nondecimal Data. (line 6)
* --non-decimal-data option, strtonum() function and: Nondecimal Data.
(line 35)
-* --optimize option: Options. (line 268)
-* --posix option: Options. (line 290)
-* --posix option, --traditional option and: Options. (line 305)
-* --pretty-print option: Options. (line 257)
-* --profile option: Options. (line 278)
+* --optimize option: Options. (line 274)
+* --posix option: Options. (line 296)
+* --posix option, --traditional option and: Options. (line 311)
+* --pretty-print option: Options. (line 263)
+* --profile option: Options. (line 284)
* --profile option <1>: Profiling. (line 12)
-* --re-interval option: Options. (line 311)
-* --sandbox option: Options. (line 323)
+* --re-interval option: Options. (line 317)
+* --sandbox option: Options. (line 329)
* --sandbox option, input redirection with getline: Getline. (line 19)
* --sandbox option, output redirection with print, printf: Redirection.
(line 6)
* --sandbox option, disabling system() function: I/O Functions.
(line 128)
* --source option: Options. (line 121)
+* --trace option: Options. (line 198)
* --traditional option: Options. (line 86)
-* --traditional option, --posix option and: Options. (line 305)
-* --use-lc-numeric option: Options. (line 252)
-* --version option: Options. (line 338)
+* --traditional option, --posix option and: Options. (line 311)
+* --use-lc-numeric option: Options. (line 258)
+* --version option: Options. (line 344)
* -b option: Options. (line 73)
* -c option: Options. (line 86)
* -C option: Options. (line 93)
@@ -34003,32 +34010,33 @@ Index
* -D option: Options. (line 112)
* -e option: Options. (line 121)
* -E option: Options. (line 147)
-* -e option <1>: Options. (line 378)
+* -e option <1>: Options. (line 384)
* -f option: Long. (line 12)
* -F option: Options. (line 21)
* -f option <1>: Options. (line 25)
-* -F option, -Ft sets FS to TAB: Options. (line 350)
-* -f option, multiple uses: Options. (line 355)
+* -F option, -Ft sets FS to TAB: Options. (line 356)
+* -f option, multiple uses: Options. (line 361)
* -F option, command-line: Command Line Field Separator.
(line 6)
* -g option: Options. (line 169)
* -h option: Options. (line 176)
* -i option: Options. (line 181)
-* -l option: Options. (line 198)
-* -l option <1>: Options. (line 210)
-* -L option: Options. (line 333)
-* -M option: Options. (line 237)
-* -n option: Options. (line 243)
-* -N option: Options. (line 252)
-* -o option: Options. (line 257)
-* -O option: Options. (line 268)
-* -p option: Options. (line 278)
-* -P option: Options. (line 290)
-* -r option: Options. (line 311)
-* -s option: Options. (line 318)
-* -S option: Options. (line 323)
+* -I option: Options. (line 198)
+* -l option: Options. (line 204)
+* -l option <1>: Options. (line 216)
+* -L option: Options. (line 339)
+* -M option: Options. (line 243)
+* -n option: Options. (line 249)
+* -N option: Options. (line 258)
+* -o option: Options. (line 263)
+* -O option: Options. (line 274)
+* -p option: Options. (line 284)
+* -P option: Options. (line 296)
+* -r option: Options. (line 317)
+* -s option: Options. (line 324)
+* -S option: Options. (line 329)
* -v option: Options. (line 36)
-* -V option: Options. (line 338)
+* -V option: Options. (line 344)
* -v option <1>: Assignment Options. (line 12)
* -W option: Options. (line 51)
* . (period), regexp operator: Regexp Operator Details.
@@ -34262,7 +34270,7 @@ Index
* arguments, command-line <1>: Auto-set. (line 15)
* arguments, command-line <2>: ARGC and ARGV. (line 6)
* arguments, processing: Getopt Function. (line 6)
-* ARGV array: Options. (line 323)
+* ARGV array: Options. (line 329)
* ARGV array, indexing into: Other Arguments. (line 21)
* arithmetic operators: Arithmetic Ops. (line 6)
* array manipulation in extensions: Array Manipulation. (line 6)
@@ -34386,7 +34394,7 @@ Index
* awk, uses for <1>: Getting Started. (line 12)
* awk, uses for <2>: When. (line 6)
* awk, invoking: Command Line. (line 6)
-* awk, profiling, enabling: Options. (line 278)
+* awk, profiling, enabling: Options. (line 284)
* awk, implementations, limits: Getline Notes. (line 14)
* awk, implementation issues, pipes: Redirection. (line 129)
* awk, new vs. old, OFMT variable: Strings And Numbers. (line 56)
@@ -34825,7 +34833,7 @@ Index
* cosine: Numeric Functions. (line 16)
* counting words, lines, and characters: Wc Program. (line 6)
* csh utility: Statements/Lines. (line 45)
-* csh utility, POSIXLY_CORRECT environment variable: Options. (line 399)
+* csh utility, POSIXLY_CORRECT environment variable: Options. (line 405)
* csh utility, |& operator, comparison with: Two-way I/O. (line 27)
* ctime() user-defined function: Function Example. (line 74)
* Curreli, Marco: Contributors. (line 147)
@@ -35050,7 +35058,7 @@ Index
* debugging, example session: Sample Debugging Session.
(line 6)
* debugging gawk, bug reports: Bugs. (line 9)
-* decimal point character, locale specific: Options. (line 302)
+* decimal point character, locale specific: Options. (line 308)
* decrement operators: Increment Ops. (line 35)
* default keyword: Switch Statement. (line 6)
* Deifik, Scott: Acknowledgments. (line 60)
@@ -35237,7 +35245,7 @@ Index
* endpwent() user-defined function: Passwd Functions. (line 211)
* English, Steve: Advanced Features. (line 6)
* ENVIRON array: Auto-set. (line 59)
-* environment variables, POSIXLY_CORRECT: Options. (line 384)
+* environment variables, POSIXLY_CORRECT: Options. (line 390)
* environment variables, used by gawk: Environment Variables.
(line 6)
* environment variables, AWKPATH: AWKPATH Variable. (line 6)
@@ -35530,7 +35538,7 @@ Index
* Free Software Foundation (FSF) <3>: Glossary. (line 403)
* FreeBSD: Glossary. (line 747)
* FS variable, --field-separator option and: Options. (line 21)
-* FS variable, TAB character as: Options. (line 299)
+* FS variable, TAB character as: Options. (line 305)
* FS variable: Field Separators. (line 15)
* FS variable, changing value of: Field Separators. (line 34)
* FS variable, containing ^: Regexp Field Splitting.
@@ -35605,8 +35613,8 @@ Index
* gawk, uses for: Preface. (line 34)
* gawk, awk and <1>: This Manual. (line 14)
* gawk, newlines in: Statements/Lines. (line 12)
-* gawk, extensions, disabling: Options. (line 290)
-* gawk, version of, printing information about: Options. (line 338)
+* gawk, extensions, disabling: Options. (line 296)
+* gawk, version of, printing information about: Options. (line 344)
* gawk, ARGIND variable in: Other Arguments. (line 21)
* gawk, PROCINFO array in: Other Arguments. (line 21)
* gawk, escape sequences: Escape Sequences. (line 121)
@@ -35810,13 +35818,13 @@ Index
* help debugger command: Miscellaneous Debugger Commands.
(line 67)
* hexadecimal numbers: Nondecimal-numbers. (line 6)
-* hexadecimal values, enabling interpretation of: Options. (line 243)
+* hexadecimal values, enabling interpretation of: Options. (line 249)
* history expansion, in debugger: Readline Support. (line 6)
* histsort.awk program: History Sorting. (line 25)
* Hughes, Phil: Acknowledgments. (line 43)
* HUP signal, for dynamic profiling: Profiling. (line 211)
* hyphen (-), file names beginning with: Options. (line 64)
-* hyphen (-), -- end of options marker: Options. (line 343)
+* hyphen (-), -- end of options marker: Options. (line 349)
* hyphen (-), in bracket expressions: Bracket Expressions. (line 25)
* hyphen (-), -= operator: Assignment Ops. (line 129)
* hyphen (-), -- operator: Increment Ops. (line 48)
@@ -35900,6 +35908,7 @@ Index
* installing gawk, Cygwin: Cygwin. (line 21)
* installing gawk, VMS: VMS Installation. (line 6)
* instruction tracing, in debugger: Debugger Info. (line 90)
+* instructions, trace of internal: Options. (line 198)
* int: Numeric Functions. (line 24)
* INT signal (MS-Windows): Profiling. (line 214)
* integer array indices: Numeric Array Subscripts.
@@ -36035,9 +36044,9 @@ Index
* lines, counting: Wc Program. (line 6)
* lines, duplicate, removing: History Sorting. (line 6)
* lint checking, empty programs: Command Line. (line 16)
-* lint checking, issuing warnings: Options. (line 210)
+* lint checking, issuing warnings: Options. (line 216)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 384)
+ (line 390)
* lint checking: User-modified. (line 90)
* lint checking, array subscripts: Uninitialized Subscripts.
(line 43)
@@ -36050,13 +36059,13 @@ Index
* list function definitions, in debugger: Debugger Info. (line 30)
* @load directive: Loading Shared Libraries.
(line 8)
-* loading extensions: Options. (line 198)
+* loading extensions: Options. (line 204)
* loading extensions, @load directive: Loading Shared Libraries.
(line 8)
* local variables, in a function: Variable Scope. (line 6)
* local variables, show in debugger: Debugger Info. (line 34)
* locale categories: Explaining gettext. (line 81)
-* locale decimal point character: Options. (line 302)
+* locale decimal point character: Options. (line 308)
* locale, definition of: Locales. (line 6)
* log: Numeric Functions. (line 29)
* log files, timestamps in: Time Functions. (line 6)
@@ -36168,7 +36177,7 @@ Index
* networks, support for: Special Network. (line 6)
* networks, programming: TCP/IP Networking. (line 6)
* newlines: Statements/Lines. (line 6)
-* newlines <1>: Options. (line 296)
+* newlines <1>: Options. (line 302)
* newlines, in dynamic regexps: Computed Regexps. (line 60)
* newlines, in regexp constants: Computed Regexps. (line 70)
* newlines, as record separators: awk split records. (line 12)
@@ -36243,7 +36252,7 @@ Index
* o debugger command (alias for option): Debugger Info. (line 57)
* obsolete features: Obsolete. (line 6)
* octal numbers: Nondecimal-numbers. (line 6)
-* octal values, enabling interpretation of: Options. (line 243)
+* octal values, enabling interpretation of: Options. (line 249)
* OFMT variable: OFMT. (line 15)
* OFMT variable, POSIX awk and: OFMT. (line 27)
* OFMT variable <1>: Strings And Numbers. (line 56)
@@ -36251,6 +36260,7 @@ Index
* OFS variable: Changing Fields. (line 64)
* OFS variable <1>: Output Separators. (line 6)
* OFS variable <2>: User-modified. (line 116)
+* op-codes, trace of internal: Options. (line 198)
* OpenBSD: Glossary. (line 747)
* OpenSolaris: Other Versions. (line 96)
* operating systems, BSD-based: Manual History. (line 28)
@@ -36374,7 +36384,7 @@ Index
* portability, #! (executable scripts): Executable Scripts. (line 29)
* portability, ARGV variable: Executable Scripts. (line 55)
* portability, backslash continuation and: Statements/Lines. (line 30)
-* portability, POSIXLY_CORRECT environment variable: Options. (line 404)
+* portability, POSIXLY_CORRECT environment variable: Options. (line 410)
* portability: Escape Sequences. (line 103)
* portability, backslash in escape sequences: Escape Sequences.
(line 108)
@@ -36450,8 +36460,8 @@ Index
* POSIX awk, date utility and: Time Functions. (line 255)
* POSIX awk, function keyword in: Definition Syntax. (line 99)
* POSIX awk, changes in awk versions: POSIX. (line 6)
-* POSIX mode: Options. (line 290)
-* POSIX mode <1>: Options. (line 384)
+* POSIX mode: Options. (line 296)
+* POSIX mode <1>: Options. (line 390)
* POSIX mode <2>: Regexp Operator Details.
(line 47)
* POSIX mode <3>: Input Summary. (line 69)
@@ -36471,7 +36481,7 @@ Index
* POSIX mode <12>: POSIX Floating Point Problems.
(line 83)
* POSIX mode <13>: Feature History. (line 313)
-* POSIXLY_CORRECT environment variable: Options. (line 384)
+* POSIXLY_CORRECT environment variable: Options. (line 390)
* PREC variable: User-modified. (line 127)
* precedence, regexp operators: Regexp Operator Details.
(line 137)
@@ -36483,7 +36493,7 @@ Index
* predefined variables, conveying information: Auto-set. (line 6)
* pretty printer, interaction with namespaces: Namespace And Features.
(line 9)
-* pretty printing: Options. (line 255)
+* pretty printing: Options. (line 261)
* pretty printing <1>: Profiling. (line 222)
* pretty printing, profiling, difference with: Profiling. (line 229)
* print debugger command: Viewing And Changing Data.
@@ -36647,7 +36657,7 @@ Index
* regexp constants, as patterns: Expression Patterns. (line 34)
* register loadable extension: Registration Functions.
(line 6)
-* regular expressions, interval expressions and: Options. (line 311)
+* regular expressions, interval expressions and: Options. (line 317)
* regular expressions: Regexp. (line 6)
* regular expressions, as patterns: Regexp Usage. (line 6)
* regular expressions, operators: Regexp Usage. (line 19)
@@ -36747,7 +36757,7 @@ Index
(line 68)
* sample debugging session: Sample Debugging Session.
(line 6)
-* sandbox mode: Options. (line 323)
+* sandbox mode: Options. (line 329)
* save debugger options: Debugger Info. (line 85)
* scalar or array: Type Functions. (line 11)
* scalar values: Basic Data Typing. (line 13)
@@ -37091,13 +37101,14 @@ Index
* tr utility: Translate Program. (line 6)
* trace debugger command: Miscellaneous Debugger Commands.
(line 108)
+* trace, internal instructions: Options. (line 198)
* traceback, display in debugger: Execution Stack. (line 13)
* translate string: I18N Functions. (line 21)
* translate.awk program: Translate Program. (line 55)
* treating files, as single records: gawk split records. (line 96)
* troubleshooting, typographical errors, global variables: Options.
(line 103)
-* troubleshooting, --non-decimal-data option: Options. (line 243)
+* troubleshooting, --non-decimal-data option: Options. (line 249)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
(line 108)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
@@ -37271,7 +37282,7 @@ Index
* Wall, Larry: Array Intro. (line 6)
* Wall, Larry <1>: Future Extensions. (line 6)
* Wallin, Anders: Contributors. (line 106)
-* warnings, issuing: Options. (line 210)
+* warnings, issuing: Options. (line 216)
* watch debugger command: Viewing And Changing Data.
(line 70)
* watchpoint (debugger): Debugging Terms. (line 42)
@@ -37284,7 +37295,7 @@ Index
(line 13)
* while statement, use of regexps in: Regexp Usage. (line 19)
* while statement: While Statement. (line 6)
-* whitespace, newlines as: Options. (line 296)
+* whitespace, newlines as: Options. (line 302)
* whitespace, definition of: Fields. (line 6)
* whitespace, as field separators: Default Field Splitting.
(line 6)
@@ -37358,560 +37369,560 @@ Node: Intro Summary116359
Node: Invoking Gawk117243
Node: Command Line118757
Node: Options119555
-Ref: Options-Footnote-1137224
-Ref: Options-Footnote-2137455
-Node: Other Arguments137480
-Node: Naming Standard Input140787
-Node: Environment Variables141997
-Node: AWKPATH Variable142555
-Ref: AWKPATH Variable-Footnote-1145967
-Ref: AWKPATH Variable-Footnote-2146001
-Node: AWKLIBPATH Variable146372
-Ref: AWKLIBPATH Variable-Footnote-1148069
-Node: Other Environment Variables148444
-Node: Exit Status152265
-Node: Include Files152942
-Node: Loading Shared Libraries156632
-Node: Obsolete158060
-Node: Undocumented158752
-Node: Invoking Summary159049
-Node: Regexp161890
-Node: Regexp Usage163344
-Node: Escape Sequences165381
-Node: Regexp Operators171622
-Node: Regexp Operator Details172107
-Ref: Regexp Operator Details-Footnote-1178539
-Node: Interval Expressions178686
-Ref: Interval Expressions-Footnote-1180107
-Node: Bracket Expressions180205
-Ref: table-char-classes182681
-Node: Leftmost Longest186007
-Node: Computed Regexps187310
-Node: GNU Regexp Operators190737
-Node: Case-sensitivity194474
-Ref: Case-sensitivity-Footnote-1197340
-Ref: Case-sensitivity-Footnote-2197575
-Node: Regexp Summary197683
-Node: Reading Files199149
-Node: Records201418
-Node: awk split records202493
-Node: gawk split records207768
-Ref: gawk split records-Footnote-1212501
-Node: Fields212538
-Node: Nonconstant Fields215279
-Ref: Nonconstant Fields-Footnote-1217515
-Node: Changing Fields217719
-Node: Field Separators223750
-Node: Default Field Splitting226448
-Node: Regexp Field Splitting227566
-Node: Single Character Fields230919
-Node: Command Line Field Separator231979
-Node: Full Line Fields235197
-Ref: Full Line Fields-Footnote-1236719
-Ref: Full Line Fields-Footnote-2236765
-Node: Field Splitting Summary236866
-Node: Constant Size238940
-Node: Fixed width data239672
-Node: Skipping intervening243139
-Node: Allowing trailing data243937
-Node: Fields with fixed data244974
-Node: Splitting By Content246492
-Ref: Splitting By Content-Footnote-1250275
-Node: More CSV250438
-Node: Testing field creation251748
-Node: Multiple Line253373
-Node: Getline259650
-Node: Plain Getline262119
-Node: Getline/Variable264692
-Node: Getline/File265843
-Node: Getline/Variable/File267231
-Ref: Getline/Variable/File-Footnote-1268836
-Node: Getline/Pipe268924
-Node: Getline/Variable/Pipe271628
-Node: Getline/Coprocess272763
-Node: Getline/Variable/Coprocess274030
-Node: Getline Notes274772
-Node: Getline Summary277569
-Ref: table-getline-variants277993
-Node: Read Timeout278741
-Ref: Read Timeout-Footnote-1282647
-Node: Retrying Input282705
-Node: Command-line directories283904
-Node: Input Summary284810
-Node: Input Exercises287982
-Node: Printing288416
-Node: Print290250
-Node: Print Examples291707
-Node: Output Separators294487
-Node: OFMT296504
-Node: Printf297860
-Node: Basic Printf298645
-Node: Control Letters300219
-Node: Format Modifiers305383
-Node: Printf Examples311398
-Node: Redirection313884
-Node: Special FD320725
-Ref: Special FD-Footnote-1323893
-Node: Special Files323967
-Node: Other Inherited Files324584
-Node: Special Network325585
-Node: Special Caveats326445
-Node: Close Files And Pipes327394
-Ref: table-close-pipe-return-values334301
-Ref: Close Files And Pipes-Footnote-1335114
-Ref: Close Files And Pipes-Footnote-2335262
-Node: Nonfatal335414
-Node: Output Summary337752
-Node: Output Exercises338974
-Node: Expressions339653
-Node: Values340841
-Node: Constants341519
-Node: Scalar Constants342210
-Ref: Scalar Constants-Footnote-1344734
-Node: Nondecimal-numbers344984
-Node: Regexp Constants347985
-Node: Using Constant Regexps348511
-Node: Standard Regexp Constants349133
-Node: Strong Regexp Constants352321
-Node: Variables355333
-Node: Using Variables355990
-Node: Assignment Options357900
-Node: Conversion360371
-Node: Strings And Numbers360895
-Ref: Strings And Numbers-Footnote-1363958
-Node: Locale influences conversions364067
-Ref: table-locale-affects366825
-Node: All Operators367443
-Node: Arithmetic Ops368072
-Node: Concatenation370578
-Ref: Concatenation-Footnote-1373425
-Node: Assignment Ops373532
-Ref: table-assign-ops378523
-Node: Increment Ops379836
-Node: Truth Values and Conditions383296
-Node: Truth Values384370
-Node: Typing and Comparison385418
-Node: Variable Typing386238
-Ref: Variable Typing-Footnote-1392701
-Ref: Variable Typing-Footnote-2392773
-Node: Comparison Operators392850
-Ref: table-relational-ops393269
-Node: POSIX String Comparison396764
-Ref: POSIX String Comparison-Footnote-1398459
-Ref: POSIX String Comparison-Footnote-2398598
-Node: Boolean Ops398682
-Ref: Boolean Ops-Footnote-1403164
-Node: Conditional Exp403256
-Node: Function Calls404992
-Node: Precedence408869
-Node: Locales412528
-Node: Expressions Summary414160
-Node: Patterns and Actions416733
-Node: Pattern Overview417853
-Node: Regexp Patterns419530
-Node: Expression Patterns420072
-Node: Ranges423853
-Node: BEGIN/END426961
-Node: Using BEGIN/END427722
-Ref: Using BEGIN/END-Footnote-1430458
-Node: I/O And BEGIN/END430564
-Node: BEGINFILE/ENDFILE432878
-Node: Empty435791
-Node: Using Shell Variables436108
-Node: Action Overview438382
-Node: Statements440707
-Node: If Statement442555
-Node: While Statement444050
-Node: Do Statement446078
-Node: For Statement447226
-Node: Switch Statement450397
-Node: Break Statement452838
-Node: Continue Statement454930
-Node: Next Statement456757
-Node: Nextfile Statement459140
-Node: Exit Statement461792
-Node: Built-in Variables464195
-Node: User-modified465328
-Node: Auto-set473095
-Ref: Auto-set-Footnote-1489902
-Ref: Auto-set-Footnote-2490108
-Node: ARGC and ARGV490164
-Node: Pattern Action Summary494377
-Node: Arrays496807
-Node: Array Basics498136
-Node: Array Intro498980
-Ref: figure-array-elements500955
-Ref: Array Intro-Footnote-1503659
-Node: Reference to Elements503787
-Node: Assigning Elements506251
-Node: Array Example506742
-Node: Scanning an Array508501
-Node: Controlling Scanning511523
-Ref: Controlling Scanning-Footnote-1517979
-Node: Numeric Array Subscripts518295
-Node: Uninitialized Subscripts520479
-Node: Delete522098
-Ref: Delete-Footnote-1524850
-Node: Multidimensional524907
-Node: Multiscanning528002
-Node: Arrays of Arrays529593
-Node: Arrays Summary534361
-Node: Functions536454
-Node: Built-in537492
-Node: Calling Built-in538573
-Node: Numeric Functions540569
-Ref: Numeric Functions-Footnote-1544597
-Ref: Numeric Functions-Footnote-2545245
-Ref: Numeric Functions-Footnote-3545293
-Node: String Functions545565
-Ref: String Functions-Footnote-1569722
-Ref: String Functions-Footnote-2569850
-Ref: String Functions-Footnote-3570098
-Node: Gory Details570185
-Ref: table-sub-escapes571976
-Ref: table-sub-proposed573495
-Ref: table-posix-sub574858
-Ref: table-gensub-escapes576399
-Ref: Gory Details-Footnote-1577222
-Node: I/O Functions577376
-Ref: table-system-return-values583844
-Ref: I/O Functions-Footnote-1585924
-Ref: I/O Functions-Footnote-2586072
-Node: Time Functions586192
-Ref: Time Functions-Footnote-1596863
-Ref: Time Functions-Footnote-2596931
-Ref: Time Functions-Footnote-3597089
-Ref: Time Functions-Footnote-4597200
-Ref: Time Functions-Footnote-5597312
-Ref: Time Functions-Footnote-6597539
-Node: Bitwise Functions597805
-Ref: table-bitwise-ops598399
-Ref: Bitwise Functions-Footnote-1604462
-Ref: Bitwise Functions-Footnote-2604635
-Node: Type Functions604826
-Node: I18N Functions607689
-Node: User-defined609340
-Node: Definition Syntax610152
-Ref: Definition Syntax-Footnote-1615839
-Node: Function Example615910
-Ref: Function Example-Footnote-1618832
-Node: Function Calling618854
-Node: Calling A Function619442
-Node: Variable Scope620400
-Node: Pass By Value/Reference623394
-Node: Function Caveats626038
-Ref: Function Caveats-Footnote-1628085
-Node: Return Statement628205
-Node: Dynamic Typing631184
-Node: Indirect Calls632114
-Ref: Indirect Calls-Footnote-1642366
-Node: Functions Summary642494
-Node: Library Functions645199
-Ref: Library Functions-Footnote-1648806
-Ref: Library Functions-Footnote-2648949
-Node: Library Names649120
-Ref: Library Names-Footnote-1652787
-Ref: Library Names-Footnote-2653010
-Node: General Functions653096
-Node: Strtonum Function654199
-Node: Assert Function657221
-Node: Round Function660547
-Node: Cliff Random Function662087
-Node: Ordinal Functions663103
-Ref: Ordinal Functions-Footnote-1666166
-Ref: Ordinal Functions-Footnote-2666418
-Node: Join Function666628
-Ref: Join Function-Footnote-1668398
-Node: Getlocaltime Function668598
-Node: Readfile Function672340
-Node: Shell Quoting674317
-Node: Data File Management675718
-Node: Filetrans Function676350
-Node: Rewind Function680446
-Node: File Checking682355
-Ref: File Checking-Footnote-1683689
-Node: Empty Files683890
-Node: Ignoring Assigns685869
-Node: Getopt Function687419
-Ref: Getopt Function-Footnote-1702631
-Node: Passwd Functions702831
-Ref: Passwd Functions-Footnote-1711670
-Node: Group Functions711758
-Ref: Group Functions-Footnote-1719656
-Node: Walking Arrays719863
-Node: Library Functions Summary722871
-Node: Library Exercises724277
-Node: Sample Programs724742
-Node: Running Examples725512
-Node: Clones726240
-Node: Cut Program727464
-Node: Egrep Program737393
-Ref: Egrep Program-Footnote-1744905
-Node: Id Program745015
-Node: Split Program748695
-Ref: Split Program-Footnote-1752153
-Node: Tee Program752282
-Node: Uniq Program755072
-Node: Wc Program762693
-Ref: Wc Program-Footnote-1766948
-Node: Miscellaneous Programs767042
-Node: Dupword Program768255
-Node: Alarm Program770285
-Node: Translate Program775140
-Ref: Translate Program-Footnote-1779705
-Node: Labels Program779975
-Ref: Labels Program-Footnote-1783326
-Node: Word Sorting783410
-Node: History Sorting787482
-Node: Extract Program789707
-Node: Simple Sed797761
-Node: Igawk Program800835
-Ref: Igawk Program-Footnote-1815166
-Ref: Igawk Program-Footnote-2815368
-Ref: Igawk Program-Footnote-3815490
-Node: Anagram Program815605
-Node: Signature Program818667
-Node: Programs Summary819914
-Node: Programs Exercises821128
-Ref: Programs Exercises-Footnote-1825257
-Node: Advanced Features825348
-Node: Nondecimal Data827338
-Node: Array Sorting828929
-Node: Controlling Array Traversal829629
-Ref: Controlling Array Traversal-Footnote-1837997
-Node: Array Sorting Functions838115
-Ref: Array Sorting Functions-Footnote-1843206
-Node: Two-way I/O843402
-Ref: Two-way I/O-Footnote-1851123
-Ref: Two-way I/O-Footnote-2851310
-Node: TCP/IP Networking851392
-Node: Profiling854510
-Node: Advanced Features Summary863525
-Node: Internationalization865369
-Node: I18N and L10N866849
-Node: Explaining gettext867536
-Ref: Explaining gettext-Footnote-1873428
-Ref: Explaining gettext-Footnote-2873613
-Node: Programmer i18n873778
-Ref: Programmer i18n-Footnote-1878727
-Node: Translator i18n878776
-Node: String Extraction879570
-Ref: String Extraction-Footnote-1880702
-Node: Printf Ordering880788
-Ref: Printf Ordering-Footnote-1883574
-Node: I18N Portability883638
-Ref: I18N Portability-Footnote-1886094
-Node: I18N Example886157
-Ref: I18N Example-Footnote-1889432
-Ref: I18N Example-Footnote-2889505
-Node: Gawk I18N889614
-Node: I18N Summary890263
-Node: Debugger891604
-Node: Debugging892604
-Node: Debugging Concepts893045
-Node: Debugging Terms894854
-Node: Awk Debugging897429
-Ref: Awk Debugging-Footnote-1898374
-Node: Sample Debugging Session898506
-Node: Debugger Invocation899040
-Node: Finding The Bug900426
-Node: List of Debugger Commands906900
-Node: Breakpoint Control908233
-Node: Debugger Execution Control911927
-Node: Viewing And Changing Data915289
-Node: Execution Stack918830
-Node: Debugger Info920467
-Node: Miscellaneous Debugger Commands924538
-Node: Readline Support929600
-Node: Limitations930496
-Node: Debugging Summary933050
-Node: Namespaces934329
-Node: Global Namespace935440
-Node: Qualified Names936838
-Node: Default Namespace937837
-Node: Changing The Namespace938578
-Node: Naming Rules940192
-Node: Internal Name Management942040
-Node: Namespace Example943082
-Node: Namespace And Features945644
-Node: Namespace Summary947079
-Node: Arbitrary Precision Arithmetic948556
-Node: Computer Arithmetic950043
-Ref: table-numeric-ranges953809
-Ref: table-floating-point-ranges954302
-Ref: Computer Arithmetic-Footnote-1954960
-Node: Math Definitions955017
-Ref: table-ieee-formats958333
-Ref: Math Definitions-Footnote-1958936
-Node: MPFR features959041
-Node: FP Math Caution960759
-Ref: FP Math Caution-Footnote-1961831
-Node: Inexactness of computations962200
-Node: Inexact representation963160
-Node: Comparing FP Values964520
-Node: Errors accumulate965761
-Node: Getting Accuracy967194
-Node: Try To Round969904
-Node: Setting precision970803
-Ref: table-predefined-precision-strings971500
-Node: Setting the rounding mode973330
-Ref: table-gawk-rounding-modes973704
-Ref: Setting the rounding mode-Footnote-1977635
-Node: Arbitrary Precision Integers977814
-Ref: Arbitrary Precision Integers-Footnote-1980989
-Node: Checking for MPFR981138
-Node: POSIX Floating Point Problems982612
-Ref: POSIX Floating Point Problems-Footnote-1986897
-Node: Floating point summary986935
-Node: Dynamic Extensions989125
-Node: Extension Intro990678
-Node: Plugin License991944
-Node: Extension Mechanism Outline992741
-Ref: figure-load-extension993180
-Ref: figure-register-new-function994745
-Ref: figure-call-new-function995837
-Node: Extension API Description997899
-Node: Extension API Functions Introduction999541
-Ref: table-api-std-headers1001377
-Node: General Data Types1005242
-Ref: General Data Types-Footnote-11013603
-Node: Memory Allocation Functions1013902
-Ref: Memory Allocation Functions-Footnote-11018112
-Node: Constructor Functions1018211
-Node: Registration Functions1021797
-Node: Extension Functions1022482
-Node: Exit Callback Functions1027804
-Node: Extension Version String1029054
-Node: Input Parsers1029717
-Node: Output Wrappers1042438
-Node: Two-way processors1046950
-Node: Printing Messages1049215
-Ref: Printing Messages-Footnote-11050386
-Node: Updating ERRNO1050539
-Node: Requesting Values1051278
-Ref: table-value-types-returned1052015
-Node: Accessing Parameters1052951
-Node: Symbol Table Access1054186
-Node: Symbol table by name1054698
-Ref: Symbol table by name-Footnote-11057722
-Node: Symbol table by cookie1057850
-Ref: Symbol table by cookie-Footnote-11062035
-Node: Cached values1062099
-Ref: Cached values-Footnote-11065635
-Node: Array Manipulation1065788
-Ref: Array Manipulation-Footnote-11066879
-Node: Array Data Types1066916
-Ref: Array Data Types-Footnote-11069574
-Node: Array Functions1069666
-Node: Flattening Arrays1074164
-Node: Creating Arrays1081140
-Node: Redirection API1085907
-Node: Extension API Variables1088740
-Node: Extension Versioning1089451
-Ref: gawk-api-version1089880
-Node: Extension GMP/MPFR Versioning1091611
-Node: Extension API Informational Variables1093239
-Node: Extension API Boilerplate1094312
-Node: Changes from API V11098286
-Node: Finding Extensions1099858
-Node: Extension Example1100417
-Node: Internal File Description1101215
-Node: Internal File Ops1105295
-Ref: Internal File Ops-Footnote-11116645
-Node: Using Internal File Ops1116785
-Ref: Using Internal File Ops-Footnote-11119168
-Node: Extension Samples1119442
-Node: Extension Sample File Functions1120971
-Node: Extension Sample Fnmatch1128620
-Node: Extension Sample Fork1130107
-Node: Extension Sample Inplace1131325
-Node: Extension Sample Ord1134950
-Node: Extension Sample Readdir1135786
-Ref: table-readdir-file-types1136675
-Node: Extension Sample Revout1137742
-Node: Extension Sample Rev2way1138331
-Node: Extension Sample Read write array1139071
-Node: Extension Sample Readfile1141013
-Node: Extension Sample Time1142108
-Node: Extension Sample API Tests1143860
-Node: gawkextlib1144352
-Node: Extension summary1147270
-Node: Extension Exercises1150972
-Node: Language History1152214
-Node: V7/SVR3.11153870
-Node: SVR41156022
-Node: POSIX1157456
-Node: BTL1158837
-Node: POSIX/GNU1159566
-Node: Feature History1165344
-Node: Common Extensions1181663
-Node: Ranges and Locales1182946
-Ref: Ranges and Locales-Footnote-11187562
-Ref: Ranges and Locales-Footnote-21187589
-Ref: Ranges and Locales-Footnote-31187824
-Node: Contributors1188047
-Node: History summary1194044
-Node: Installation1195424
-Node: Gawk Distribution1196368
-Node: Getting1196852
-Node: Extracting1197815
-Node: Distribution contents1199453
-Node: Unix Installation1205933
-Node: Quick Installation1206615
-Node: Shell Startup Files1209029
-Node: Additional Configuration Options1210118
-Node: Configuration Philosophy1212433
-Node: Non-Unix Installation1214802
-Node: PC Installation1215262
-Node: PC Binary Installation1216100
-Node: PC Compiling1216535
-Node: PC Using1217652
-Node: Cygwin1221205
-Node: MSYS1222429
-Node: VMS Installation1223031
-Node: VMS Compilation1223822
-Ref: VMS Compilation-Footnote-11225051
-Node: VMS Dynamic Extensions1225109
-Node: VMS Installation Details1226794
-Node: VMS Running1229047
-Node: VMS GNV1233326
-Node: VMS Old Gawk1234061
-Node: Bugs1234532
-Node: Bug address1235195
-Node: Usenet1238177
-Node: Maintainers1239181
-Node: Other Versions1240366
-Node: Installation summary1247454
-Node: Notes1248663
-Node: Compatibility Mode1249457
-Node: Additions1250239
-Node: Accessing The Source1251164
-Node: Adding Code1252601
-Node: New Ports1258820
-Node: Derived Files1263195
-Ref: Derived Files-Footnote-11268855
-Ref: Derived Files-Footnote-21268890
-Ref: Derived Files-Footnote-31269488
-Node: Future Extensions1269602
-Node: Implementation Limitations1270260
-Node: Extension Design1271470
-Node: Old Extension Problems1272614
-Ref: Old Extension Problems-Footnote-11274132
-Node: Extension New Mechanism Goals1274189
-Ref: Extension New Mechanism Goals-Footnote-11277553
-Node: Extension Other Design Decisions1277742
-Node: Extension Future Growth1279855
-Node: Notes summary1280461
-Node: Basic Concepts1281619
-Node: Basic High Level1282300
-Ref: figure-general-flow1282582
-Ref: figure-process-flow1283267
-Ref: Basic High Level-Footnote-11286568
-Node: Basic Data Typing1286753
-Node: Glossary1290081
-Node: Copying1321966
-Node: GNU Free Documentation License1359509
-Node: Index1384629
+Ref: Options-Footnote-1137435
+Ref: Options-Footnote-2137666
+Node: Other Arguments137691
+Node: Naming Standard Input140998
+Node: Environment Variables142208
+Node: AWKPATH Variable142766
+Ref: AWKPATH Variable-Footnote-1146178
+Ref: AWKPATH Variable-Footnote-2146212
+Node: AWKLIBPATH Variable146583
+Ref: AWKLIBPATH Variable-Footnote-1148280
+Node: Other Environment Variables148655
+Node: Exit Status152476
+Node: Include Files153153
+Node: Loading Shared Libraries156843
+Node: Obsolete158271
+Node: Undocumented158963
+Node: Invoking Summary159260
+Node: Regexp162101
+Node: Regexp Usage163555
+Node: Escape Sequences165592
+Node: Regexp Operators171833
+Node: Regexp Operator Details172318
+Ref: Regexp Operator Details-Footnote-1178750
+Node: Interval Expressions178897
+Ref: Interval Expressions-Footnote-1180318
+Node: Bracket Expressions180416
+Ref: table-char-classes182892
+Node: Leftmost Longest186218
+Node: Computed Regexps187521
+Node: GNU Regexp Operators190948
+Node: Case-sensitivity194685
+Ref: Case-sensitivity-Footnote-1197551
+Ref: Case-sensitivity-Footnote-2197786
+Node: Regexp Summary197894
+Node: Reading Files199360
+Node: Records201629
+Node: awk split records202704
+Node: gawk split records207979
+Ref: gawk split records-Footnote-1212712
+Node: Fields212749
+Node: Nonconstant Fields215490
+Ref: Nonconstant Fields-Footnote-1217726
+Node: Changing Fields217930
+Node: Field Separators223961
+Node: Default Field Splitting226659
+Node: Regexp Field Splitting227777
+Node: Single Character Fields231130
+Node: Command Line Field Separator232190
+Node: Full Line Fields235408
+Ref: Full Line Fields-Footnote-1236930
+Ref: Full Line Fields-Footnote-2236976
+Node: Field Splitting Summary237077
+Node: Constant Size239151
+Node: Fixed width data239883
+Node: Skipping intervening243350
+Node: Allowing trailing data244148
+Node: Fields with fixed data245185
+Node: Splitting By Content246703
+Ref: Splitting By Content-Footnote-1250486
+Node: More CSV250649
+Node: Testing field creation251959
+Node: Multiple Line253584
+Node: Getline259861
+Node: Plain Getline262330
+Node: Getline/Variable264903
+Node: Getline/File266054
+Node: Getline/Variable/File267442
+Ref: Getline/Variable/File-Footnote-1269047
+Node: Getline/Pipe269135
+Node: Getline/Variable/Pipe271839
+Node: Getline/Coprocess272974
+Node: Getline/Variable/Coprocess274241
+Node: Getline Notes274983
+Node: Getline Summary277780
+Ref: table-getline-variants278204
+Node: Read Timeout278952
+Ref: Read Timeout-Footnote-1282858
+Node: Retrying Input282916
+Node: Command-line directories284115
+Node: Input Summary285021
+Node: Input Exercises288193
+Node: Printing288627
+Node: Print290461
+Node: Print Examples291918
+Node: Output Separators294698
+Node: OFMT296715
+Node: Printf298071
+Node: Basic Printf298856
+Node: Control Letters300430
+Node: Format Modifiers305594
+Node: Printf Examples311609
+Node: Redirection314095
+Node: Special FD320936
+Ref: Special FD-Footnote-1324104
+Node: Special Files324178
+Node: Other Inherited Files324795
+Node: Special Network325796
+Node: Special Caveats326656
+Node: Close Files And Pipes327605
+Ref: table-close-pipe-return-values334512
+Ref: Close Files And Pipes-Footnote-1335325
+Ref: Close Files And Pipes-Footnote-2335473
+Node: Nonfatal335625
+Node: Output Summary337963
+Node: Output Exercises339185
+Node: Expressions339864
+Node: Values341052
+Node: Constants341730
+Node: Scalar Constants342421
+Ref: Scalar Constants-Footnote-1344945
+Node: Nondecimal-numbers345195
+Node: Regexp Constants348196
+Node: Using Constant Regexps348722
+Node: Standard Regexp Constants349344
+Node: Strong Regexp Constants352532
+Node: Variables355544
+Node: Using Variables356201
+Node: Assignment Options358111
+Node: Conversion360582
+Node: Strings And Numbers361106
+Ref: Strings And Numbers-Footnote-1364169
+Node: Locale influences conversions364278
+Ref: table-locale-affects367036
+Node: All Operators367654
+Node: Arithmetic Ops368283
+Node: Concatenation370789
+Ref: Concatenation-Footnote-1373636
+Node: Assignment Ops373743
+Ref: table-assign-ops378734
+Node: Increment Ops380047
+Node: Truth Values and Conditions383507
+Node: Truth Values384581
+Node: Typing and Comparison385629
+Node: Variable Typing386449
+Ref: Variable Typing-Footnote-1392912
+Ref: Variable Typing-Footnote-2392984
+Node: Comparison Operators393061
+Ref: table-relational-ops393480
+Node: POSIX String Comparison396975
+Ref: POSIX String Comparison-Footnote-1398670
+Ref: POSIX String Comparison-Footnote-2398809
+Node: Boolean Ops398893
+Ref: Boolean Ops-Footnote-1403375
+Node: Conditional Exp403467
+Node: Function Calls405203
+Node: Precedence409080
+Node: Locales412739
+Node: Expressions Summary414371
+Node: Patterns and Actions416944
+Node: Pattern Overview418064
+Node: Regexp Patterns419741
+Node: Expression Patterns420283
+Node: Ranges424064
+Node: BEGIN/END427172
+Node: Using BEGIN/END427933
+Ref: Using BEGIN/END-Footnote-1430669
+Node: I/O And BEGIN/END430775
+Node: BEGINFILE/ENDFILE433089
+Node: Empty436002
+Node: Using Shell Variables436319
+Node: Action Overview438593
+Node: Statements440918
+Node: If Statement442766
+Node: While Statement444261
+Node: Do Statement446289
+Node: For Statement447437
+Node: Switch Statement450608
+Node: Break Statement453049
+Node: Continue Statement455141
+Node: Next Statement456968
+Node: Nextfile Statement459351
+Node: Exit Statement462003
+Node: Built-in Variables464406
+Node: User-modified465539
+Node: Auto-set473306
+Ref: Auto-set-Footnote-1490113
+Ref: Auto-set-Footnote-2490319
+Node: ARGC and ARGV490375
+Node: Pattern Action Summary494588
+Node: Arrays497018
+Node: Array Basics498347
+Node: Array Intro499191
+Ref: figure-array-elements501166
+Ref: Array Intro-Footnote-1503870
+Node: Reference to Elements503998
+Node: Assigning Elements506462
+Node: Array Example506953
+Node: Scanning an Array508712
+Node: Controlling Scanning511734
+Ref: Controlling Scanning-Footnote-1518190
+Node: Numeric Array Subscripts518506
+Node: Uninitialized Subscripts520690
+Node: Delete522309
+Ref: Delete-Footnote-1525061
+Node: Multidimensional525118
+Node: Multiscanning528213
+Node: Arrays of Arrays529804
+Node: Arrays Summary534572
+Node: Functions536665
+Node: Built-in537703
+Node: Calling Built-in538784
+Node: Numeric Functions540780
+Ref: Numeric Functions-Footnote-1544808
+Ref: Numeric Functions-Footnote-2545456
+Ref: Numeric Functions-Footnote-3545504
+Node: String Functions545776
+Ref: String Functions-Footnote-1569933
+Ref: String Functions-Footnote-2570061
+Ref: String Functions-Footnote-3570309
+Node: Gory Details570396
+Ref: table-sub-escapes572187
+Ref: table-sub-proposed573706
+Ref: table-posix-sub575069
+Ref: table-gensub-escapes576610
+Ref: Gory Details-Footnote-1577433
+Node: I/O Functions577587
+Ref: table-system-return-values584055
+Ref: I/O Functions-Footnote-1586135
+Ref: I/O Functions-Footnote-2586283
+Node: Time Functions586403
+Ref: Time Functions-Footnote-1597074
+Ref: Time Functions-Footnote-2597142
+Ref: Time Functions-Footnote-3597300
+Ref: Time Functions-Footnote-4597411
+Ref: Time Functions-Footnote-5597523
+Ref: Time Functions-Footnote-6597750
+Node: Bitwise Functions598016
+Ref: table-bitwise-ops598610
+Ref: Bitwise Functions-Footnote-1604673
+Ref: Bitwise Functions-Footnote-2604846
+Node: Type Functions605037
+Node: I18N Functions607900
+Node: User-defined609551
+Node: Definition Syntax610363
+Ref: Definition Syntax-Footnote-1616050
+Node: Function Example616121
+Ref: Function Example-Footnote-1619043
+Node: Function Calling619065
+Node: Calling A Function619653
+Node: Variable Scope620611
+Node: Pass By Value/Reference623605
+Node: Function Caveats626249
+Ref: Function Caveats-Footnote-1628296
+Node: Return Statement628416
+Node: Dynamic Typing631395
+Node: Indirect Calls632325
+Ref: Indirect Calls-Footnote-1642577
+Node: Functions Summary642705
+Node: Library Functions645410
+Ref: Library Functions-Footnote-1649017
+Ref: Library Functions-Footnote-2649160
+Node: Library Names649331
+Ref: Library Names-Footnote-1652998
+Ref: Library Names-Footnote-2653221
+Node: General Functions653307
+Node: Strtonum Function654410
+Node: Assert Function657432
+Node: Round Function660758
+Node: Cliff Random Function662298
+Node: Ordinal Functions663314
+Ref: Ordinal Functions-Footnote-1666377
+Ref: Ordinal Functions-Footnote-2666629
+Node: Join Function666839
+Ref: Join Function-Footnote-1668609
+Node: Getlocaltime Function668809
+Node: Readfile Function672551
+Node: Shell Quoting674528
+Node: Data File Management675929
+Node: Filetrans Function676561
+Node: Rewind Function680657
+Node: File Checking682566
+Ref: File Checking-Footnote-1683900
+Node: Empty Files684101
+Node: Ignoring Assigns686080
+Node: Getopt Function687630
+Ref: Getopt Function-Footnote-1702842
+Node: Passwd Functions703042
+Ref: Passwd Functions-Footnote-1711881
+Node: Group Functions711969
+Ref: Group Functions-Footnote-1719867
+Node: Walking Arrays720074
+Node: Library Functions Summary723082
+Node: Library Exercises724488
+Node: Sample Programs724953
+Node: Running Examples725723
+Node: Clones726451
+Node: Cut Program727675
+Node: Egrep Program737604
+Ref: Egrep Program-Footnote-1745116
+Node: Id Program745226
+Node: Split Program748906
+Ref: Split Program-Footnote-1752364
+Node: Tee Program752493
+Node: Uniq Program755283
+Node: Wc Program762904
+Ref: Wc Program-Footnote-1767159
+Node: Miscellaneous Programs767253
+Node: Dupword Program768466
+Node: Alarm Program770496
+Node: Translate Program775351
+Ref: Translate Program-Footnote-1779916
+Node: Labels Program780186
+Ref: Labels Program-Footnote-1783537
+Node: Word Sorting783621
+Node: History Sorting787693
+Node: Extract Program789918
+Node: Simple Sed797972
+Node: Igawk Program801046
+Ref: Igawk Program-Footnote-1815377
+Ref: Igawk Program-Footnote-2815579
+Ref: Igawk Program-Footnote-3815701
+Node: Anagram Program815816
+Node: Signature Program818878
+Node: Programs Summary820125
+Node: Programs Exercises821339
+Ref: Programs Exercises-Footnote-1825468
+Node: Advanced Features825559
+Node: Nondecimal Data827549
+Node: Array Sorting829140
+Node: Controlling Array Traversal829840
+Ref: Controlling Array Traversal-Footnote-1838208
+Node: Array Sorting Functions838326
+Ref: Array Sorting Functions-Footnote-1843417
+Node: Two-way I/O843613
+Ref: Two-way I/O-Footnote-1851334
+Ref: Two-way I/O-Footnote-2851521
+Node: TCP/IP Networking851603
+Node: Profiling854721
+Node: Advanced Features Summary863736
+Node: Internationalization865580
+Node: I18N and L10N867060
+Node: Explaining gettext867747
+Ref: Explaining gettext-Footnote-1873639
+Ref: Explaining gettext-Footnote-2873824
+Node: Programmer i18n873989
+Ref: Programmer i18n-Footnote-1878938
+Node: Translator i18n878987
+Node: String Extraction879781
+Ref: String Extraction-Footnote-1880913
+Node: Printf Ordering880999
+Ref: Printf Ordering-Footnote-1883785
+Node: I18N Portability883849
+Ref: I18N Portability-Footnote-1886305
+Node: I18N Example886368
+Ref: I18N Example-Footnote-1889643
+Ref: I18N Example-Footnote-2889716
+Node: Gawk I18N889825
+Node: I18N Summary890474
+Node: Debugger891815
+Node: Debugging892815
+Node: Debugging Concepts893256
+Node: Debugging Terms895065
+Node: Awk Debugging897640
+Ref: Awk Debugging-Footnote-1898585
+Node: Sample Debugging Session898717
+Node: Debugger Invocation899251
+Node: Finding The Bug900637
+Node: List of Debugger Commands907111
+Node: Breakpoint Control908444
+Node: Debugger Execution Control912138
+Node: Viewing And Changing Data915500
+Node: Execution Stack919041
+Node: Debugger Info920678
+Node: Miscellaneous Debugger Commands924749
+Node: Readline Support929811
+Node: Limitations930707
+Node: Debugging Summary933261
+Node: Namespaces934540
+Node: Global Namespace935651
+Node: Qualified Names937049
+Node: Default Namespace938048
+Node: Changing The Namespace938789
+Node: Naming Rules940403
+Node: Internal Name Management942251
+Node: Namespace Example943293
+Node: Namespace And Features945855
+Node: Namespace Summary947290
+Node: Arbitrary Precision Arithmetic948767
+Node: Computer Arithmetic950254
+Ref: table-numeric-ranges954020
+Ref: table-floating-point-ranges954513
+Ref: Computer Arithmetic-Footnote-1955171
+Node: Math Definitions955228
+Ref: table-ieee-formats958544
+Ref: Math Definitions-Footnote-1959147
+Node: MPFR features959252
+Node: FP Math Caution960970
+Ref: FP Math Caution-Footnote-1962042
+Node: Inexactness of computations962411
+Node: Inexact representation963371
+Node: Comparing FP Values964731
+Node: Errors accumulate965972
+Node: Getting Accuracy967405
+Node: Try To Round970115
+Node: Setting precision971014
+Ref: table-predefined-precision-strings971711
+Node: Setting the rounding mode973541
+Ref: table-gawk-rounding-modes973915
+Ref: Setting the rounding mode-Footnote-1977846
+Node: Arbitrary Precision Integers978025
+Ref: Arbitrary Precision Integers-Footnote-1981200
+Node: Checking for MPFR981349
+Node: POSIX Floating Point Problems982823
+Ref: POSIX Floating Point Problems-Footnote-1987108
+Node: Floating point summary987146
+Node: Dynamic Extensions989336
+Node: Extension Intro990889
+Node: Plugin License992155
+Node: Extension Mechanism Outline992952
+Ref: figure-load-extension993391
+Ref: figure-register-new-function994956
+Ref: figure-call-new-function996048
+Node: Extension API Description998110
+Node: Extension API Functions Introduction999752
+Ref: table-api-std-headers1001588
+Node: General Data Types1005453
+Ref: General Data Types-Footnote-11013814
+Node: Memory Allocation Functions1014113
+Ref: Memory Allocation Functions-Footnote-11018323
+Node: Constructor Functions1018422
+Node: Registration Functions1022008
+Node: Extension Functions1022693
+Node: Exit Callback Functions1028015
+Node: Extension Version String1029265
+Node: Input Parsers1029928
+Node: Output Wrappers1042649
+Node: Two-way processors1047161
+Node: Printing Messages1049426
+Ref: Printing Messages-Footnote-11050597
+Node: Updating ERRNO1050750
+Node: Requesting Values1051489
+Ref: table-value-types-returned1052226
+Node: Accessing Parameters1053162
+Node: Symbol Table Access1054397
+Node: Symbol table by name1054909
+Ref: Symbol table by name-Footnote-11057933
+Node: Symbol table by cookie1058061
+Ref: Symbol table by cookie-Footnote-11062246
+Node: Cached values1062310
+Ref: Cached values-Footnote-11065846
+Node: Array Manipulation1065999
+Ref: Array Manipulation-Footnote-11067090
+Node: Array Data Types1067127
+Ref: Array Data Types-Footnote-11069785
+Node: Array Functions1069877
+Node: Flattening Arrays1074375
+Node: Creating Arrays1081351
+Node: Redirection API1086118
+Node: Extension API Variables1088951
+Node: Extension Versioning1089662
+Ref: gawk-api-version1090091
+Node: Extension GMP/MPFR Versioning1091822
+Node: Extension API Informational Variables1093450
+Node: Extension API Boilerplate1094523
+Node: Changes from API V11098497
+Node: Finding Extensions1100069
+Node: Extension Example1100628
+Node: Internal File Description1101426
+Node: Internal File Ops1105506
+Ref: Internal File Ops-Footnote-11116856
+Node: Using Internal File Ops1116996
+Ref: Using Internal File Ops-Footnote-11119379
+Node: Extension Samples1119653
+Node: Extension Sample File Functions1121182
+Node: Extension Sample Fnmatch1128831
+Node: Extension Sample Fork1130318
+Node: Extension Sample Inplace1131536
+Node: Extension Sample Ord1135161
+Node: Extension Sample Readdir1135997
+Ref: table-readdir-file-types1136886
+Node: Extension Sample Revout1137953
+Node: Extension Sample Rev2way1138542
+Node: Extension Sample Read write array1139282
+Node: Extension Sample Readfile1141224
+Node: Extension Sample Time1142319
+Node: Extension Sample API Tests1144071
+Node: gawkextlib1144563
+Node: Extension summary1147481
+Node: Extension Exercises1151183
+Node: Language History1152425
+Node: V7/SVR3.11154081
+Node: SVR41156233
+Node: POSIX1157667
+Node: BTL1159048
+Node: POSIX/GNU1159777
+Node: Feature History1165555
+Node: Common Extensions1181874
+Node: Ranges and Locales1183157
+Ref: Ranges and Locales-Footnote-11187773
+Ref: Ranges and Locales-Footnote-21187800
+Ref: Ranges and Locales-Footnote-31188035
+Node: Contributors1188258
+Node: History summary1194255
+Node: Installation1195635
+Node: Gawk Distribution1196579
+Node: Getting1197063
+Node: Extracting1198026
+Node: Distribution contents1199664
+Node: Unix Installation1206144
+Node: Quick Installation1206826
+Node: Shell Startup Files1209240
+Node: Additional Configuration Options1210329
+Node: Configuration Philosophy1212644
+Node: Non-Unix Installation1215013
+Node: PC Installation1215473
+Node: PC Binary Installation1216311
+Node: PC Compiling1216746
+Node: PC Using1217863
+Node: Cygwin1221416
+Node: MSYS1222640
+Node: VMS Installation1223242
+Node: VMS Compilation1224033
+Ref: VMS Compilation-Footnote-11225262
+Node: VMS Dynamic Extensions1225320
+Node: VMS Installation Details1227005
+Node: VMS Running1229258
+Node: VMS GNV1233537
+Node: VMS Old Gawk1234272
+Node: Bugs1234743
+Node: Bug address1235406
+Node: Usenet1238388
+Node: Maintainers1239392
+Node: Other Versions1240577
+Node: Installation summary1247665
+Node: Notes1248874
+Node: Compatibility Mode1249668
+Node: Additions1250450
+Node: Accessing The Source1251375
+Node: Adding Code1252812
+Node: New Ports1259031
+Node: Derived Files1263406
+Ref: Derived Files-Footnote-11269066
+Ref: Derived Files-Footnote-21269101
+Ref: Derived Files-Footnote-31269699
+Node: Future Extensions1269813
+Node: Implementation Limitations1270471
+Node: Extension Design1271681
+Node: Old Extension Problems1272825
+Ref: Old Extension Problems-Footnote-11274343
+Node: Extension New Mechanism Goals1274400
+Ref: Extension New Mechanism Goals-Footnote-11277764
+Node: Extension Other Design Decisions1277953
+Node: Extension Future Growth1280066
+Node: Notes summary1280672
+Node: Basic Concepts1281830
+Node: Basic High Level1282511
+Ref: figure-general-flow1282793
+Ref: figure-process-flow1283478
+Ref: Basic High Level-Footnote-11286779
+Node: Basic Data Typing1286964
+Node: Glossary1290292
+Node: Copying1322177
+Node: GNU Free Documentation License1359720
+Node: Index1384840

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index d211a910..577a114c 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -4094,6 +4094,18 @@ or on the command line.
Files named with @option{-i} are treated as if they had @samp{@@namespace "awk"}
at their beginning. @xref{Changing The Namespace}, for more information.
+@item @option{-I}
+@itemx @option{--trace}
+@cindex @option{-I} option
+@cindex @option{--trace} option
+@cindex trace, internal instructions
+@cindex instructions, trace of internal
+@cindex op-codes, trace of internal
+Print the internal byte code names as they are executed when running
+the program. The trace is printed to standard error. Each ``op code''
+is preceded by a @code{+}
+sign in the output.
+
@item @option{-l} @var{ext}
@itemx @option{--load} @var{ext}
@cindex @option{-l} option
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 4a169b44..73b30c39 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -4004,6 +4004,18 @@ or on the command line.
Files named with @option{-i} are treated as if they had @samp{@@namespace "awk"}
at their beginning. @xref{Changing The Namespace}, for more information.
+@item @option{-I}
+@itemx @option{--trace}
+@cindex @option{-I} option
+@cindex @option{--trace} option
+@cindex trace, internal instructions
+@cindex instructions, trace of internal
+@cindex op-codes, trace of internal
+Print the internal byte code names as they are executed when running
+the program. The trace is printed to standard error. Each ``op code''
+is preceded by a @code{+}
+sign in the output.
+
@item @option{-l} @var{ext}
@itemx @option{--load} @var{ext}
@cindex @option{-l} option
diff --git a/interpret.h b/interpret.h
index 6137e8e0..4de778e7 100644
--- a/interpret.h
+++ b/interpret.h
@@ -100,7 +100,13 @@ top:
}
#endif
- switch ((op = pc->opcode)) {
+ op = pc->opcode;
+ if (do_itrace) {
+ fprintf(stderr, "+ %s\n", opcode2str(op));
+ fflush(stderr);
+ }
+
+ switch (op) {
case Op_rule:
currule = pc->in_rule; /* for sole use in Op_K_next, Op_K_nextfile, Op_K_getline */
/* fall through */
diff --git a/main.c b/main.c
index 4f239dfc..b09b5f4c 100644
--- a/main.c
+++ b/main.c
@@ -205,6 +205,7 @@ static const struct option optab[] = {
{ "re-interval", no_argument, NULL, 'r' },
{ "sandbox", no_argument, NULL, 'S' },
{ "source", required_argument, NULL, 'e' },
+ { "trace", no_argument, NULL, 'I' },
{ "traditional", no_argument, NULL, 'c' },
{ "use-lc-numeric", no_argument, & use_lc_numeric, 1 },
{ "version", no_argument, & do_version, 'V' },
@@ -601,6 +602,7 @@ usage(int exitval, FILE *fp)
fputs(_("\t-g\t\t\t--gen-pot\n"), fp);
fputs(_("\t-h\t\t\t--help\n"), fp);
fputs(_("\t-i includefile\t\t--include=includefile\n"), fp);
+ fputs(_("\t-I\t\t\t--trace\n"), fp);
fputs(_("\t-l library\t\t--load=library\n"), fp);
/*
* TRANSLATORS: the "fatal", "invalid" and "no-ext" here are literal
@@ -1519,7 +1521,7 @@ parse_args(int argc, char **argv)
/*
* The + on the front tells GNU getopt not to rearrange argv.
*/
- const char *optlist = "+F:f:v:W;bcCd::D::e:E:ghi:l:L::nNo::Op::MPrSstVYZ:";
+ const char *optlist = "+F:f:v:W;bcCd::D::e:E:ghi:Il:L::nNo::Op::MPrSstVYZ:";
int old_optind;
int c;
char *scan;
@@ -1614,6 +1616,10 @@ parse_args(int argc, char **argv)
(void) add_srcfile(SRC_INC, optarg, srcfiles, NULL, NULL);
break;
+ case 'I':
+ do_flags |= DO_ITRACE;
+ break;
+
case 'l':
(void) add_srcfile(SRC_EXTLIB, optarg, srcfiles, NULL, NULL);
break;
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 7da52fdf..9f8f5790 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -167,7 +167,7 @@ BASIC_TESTS = \
octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \
opasnidx opasnslf \
paramasfunc1 paramasfunc2 paramdup paramres paramtyp paramuninitglobal \
- parse1 parsefld parseme pcntplus posix2008sub prdupval prec printf0 \
+ parse1 parsefld parseme pcntplus posix_compare posix2008sub prdupval prec printf0 \
printf1 printfchar prmarscl prmreuse prt1eval prtoeval \
rand randtest range1 range2 readbuf rebrackloc rebt8b1 rebuild redfilnm regeq \
regexpbrack regexpbrack2 regexprange regrange reindops reparse resplit \
@@ -267,7 +267,7 @@ NEED_MPFR = mpfrbigint mpfrbigint2 mpfrexprange mpfrfield mpfrieee mpfrmemok1 \
NEED_NONDEC = mpfrbigint2 nondec2 intarray forcenum
# List of tests that need --posix
-NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix
+NEED_POSIX = escapebrace printf0 posix2008sub paramasfunc1 paramasfunc2 muldimposix posix_compare
# List of tests that need --pretty-print
NEED_PRETTY = nsprof1 nsprof2 \
@@ -305,8 +305,9 @@ NEED_LOCALE_C = \
NEED_LOCALE_EN = \
backbigs1 backsmalls1 backsmalls2 concat4 dfamb1 ignrcas2 lc_num1 \
- mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 printhuge reint2 \
- rri1 subamp subi18n wideidx wideidx2 widesub widesub2 widesub3 widesub4
+ mbfw1 mbprintf1 mbprintf3 mbprintf4 mbstr1 mbstr2 posix_compare \
+ printhuge reint2 rri1 subamp subi18n wideidx wideidx2 \
+ widesub widesub2 widesub3 widesub4
# Unused at the moment, since nlstringtest has additional stufff it does
@@ -2027,6 +2028,12 @@ pcntplus:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+posix_compare:
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \
+ AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
posix2008sub:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/ChangeLog b/test/ChangeLog
index bf033534..a85ef93b 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -2,6 +2,10 @@
* Makefile.am (EXTRA_DIST): New test, posix_compare.
* posix_compare.awk, posix_compare.ok: New files.
+
+ Unrelated:
+
+ * badargs.ok: Updated after code changes.
2020-06-29 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/test/badargs.ok b/test/badargs.ok
index dfbd1c19..5ec0558c 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -16,6 +16,7 @@ Short options: GNU long options: (extensions)
-g --gen-pot
-h --help
-i includefile --include=includefile
+ -I --trace
-l library --load=library
-L[fatal|invalid|no-ext] --lint[=fatal|invalid|no-ext]
-M --bignum