diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | awk.h | 3 | ||||
-rw-r--r-- | builtin.c | 8 | ||||
-rw-r--r-- | doc/gawk.info | 1008 | ||||
-rw-r--r-- | doc/gawk.texi | 65 | ||||
-rw-r--r-- | eval.c | 4 | ||||
-rw-r--r-- | node.c | 4 |
7 files changed, 571 insertions, 529 deletions
@@ -1,3 +1,11 @@ +Fri Dec 31 11:05:11 2010 Michal Jaegermann <michal@harddata.com> + + * awk.h (strncasecmpmbs): Change parameters to const char *. + * builtin.c (strncasecmpmbs): Change parameters to const char *. + Add casts as appropriate in calls to other functions. + * eval.c (cmp_nodes): Add casts in calls to strncasecmpmbs. + * node.c (str2wstr): Ditto. + Tue Dec 28 21:13:31 2010 Eli Zaretskii <eliz@gnu.org> * gawkmisc.c: Restore inclusion of pc/gawkmisc.pc. @@ -1180,7 +1180,8 @@ extern NODE *do_dcgettext(int nargs); extern NODE *do_dcngettext(int nargs); extern NODE *do_bindtextdomain(int nargs); #ifdef MBS_SUPPORT -extern int strncasecmpmbs(const char *, const char *, size_t); +extern int strncasecmpmbs(const unsigned char *, + const unsigned char *, size_t); #endif /* eval.c */ extern void PUSH_CODE(INSTRUCTION *cp); @@ -219,7 +219,7 @@ do_fflush(int nargs) /* strncasecmpmbs --- like strncasecmp (multibyte string version) */ int -strncasecmpmbs(const char *s1, const char *s2, size_t n) +strncasecmpmbs(const unsigned char *s1, const unsigned char *s2, size_t n) { size_t i1, i2, mbclen1, mbclen2, gap; wchar_t wc1, wc2; @@ -233,7 +233,8 @@ strncasecmpmbs(const char *s1, const char *s2, size_t n) mbclen1 = 1; wc1 = btowc_cache[s1[i1]]; } else { - mbclen1 = mbrtowc(& wc1, s1 + i1, n - i1, & mbs1); + mbclen1 = mbrtowc(& wc1, (const char *)s1 + i1, + n - i1, & mbs1); if (mbclen1 == (size_t) -1 || mbclen1 == (size_t) -2 || mbclen1 == 0) { /* We treat it as a singlebyte character. */ mbclen1 = 1; @@ -244,7 +245,8 @@ strncasecmpmbs(const char *s1, const char *s2, size_t n) mbclen2 = 1; wc2 = btowc_cache[s2[i2]]; } else { - mbclen2 = mbrtowc(& wc2, s2 + i2, n - i2, & mbs2); + mbclen2 = mbrtowc(& wc2, (const char *)s2 + i2, + n - i2, & mbs2); if (mbclen2 == (size_t) -1 || mbclen2 == (size_t) -2 || mbclen2 == 0) { /* We treat it as a singlebyte character. */ mbclen2 = 1; diff --git a/doc/gawk.info b/doc/gawk.info index 13fdbc0a..59f0f0fb 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -1406,32 +1406,32 @@ programs, but this usually isn't very useful; the purpose of a comment is to help you or another person understand the program when reading it at a later time. - *Caution:* As mentioned in *note One-shot::, you can enclose small -to medium programs in single quotes, in order to keep your shell -scripts self-contained. When doing so, _don't_ put an apostrophe -(i.e., a single quote) into a comment (or anywhere else in your -program). The shell interprets the quote as the closing quote for the -entire program. As a result, usually the shell prints a message about -mismatched quotes, and if `awk' actually runs, it will probably print -strange messages about syntax errors. For example, look at the -following: - - $ awk '{ print "hello" } # let's be cute' - > - - The shell sees that the first two quotes match, and that a new -quoted object begins at the end of the command line. It therefore -prompts with the secondary prompt, waiting for more input. With Unix -`awk', closing the quoted string produces this result: - - $ awk '{ print "hello" } # let's be cute' - > ' - error--> awk: can't open file be - error--> source line number 1 - - Putting a backslash before the single quote in `let's' wouldn't help, -since backslashes are not special inside single quotes. The next -node describes the shell's quoting rules. + CAUTION: As mentioned in *note One-shot::, you can enclose small + to medium programs in single quotes, in order to keep your shell + scripts self-contained. When doing so, _don't_ put an apostrophe + (i.e., a single quote) into a comment (or anywhere else in your + program). The shell interprets the quote as the closing quote for + the entire program. As a result, usually the shell prints a + message about mismatched quotes, and if `awk' actually runs, it + will probably print strange messages about syntax errors. For + example, look at the following: + + $ awk '{ print "hello" } # let's be cute' + > + + The shell sees that the first two quotes match, and that a new + quoted object begins at the end of the command line. It therefore + prompts with the secondary prompt, waiting for more input. With + Unix `awk', closing the quoted string produces this result: + + $ awk '{ print "hello" } # let's be cute' + > ' + error--> awk: can't open file be + error--> source line number 1 + + Putting a backslash before the single quote in `let's' wouldn't + help, since backslashes are not special inside single quotes. The + next node describes the shell's quoting rules. File: gawk.info, Node: Quoting, Prev: Comments, Up: Running gawk @@ -1914,31 +1914,32 @@ backslash continuation. Thus, for maximum portability of your `awk' programs, it is best not to split your lines in the middle of a regular expression or a string. - *Caution:* _Backslash continuation does not work as described with -the C shell._ It works for `awk' programs in files and for one-shot -programs, _provided_ you are using a POSIX-compliant shell, such as the -Unix Bourne shell or Bash. But the C shell behaves differently! -There, you must use two backslashes in a row, followed by a newline. -Note also that when using the C shell, _every_ newline in your `awk' -program must be escaped with a backslash. To illustrate: + CAUTION: _Backslash continuation does not work as described with + the C shell._ It works for `awk' programs in files and for + one-shot programs, _provided_ you are using a POSIX-compliant + shell, such as the Unix Bourne shell or Bash. But the C shell + behaves differently! There, you must use two backslashes in a + row, followed by a newline. Note also that when using the C + shell, _every_ newline in your `awk' program must be escaped with + a backslash. To illustrate: - % awk 'BEGIN { \ - ? print \\ - ? "hello, world" \ - ? }' - -| hello, world + % awk 'BEGIN { \ + ? print \\ + ? "hello, world" \ + ? }' + -| hello, world -Here, the `%' and `?' are the C shell's primary and secondary prompts, -analogous to the standard shell's `$' and `>'. + Here, the `%' and `?' are the C shell's primary and secondary + prompts, analogous to the standard shell's `$' and `>'. - Compare the previous example to how it is done with a -POSIX-compliant shell: + Compare the previous example to how it is done with a + POSIX-compliant shell: - $ awk 'BEGIN { - > print \ - > "hello, world" - > }' - -| hello, world + $ awk 'BEGIN { + > print \ + > "hello, world" + > }' + -| hello, world `awk' is a line-oriented language. Each rule's action has to begin on the same line as the pattern. To have the pattern and action on @@ -2134,10 +2135,10 @@ The following list describes options mandated by the POSIX standard: than once, setting another variable each time, like this: `awk -v foo=1 -v bar=2 ...'. - *Caution:* Using `-v' to set the values of the built-in variables - may lead to surprising results. `awk' will reset the values of - those variables as it needs to, possibly ignoring any predefined - value you may have given. + CAUTION: Using `-v' to set the values of the built-in + variables may lead to surprising results. `awk' will reset + the values of those variables as it needs to, possibly + ignoring any predefined value you may have given. `-W GAWK-OPT' Provide an implementation-specific option. This is the POSIX @@ -2263,8 +2264,8 @@ The following list describes options mandated by the POSIX standard: Enable automatic interpretation of octal and hexadecimal values in input data (*note Nondecimal Data::). - *Caution:* This option can severely break old programs. Use with - care. + CAUTION: This option can severely break old programs. Use + with care. `-N' `--use-lc-numeric' @@ -3272,9 +3273,10 @@ Equivalence classes These features are very valuable in non-English-speaking locales. - *Caution:* The library functions that `gawk' uses for regular -expression matching currently recognize only POSIX character classes; -they do not recognize collating symbols or equivalence classes. + CAUTION: The library functions that `gawk' uses for regular + expression matching currently recognize only POSIX character + classes; they do not recognize collating symbols or equivalence + classes. File: gawk.info, Node: GNU Regexp Operators, Next: Case-sensitivity, Prev: Character Lists, Up: Regexp @@ -4109,8 +4111,8 @@ value of `NF' and recomputes `$0'. (d.c.) Here is an example: -| NF = 6 -| a b c - *Caution:* Some versions of `awk' don't rebuild `$0' when `NF' is -decremented. Caveat emptor. + CAUTION: Some versions of `awk' don't rebuild `$0' when `NF' is + decremented. Caveat emptor. Finally, there are times when it is convenient to force `awk' to rebuild the entire record, using the current value of the fields and @@ -6774,7 +6776,7 @@ order to separate the semantics of conversion from the semantics of printing. Both `CONVFMT' and `OFMT' have the same default value: `"%.6g"'. In the vast majority of cases, old `awk' programs do not change their behavior. However, these semantics for `OFMT' are -something to keep in mind if you must port your new style program to +something to keep in mind if you must port your new-style program to older implementations of `awk'. We recommend that instead of changing your programs, just port `gawk' itself. *Note Print::, for more information on the `print' statement. @@ -7758,13 +7760,13 @@ examples show function calls with and without arguments: atan2(y, x) two arguments rand() no arguments - *Caution:* Do not put any space between the function name and the -open-parenthesis! A user-defined function name looks just like the -name of a variable--a space would make the expression look like -concatenation of a variable with an expression inside parentheses. -With built-in functions, space before the parenthesis is harmless, but -it is best not to get into the habit of using space to avoid mistakes -with user-defined functions. + CAUTION: Do not put any space between the function name and the + open-parenthesis! A user-defined function name looks just like + the name of a variable--a space would make the expression look + like concatenation of a variable with an expression inside + parentheses. With built-in functions, space before the + parenthesis is harmless, but it is best not to get into the habit + of using space to avoid mistakes with user-defined functions. Each function expects a particular number of arguments. For example, the `sqrt()' function must be called with a single argument, @@ -9949,13 +9951,13 @@ target array first. This call asks it to split apart the null string. Because there is no data to split out, the function simply clears the array and then returns. - *Caution:* Deleting an array does not change its type; you cannot -delete an array and then use the array's name as a scalar (i.e., a -regular variable). For example, the following does not work: + CAUTION: Deleting an array does not change its type; you cannot + delete an array and then use the array's name as a scalar (i.e., a + regular variable). For example, the following does not work: - a[1] = 3 - delete a - a = 3 + a[1] = 3 + delete a + a = 3 ---------- Footnotes ---------- @@ -10527,14 +10529,15 @@ brackets ([ ]): roll(6)+roll(6)+roll(6)) } - *Caution:* In most `awk' implementations, including `gawk', - `rand()' starts generating numbers from the same starting number, - or "seed", each time you run `awk'.(2) Thus, a program generates - the same results each time you run it. The numbers are random - within one `awk' run but predictable from run to run. This is - convenient for debugging, but if you want a program to do - different things each time it is used, you must change the seed to - a value that is different in each run. To do this, use `srand()'. + CAUTION: In most `awk' implementations, including `gawk', + `rand()' starts generating numbers from the same starting + number, or "seed", each time you run `awk'.(2) Thus, a + program generates the same results each time you run it. The + numbers are random within one `awk' run but predictable from + run to run. This is convenient for debugging, but if you want + a program to do different things each time it is used, you + must change the seed to a value that is different in each + run. To do this, use `srand()'. `sin(X)' Return the sine of X, with X in radians. @@ -12107,12 +12110,12 @@ being a string concatenation): foo(x y, "lose", 4 * z) - *Caution:* Whitespace characters (spaces and TABs) are not allowed -between the function name and the open-parenthesis of the argument list. -If you write whitespace by mistake, `awk' might think that you mean to -concatenate a variable with an expression in parentheses. However, it -notices that you used a function name and not a variable name, and -reports an error. + CAUTION: Whitespace characters (spaces and TABs) are not allowed + between the function name and the open-parenthesis of the argument + list. If you write whitespace by mistake, `awk' might think that + you mean to concatenate a variable with an expression in + parentheses. However, it notices that you used a function name + and not a variable name, and reports an error. File: gawk.info, Node: Variable Scope, Next: Pass By Value/Reference, Prev: Calling A Function, Up: Function Caveats @@ -12898,10 +12901,11 @@ internationalization: gettext::. You must also supply a text domain. Use `TEXTDOMAIN' if you want to use the current domain. - *Caution:* The order of arguments to the `awk' version of the - `dcgettext()' function is purposely different from the order for - the C version. The `awk' version's order was chosen to be simple - and to allow for reasonable `awk'-style default arguments. + CAUTION: The order of arguments to the `awk' version of the + `dcgettext()' function is purposely different from the order + for the C version. The `awk' version's order was chosen to + be simple and to allow for reasonable `awk'-style default + arguments. `dcngettext(STRING1, STRING2, NUMBER [, DOMAIN [, CATEGORY]])' This built-in function returns the plural form used for NUMBER of @@ -13334,11 +13338,11 @@ because using this facility could lead to surprising results, the default is to leave it disabled. If you want it, you must explicitly request it. - *Caution:* _Use of this option is not recommended._ It can break old -programs very badly. Instead, use the `strtonum()' function to convert -your data (*note Nondecimal-numbers::). This makes your programs -easier to write and easier to read, and leads to less surprising -results. + CAUTION: _Use of this option is not recommended._ It can break old + programs very badly. Instead, use the `strtonum()' function to + convert your data (*note Nondecimal-numbers::). This makes your + programs easier to write and easier to read, and leads to less + surprising results. File: gawk.info, Node: Two-way I/O, Next: TCP/IP Networking, Prev: Nondecimal Data, Up: Advanced Features @@ -20543,11 +20547,11 @@ The bug reporting address is preferred since the email list is archived at the GNU Project. _All email should be in English, since that is my native language._ - *Caution:* Do _not_ try to report bugs in `gawk' by posting to the -Usenet/Internet newsgroup `comp.lang.awk'. While the `gawk' developers -do occasionally read this newsgroup, there is no guarantee that we will -see your posting. The steps described above are the official -recognized ways for reporting bugs. Really. + CAUTION: Do _not_ try to report bugs in `gawk' by posting to the + Usenet/Internet newsgroup `comp.lang.awk'. While the `gawk' + developers do occasionally read this newsgroup, there is no + guarantee that we will see your posting. The steps described + above are the official recognized ways for reporting bugs. Really. NOTE: Many distributions of GNU/Linux and the various BSD-based operating systems have their own bug reporting systems. If you @@ -21040,14 +21044,14 @@ functions. This minor node describes how to write and use dynamically loaded extensions for `gawk'. Experience with programming in C or C++ is necessary when reading this minor node. - *Caution:* The facilities described in this minor node are very much -subject to change in a future `gawk' release. Be aware that you may -have to re-do everything, at some future time. + CAUTION: The facilities described in this minor node are very much + subject to change in a future `gawk' release. Be aware that you + may have to re-do everything, at some future time. - *Caution:* If you have written your own dynamic extensions, be sure -to recompile them for each new `gawk' release. There is no guarantee -of binary compatibility between different releases, nor will there ever -be such a guarantee. + If you have written your own dynamic extensions, be sure to + recompile them for each new `gawk' release. There is no guarantee + of binary compatibility between different releases, nor will there + ever be such a guarantee. NOTE: When `--sandbox' is specified, extensions are disabled (*note Options::. @@ -24255,7 +24259,7 @@ Index * . (period): Regexp Operators. (line 43) * .mo files: Explaining gettext. (line 41) * .mo files, converting from .po: I18N Example. (line 62) -* .mo files, specifying directory of <1>: Programmer i18n. (line 46) +* .mo files, specifying directory of <1>: Programmer i18n. (line 47) * .mo files, specifying directory of: Explaining gettext. (line 53) * .po files <1>: Translator i18n. (line 6) * .po files: Explaining gettext. (line 36) @@ -24273,7 +24277,7 @@ Index * /inet/ files (gawk): TCP/IP Networking. (line 6) * /inet4/ files (gawk): TCP/IP Networking. (line 6) * /inet6/ files (gawk): TCP/IP Networking. (line 6) -* ; (semicolon): Statements/Lines. (line 90) +* ; (semicolon): Statements/Lines. (line 91) * ; (semicolon), AWKPATH variable and: PC Using. (line 11) * ; (semicolon), separating statements in actions <1>: Statements. (line 10) @@ -24344,7 +24348,7 @@ Index * \ (backslash), continuing lines and <1>: Egrep Program. (line 220) * \ (backslash), continuing lines and: Statements/Lines. (line 19) * \ (backslash), continuing lines and, comments and: Statements/Lines. - (line 75) + (line 76) * \ (backslash), continuing lines and, in csh: Statements/Lines. (line 44) * \ (backslash), gsub()/gensub()/sub() functions and: Gory Details. @@ -24368,7 +24372,7 @@ Index * _ (underscore), _ C macro: Explaining gettext. (line 70) * _ (underscore), in names of private variables: Library Names. (line 29) -* _ (underscore), translatable string: Programmer i18n. (line 68) +* _ (underscore), translatable string: Programmer i18n. (line 69) * _gr_init() user-defined function: Group Functions. (line 82) * _pw_init() user-defined function: Passwd Functions. (line 105) * accessing fields: Fields. (line 6) @@ -24598,7 +24602,7 @@ Index * backslash (\), continuing lines and <1>: Egrep Program. (line 220) * backslash (\), continuing lines and: Statements/Lines. (line 19) * backslash (\), continuing lines and, comments and: Statements/Lines. - (line 75) + (line 76) * backslash (\), continuing lines and, in csh: Statements/Lines. (line 44) * backslash (\), gsub()/gensub()/sub() functions and: Gory Details. @@ -24632,7 +24636,7 @@ Index * BEGIN pattern, print statement and: I/O And BEGIN/END. (line 16) * BEGIN pattern, pwcat program: Passwd Functions. (line 144) * BEGIN pattern, running awk programs and: Cut Program. (line 68) -* BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 59) +* BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 60) * BEGINFILE pattern, Boolean patterns and: Expression Patterns. (line 73) * BEGINFILE special pattern: BEGINFILE/ENDFILE. (line 6) @@ -24642,7 +24646,7 @@ Index * Berry, Karl: Acknowledgments. (line 32) * binary input/output: User-modified. (line 10) * bindtextdomain() function (C library): Explaining gettext. (line 49) -* bindtextdomain() function (gawk) <1>: Programmer i18n. (line 46) +* bindtextdomain() function (gawk) <1>: Programmer i18n. (line 47) * bindtextdomain() function (gawk): I18N Functions. (line 12) * bindtextdomain() function (gawk), portability and: I18N Portability. (line 33) @@ -24774,7 +24778,7 @@ Index * commands debugger command: Dgawk Execution Control. (line 10) * commenting: Comments. (line 6) -* commenting, backslash continuation and: Statements/Lines. (line 75) +* commenting, backslash continuation and: Statements/Lines. (line 76) * common extensions, \x escape sequence: Escape Sequences. (line 61) * comp.lang.awk newsgroup: Bugs. (line 38) * comparison expressions: Typing and Comparison. @@ -24898,7 +24902,7 @@ Index * dcgettext() function (gawk): I18N Functions. (line 22) * dcgettext() function (gawk), portability and: I18N Portability. (line 33) -* dcngettext() function (gawk) <1>: Programmer i18n. (line 35) +* dcngettext() function (gawk) <1>: Programmer i18n. (line 36) * dcngettext() function (gawk): I18N Functions. (line 28) * dcngettext() function (gawk), portability and: I18N Portability. (line 33) @@ -25265,7 +25269,7 @@ Index * filenames, assignments as: Ignoring Assigns. (line 6) * files, .mo: Explaining gettext. (line 41) * files, .mo, converting from .po: I18N Example. (line 62) -* files, .mo, specifying directory of <1>: Programmer i18n. (line 46) +* files, .mo, specifying directory of <1>: Programmer i18n. (line 47) * files, .mo, specifying directory of: Explaining gettext. (line 53) * files, .po <1>: Translator i18n. (line 6) * files, .po: Explaining gettext. (line 36) @@ -25293,7 +25297,7 @@ Index * files, message object, converting from portable object files: I18N Example. (line 62) * files, message object, specifying directory of <1>: Programmer i18n. - (line 46) + (line 47) * files, message object, specifying directory of: Explaining gettext. (line 53) * files, multiple passes over: Other Arguments. (line 49) @@ -25703,7 +25707,7 @@ Index * LC_CTYPE locale category: Explaining gettext. (line 97) * LC_MESSAGES locale category: Explaining gettext. (line 87) * LC_MESSAGES locale category, bindtextdomain() function (gawk): Programmer i18n. - (line 87) + (line 88) * LC_MONETARY locale category: Explaining gettext. (line 103) * LC_NUMERIC locale category: Explaining gettext. (line 107) * LC_RESPONSE locale category: Explaining gettext. (line 111) @@ -25817,7 +25821,7 @@ Index * message object files, converting from portable object files: I18N Example. (line 62) * message object files, specifying directory of <1>: Programmer i18n. - (line 46) + (line 47) * message object files, specifying directory of: Explaining gettext. (line 53) * metacharacters, escape sequences for: Escape Sequences. (line 132) @@ -26360,7 +26364,7 @@ Index * sed utility <2>: Simple Sed. (line 6) * sed utility: Field Splitting Summary. (line 47) -* semicolon (;): Statements/Lines. (line 90) +* semicolon (;): Statements/Lines. (line 91) * semicolon (;), AWKPATH variable and: PC Using. (line 11) * semicolon (;), separating statements in actions <1>: Statements. (line 10) @@ -26406,7 +26410,7 @@ Index * signals, USR1/SIGUSR1: Profiling. (line 182) * silent debugger command: Dgawk Execution Control. (line 10) -* sin() function: Numeric Functions. (line 73) +* sin() function: Numeric Functions. (line 74) * single quote (') <1>: Quoting. (line 31) * single quote (') <2>: Long. (line 33) * single quote ('): One-shot. (line 15) @@ -26440,9 +26444,9 @@ Index * sprintf() function, OFMT variable and: User-modified. (line 124) * sprintf() function, print/printf statements and: Round Function. (line 6) -* sqrt() function: Numeric Functions. (line 76) +* sqrt() function: Numeric Functions. (line 77) * square brackets ([]): Regexp Operators. (line 55) -* srand() function: Numeric Functions. (line 80) +* srand() function: Numeric Functions. (line 81) * Stallman, Richard <1>: Glossary. (line 286) * Stallman, Richard <2>: Contributors. (line 24) * Stallman, Richard <3>: Acknowledgments. (line 18) @@ -26453,7 +26457,7 @@ Index * stat() function, implementing in gawk: Sample Library. (line 6) * statements, compound, control statements and: Statements. (line 10) * statements, control, in actions: Statements. (line 6) -* statements, multiple: Statements/Lines. (line 90) +* statements, multiple: Statements/Lines. (line 91) * step debugger command: Dgawk Execution Control. (line 68) * stepi debugger command: Dgawk Execution Control. @@ -26534,7 +26538,7 @@ Index * text, printing, unduplicated lines of: Uniq Program. (line 6) * TEXTDOMAIN variable <1>: Programmer i18n. (line 9) * TEXTDOMAIN variable: User-modified. (line 153) -* TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 59) +* TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 60) * TEXTDOMAIN variable, portability and: I18N Portability. (line 20) * textdomain() function (C library): Explaining gettext. (line 27) * tilde (~), ~ operator <1>: Expression Patterns. (line 24) @@ -26560,7 +26564,7 @@ Index * trace debugger command: Miscellaneous Dgawk Commands. (line 110) * translate.awk program: Translate Program. (line 55) -* troubleshooting, --non-decimal-data option: Options. (line 169) +* troubleshooting, --non-decimal-data option: Options. (line 166) * troubleshooting, == operator: Comparison Operators. (line 37) * troubleshooting, awk uses FS not IFS: Field Separators. (line 29) @@ -26608,7 +26612,7 @@ Index * underscore (_), _ C macro: Explaining gettext. (line 70) * underscore (_), in names of private variables: Library Names. (line 29) -* underscore (_), translatable string: Programmer i18n. (line 68) +* underscore (_), translatable string: Programmer i18n. (line 69) * undisplay debugger command: Viewing And Changing Data. (line 80) * undocumented features: Undocumented. (line 6) @@ -26783,379 +26787,379 @@ Node: Executable Scripts65390 Ref: Executable Scripts-Footnote-167251 Ref: Executable Scripts-Footnote-267353 Node: Comments67804 -Node: Quoting70172 -Node: DOS Quoting74789 -Node: Sample Data Files75464 -Node: Very Simple78496 -Node: Two Rules83093 -Node: More Complex85240 -Ref: More Complex-Footnote-188170 -Node: Statements/Lines88250 -Ref: Statements/Lines-Footnote-192608 -Node: Other Features92873 -Node: When93742 -Node: Invoking Gawk95885 -Node: Command Line97270 -Node: Options98053 -Ref: Options-Footnote-1111399 -Node: Other Arguments111424 -Node: Naming Standard Input114087 -Node: Environment Variables115051 -Node: AWKPATH Variable115495 -Ref: AWKPATH Variable-Footnote-1118232 -Node: Other Environment Variables118492 -Node: Exit Status120840 -Node: Include Files121515 -Node: Obsolete124906 -Node: Undocumented125592 -Node: Regexp125833 -Node: Regexp Usage127285 -Node: Escape Sequences129311 -Node: Regexp Operators135054 -Ref: Regexp Operators-Footnote-1142226 -Ref: Regexp Operators-Footnote-2142373 -Node: Character Lists142471 -Ref: table-char-classes144246 -Node: GNU Regexp Operators146871 -Node: Case-sensitivity150584 -Ref: Case-sensitivity-Footnote-1153539 -Ref: Case-sensitivity-Footnote-2153774 -Node: Leftmost Longest153882 -Node: Computed Regexps155083 -Node: Locales158500 -Node: Reading Files162042 -Node: Records163983 -Ref: Records-Footnote-1172655 -Node: Fields172692 -Ref: Fields-Footnote-1175724 -Node: Nonconstant Fields175810 -Node: Changing Fields178012 -Node: Field Separators183297 -Node: Default Field Splitting185926 -Node: Regexp Field Splitting187043 -Node: Single Character Fields190393 -Node: Command Line Field Separator191444 -Node: Field Splitting Summary194883 -Ref: Field Splitting Summary-Footnote-1198069 -Node: Constant Size198170 -Node: Splitting By Content202732 -Ref: Splitting By Content-Footnote-1206458 -Node: Multiple Line206498 -Ref: Multiple Line-Footnote-1212345 -Node: Getline212524 -Node: Plain Getline214752 -Node: Getline/Variable216841 -Node: Getline/File217982 -Node: Getline/Variable/File219304 -Ref: Getline/Variable/File-Footnote-1220903 -Node: Getline/Pipe220990 -Node: Getline/Variable/Pipe223538 -Node: Getline/Coprocess224645 -Node: Getline/Variable/Coprocess225888 -Node: Getline Notes226602 -Node: Getline Summary228544 -Ref: table-getline-variants228828 -Node: Command line directories229733 -Node: Printing230358 -Node: Print231989 -Node: Print Examples233326 -Node: Output Separators236110 -Node: OFMT237869 -Node: Printf239227 -Node: Basic Printf240133 -Node: Control Letters241670 -Node: Format Modifiers245482 -Node: Printf Examples251493 -Node: Redirection254208 -Node: Special Files261186 -Node: Special FD261719 -Ref: Special FD-Footnote-1265294 -Node: Special Network265368 -Node: Special Caveats266223 -Node: Close Files And Pipes267017 -Ref: Close Files And Pipes-Footnote-1273961 -Ref: Close Files And Pipes-Footnote-2274109 -Node: Expressions274259 -Node: Values275328 -Node: Constants276004 -Node: Scalar Constants276684 -Ref: Scalar Constants-Footnote-1277543 -Node: Nondecimal-numbers277725 -Node: Regexp Constants280784 -Node: Using Constant Regexps281259 -Node: Variables284264 -Node: Using Variables284919 -Node: Assignment Options286646 -Node: Conversion288527 -Ref: table-locale-affects293901 -Ref: Conversion-Footnote-1294525 -Node: All Operators294634 -Node: Arithmetic Ops295264 -Node: Concatenation297763 -Ref: Concatenation-Footnote-1300556 -Node: Assignment Ops300675 -Ref: table-assign-ops305663 -Node: Increment Ops307064 -Node: Truth Values and Conditions310542 -Node: Truth Values311625 -Node: Typing and Comparison312673 -Node: Variable Typing313462 -Ref: Variable Typing-Footnote-1317359 -Node: Comparison Operators317481 -Ref: table-relational-ops317891 -Node: POSIX String Comparison321440 -Ref: POSIX String Comparison-Footnote-1322397 -Node: Boolean Ops322535 -Ref: Boolean Ops-Footnote-1326613 -Node: Conditional Exp326704 -Node: Function Calls328436 -Node: Precedence331995 -Node: Patterns and Actions335648 -Node: Pattern Overview336702 -Node: Regexp Patterns338368 -Node: Expression Patterns338911 -Node: Ranges342485 -Node: BEGIN/END345451 -Node: Using BEGIN/END346201 -Ref: Using BEGIN/END-Footnote-1348932 -Node: I/O And BEGIN/END349046 -Node: Empty351315 -Node: BEGINFILE/ENDFILE351649 -Node: Using Shell Variables354474 -Node: Action Overview356753 -Node: Statements359110 -Node: If Statement360969 -Node: While Statement362468 -Node: Do Statement364512 -Node: For Statement365668 -Node: Switch Statement368820 -Node: Break Statement370917 -Node: Continue Statement372893 -Node: Next Statement374594 -Node: Nextfile Statement376976 -Node: Exit Statement379494 -Node: Built-in Variables381825 -Node: User-modified382920 -Ref: User-modified-Footnote-1390921 -Node: Auto-set390983 -Ref: Auto-set-Footnote-1399966 -Node: ARGC and ARGV400171 -Node: Arrays403930 -Node: Array Basics405501 -Node: Array Intro406212 -Node: Reference to Elements410530 -Node: Assigning Elements412800 -Node: Array Example413291 -Node: Scanning an Array415023 -Node: Delete417300 -Ref: Delete-Footnote-1419698 -Node: Numeric Array Subscripts419755 -Node: Uninitialized Subscripts421938 -Node: Multi-dimensional423566 -Node: Multi-scanning426657 -Node: Array Sorting428241 -Ref: Array Sorting-Footnote-1431439 -Node: Arrays of Arrays431633 -Node: Functions435795 -Node: Built-in436617 -Node: Calling Built-in437631 -Node: Numeric Functions439607 -Ref: Numeric Functions-Footnote-1443316 -Ref: Numeric Functions-Footnote-2443652 -Ref: Numeric Functions-Footnote-3443700 -Node: String Functions443969 -Ref: String Functions-Footnote-1465768 -Ref: String Functions-Footnote-2465897 -Ref: String Functions-Footnote-3466145 -Node: Gory Details466232 -Ref: table-sub-escapes467889 -Ref: table-posix-sub469203 -Ref: table-gensub-escapes470103 -Node: I/O Functions471274 -Ref: I/O Functions-Footnote-1477971 -Node: Time Functions478118 -Ref: Time Functions-Footnote-1488985 -Ref: Time Functions-Footnote-2489053 -Ref: Time Functions-Footnote-3489211 -Ref: Time Functions-Footnote-4489322 -Ref: Time Functions-Footnote-5489434 -Ref: Time Functions-Footnote-6489661 -Node: Bitwise Functions489927 -Ref: table-bitwise-ops490485 -Ref: Bitwise Functions-Footnote-1494645 -Node: I18N Functions494829 -Node: User-defined496459 -Node: Definition Syntax497263 -Ref: Definition Syntax-Footnote-1501893 -Node: Function Example501962 -Node: Function Caveats504556 -Node: Calling A Function504977 -Node: Variable Scope506066 -Node: Pass By Value/Reference507994 -Node: Return Statement511434 -Node: Dynamic Typing514376 -Node: Indirect Calls515113 -Node: Internationalization524798 -Node: I18N and L10N526226 -Node: Explaining gettext526912 -Ref: Explaining gettext-Footnote-1531974 -Ref: Explaining gettext-Footnote-2532157 -Node: Programmer i18n532322 -Node: Translator i18n536585 -Node: String Extraction537378 -Ref: String Extraction-Footnote-1538339 -Node: Printf Ordering538425 -Ref: Printf Ordering-Footnote-1541209 -Node: I18N Portability541273 -Ref: I18N Portability-Footnote-1543722 -Node: I18N Example543785 -Ref: I18N Example-Footnote-1546420 -Node: Gawk I18N546492 -Node: Advanced Features547061 -Node: Nondecimal Data548380 -Node: Two-way I/O549941 -Ref: Two-way I/O-Footnote-1555355 -Node: TCP/IP Networking555432 -Node: Profiling558204 -Node: Library Functions565604 -Ref: Library Functions-Footnote-1568574 -Node: Library Names568745 -Ref: Library Names-Footnote-1572216 -Ref: Library Names-Footnote-2572436 -Node: General Functions572522 -Node: Nextfile Function573585 -Node: Strtonum Function577966 -Node: Assert Function580917 -Node: Round Function584243 -Node: Cliff Random Function585784 -Node: Ordinal Functions586800 -Ref: Ordinal Functions-Footnote-1589870 -Ref: Ordinal Functions-Footnote-2590122 -Node: Join Function590338 -Ref: Join Function-Footnote-1592109 -Node: Gettimeofday Function592309 -Node: Data File Management596024 -Node: Filetrans Function596656 -Node: Rewind Function600893 -Node: File Checking602346 -Node: Empty Files603440 -Node: Ignoring Assigns605670 -Node: Getopt Function607223 -Ref: Getopt Function-Footnote-1618548 -Node: Passwd Functions618751 -Ref: Passwd Functions-Footnote-1627739 -Node: Group Functions627827 -Node: Sample Programs635907 -Node: Running Examples636572 -Node: Clones637300 -Node: Cut Program638423 -Node: Egrep Program648264 -Ref: Egrep Program-Footnote-1656035 -Node: Id Program656145 -Node: Split Program659761 -Ref: Split Program-Footnote-1663280 -Node: Tee Program663408 -Node: Uniq Program666211 -Node: Wc Program673634 -Ref: Wc Program-Footnote-1677898 -Node: Miscellaneous Programs678098 -Node: Dupword Program679218 -Node: Alarm Program681249 -Node: Translate Program685971 -Ref: Translate Program-Footnote-1690350 -Ref: Translate Program-Footnote-2690578 -Node: Labels Program690712 -Ref: Labels Program-Footnote-1694083 -Node: Word Sorting694167 -Node: History Sorting698512 -Node: Extract Program700350 -Ref: Extract Program-Footnote-1707776 -Node: Simple Sed707904 -Node: Igawk Program710966 -Ref: Igawk Program-Footnote-1726000 -Ref: Igawk Program-Footnote-2726201 -Node: Signature Program726339 -Node: Debugger727419 -Node: Debugging728330 -Node: Debugging Concepts728644 -Node: Debugging Terms730500 -Node: Awk Debugging733045 -Node: Sample dgawk session733937 -Node: dgawk invocation734429 -Node: Finding The Bug735611 -Node: List of Debugger Commands742095 -Node: Breakpoint Control743406 -Node: Dgawk Execution Control746882 -Node: Viewing And Changing Data750233 -Node: Dgawk Stack753542 -Node: Dgawk Info755002 -Node: Miscellaneous Dgawk Commands758950 -Node: Readline Support764378 -Node: Dgawk Limitations765205 -Node: Language History767344 -Node: V7/SVR3.1768721 -Node: SVR4771016 -Node: POSIX772461 -Node: BTL774716 -Node: POSIX/GNU776120 -Node: Contributors781250 -Node: Installation785195 -Node: Gawk Distribution786089 -Node: Getting786573 -Node: Extracting787399 -Node: Distribution contents789077 -Node: Unix Installation793942 -Node: Quick Installation794559 -Node: Additional Configuration Options796449 -Node: Configuration Philosophy797926 -Node: Non-Unix Installation800268 -Node: PC Installation800726 -Node: PC Binary Installation802025 -Node: PC Compiling803873 -Node: PC Testing807279 -Node: PC Using808103 -Node: Cygwin812280 -Node: MSYS813277 -Node: VMS Installation813791 -Node: VMS Compilation814395 -Node: VMS Installation Details815972 -Node: VMS Running817602 -Node: VMS POSIX819199 -Node: VMS Old Gawk820497 -Node: Bugs820969 -Node: Other Versions824814 -Node: Notes830262 -Node: Compatibility Mode830954 -Node: Additions831737 -Node: Accessing The Source832549 -Node: Adding Code833972 -Node: New Ports839520 -Node: Dynamic Extensions843633 -Node: Internals844993 -Node: Plugin License854112 -Node: Sample Library854746 -Node: Internal File Description855432 -Node: Internal File Ops859139 -Ref: Internal File Ops-Footnote-1864023 -Node: Using Internal File Ops864171 -Node: Future Extensions866196 -Node: Basic Concepts869033 -Node: Basic High Level869790 -Ref: Basic High Level-Footnote-1873909 -Node: Basic Data Typing874103 -Node: Floating Point Issues878540 -Node: String Conversion Precision879623 -Ref: String Conversion Precision-Footnote-1881317 -Node: Unexpected Results881426 -Node: POSIX Floating Point Problems883252 -Ref: POSIX Floating Point Problems-Footnote-1886951 -Node: Glossary886989 -Node: Copying910624 -Node: GNU Free Documentation License948181 -Node: next-edition973325 -Node: unresolved973677 -Node: revision974177 -Node: consistency974600 -Node: Index977953 +Node: Quoting70271 +Node: DOS Quoting74888 +Node: Sample Data Files75563 +Node: Very Simple78595 +Node: Two Rules83192 +Node: More Complex85339 +Ref: More Complex-Footnote-188269 +Node: Statements/Lines88349 +Ref: Statements/Lines-Footnote-192811 +Node: Other Features93076 +Node: When93945 +Node: Invoking Gawk96088 +Node: Command Line97473 +Node: Options98256 +Ref: Options-Footnote-1111627 +Node: Other Arguments111652 +Node: Naming Standard Input114315 +Node: Environment Variables115279 +Node: AWKPATH Variable115723 +Ref: AWKPATH Variable-Footnote-1118460 +Node: Other Environment Variables118720 +Node: Exit Status121068 +Node: Include Files121743 +Node: Obsolete125134 +Node: Undocumented125820 +Node: Regexp126061 +Node: Regexp Usage127513 +Node: Escape Sequences129539 +Node: Regexp Operators135282 +Ref: Regexp Operators-Footnote-1142454 +Ref: Regexp Operators-Footnote-2142601 +Node: Character Lists142699 +Ref: table-char-classes144474 +Node: GNU Regexp Operators147114 +Node: Case-sensitivity150827 +Ref: Case-sensitivity-Footnote-1153782 +Ref: Case-sensitivity-Footnote-2154017 +Node: Leftmost Longest154125 +Node: Computed Regexps155326 +Node: Locales158743 +Node: Reading Files162285 +Node: Records164226 +Ref: Records-Footnote-1172898 +Node: Fields172935 +Ref: Fields-Footnote-1175967 +Node: Nonconstant Fields176053 +Node: Changing Fields178255 +Node: Field Separators183545 +Node: Default Field Splitting186174 +Node: Regexp Field Splitting187291 +Node: Single Character Fields190641 +Node: Command Line Field Separator191692 +Node: Field Splitting Summary195131 +Ref: Field Splitting Summary-Footnote-1198317 +Node: Constant Size198418 +Node: Splitting By Content202980 +Ref: Splitting By Content-Footnote-1206706 +Node: Multiple Line206746 +Ref: Multiple Line-Footnote-1212593 +Node: Getline212772 +Node: Plain Getline215000 +Node: Getline/Variable217089 +Node: Getline/File218230 +Node: Getline/Variable/File219552 +Ref: Getline/Variable/File-Footnote-1221151 +Node: Getline/Pipe221238 +Node: Getline/Variable/Pipe223786 +Node: Getline/Coprocess224893 +Node: Getline/Variable/Coprocess226136 +Node: Getline Notes226850 +Node: Getline Summary228792 +Ref: table-getline-variants229076 +Node: Command line directories229981 +Node: Printing230606 +Node: Print232237 +Node: Print Examples233574 +Node: Output Separators236358 +Node: OFMT238117 +Node: Printf239475 +Node: Basic Printf240381 +Node: Control Letters241918 +Node: Format Modifiers245730 +Node: Printf Examples251741 +Node: Redirection254456 +Node: Special Files261434 +Node: Special FD261967 +Ref: Special FD-Footnote-1265542 +Node: Special Network265616 +Node: Special Caveats266471 +Node: Close Files And Pipes267265 +Ref: Close Files And Pipes-Footnote-1274209 +Ref: Close Files And Pipes-Footnote-2274357 +Node: Expressions274507 +Node: Values275576 +Node: Constants276252 +Node: Scalar Constants276932 +Ref: Scalar Constants-Footnote-1277791 +Node: Nondecimal-numbers277973 +Node: Regexp Constants281032 +Node: Using Constant Regexps281507 +Node: Variables284512 +Node: Using Variables285167 +Node: Assignment Options286894 +Node: Conversion288775 +Ref: table-locale-affects294149 +Ref: Conversion-Footnote-1294773 +Node: All Operators294882 +Node: Arithmetic Ops295512 +Node: Concatenation298011 +Ref: Concatenation-Footnote-1300804 +Node: Assignment Ops300923 +Ref: table-assign-ops305911 +Node: Increment Ops307312 +Node: Truth Values and Conditions310790 +Node: Truth Values311873 +Node: Typing and Comparison312921 +Node: Variable Typing313710 +Ref: Variable Typing-Footnote-1317607 +Node: Comparison Operators317729 +Ref: table-relational-ops318139 +Node: POSIX String Comparison321688 +Ref: POSIX String Comparison-Footnote-1322645 +Node: Boolean Ops322783 +Ref: Boolean Ops-Footnote-1326861 +Node: Conditional Exp326952 +Node: Function Calls328684 +Node: Precedence332274 +Node: Patterns and Actions335927 +Node: Pattern Overview336981 +Node: Regexp Patterns338647 +Node: Expression Patterns339190 +Node: Ranges342764 +Node: BEGIN/END345730 +Node: Using BEGIN/END346480 +Ref: Using BEGIN/END-Footnote-1349211 +Node: I/O And BEGIN/END349325 +Node: Empty351594 +Node: BEGINFILE/ENDFILE351928 +Node: Using Shell Variables354753 +Node: Action Overview357032 +Node: Statements359389 +Node: If Statement361248 +Node: While Statement362747 +Node: Do Statement364791 +Node: For Statement365947 +Node: Switch Statement369099 +Node: Break Statement371196 +Node: Continue Statement373172 +Node: Next Statement374873 +Node: Nextfile Statement377255 +Node: Exit Statement379773 +Node: Built-in Variables382104 +Node: User-modified383199 +Ref: User-modified-Footnote-1391200 +Node: Auto-set391262 +Ref: Auto-set-Footnote-1400245 +Node: ARGC and ARGV400450 +Node: Arrays404209 +Node: Array Basics405780 +Node: Array Intro406491 +Node: Reference to Elements410809 +Node: Assigning Elements413079 +Node: Array Example413570 +Node: Scanning an Array415302 +Node: Delete417579 +Ref: Delete-Footnote-1420002 +Node: Numeric Array Subscripts420059 +Node: Uninitialized Subscripts422242 +Node: Multi-dimensional423870 +Node: Multi-scanning426961 +Node: Array Sorting428545 +Ref: Array Sorting-Footnote-1431743 +Node: Arrays of Arrays431937 +Node: Functions436099 +Node: Built-in436921 +Node: Calling Built-in437935 +Node: Numeric Functions439911 +Ref: Numeric Functions-Footnote-1443668 +Ref: Numeric Functions-Footnote-2444004 +Ref: Numeric Functions-Footnote-3444052 +Node: String Functions444321 +Ref: String Functions-Footnote-1466120 +Ref: String Functions-Footnote-2466249 +Ref: String Functions-Footnote-3466497 +Node: Gory Details466584 +Ref: table-sub-escapes468241 +Ref: table-posix-sub469555 +Ref: table-gensub-escapes470455 +Node: I/O Functions471626 +Ref: I/O Functions-Footnote-1478323 +Node: Time Functions478470 +Ref: Time Functions-Footnote-1489337 +Ref: Time Functions-Footnote-2489405 +Ref: Time Functions-Footnote-3489563 +Ref: Time Functions-Footnote-4489674 +Ref: Time Functions-Footnote-5489786 +Ref: Time Functions-Footnote-6490013 +Node: Bitwise Functions490279 +Ref: table-bitwise-ops490837 +Ref: Bitwise Functions-Footnote-1494997 +Node: I18N Functions495181 +Node: User-defined496811 +Node: Definition Syntax497615 +Ref: Definition Syntax-Footnote-1502245 +Node: Function Example502314 +Node: Function Caveats504908 +Node: Calling A Function505329 +Node: Variable Scope506444 +Node: Pass By Value/Reference508372 +Node: Return Statement511812 +Node: Dynamic Typing514754 +Node: Indirect Calls515491 +Node: Internationalization525176 +Node: I18N and L10N526604 +Node: Explaining gettext527290 +Ref: Explaining gettext-Footnote-1532352 +Ref: Explaining gettext-Footnote-2532535 +Node: Programmer i18n532700 +Node: Translator i18n536991 +Node: String Extraction537784 +Ref: String Extraction-Footnote-1538745 +Node: Printf Ordering538831 +Ref: Printf Ordering-Footnote-1541615 +Node: I18N Portability541679 +Ref: I18N Portability-Footnote-1544128 +Node: I18N Example544191 +Ref: I18N Example-Footnote-1546826 +Node: Gawk I18N546898 +Node: Advanced Features547467 +Node: Nondecimal Data548786 +Node: Two-way I/O550367 +Ref: Two-way I/O-Footnote-1555781 +Node: TCP/IP Networking555858 +Node: Profiling558630 +Node: Library Functions566030 +Ref: Library Functions-Footnote-1569000 +Node: Library Names569171 +Ref: Library Names-Footnote-1572642 +Ref: Library Names-Footnote-2572862 +Node: General Functions572948 +Node: Nextfile Function574011 +Node: Strtonum Function578392 +Node: Assert Function581343 +Node: Round Function584669 +Node: Cliff Random Function586210 +Node: Ordinal Functions587226 +Ref: Ordinal Functions-Footnote-1590296 +Ref: Ordinal Functions-Footnote-2590548 +Node: Join Function590764 +Ref: Join Function-Footnote-1592535 +Node: Gettimeofday Function592735 +Node: Data File Management596450 +Node: Filetrans Function597082 +Node: Rewind Function601319 +Node: File Checking602772 +Node: Empty Files603866 +Node: Ignoring Assigns606096 +Node: Getopt Function607649 +Ref: Getopt Function-Footnote-1618974 +Node: Passwd Functions619177 +Ref: Passwd Functions-Footnote-1628165 +Node: Group Functions628253 +Node: Sample Programs636333 +Node: Running Examples636998 +Node: Clones637726 +Node: Cut Program638849 +Node: Egrep Program648690 +Ref: Egrep Program-Footnote-1656461 +Node: Id Program656571 +Node: Split Program660187 +Ref: Split Program-Footnote-1663706 +Node: Tee Program663834 +Node: Uniq Program666637 +Node: Wc Program674060 +Ref: Wc Program-Footnote-1678324 +Node: Miscellaneous Programs678524 +Node: Dupword Program679644 +Node: Alarm Program681675 +Node: Translate Program686397 +Ref: Translate Program-Footnote-1690776 +Ref: Translate Program-Footnote-2691004 +Node: Labels Program691138 +Ref: Labels Program-Footnote-1694509 +Node: Word Sorting694593 +Node: History Sorting698938 +Node: Extract Program700776 +Ref: Extract Program-Footnote-1708202 +Node: Simple Sed708330 +Node: Igawk Program711392 +Ref: Igawk Program-Footnote-1726426 +Ref: Igawk Program-Footnote-2726627 +Node: Signature Program726765 +Node: Debugger727845 +Node: Debugging728756 +Node: Debugging Concepts729070 +Node: Debugging Terms730926 +Node: Awk Debugging733471 +Node: Sample dgawk session734363 +Node: dgawk invocation734855 +Node: Finding The Bug736037 +Node: List of Debugger Commands742521 +Node: Breakpoint Control743832 +Node: Dgawk Execution Control747308 +Node: Viewing And Changing Data750659 +Node: Dgawk Stack753968 +Node: Dgawk Info755428 +Node: Miscellaneous Dgawk Commands759376 +Node: Readline Support764804 +Node: Dgawk Limitations765631 +Node: Language History767770 +Node: V7/SVR3.1769147 +Node: SVR4771442 +Node: POSIX772887 +Node: BTL775142 +Node: POSIX/GNU776546 +Node: Contributors781676 +Node: Installation785621 +Node: Gawk Distribution786515 +Node: Getting786999 +Node: Extracting787825 +Node: Distribution contents789503 +Node: Unix Installation794368 +Node: Quick Installation794985 +Node: Additional Configuration Options796875 +Node: Configuration Philosophy798352 +Node: Non-Unix Installation800694 +Node: PC Installation801152 +Node: PC Binary Installation802451 +Node: PC Compiling804299 +Node: PC Testing807705 +Node: PC Using808529 +Node: Cygwin812706 +Node: MSYS813703 +Node: VMS Installation814217 +Node: VMS Compilation814821 +Node: VMS Installation Details816398 +Node: VMS Running818028 +Node: VMS POSIX819625 +Node: VMS Old Gawk820923 +Node: Bugs821395 +Node: Other Versions825260 +Node: Notes830708 +Node: Compatibility Mode831400 +Node: Additions832183 +Node: Accessing The Source832995 +Node: Adding Code834418 +Node: New Ports839966 +Node: Dynamic Extensions844079 +Node: Internals845455 +Node: Plugin License854574 +Node: Sample Library855208 +Node: Internal File Description855894 +Node: Internal File Ops859601 +Ref: Internal File Ops-Footnote-1864485 +Node: Using Internal File Ops864633 +Node: Future Extensions866658 +Node: Basic Concepts869495 +Node: Basic High Level870252 +Ref: Basic High Level-Footnote-1874371 +Node: Basic Data Typing874565 +Node: Floating Point Issues879002 +Node: String Conversion Precision880085 +Ref: String Conversion Precision-Footnote-1881779 +Node: Unexpected Results881888 +Node: POSIX Floating Point Problems883714 +Ref: POSIX Floating Point Problems-Footnote-1887413 +Node: Glossary887451 +Node: Copying911086 +Node: GNU Free Documentation License948643 +Node: next-edition973787 +Node: unresolved974139 +Node: revision974639 +Node: consistency975062 +Node: Index978415 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index be33ae87..a6d1703f 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -1,11 +1,9 @@ \input texinfo @c -*-texinfo-*- @ignore TODO: - Go through CAUTION, NOTE, @strong, @quotation, etc. Document common extensions with COMMONEXT marking & index entry. Pick a reasonable name for BWK awk and use it everywhere (search for Bell Laboratories) - Review use of "Modern xxx systems..." Fix refs to other info docs to use @inforef. DONE: Globally add () after built in function names. @@ -13,6 +11,8 @@ DONE: Check use of 3.2 vs. 4.0 everywhere. DOS vs MS-DOS MS-Windows vs MS Windows + Review use of "Modern xxx systems..." + Go through CAUTION, NOTE, @strong, @quotation, etc. @end ignore @c %**start of header (This is for running Texinfo on a region.) @setfilename gawk.info @@ -2044,7 +2044,8 @@ when reading it at a later time. @cindex quoting @cindex single quote (@code{'}), vs.@: apostrophe @cindex @code{'} (single quote), vs.@: apostrophe -@strong{Caution:} As mentioned in +@quotation CAUTION +As mentioned in @ref{One-shot}, you can enclose small to medium programs in single quotes, in order to keep your shell scripts self-contained. When doing so, @emph{don't} put @@ -2077,6 +2078,7 @@ $ @kbd{awk '@{ print "hello" @} # let's be cute'} Putting a backslash before the single quote in @samp{let's} wouldn't help, since backslashes are not special inside single quotes. The next @value{SUBSECTION} describes the shell's quoting rules. +@end quotation @node Quoting @subsection Shell-Quoting Issues @@ -2730,7 +2732,8 @@ lines in the middle of a regular expression or a string. @cindex @command{csh} utility @cindex backslash (@code{\}), continuing lines and, in @command{csh} @cindex @code{\} (backslash), continuing lines and, in @command{csh} -@strong{Caution:} @emph{Backslash continuation does not work as described +@quotation CAUTION +@emph{Backslash continuation does not work as described with the C shell.} It works for @command{awk} programs in files and for one-shot programs, @emph{provided} you are using a POSIX-compliant shell, such as the Unix Bourne shell or Bash. But the C shell behaves @@ -2759,6 +2762,7 @@ $ awk 'BEGIN @{ > @}' @print{} hello, world @end example +@end quotation @command{awk} is a line-oriented language. Each rule's action has to begin on the same line as the pattern. To have the pattern and action @@ -3001,10 +3005,12 @@ more than once, setting another variable each time, like this: @cindex built-in variables, @code{-v} option@comma{} setting with @cindex variables, built-in, @code{-v} option@comma{} setting with -@strong{Caution:} Using @option{-v} to set the values of the built-in +@quotation CAUTION +Using @option{-v} to set the values of the built-in variables may lead to surprising results. @command{awk} will reset the values of those variables as it needs to, possibly ignoring any predefined value you may have given. +@end quotation @ignore @item -mf @var{N} @@ -3198,13 +3204,15 @@ care to search for all occurrences of each inappropriate construct. As @cindex @code{--non-decimal-data} option @cindex hexadecimal values@comma{} enabling interpretation of @cindex octal values@comma{} enabling interpretation of +@cindex troubleshooting, @code{--non-decimal-data} option Enable automatic interpretation of octal and hexadecimal values in input data (@pxref{Nondecimal Data}). -@cindex troubleshooting, @code{--non-decimal-data} option -@strong{Caution:} This option can severely break old programs. +@quotation CAUTION +This option can severely break old programs. Use with care. +@end quotation @item -N @itemx --use-lc-numeric @@ -4643,9 +4651,11 @@ These features are very valuable in non-English-speaking locales. @cindex internationalization, localization, character classes @cindex @command{gawk}, character classes and @cindex POSIX @command{awk}, character lists and, character classes -@strong{Caution:} The library functions that @command{gawk} uses for regular +@quotation CAUTION +The library functions that @command{gawk} uses for regular expression matching currently recognize only POSIX character classes; they do not recognize collating symbols or equivalence classes. +@end quotation @c maybe one day ... @c ENDOFRANGE charlist @@ -4812,6 +4822,7 @@ are allowed. Traditional Unix @command{awk} regexps are matched. The GNU operators are not special, and interval expressions are not available. The POSIX character classes (@code{[[:alnum:]]}, etc.) are supported, +@c Bell Labs - name as modern Unix @command{awk} does support them. Characters described by octal and hexadecimal escape sequences are treated literally, even if they represent regexp metacharacters. @@ -5781,8 +5792,10 @@ $ echo a b c d e f | awk '@{ print "NF =", NF; @end example @cindex portability, @code{NF} variable@comma{} decrementing -@strong{Caution:} Some versions of @command{awk} don't +@quotation CAUTION +Some versions of @command{awk} don't rebuild @code{$0} when @code{NF} is decremented. Caveat emptor. +@end quotation Finally, there are times when it is convenient to force @command{awk} to rebuild the entire record, using the current @@ -9200,7 +9213,7 @@ conversion from the semantics of printing. Both @code{CONVFMT} and @code{OFMT} have the same default value: @code{"%.6g"}. In the vast majority of cases, old @command{awk} programs do not change their behavior. However, these semantics for @code{OFMT} are something to keep in mind if you must -port your new style program to older implementations of @command{awk}. +port your new-style program to older implementations of @command{awk}. We recommend that instead of changing your programs, just port @command{gawk} itself. @xref{Print}, @@ -10584,7 +10597,7 @@ rand() @ii{no arguments} @end example @cindex troubleshooting, function call syntax -@strong{Caution:} +@quotation CAUTION Do not put any space between the function name and the open-parenthesis! A user-defined function name looks just like the name of a variable---a space would make the expression look like concatenation of @@ -10592,6 +10605,7 @@ a variable with an expression inside parentheses. With built-in functions, space before the parenthesis is harmless, but it is best not to get into the habit of using space to avoid mistakes with user-defined functions. +@end quotation Each function expects a particular number of arguments. For example, the @code{sqrt()} function must be called with @@ -13454,7 +13468,8 @@ clears out the target array first. This call asks it to split apart the null string. Because there is no data to split out, the function simply clears the array and then returns. -@strong{Caution:} Deleting an array does not change its type; you cannot +@quotation CAUTION +Deleting an array does not change its type; you cannot delete an array and then use the array's name as a scalar (i.e., a regular variable). For example, the following does not work: @@ -13463,6 +13478,7 @@ a[1] = 3 delete a a = 3 @end example +@end quotation @node Numeric Array Subscripts @section Using Numbers to Subscript Arrays @@ -14157,7 +14173,8 @@ function roll(n) @{ return 1 + int(rand() * n) @} @cindex numbers, random @cindex random numbers, seed of -@strong{Caution:} In most @command{awk} implementations, including @command{gawk}, +@quotation CAUTION +In most @command{awk} implementations, including @command{gawk}, @code{rand()} starts generating numbers from the same starting number, or @dfn{seed}, each time you run @command{awk}.@footnote{@command{mawk} uses a different seed each time.} Thus, @@ -14167,6 +14184,7 @@ from run to run. This is convenient for debugging, but if you want a program to do different things each time it is used, you must change the seed to a value that is different in each run. To do this, use @code{srand()}. +@end quotation @item sin(@var{x}) @cindex @code{sin()} function @@ -16483,12 +16501,14 @@ being a string concatenation): foo(x y, "lose", 4 * z) @end example -@strong{Caution:} Whitespace characters (spaces and TABs) are not allowed +@quotation CAUTION +Whitespace characters (spaces and TABs) are not allowed between the function name and the open-parenthesis of the argument list. If you write whitespace by mistake, @command{awk} might think that you mean to concatenate a variable with an expression in parentheses. However, it notices that you used a function name and not a variable name, and reports an error. +@end quotation @node Variable Scope @subsubsection Controlling Variable Scope @@ -17465,11 +17485,13 @@ the previous @value{SECTION}. You must also supply a text domain. Use @code{TEXTDOMAIN} if you want to use the current domain. -@strong{Caution:} The order of arguments to the @command{awk} version +@quotation CAUTION +The order of arguments to the @command{awk} version of the @code{dcgettext()} function is purposely different from the order for the C version. The @command{awk} version's order was chosen to be simple and to allow for reasonable @command{awk}-style default arguments. +@end quotation @cindex @code{dcngettext()} function (@command{gawk}) @item dcngettext(@var{string1}, @var{string2}, @var{number} @r{[}, @var{domain} @r{[}, @var{category}@r{]]}) @@ -18064,13 +18086,14 @@ disabled. If you want it, you must explicitly request it. @cindex programming conventions, @code{--non-decimal-data} option @cindex @code{--non-decimal-data} option, @code{strtonum()} function and @cindex @code{strtonum()} function (@command{gawk}), @code{--non-decimal-data} option and -@strong{Caution:} +@quotation CAUTION @emph{Use of this option is not recommended.} It can break old programs very badly. Instead, use the @code{strtonum()} function to convert your data (@pxref{Nondecimal-numbers}). This makes your programs easier to write and easier to read, and leads to less surprising results. +@end quotation @node Two-way I/O @section Two-Way Communications with Another Process @@ -27574,12 +27597,14 @@ email list is archived at the GNU Project. @emph{All email should be in English, since that is my native language.} @cindex @code{comp.lang.awk} newsgroup -@strong{Caution:} Do @emph{not} try to report bugs in @command{gawk} by +@quotation CAUTION +Do @emph{not} try to report bugs in @command{gawk} by posting to the Usenet/Internet newsgroup @code{comp.lang.awk}. While the @command{gawk} developers do occasionally read this newsgroup, there is no guarantee that we will see your posting. The steps described above are the official recognized ways for reporting bugs. Really. +@end quotation @quotation NOTE Many distributions of GNU/Linux and the various BSD-based operating systems @@ -28233,15 +28258,17 @@ loaded extensions for @command{gawk}. Experience with programming in C or C++ is necessary when reading this @value{SECTION}. -@strong{Caution:} The facilities described in this @value{SECTION} +@quotation CAUTION +The facilities described in this @value{SECTION} are very much subject to change in a future @command{gawk} release. Be aware that you may have to re-do everything, at some future time. -@strong{Caution:} If you have written your own dynamic extensions, +If you have written your own dynamic extensions, be sure to recompile them for each new @command{gawk} release. There is no guarantee of binary compatibility between different releases, nor will there ever be such a guarantee. +@end quotation @quotation NOTE When @option{--sandbox} is specified, extensions are disabled @@ -627,8 +627,8 @@ cmp_nodes(NODE *t1, NODE *t2) #ifdef MBS_SUPPORT if (gawk_mb_cur_max > 1) { - ret = strncasecmpmbs((const char *) cp1, - (const char *) cp2, l); + ret = strncasecmpmbs((const unsigned char *) cp1, + (const unsigned char *) cp2, l); } else #endif /* Could use tolower() here; see discussion above. */ @@ -708,9 +708,9 @@ str2wstr(NODE *n, size_t **ptr) * big speed up. Thanks to Ulrich Drepper for the tip. * 11/2010: Thanks to Paolo Bonzini for some even faster code. */ - if (is_valid_character(*sp)) { + if (is_valid_character((unsigned char)*sp)) { count = 1; - wc = btowc_cache[*sp]; + wc = btowc_cache[(unsigned char)*sp]; } else count = mbrtowc(& wc, sp, src_count, & mbs); switch (count) { |