diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-07-09 21:11:54 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-07-09 21:11:54 +0300 |
commit | e1749c3c853ace06796efd7dd3bd3e9bf025a549 (patch) | |
tree | 7e326a2d99075f6d7617692284f4d62cf06f4736 | |
parent | 518bcc6e640648717bc5512d3fd5c2bf16d6fec3 (diff) | |
download | egawk-e1749c3c853ace06796efd7dd3bd3e9bf025a549.tar.gz egawk-e1749c3c853ace06796efd7dd3bd3e9bf025a549.tar.bz2 egawk-e1749c3c853ace06796efd7dd3bd3e9bf025a549.zip |
Extend or(), and(), xor() to N arguments, N >= 2.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | awkgram.c | 6 | ||||
-rw-r--r-- | awkgram.y | 6 | ||||
-rw-r--r-- | builtin.c | 131 | ||||
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/awkcard.in | 15 | ||||
-rw-r--r-- | doc/gawk.1 | 24 | ||||
-rw-r--r-- | doc/gawk.info | 825 | ||||
-rw-r--r-- | doc/gawk.texi | 15 |
9 files changed, 516 insertions, 519 deletions
@@ -1,3 +1,11 @@ +2012-07-04 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (tokentab): Remove limit on number of arguments + for "and", "or", and "xor". + * builtin.c (do_and, do_or, do_xor): Modify code to perform the + respective operation on any number of arguments. There must be + at least two. + 2012-06-29 Arnold D. Robbins <arnold@skeeve.com> * gawkapi.h: Improve the documentation of the return values @@ -4542,7 +4542,7 @@ static const struct token tokentab[] = { #ifdef ARRAYDEBUG {"adump", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_adump, 0}, #endif -{"and", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_and, MPF(and)}, +{"and", Op_builtin, LEX_BUILTIN, GAWKX, do_and, MPF(and)}, {"asort", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asort, 0}, {"asorti", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asorti, 0}, {"atan2", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2), do_atan2, MPF(atan2)}, @@ -4583,7 +4583,7 @@ static const struct token tokentab[] = { {"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_mktime, 0}, {"next", Op_K_next, LEX_NEXT, 0, 0, 0}, {"nextfile", Op_K_nextfile, LEX_NEXTFILE, GAWKX, 0, 0}, -{"or", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_or, MPF(or)}, +{"or", Op_builtin, LEX_BUILTIN, GAWKX, do_or, MPF(or)}, {"patsplit", Op_builtin, LEX_BUILTIN, GAWKX|A(2)|A(3)|A(4), do_patsplit, 0}, {"print", Op_K_print, LEX_PRINT, 0, 0, 0}, {"printf", Op_K_printf, LEX_PRINTF, 0, 0, 0}, @@ -4608,7 +4608,7 @@ static const struct token tokentab[] = { {"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower, 0}, {"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper, 0}, {"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0, 0}, -{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor, MPF(xor)}, +{"xor", Op_builtin, LEX_BUILTIN, GAWKX, do_xor, MPF(xor)}, }; #if MBS_SUPPORT @@ -1822,7 +1822,7 @@ static const struct token tokentab[] = { #ifdef ARRAYDEBUG {"adump", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2), do_adump, 0}, #endif -{"and", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_and, MPF(and)}, +{"and", Op_builtin, LEX_BUILTIN, GAWKX, do_and, MPF(and)}, {"asort", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asort, 0}, {"asorti", Op_builtin, LEX_BUILTIN, GAWKX|A(1)|A(2)|A(3), do_asorti, 0}, {"atan2", Op_builtin, LEX_BUILTIN, NOT_OLD|A(2), do_atan2, MPF(atan2)}, @@ -1863,7 +1863,7 @@ static const struct token tokentab[] = { {"mktime", Op_builtin, LEX_BUILTIN, GAWKX|A(1), do_mktime, 0}, {"next", Op_K_next, LEX_NEXT, 0, 0, 0}, {"nextfile", Op_K_nextfile, LEX_NEXTFILE, GAWKX, 0, 0}, -{"or", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_or, MPF(or)}, +{"or", Op_builtin, LEX_BUILTIN, GAWKX, do_or, MPF(or)}, {"patsplit", Op_builtin, LEX_BUILTIN, GAWKX|A(2)|A(3)|A(4), do_patsplit, 0}, {"print", Op_K_print, LEX_PRINT, 0, 0, 0}, {"printf", Op_K_printf, LEX_PRINTF, 0, 0, 0}, @@ -1888,7 +1888,7 @@ static const struct token tokentab[] = { {"tolower", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_tolower, 0}, {"toupper", Op_builtin, LEX_BUILTIN, NOT_OLD|A(1), do_toupper, 0}, {"while", Op_K_while, LEX_WHILE, BREAK|CONTINUE, 0, 0}, -{"xor", Op_builtin, LEX_BUILTIN, GAWKX|A(2), do_xor, MPF(xor)}, +{"xor", Op_builtin, LEX_BUILTIN, GAWKX, do_xor, MPF(xor)}, }; #if MBS_SUPPORT @@ -3021,33 +3021,30 @@ do_rshift(int nargs) NODE * do_and(int nargs) { - NODE *s1, *s2; - uintmax_t uleft, uright, res; - AWKNUM left, right; + NODE *s1; + uintmax_t res, uval; + AWKNUM val; + int i; - POP_TWO_SCALARS(s1, s2); - if (do_lint) { - if ((s1->flags & (NUMCUR|NUMBER)) == 0) - lintwarn(_("and: received non-numeric first argument")); - if ((s2->flags & (NUMCUR|NUMBER)) == 0) - lintwarn(_("and: received non-numeric second argument")); - } - left = force_number(s1)->numbr; - right = force_number(s2)->numbr; - if (do_lint) { - if (left < 0 || right < 0) - lintwarn(_("and(%f, %f): negative values will give strange results"), left, right); - if (double_to_int(left) != left || double_to_int(right) != right) - lintwarn(_("and(%f, %f): fractional values will be truncated"), left, right); - } + res = ~0; /* start off with all ones */ + if (nargs < 2) + fatal(_("and: called with less than two arguments")); - DEREF(s1); - DEREF(s2); + for (i = 1; nargs > 0; nargs--, i++) { + s1 = POP_SCALAR(); + if (do_lint && (s1->flags & (NUMCUR|NUMBER)) == 0) + lintwarn(_("and: argument %d is non-numeric"), i); - uleft = (uintmax_t) left; - uright = (uintmax_t) right; + val = force_number(s1)->numbr; + if (do_lint && val < 0) + lintwarn(_("and: argument %d negative value %g will give strange results"), i, val); + + uval = (uintmax_t) val; + res &= uval; + + DEREF(s1); + } - res = uleft & uright; return make_integer(res); } @@ -3056,33 +3053,30 @@ do_and(int nargs) NODE * do_or(int nargs) { - NODE *s1, *s2; - uintmax_t uleft, uright, res; - AWKNUM left, right; + NODE *s1; + uintmax_t res, uval; + AWKNUM val; + int i; - POP_TWO_SCALARS(s1, s2); - if (do_lint) { - if ((s1->flags & (NUMCUR|NUMBER)) == 0) - lintwarn(_("or: received non-numeric first argument")); - if ((s2->flags & (NUMCUR|NUMBER)) == 0) - lintwarn(_("or: received non-numeric second argument")); - } - left = force_number(s1)->numbr; - right = force_number(s2)->numbr; - if (do_lint) { - if (left < 0 || right < 0) - lintwarn(_("or(%f, %f): negative values will give strange results"), left, right); - if (double_to_int(left) != left || double_to_int(right) != right) - lintwarn(_("or(%f, %f): fractional values will be truncated"), left, right); - } + res = 0; + if (nargs < 2) + fatal(_("or: called with less than two arguments")); - DEREF(s1); - DEREF(s2); + for (i = 1; nargs > 0; nargs--, i++) { + s1 = POP_SCALAR(); + if (do_lint && (s1->flags & (NUMCUR|NUMBER)) == 0) + lintwarn(_("or: argument %d is non-numeric"), i); + + val = force_number(s1)->numbr; + if (do_lint && val < 0) + lintwarn(_("or: argument %d negative value %g will give strange results"), i, val); - uleft = (uintmax_t) left; - uright = (uintmax_t) right; + uval = (uintmax_t) val; + res |= uval; + + DEREF(s1); + } - res = uleft | uright; return make_integer(res); } @@ -3091,34 +3085,33 @@ do_or(int nargs) NODE * do_xor(int nargs) { - NODE *s1, *s2; - uintmax_t uleft, uright, res; - AWKNUM left, right; + NODE *s1; + uintmax_t res, uval; + AWKNUM val; + int i; - POP_TWO_SCALARS(s1, s2); + if (nargs < 2) + fatal(_("xor: called with less than two arguments")); - if (do_lint) { - if ((s1->flags & (NUMCUR|NUMBER)) == 0) - lintwarn(_("xor: received non-numeric first argument")); - if ((s2->flags & (NUMCUR|NUMBER)) == 0) - lintwarn(_("xor: received non-numeric second argument")); - } - left = force_number(s1)->numbr; - right = force_number(s2)->numbr; - if (do_lint) { - if (left < 0 || right < 0) - lintwarn(_("xor(%f, %f): negative values will give strange results"), left, right); - if (double_to_int(left) != left || double_to_int(right) != right) - lintwarn(_("xor(%f, %f): fractional values will be truncated"), left, right); - } + res = 0; /* silence compiler warning */ + for (i = 1; nargs > 0; nargs--, i++) { + s1 = POP_SCALAR(); + if (do_lint && (s1->flags & (NUMCUR|NUMBER)) == 0) + lintwarn(_("xor: argument %d is non-numeric"), i); - DEREF(s1); - DEREF(s2); + val = force_number(s1)->numbr; + if (do_lint && val < 0) + lintwarn(_("xor: argument %d negative value %g will give strange results"), i, val); - uleft = (uintmax_t) left; - uright = (uintmax_t) right; + uval = (uintmax_t) val; + if (i == 1) + res = uval; + else + res ^= uval; + + DEREF(s1); + } - res = uleft ^ uright; return make_integer(res); } diff --git a/doc/ChangeLog b/doc/ChangeLog index 421be549..1628e796 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2012-07-04 Arnold D. Robbins <arnold@skeeve.com> + + * gawk.texi, gawk.1, awkcard.in: Document that and(), or(), and + xor() can all take any number of arguments, with a minimum of two. + 2012-06-10 Andrew J. Schorr <aschorr@telemetry-investments.com> * gawk.texi: Rename gettimeofday function to getlocaltime, since diff --git a/doc/awkcard.in b/doc/awkcard.in index b7d87691..d0c1578a 100644 --- a/doc/awkcard.in +++ b/doc/awkcard.in @@ -1811,10 +1811,9 @@ provides the following functions for doing bitwise operations. .fi .in +.2i .ti -.2i -\*(FCand(\*(FIv1\*(FC, \*(FIv2\*(FC)\*(FR +\*(FCand(\*(FIv1\*(FC, \*(FIv2\*(FR [\*(FC,\*(FR ... ]\*(FC)\*(FR .br -Return the bitwise AND of the values provided by -\*(FIv1\*(FR and \*(FIv2\*(FR. +Return the bitwise AND of the arguments. .ti -.2i \*(FCcompl(\*(FIval\*(FC)\*(FR .br @@ -1826,20 +1825,18 @@ Return the bitwise complement of Return the value of \*(FIval\*(FR, shifted left by \*(FIcount\*(FR bits. .ti -.2i -\*(FCor(\*(FIv1\*(FC, \*(FIv2\*(FC)\*(FR +\*(FCor(\*(FIv1\*(FC, \*(FIv2\*(FR [\*(FC,\*(FR ... ]\*(FC)\*(FR .br -Return the bitwise OR of the values provided by -\*(FIv1\*(FR and \*(FIv2\*(FR. +Return the bitwise OR of the arguments. .ti -.2i \*(FCrshift(\*(FIval\*(FC, \*(FIcount\*(FC)\*(FR .br Return the value of \*(FIval\*(FR, shifted right by \*(FIcount\*(FR bits. .ti -.2i -\*(FCxor(\*(FIv1\*(FC, \*(FIv2\*(FC)\*(FR +\*(FCxor(\*(FIv1\*(FC, \*(FIv2\*(FR [\*(FC,\*(FR ... ]\*(FC)\*(FR .br -Return the bitwise XOR of the values provided by -\*(FIv1\*(FR and \*(FIv2\*(FR.\*(CB +Return the bitwise XOR of the arguments.\*(CB .in -.2i .EB "\s+2\f(HBBIT MANIPULATION FUNCTIONS (\*(GK\f(HB)\*(FR\s0" .sp .6 @@ -2977,11 +2977,9 @@ integers, doing the operation, and then converting the result back to floating point. The functions are: .TP "\w'\fBrshift(\fIval\fB, \fIcount\fB)\fR'u+2n" -\fBand(\fIv1\fB, \fIv2\fB)\fR -Return the bitwise AND of the values provided by -.I v1 -and -.IR v2 . +\fBand(\fIv1\fB, \fIv2 \fR[, ...]\fB)\fR +Return the bitwise AND of the values provided in the argument list. +There must be at least two. .TP \fBcompl(\fIval\fB)\fR Return the bitwise complement of @@ -2994,11 +2992,9 @@ shifted left by .I count bits. .TP -\fBor(\fIv1\fB, \fIv2\fB)\fR -Return the bitwise OR of the values provided by -.I v1 -and -.IR v2 . +\fBor(\fIv1\fB, \fIv2 \fR[, ...]\fB)\fR +Return the bitwise OR of the values provided in the argument list. +There must be at least two. .TP \fBrshift(\fIval\fB, \fIcount\fB)\fR Return the value of @@ -3007,11 +3003,9 @@ shifted right by .I count bits. .TP -\fBxor(\fIv1\fB, \fIv2\fB)\fR -Return the bitwise XOR of the values provided by -.I v1 -and -.IR v2 . +\fBxor(\fIv1\fB, \fIv2 \fR[, ...]\fB)\fR +Return the bitwise XOR of the values provided in the argument list. +There must be at least two. .PP .SS Type Function The following function is for use with multidimensional arrays. diff --git a/doc/gawk.info b/doc/gawk.info index 8c939844..57c5ec26 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -3384,7 +3384,7 @@ Class Meaning `[:upper:]' Uppercase alphabetic characters. `[:xdigit:]'Characters that are hexadecimal digits. -Table 3.1: POSIX Character Classes +Table 3.1: POSIX Character Classes For example, before the POSIX standard, you had to write `/[A-Za-z0-9]/' to match alphanumeric characters. If your character @@ -5347,7 +5347,7 @@ COMMAND `|& getline' Sets `$0' and `NF' Extension COMMAND `|& getline' Sets VAR Extension VAR -Table 4.1: getline Variants and What They Set +Table 4.1: getline Variants and What They Set File: gawk.info, Node: Read Timeout, Next: Command line directories, Prev: Getline, Up: Reading Files @@ -7015,7 +7015,7 @@ Feature Default `--posix' or `--use-lc-numeric' Input Use period Use locale `strtonum()'Use period Use locale -Table 6.1: Locale Decimal Point versus A Period +Table 6.1: Locale Decimal Point versus A Period Finally, modern day formal standards and IEEE standard floating point representation can have an unusual but important effect on the way @@ -7357,7 +7357,7 @@ LVALUE `%=' MODULUS Sets LVALUE to its remainder by MODULUS. LVALUE `^=' POWER LVALUE `**=' POWER Raises LVALUE to the power POWER. (c.e.) -Table 6.2: Arithmetic Assignment Operators +Table 6.2: Arithmetic Assignment Operators NOTE: Only the `^=' operator is specified by POSIX. For maximum portability, do not use the `**=' operator. @@ -7662,7 +7662,7 @@ X `!~' Y True if the string X does not match the regexp SUBSCRIPT `in' True if the array ARRAY has an element with the ARRAY subscript SUBSCRIPT. -Table 6.3: Relational Operators +Table 6.3: Relational Operators Comparison expressions have the value one if true and zero if false. When comparing operands of mixed types, numeric operands are converted @@ -11500,7 +11500,7 @@ is illustrated in *note table-sub-escapes::. `\\\\\\&' `\\\&' a literal `\\&' `\\q' `\q' a literal `\q' -Table 9.1: Historical Escape Sequence Processing for `sub()' and +Table 9.1: Historical Escape Sequence Processing for `sub()' and `gsub()' This table shows both the lexical-level processing, where an odd number @@ -11525,8 +11525,7 @@ literally. The interpretation of `\' and `&' then becomes as shown in `\\\\&' `\\&' a literal `\', then the matched text `\\\\\\&' `\\\&' a literal `\&' -Table 9.2: 1992 POSIX Rules for sub and gsub Escape Sequence -Processing +Table 9.2: 1992 POSIX Rules for sub and gsub Escape Sequence Processing This appears to solve the problem. Unfortunately, the phrasing of the standard is unusual. It says, in effect, that `\' turns off the special @@ -11555,7 +11554,7 @@ table-sub-proposed::. `\\q' `\q' a literal `\q' `\\\\' `\\' `\\' -Table 9.3: Proposed rules for sub and backslash +Table 9.3: Proposed rules for sub and backslash In a nutshell, at the runtime level, there are now three special sequences of characters (`\\\&', `\\&' and `\&') whereas historically @@ -11582,7 +11581,7 @@ rules are presented in *note table-posix-sub::. `\\q' `\q' a literal `\q' `\\\\' `\\' `\' -Table 9.4: POSIX rules for `sub()' and `gsub()' +Table 9.4: POSIX rules for `sub()' and `gsub()' The only case where the difference is noticeable is the last one: `\\\\' is seen as `\\' and produces `\' instead of `\\'. @@ -11614,7 +11613,7 @@ the `\' does not, as shown in *note table-gensub-escapes::. `\\\\\\&' `\\\&' a literal `\&' `\\q' `\q' a literal `q' -Table 9.5: Escape Sequence Processing for `gensub()' +Table 9.5: Escape Sequence Processing for `gensub()' Because of the complexity of the lexical and runtime level processing and the special cases for `sub()' and `gsub()', we recommend the use of @@ -12163,7 +12162,7 @@ table-bitwise-ops::. 0 | 0 0 | 0 1 | 0 1 1 | 0 1 | 1 1 | 1 0 -Table 9.6: Bitwise Operations +Table 9.6: Bitwise Operations As you can see, the result of an AND operation is 1 only when _both_ bits are 1. The result of an OR operation is 1 if _either_ bit is 1. @@ -12179,8 +12178,9 @@ again with `10111001' and shift it left by three bits, you end up with `11001000'. `gawk' provides built-in functions that implement the bitwise operations just described. They are: -`and(V1, V2)' - Return the bitwise AND of the values provided by V1 and V2. +`and(V1, V2 [, ...])' + Return the bitwise AND of the arguments. There must be at least + two. `compl(VAL)' Return the bitwise complement of VAL. @@ -12188,14 +12188,15 @@ bitwise operations just described. They are: `lshift(VAL, COUNT)' Return the value of VAL, shifted left by COUNT bits. -`or(V1, V2)' - Return the bitwise OR of the values provided by V1 and V2. +`or(V1, V2 [, ...])' + Return the bitwise OR of the arguments. There must be at least two. `rshift(VAL, COUNT)' Return the value of VAL, shifted right by COUNT bits. -`xor(V1, V2)' - Return the bitwise XOR of the values provided by V1 and V2. +`xor(V1, V2 [, ...])' + Return the bitwise XOR of the arguments. There must be at least + two. For all of these functions, first the double precision floating-point value is converted to the widest C unsigned integer @@ -13975,7 +13976,7 @@ Single 32 24 -126 +127 Double 64 53 -1022 +1023 Quadruple 128 113 -16382 +16383 -Table 11.1: Basic IEEE Formats +Table 11.1: Basic IEEE Formats NOTE: The precision numbers include the implied leading one that gives them one extra bit of significand. @@ -14018,7 +14019,7 @@ Round toward zero `roundTowardZero' `"Z"' or `"z"' Round to nearest, ties away `roundTiesToAway' `"A"' or `"a"' from zero -Table 11.2: Rounding Modes +Table 11.2: Rounding Modes The default mode `roundTiesToEven' is the most preferred, but the least intuitive. This method does the obvious thing for most values, by @@ -25724,7 +25725,7 @@ Index * * (asterisk), * operator, as regexp operator: Regexp Operators. (line 87) * * (asterisk), * operator, null strings, matching: Gory Details. - (line 165) + (line 164) * * (asterisk), ** operator <1>: Precedence. (line 49) * * (asterisk), ** operator: Arithmetic Ops. (line 81) * * (asterisk), **= operator <1>: Precedence. (line 95) @@ -25971,7 +25972,7 @@ Index (line 23) * advanced features, network connections, See Also networks, connections: Advanced Features. (line 6) -* advanced features, null strings, matching: Gory Details. (line 165) +* advanced features, null strings, matching: Gory Details. (line 164) * advanced features, operators, precedence: Increment Ops. (line 61) * advanced features, piping into sh: Redirection. (line 143) * advanced features, regexp constants: Assignment Ops. (line 148) @@ -26070,7 +26071,7 @@ Index * asterisk (*), * operator, as regexp operator: Regexp Operators. (line 87) * asterisk (*), * operator, null strings, matching: Gory Details. - (line 165) + (line 164) * asterisk (*), ** operator <1>: Precedence. (line 49) * asterisk (*), ** operator: Arithmetic Ops. (line 81) * asterisk (*), **= operator <1>: Precedence. (line 95) @@ -26231,7 +26232,7 @@ Index (line 33) * BINMODE variable <1>: PC Using. (line 34) * BINMODE variable: User-modified. (line 10) -* bits2str() user-defined function: Bitwise Functions. (line 68) +* bits2str() user-defined function: Bitwise Functions. (line 70) * bitwise, complement: Bitwise Functions. (line 25) * bitwise, operations: Bitwise Functions. (line 6) * bitwise, shift: Bitwise Functions. (line 32) @@ -26400,7 +26401,7 @@ Index * compiling gawk for MS-DOS and MS-Windows: PC Compiling. (line 13) * compiling gawk for VMS: VMS Compilation. (line 6) * compiling gawk with EMX for OS/2: PC Compiling. (line 28) -* compl() function (gawk): Bitwise Functions. (line 42) +* compl() function (gawk): Bitwise Functions. (line 43) * complement, bitwise: Bitwise Functions. (line 25) * compound statements, control statements and: Statements. (line 10) * concatenating: Concatenation. (line 9) @@ -26426,9 +26427,9 @@ Index * converting, dates to timestamps: Time Functions. (line 74) * converting, during subscripting: Numeric Array Subscripts. (line 31) -* converting, numbers to strings <1>: Bitwise Functions. (line 107) +* converting, numbers to strings <1>: Bitwise Functions. (line 109) * converting, numbers to strings: Conversion. (line 6) -* converting, strings to numbers <1>: Bitwise Functions. (line 107) +* converting, strings to numbers <1>: Bitwise Functions. (line 109) * converting, strings to numbers: Conversion. (line 6) * CONVFMT variable <1>: User-modified. (line 28) * CONVFMT variable: Conversion. (line 29) @@ -27502,7 +27503,7 @@ Index * loops, See Also while statement: While Statement. (line 6) * Lost In Space: Dynamic Extensions. (line 6) * ls utility: More Complex. (line 15) -* lshift() function (gawk): Bitwise Functions. (line 45) +* lshift() function (gawk): Bitwise Functions. (line 46) * lvalues/rvalues: Assignment Ops. (line 32) * mailing labels, printing: Labels Program. (line 6) * mailing list, GNITS: Acknowledgments. (line 52) @@ -27520,7 +27521,7 @@ Index * matching, expressions, See comparison expressions: Typing and Comparison. (line 9) * matching, leftmost longest: Multiple Line. (line 26) -* matching, null strings: Gory Details. (line 165) +* matching, null strings: Gory Details. (line 164) * mawk program: Other Versions. (line 35) * McPhee, Patrick: Contributors. (line 100) * memory, releasing: Internals. (line 92) @@ -27605,7 +27606,7 @@ Index * null strings, as array subscripts: Uninitialized Subscripts. (line 43) * null strings, converting numbers to strings: Conversion. (line 21) -* null strings, matching: Gory Details. (line 165) +* null strings, matching: Gory Details. (line 164) * null strings, quoting and: Quoting. (line 62) * number sign (#), #! (executable scripts): Executable Scripts. (line 6) @@ -27618,7 +27619,7 @@ Index * numbers, as values of characters: Ordinal Functions. (line 6) * numbers, Cliff random: Cliff Random Function. (line 6) -* numbers, converting <1>: Bitwise Functions. (line 107) +* numbers, converting <1>: Bitwise Functions. (line 109) * numbers, converting: Conversion. (line 6) * numbers, converting, to strings: User-modified. (line 28) * numbers, floating-point: Basic Data Typing. (line 21) @@ -27692,7 +27693,7 @@ Index * options, printing list of: Options. (line 168) * OR bitwise operation: Bitwise Functions. (line 6) * or Boolean-logic operator: Boolean Ops. (line 6) -* or() function (gawk): Bitwise Functions. (line 48) +* or() function (gawk): Bitwise Functions. (line 49) * ord() user-defined function: Ordinal Functions. (line 16) * order of evaluation, concatenation: Concatenation. (line 42) * ORS variable <1>: User-modified. (line 129) @@ -28056,7 +28057,7 @@ Index * RS variable <1>: User-modified. (line 143) * RS variable: Records. (line 20) * RS variable, multiline records and: Multiple Line. (line 17) -* rshift() function (gawk): Bitwise Functions. (line 51) +* rshift() function (gawk): Bitwise Functions. (line 52) * RSTART variable: Auto-set. (line 207) * RSTART variable, match() function and: String Functions. (line 223) * RT variable <1>: Auto-set. (line 214) @@ -28220,7 +28221,7 @@ Index * string operators: Concatenation. (line 9) * string-matching operators: Regexp Usage. (line 19) * strings: Internals. (line 77) -* strings, converting <1>: Bitwise Functions. (line 107) +* strings, converting <1>: Bitwise Functions. (line 109) * strings, converting: Conversion. (line 6) * strings, converting, numbers to: User-modified. (line 28) * strings, empty, See null strings: Records. (line 102) @@ -28267,7 +28268,7 @@ Index * tee utility: Tee Program. (line 6) * tee.awk program: Tee Program. (line 26) * terminating records: Records. (line 112) -* testbits.awk program: Bitwise Functions. (line 68) +* testbits.awk program: Bitwise Functions. (line 70) * Texinfo <1>: Adding Code. (line 99) * Texinfo <2>: Distribution contents. (line 79) @@ -28476,7 +28477,7 @@ Index * xgettext utility: String Extraction. (line 13) * XML (eXtensible Markup Language): Internals. (line 157) * XOR bitwise operation: Bitwise Functions. (line 6) -* xor() function (gawk): Bitwise Functions. (line 54) +* xor() function (gawk): Bitwise Functions. (line 55) * Yawitz, Efraim: Contributors. (line 106) * Zaretskii, Eli <1>: Bugs. (line 70) * Zaretskii, Eli <2>: Contributors. (line 56) @@ -28573,381 +28574,381 @@ Ref: Regexp Operators-Footnote-1149826 Ref: Regexp Operators-Footnote-2149973 Node: Bracket Expressions150071 Ref: table-char-classes151961 -Node: GNU Regexp Operators154487 -Node: Case-sensitivity158210 -Ref: Case-sensitivity-Footnote-1161178 -Ref: Case-sensitivity-Footnote-2161413 -Node: Leftmost Longest161521 -Node: Computed Regexps162722 -Node: Reading Files166132 -Node: Records168136 -Ref: Records-Footnote-1176810 -Node: Fields176847 -Ref: Fields-Footnote-1179880 -Node: Nonconstant Fields179966 -Node: Changing Fields182168 -Node: Field Separators188149 -Node: Default Field Splitting190778 -Node: Regexp Field Splitting191895 -Node: Single Character Fields195237 -Node: Command Line Field Separator196296 -Node: Field Splitting Summary199737 -Ref: Field Splitting Summary-Footnote-1202929 -Node: Constant Size203030 -Node: Splitting By Content207614 -Ref: Splitting By Content-Footnote-1211340 -Node: Multiple Line211380 -Ref: Multiple Line-Footnote-1217227 -Node: Getline217406 -Node: Plain Getline219622 -Node: Getline/Variable221711 -Node: Getline/File222852 -Node: Getline/Variable/File224174 -Ref: Getline/Variable/File-Footnote-1225773 -Node: Getline/Pipe225860 -Node: Getline/Variable/Pipe228420 -Node: Getline/Coprocess229527 -Node: Getline/Variable/Coprocess230770 -Node: Getline Notes231484 -Node: Getline Summary233426 -Ref: table-getline-variants233769 -Node: Read Timeout234628 -Ref: Read Timeout-Footnote-1238373 -Node: Command line directories238430 -Node: Printing239060 -Node: Print240691 -Node: Print Examples242028 -Node: Output Separators244812 -Node: OFMT246572 -Node: Printf247930 -Node: Basic Printf248836 -Node: Control Letters250375 -Node: Format Modifiers254187 -Node: Printf Examples260196 -Node: Redirection262911 -Node: Special Files269895 -Node: Special FD270428 -Ref: Special FD-Footnote-1274053 -Node: Special Network274127 -Node: Special Caveats274977 -Node: Close Files And Pipes275773 -Ref: Close Files And Pipes-Footnote-1282796 -Ref: Close Files And Pipes-Footnote-2282944 -Node: Expressions283094 -Node: Values284226 -Node: Constants284902 -Node: Scalar Constants285582 -Ref: Scalar Constants-Footnote-1286441 -Node: Nondecimal-numbers286623 -Node: Regexp Constants289682 -Node: Using Constant Regexps290157 -Node: Variables293212 -Node: Using Variables293867 -Node: Assignment Options295591 -Node: Conversion297463 -Ref: table-locale-affects302839 -Ref: Conversion-Footnote-1303466 -Node: All Operators303575 -Node: Arithmetic Ops304205 -Node: Concatenation306710 -Ref: Concatenation-Footnote-1309503 -Node: Assignment Ops309623 -Ref: table-assign-ops314611 -Node: Increment Ops316022 -Node: Truth Values and Conditions319492 -Node: Truth Values320575 -Node: Typing and Comparison321624 -Node: Variable Typing322413 -Ref: Variable Typing-Footnote-1326310 -Node: Comparison Operators326432 -Ref: table-relational-ops326842 -Node: POSIX String Comparison330394 -Ref: POSIX String Comparison-Footnote-1331350 -Node: Boolean Ops331488 -Ref: Boolean Ops-Footnote-1335566 -Node: Conditional Exp335657 -Node: Function Calls337389 -Node: Precedence340983 -Node: Locales344652 -Node: Patterns and Actions345741 -Node: Pattern Overview346795 -Node: Regexp Patterns348464 -Node: Expression Patterns349007 -Node: Ranges352692 -Node: BEGIN/END355658 -Node: Using BEGIN/END356420 -Ref: Using BEGIN/END-Footnote-1359151 -Node: I/O And BEGIN/END359257 -Node: BEGINFILE/ENDFILE361539 -Node: Empty364432 -Node: Using Shell Variables364748 -Node: Action Overview367033 -Node: Statements369390 -Node: If Statement371244 -Node: While Statement372743 -Node: Do Statement374787 -Node: For Statement375943 -Node: Switch Statement379095 -Node: Break Statement381192 -Node: Continue Statement383182 -Node: Next Statement384975 -Node: Nextfile Statement387365 -Node: Exit Statement389910 -Node: Built-in Variables392326 -Node: User-modified393421 -Ref: User-modified-Footnote-1401776 -Node: Auto-set401838 -Ref: Auto-set-Footnote-1411746 -Node: ARGC and ARGV411951 -Node: Arrays415802 -Node: Array Basics417307 -Node: Array Intro418133 -Node: Reference to Elements422451 -Node: Assigning Elements424721 -Node: Array Example425212 -Node: Scanning an Array426944 -Node: Controlling Scanning429258 -Ref: Controlling Scanning-Footnote-1434191 -Node: Delete434507 -Ref: Delete-Footnote-1436942 -Node: Numeric Array Subscripts436999 -Node: Uninitialized Subscripts439182 -Node: Multi-dimensional440810 -Node: Multi-scanning443904 -Node: Arrays of Arrays445495 -Node: Functions450140 -Node: Built-in450962 -Node: Calling Built-in452040 -Node: Numeric Functions454028 -Ref: Numeric Functions-Footnote-1457860 -Ref: Numeric Functions-Footnote-2458217 -Ref: Numeric Functions-Footnote-3458265 -Node: String Functions458534 -Ref: String Functions-Footnote-1482031 -Ref: String Functions-Footnote-2482160 -Ref: String Functions-Footnote-3482408 -Node: Gory Details482495 -Ref: table-sub-escapes484174 -Ref: table-sub-posix-92485531 -Ref: table-sub-proposed486877 -Ref: table-posix-sub488230 -Ref: table-gensub-escapes489779 -Ref: Gory Details-Footnote-1490989 -Ref: Gory Details-Footnote-2491040 -Node: I/O Functions491191 -Ref: I/O Functions-Footnote-1497846 -Node: Time Functions497993 -Ref: Time Functions-Footnote-1508885 -Ref: Time Functions-Footnote-2508953 -Ref: Time Functions-Footnote-3509111 -Ref: Time Functions-Footnote-4509222 -Ref: Time Functions-Footnote-5509334 -Ref: Time Functions-Footnote-6509561 -Node: Bitwise Functions509827 -Ref: table-bitwise-ops510385 -Ref: Bitwise Functions-Footnote-1514548 -Node: Type Functions514732 -Node: I18N Functions515202 -Node: User-defined516829 -Node: Definition Syntax517633 -Ref: Definition Syntax-Footnote-1522543 -Node: Function Example522612 -Node: Function Caveats525206 -Node: Calling A Function525627 -Node: Variable Scope526742 -Node: Pass By Value/Reference528717 -Node: Return Statement532157 -Node: Dynamic Typing535138 -Node: Indirect Calls535873 -Node: Internationalization545558 -Node: I18N and L10N546997 -Node: Explaining gettext547683 -Ref: Explaining gettext-Footnote-1552749 -Ref: Explaining gettext-Footnote-2552933 -Node: Programmer i18n553098 -Node: Translator i18n557298 -Node: String Extraction558091 -Ref: String Extraction-Footnote-1559052 -Node: Printf Ordering559138 -Ref: Printf Ordering-Footnote-1561922 -Node: I18N Portability561986 -Ref: I18N Portability-Footnote-1564435 -Node: I18N Example564498 -Ref: I18N Example-Footnote-1567133 -Node: Gawk I18N567205 -Node: Arbitrary Precision Arithmetic567822 -Ref: Arbitrary Precision Arithmetic-Footnote-1570697 -Node: Floating-point Programming570845 -Node: Floating-point Representation576115 -Node: Floating-point Context577219 -Ref: table-ieee-formats578054 -Node: Rounding Mode579426 -Ref: table-rounding-modes580053 -Ref: Rounding Mode-Footnote-1583178 -Node: Arbitrary Precision Floats583359 -Ref: Arbitrary Precision Floats-Footnote-1585400 -Node: Setting Precision585711 -Node: Setting Rounding Mode588469 -Node: Floating-point Constants589386 -Node: Changing Precision590805 -Ref: Changing Precision-Footnote-1592205 -Node: Exact Arithmetic592378 -Node: Integer Programming595391 -Node: Arbitrary Precision Integers597171 -Ref: Arbitrary Precision Integers-Footnote-1600195 -Node: MPFR and GMP Libraries600341 -Node: Advanced Features600726 -Node: Nondecimal Data602249 -Node: Array Sorting603832 -Node: Controlling Array Traversal604529 -Node: Array Sorting Functions612766 -Ref: Array Sorting Functions-Footnote-1616440 -Ref: Array Sorting Functions-Footnote-2616533 -Node: Two-way I/O616727 -Ref: Two-way I/O-Footnote-1622159 -Node: TCP/IP Networking622229 -Node: Profiling625073 -Node: Library Functions632527 -Ref: Library Functions-Footnote-1635534 -Node: Library Names635705 -Ref: Library Names-Footnote-1639176 -Ref: Library Names-Footnote-2639396 -Node: General Functions639482 -Node: Strtonum Function640435 -Node: Assert Function643365 -Node: Round Function646691 -Node: Cliff Random Function648234 -Node: Ordinal Functions649250 -Ref: Ordinal Functions-Footnote-1652320 -Ref: Ordinal Functions-Footnote-2652572 -Node: Join Function652781 -Ref: Join Function-Footnote-1654552 -Node: Getlocaltime Function654752 -Node: Data File Management658467 -Node: Filetrans Function659099 -Node: Rewind Function663238 -Node: File Checking664625 -Node: Empty Files665719 -Node: Ignoring Assigns667949 -Node: Getopt Function669502 -Ref: Getopt Function-Footnote-1680806 -Node: Passwd Functions681009 -Ref: Passwd Functions-Footnote-1689984 -Node: Group Functions690072 -Node: Walking Arrays698156 -Node: Sample Programs699725 -Node: Running Examples700390 -Node: Clones701118 -Node: Cut Program702342 -Node: Egrep Program712187 -Ref: Egrep Program-Footnote-1719960 -Node: Id Program720070 -Node: Split Program723686 -Ref: Split Program-Footnote-1727205 -Node: Tee Program727333 -Node: Uniq Program730136 -Node: Wc Program737565 -Ref: Wc Program-Footnote-1741831 -Ref: Wc Program-Footnote-2742031 -Node: Miscellaneous Programs742123 -Node: Dupword Program743311 -Node: Alarm Program745342 -Node: Translate Program750091 -Ref: Translate Program-Footnote-1754478 -Ref: Translate Program-Footnote-2754706 -Node: Labels Program754840 -Ref: Labels Program-Footnote-1758211 -Node: Word Sorting758295 -Node: History Sorting762179 -Node: Extract Program764018 -Ref: Extract Program-Footnote-1771501 -Node: Simple Sed771629 -Node: Igawk Program774691 -Ref: Igawk Program-Footnote-1789848 -Ref: Igawk Program-Footnote-2790049 -Node: Anagram Program790187 -Node: Signature Program793255 -Node: Debugger794355 -Node: Debugging795307 -Node: Debugging Concepts795740 -Node: Debugging Terms797596 -Node: Awk Debugging800193 -Node: Sample Debugging Session801085 -Node: Debugger Invocation801605 -Node: Finding The Bug802934 -Node: List of Debugger Commands809422 -Node: Breakpoint Control810756 -Node: Debugger Execution Control814420 -Node: Viewing And Changing Data817780 -Node: Execution Stack821136 -Node: Debugger Info822603 -Node: Miscellaneous Debugger Commands826584 -Node: Readline Support832029 -Node: Limitations832860 -Node: Language History835112 -Node: V7/SVR3.1836624 -Node: SVR4838945 -Node: POSIX840387 -Node: BTL841395 -Node: POSIX/GNU842129 -Node: Common Extensions847420 -Node: Ranges and Locales848527 -Ref: Ranges and Locales-Footnote-1853131 -Node: Contributors853352 -Node: Installation857613 -Node: Gawk Distribution858507 -Node: Getting858991 -Node: Extracting859817 -Node: Distribution contents861509 -Node: Unix Installation866731 -Node: Quick Installation867348 -Node: Additional Configuration Options869310 -Node: Configuration Philosophy870787 -Node: Non-Unix Installation873129 -Node: PC Installation873587 -Node: PC Binary Installation874886 -Node: PC Compiling876734 -Node: PC Testing879678 -Node: PC Using880854 -Node: Cygwin885039 -Node: MSYS886039 -Node: VMS Installation886553 -Node: VMS Compilation887156 -Ref: VMS Compilation-Footnote-1888163 -Node: VMS Installation Details888221 -Node: VMS Running889856 -Node: VMS Old Gawk891463 -Node: Bugs891937 -Node: Other Versions895789 -Node: Notes901104 -Node: Compatibility Mode901796 -Node: Additions902579 -Node: Accessing The Source903391 -Node: Adding Code904816 -Node: New Ports910783 -Node: Dynamic Extensions914896 -Node: Internals916336 -Node: Plugin License925158 -Node: Loading Extensions925796 -Node: Sample Library927637 -Node: Internal File Description928327 -Node: Internal File Ops932042 -Ref: Internal File Ops-Footnote-1936607 -Node: Using Internal File Ops936747 -Node: Future Extensions939125 -Node: Basic Concepts941629 -Node: Basic High Level942386 -Ref: Basic High Level-Footnote-1946421 -Node: Basic Data Typing946606 -Node: Floating Point Issues951131 -Node: String Conversion Precision952214 -Ref: String Conversion Precision-Footnote-1953914 -Node: Unexpected Results954023 -Node: POSIX Floating Point Problems955849 -Ref: POSIX Floating Point Problems-Footnote-1959554 -Node: Glossary959592 -Node: Copying984568 -Node: GNU Free Documentation License1022125 -Node: Index1047262 +Node: GNU Regexp Operators154484 +Node: Case-sensitivity158207 +Ref: Case-sensitivity-Footnote-1161175 +Ref: Case-sensitivity-Footnote-2161410 +Node: Leftmost Longest161518 +Node: Computed Regexps162719 +Node: Reading Files166129 +Node: Records168133 +Ref: Records-Footnote-1176807 +Node: Fields176844 +Ref: Fields-Footnote-1179877 +Node: Nonconstant Fields179963 +Node: Changing Fields182165 +Node: Field Separators188146 +Node: Default Field Splitting190775 +Node: Regexp Field Splitting191892 +Node: Single Character Fields195234 +Node: Command Line Field Separator196293 +Node: Field Splitting Summary199734 +Ref: Field Splitting Summary-Footnote-1202926 +Node: Constant Size203027 +Node: Splitting By Content207611 +Ref: Splitting By Content-Footnote-1211337 +Node: Multiple Line211377 +Ref: Multiple Line-Footnote-1217224 +Node: Getline217403 +Node: Plain Getline219619 +Node: Getline/Variable221708 +Node: Getline/File222849 +Node: Getline/Variable/File224171 +Ref: Getline/Variable/File-Footnote-1225770 +Node: Getline/Pipe225857 +Node: Getline/Variable/Pipe228417 +Node: Getline/Coprocess229524 +Node: Getline/Variable/Coprocess230767 +Node: Getline Notes231481 +Node: Getline Summary233423 +Ref: table-getline-variants233766 +Node: Read Timeout234622 +Ref: Read Timeout-Footnote-1238367 +Node: Command line directories238424 +Node: Printing239054 +Node: Print240685 +Node: Print Examples242022 +Node: Output Separators244806 +Node: OFMT246566 +Node: Printf247924 +Node: Basic Printf248830 +Node: Control Letters250369 +Node: Format Modifiers254181 +Node: Printf Examples260190 +Node: Redirection262905 +Node: Special Files269889 +Node: Special FD270422 +Ref: Special FD-Footnote-1274047 +Node: Special Network274121 +Node: Special Caveats274971 +Node: Close Files And Pipes275767 +Ref: Close Files And Pipes-Footnote-1282790 +Ref: Close Files And Pipes-Footnote-2282938 +Node: Expressions283088 +Node: Values284220 +Node: Constants284896 +Node: Scalar Constants285576 +Ref: Scalar Constants-Footnote-1286435 +Node: Nondecimal-numbers286617 +Node: Regexp Constants289676 +Node: Using Constant Regexps290151 +Node: Variables293206 +Node: Using Variables293861 +Node: Assignment Options295585 +Node: Conversion297457 +Ref: table-locale-affects302833 +Ref: Conversion-Footnote-1303457 +Node: All Operators303566 +Node: Arithmetic Ops304196 +Node: Concatenation306701 +Ref: Concatenation-Footnote-1309494 +Node: Assignment Ops309614 +Ref: table-assign-ops314602 +Node: Increment Ops316010 +Node: Truth Values and Conditions319480 +Node: Truth Values320563 +Node: Typing and Comparison321612 +Node: Variable Typing322401 +Ref: Variable Typing-Footnote-1326298 +Node: Comparison Operators326420 +Ref: table-relational-ops326830 +Node: POSIX String Comparison330379 +Ref: POSIX String Comparison-Footnote-1331335 +Node: Boolean Ops331473 +Ref: Boolean Ops-Footnote-1335551 +Node: Conditional Exp335642 +Node: Function Calls337374 +Node: Precedence340968 +Node: Locales344637 +Node: Patterns and Actions345726 +Node: Pattern Overview346780 +Node: Regexp Patterns348449 +Node: Expression Patterns348992 +Node: Ranges352677 +Node: BEGIN/END355643 +Node: Using BEGIN/END356405 +Ref: Using BEGIN/END-Footnote-1359136 +Node: I/O And BEGIN/END359242 +Node: BEGINFILE/ENDFILE361524 +Node: Empty364417 +Node: Using Shell Variables364733 +Node: Action Overview367018 +Node: Statements369375 +Node: If Statement371229 +Node: While Statement372728 +Node: Do Statement374772 +Node: For Statement375928 +Node: Switch Statement379080 +Node: Break Statement381177 +Node: Continue Statement383167 +Node: Next Statement384960 +Node: Nextfile Statement387350 +Node: Exit Statement389895 +Node: Built-in Variables392311 +Node: User-modified393406 +Ref: User-modified-Footnote-1401761 +Node: Auto-set401823 +Ref: Auto-set-Footnote-1411731 +Node: ARGC and ARGV411936 +Node: Arrays415787 +Node: Array Basics417292 +Node: Array Intro418118 +Node: Reference to Elements422436 +Node: Assigning Elements424706 +Node: Array Example425197 +Node: Scanning an Array426929 +Node: Controlling Scanning429243 +Ref: Controlling Scanning-Footnote-1434176 +Node: Delete434492 +Ref: Delete-Footnote-1436927 +Node: Numeric Array Subscripts436984 +Node: Uninitialized Subscripts439167 +Node: Multi-dimensional440795 +Node: Multi-scanning443889 +Node: Arrays of Arrays445480 +Node: Functions450125 +Node: Built-in450947 +Node: Calling Built-in452025 +Node: Numeric Functions454013 +Ref: Numeric Functions-Footnote-1457845 +Ref: Numeric Functions-Footnote-2458202 +Ref: Numeric Functions-Footnote-3458250 +Node: String Functions458519 +Ref: String Functions-Footnote-1482016 +Ref: String Functions-Footnote-2482145 +Ref: String Functions-Footnote-3482393 +Node: Gory Details482480 +Ref: table-sub-escapes484159 +Ref: table-sub-posix-92485513 +Ref: table-sub-proposed486856 +Ref: table-posix-sub488206 +Ref: table-gensub-escapes489752 +Ref: Gory Details-Footnote-1490959 +Ref: Gory Details-Footnote-2491010 +Node: I/O Functions491161 +Ref: I/O Functions-Footnote-1497816 +Node: Time Functions497963 +Ref: Time Functions-Footnote-1508855 +Ref: Time Functions-Footnote-2508923 +Ref: Time Functions-Footnote-3509081 +Ref: Time Functions-Footnote-4509192 +Ref: Time Functions-Footnote-5509304 +Ref: Time Functions-Footnote-6509531 +Node: Bitwise Functions509797 +Ref: table-bitwise-ops510355 +Ref: Bitwise Functions-Footnote-1514576 +Node: Type Functions514760 +Node: I18N Functions515230 +Node: User-defined516857 +Node: Definition Syntax517661 +Ref: Definition Syntax-Footnote-1522571 +Node: Function Example522640 +Node: Function Caveats525234 +Node: Calling A Function525655 +Node: Variable Scope526770 +Node: Pass By Value/Reference528745 +Node: Return Statement532185 +Node: Dynamic Typing535166 +Node: Indirect Calls535901 +Node: Internationalization545586 +Node: I18N and L10N547025 +Node: Explaining gettext547711 +Ref: Explaining gettext-Footnote-1552777 +Ref: Explaining gettext-Footnote-2552961 +Node: Programmer i18n553126 +Node: Translator i18n557326 +Node: String Extraction558119 +Ref: String Extraction-Footnote-1559080 +Node: Printf Ordering559166 +Ref: Printf Ordering-Footnote-1561950 +Node: I18N Portability562014 +Ref: I18N Portability-Footnote-1564463 +Node: I18N Example564526 +Ref: I18N Example-Footnote-1567161 +Node: Gawk I18N567233 +Node: Arbitrary Precision Arithmetic567850 +Ref: Arbitrary Precision Arithmetic-Footnote-1570725 +Node: Floating-point Programming570873 +Node: Floating-point Representation576143 +Node: Floating-point Context577247 +Ref: table-ieee-formats578082 +Node: Rounding Mode579452 +Ref: table-rounding-modes580079 +Ref: Rounding Mode-Footnote-1583202 +Node: Arbitrary Precision Floats583383 +Ref: Arbitrary Precision Floats-Footnote-1585424 +Node: Setting Precision585735 +Node: Setting Rounding Mode588493 +Node: Floating-point Constants589410 +Node: Changing Precision590829 +Ref: Changing Precision-Footnote-1592229 +Node: Exact Arithmetic592402 +Node: Integer Programming595415 +Node: Arbitrary Precision Integers597195 +Ref: Arbitrary Precision Integers-Footnote-1600219 +Node: MPFR and GMP Libraries600365 +Node: Advanced Features600750 +Node: Nondecimal Data602273 +Node: Array Sorting603856 +Node: Controlling Array Traversal604553 +Node: Array Sorting Functions612790 +Ref: Array Sorting Functions-Footnote-1616464 +Ref: Array Sorting Functions-Footnote-2616557 +Node: Two-way I/O616751 +Ref: Two-way I/O-Footnote-1622183 +Node: TCP/IP Networking622253 +Node: Profiling625097 +Node: Library Functions632551 +Ref: Library Functions-Footnote-1635558 +Node: Library Names635729 +Ref: Library Names-Footnote-1639200 +Ref: Library Names-Footnote-2639420 +Node: General Functions639506 +Node: Strtonum Function640459 +Node: Assert Function643389 +Node: Round Function646715 +Node: Cliff Random Function648258 +Node: Ordinal Functions649274 +Ref: Ordinal Functions-Footnote-1652344 +Ref: Ordinal Functions-Footnote-2652596 +Node: Join Function652805 +Ref: Join Function-Footnote-1654576 +Node: Getlocaltime Function654776 +Node: Data File Management658491 +Node: Filetrans Function659123 +Node: Rewind Function663262 +Node: File Checking664649 +Node: Empty Files665743 +Node: Ignoring Assigns667973 +Node: Getopt Function669526 +Ref: Getopt Function-Footnote-1680830 +Node: Passwd Functions681033 +Ref: Passwd Functions-Footnote-1690008 +Node: Group Functions690096 +Node: Walking Arrays698180 +Node: Sample Programs699749 +Node: Running Examples700414 +Node: Clones701142 +Node: Cut Program702366 +Node: Egrep Program712211 +Ref: Egrep Program-Footnote-1719984 +Node: Id Program720094 +Node: Split Program723710 +Ref: Split Program-Footnote-1727229 +Node: Tee Program727357 +Node: Uniq Program730160 +Node: Wc Program737589 +Ref: Wc Program-Footnote-1741855 +Ref: Wc Program-Footnote-2742055 +Node: Miscellaneous Programs742147 +Node: Dupword Program743335 +Node: Alarm Program745366 +Node: Translate Program750115 +Ref: Translate Program-Footnote-1754502 +Ref: Translate Program-Footnote-2754730 +Node: Labels Program754864 +Ref: Labels Program-Footnote-1758235 +Node: Word Sorting758319 +Node: History Sorting762203 +Node: Extract Program764042 +Ref: Extract Program-Footnote-1771525 +Node: Simple Sed771653 +Node: Igawk Program774715 +Ref: Igawk Program-Footnote-1789872 +Ref: Igawk Program-Footnote-2790073 +Node: Anagram Program790211 +Node: Signature Program793279 +Node: Debugger794379 +Node: Debugging795331 +Node: Debugging Concepts795764 +Node: Debugging Terms797620 +Node: Awk Debugging800217 +Node: Sample Debugging Session801109 +Node: Debugger Invocation801629 +Node: Finding The Bug802958 +Node: List of Debugger Commands809446 +Node: Breakpoint Control810780 +Node: Debugger Execution Control814444 +Node: Viewing And Changing Data817804 +Node: Execution Stack821160 +Node: Debugger Info822627 +Node: Miscellaneous Debugger Commands826608 +Node: Readline Support832053 +Node: Limitations832884 +Node: Language History835136 +Node: V7/SVR3.1836648 +Node: SVR4838969 +Node: POSIX840411 +Node: BTL841419 +Node: POSIX/GNU842153 +Node: Common Extensions847444 +Node: Ranges and Locales848551 +Ref: Ranges and Locales-Footnote-1853155 +Node: Contributors853376 +Node: Installation857637 +Node: Gawk Distribution858531 +Node: Getting859015 +Node: Extracting859841 +Node: Distribution contents861533 +Node: Unix Installation866755 +Node: Quick Installation867372 +Node: Additional Configuration Options869334 +Node: Configuration Philosophy870811 +Node: Non-Unix Installation873153 +Node: PC Installation873611 +Node: PC Binary Installation874910 +Node: PC Compiling876758 +Node: PC Testing879702 +Node: PC Using880878 +Node: Cygwin885063 +Node: MSYS886063 +Node: VMS Installation886577 +Node: VMS Compilation887180 +Ref: VMS Compilation-Footnote-1888187 +Node: VMS Installation Details888245 +Node: VMS Running889880 +Node: VMS Old Gawk891487 +Node: Bugs891961 +Node: Other Versions895813 +Node: Notes901128 +Node: Compatibility Mode901820 +Node: Additions902603 +Node: Accessing The Source903415 +Node: Adding Code904840 +Node: New Ports910807 +Node: Dynamic Extensions914920 +Node: Internals916360 +Node: Plugin License925182 +Node: Loading Extensions925820 +Node: Sample Library927661 +Node: Internal File Description928351 +Node: Internal File Ops932066 +Ref: Internal File Ops-Footnote-1936631 +Node: Using Internal File Ops936771 +Node: Future Extensions939149 +Node: Basic Concepts941653 +Node: Basic High Level942410 +Ref: Basic High Level-Footnote-1946445 +Node: Basic Data Typing946630 +Node: Floating Point Issues951155 +Node: String Conversion Precision952238 +Ref: String Conversion Precision-Footnote-1953938 +Node: Unexpected Results954047 +Node: POSIX Floating Point Problems955873 +Ref: POSIX Floating Point Problems-Footnote-1959578 +Node: Glossary959616 +Node: Copying984592 +Node: GNU Free Documentation License1022149 +Node: Index1047286 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index b8ce91a1..940dc783 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -16473,8 +16473,8 @@ bitwise operations just described. They are: @cindex @command{gawk}, bitwise operations in @table @code @cindex @code{and()} function (@command{gawk}) -@item and(@var{v1}, @var{v2}) -Return the bitwise AND of the values provided by @var{v1} and @var{v2}. +@item and(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) +Return the bitwise AND of the arguments. There must be at least two. @cindex @code{compl()} function (@command{gawk}) @item compl(@var{val}) @@ -16485,16 +16485,16 @@ Return the bitwise complement of @var{val}. Return the value of @var{val}, shifted left by @var{count} bits. @cindex @code{or()} function (@command{gawk}) -@item or(@var{v1}, @var{v2}) -Return the bitwise OR of the values provided by @var{v1} and @var{v2}. +@item or(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) +Return the bitwise OR of the arguments. There must be at least two. @cindex @code{rshift()} function (@command{gawk}) @item rshift(@var{val}, @var{count}) Return the value of @var{val}, shifted right by @var{count} bits. @cindex @code{xor()} function (@command{gawk}) -@item xor(@var{v1}, @var{v2}) -Return the bitwise XOR of the values provided by @var{v1} and @var{v2}. +@item xor(@var{v1}, @var{v2} @r{[}, @r{@dots{}]}) +Return the bitwise XOR of the arguments. There must be at least two. @end table For all of these functions, first the double precision floating-point value is @@ -27583,8 +27583,6 @@ This @value{CHAPTER} briefly describes the evolution of the @command{awk} language, with cross-references to other parts of the @value{DOCUMENT} where you can find more information. -@c FIXME: Try to determine whether it was 3.1 or 3.2 that had new awk. - @menu * V7/SVR3.1:: The major changes between V7 and System V Release 3.1. @@ -27999,6 +27997,7 @@ and @code{xor()} functions for bit manipulation (@pxref{Bitwise Functions}). +@c In 4.1, and(), or() and xor() grew the ability to take > 2 arguments @item The @code{asort()} and @code{asorti()} functions for sorting arrays |