diff options
-rw-r--r-- | doc/ChangeLog | 4 | ||||
-rw-r--r-- | doc/gawk.info | 1505 | ||||
-rw-r--r-- | doc/gawk.texi | 327 | ||||
-rw-r--r-- | doc/gawktexi.in | 327 |
4 files changed, 1121 insertions, 1042 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index f051a9c1..b91b9238 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2014-05-27 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Edits through the end! + 2014-05-25 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Edits through Appendix A. diff --git a/doc/gawk.info b/doc/gawk.info index 48a8e9a4..ceeeb6f7 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -637,7 +637,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) * New Ports:: Porting `gawk' to a new operating system. * Derived Files:: Why derived files are kept in the - `git' repository. + Git repository. * Future Extensions:: New features that may be implemented one day. * Implementation Limitations:: Some limitations of the @@ -1328,7 +1328,7 @@ for now. *Note User-defined::.) Each rule specifies one pattern to search for and one action to perform upon finding the pattern. Syntactically, a rule consists of a pattern followed by an action. -The action is enclosed in curly braces to separate it from the pattern. +The action is enclosed in braces to separate it from the pattern. Newlines usually separate rules. Therefore, an `awk' program looks like this: @@ -1877,10 +1877,10 @@ for _every_ input line. If the action is omitted, the default action is to print all lines that match the pattern. Thus, we could leave out the action (the `print' statement and the -curly braces) in the previous example and the result would be the same: -`awk' prints all lines matching the pattern `li'. By comparison, -omitting the `print' statement but retaining the curly braces makes an -empty action that does nothing (i.e., no lines are printed). +braces) in the previous example and the result would be the same: `awk' +prints all lines matching the pattern `li'. By comparison, omitting +the `print' statement but retaining the braces makes an empty action +that does nothing (i.e., no lines are printed). Many practical `awk' programs are just a line or two. Following is a collection of useful, short programs to get you started. Some of these @@ -8940,12 +8940,12 @@ outline, an `awk' program generally looks like this: ... An action consists of one or more `awk' "statements", enclosed in -curly braces (`{...}'). Each statement specifies one thing to do. The -statements are separated by newlines or semicolons. The curly braces -around an action must be used even if the action contains only one -statement, or if it contains no statements at all. However, if you -omit the action entirely, omit the curly braces as well. An omitted -action is equivalent to `{ print $0 }': +braces (`{...}'). Each statement specifies one thing to do. The +statements are separated by newlines or semicolons. The braces around +an action must be used even if the action contains only one statement, +or if it contains no statements at all. However, if you omit the +action entirely, omit the braces as well. An omitted action is +equivalent to `{ print $0 }': /foo/ { } match `foo', do nothing -- empty action /foo/ match `foo', print the record -- omitted action @@ -8964,9 +8964,9 @@ Control statements well as a few special ones (*note Statements::). Compound statements - Enclose one or more statements in curly braces. A compound - statement is used in order to put several statements together in - the body of an `if', `while', `do', or `for' statement. + Enclose one or more statements in braces. A compound statement is + used in order to put several statements together in the body of an + `if', `while', `do', or `for' statement. Input statements Use the `getline' command (*note Getline::). Also supplied in @@ -8995,7 +8995,7 @@ statements contain other statements. For example, the `if' statement contains another statement that may or may not be executed. The contained statement is called the "body". To include more than one statement in the body, group them into a single "compound statement" -with curly braces, separating them with newlines or semicolons. +with braces, separating them with newlines or semicolons. * Menu: @@ -9043,8 +9043,8 @@ the value of `x' is evenly divisible by two), then the first `print' statement is executed; otherwise, the second `print' statement is executed. If the `else' keyword appears on the same line as THEN-BODY and THEN-BODY is not a compound statement (i.e., not surrounded by -curly braces), then a semicolon must separate THEN-BODY from the `else'. -To illustrate this, the previous example can be rewritten as: +braces), then a semicolon must separate THEN-BODY from the `else'. To +illustrate this, the previous example can be rewritten as: if (x % 2 == 0) print "x is even"; else print "x is odd" @@ -24427,7 +24427,7 @@ directory and run the program: ---------- Footnotes ---------- (1) In practice, you would probably want to use the GNU -Autotools--Automake, Autoconf, Libtool, and Gettext--to configure and +Autotools--Automake, Autoconf, Libtool, and `gettext'--to configure and build your libraries. Instructions for doing so are beyond the scope of this Info file. *Note gawkextlib::, for WWW links to the tools. @@ -25050,7 +25050,7 @@ parser library installed in order to build and use the XML extension. In addition, you must have the GNU Autotools installed (Autoconf (http://www.gnu.org/software/autoconf), Automake (http://www.gnu.org/software/automake), Libtool -(http://www.gnu.org/software/libtool), and Gettext +(http://www.gnu.org/software/libtool), and GNU `gettext' (http://www.gnu.org/software/gettext)). The simple recipe for building and testing `gawkextlib' is as @@ -26181,7 +26181,6 @@ the GNU Zip program, `gzip'. use `gzip' to expand the file and then use `tar' to extract it. You can use the following pipeline to produce the `gawk' distribution: - # Under System V, add 'o' to the tar options gzip -d -c gawk-4.1.1.tar.gz | tar -xvpf - On a system with GNU `tar', you can let `tar' do the decompression @@ -26317,8 +26316,8 @@ Various `.c', `.y', and `.h' files `Makefile.am' `*/Makefile.am' - Files used by the GNU `automake' software for generating the - `Makefile.in' files used by `autoconf' and `configure'. + Files used by the GNU Automake software for generating the + `Makefile.in' files used by Autoconf and `configure'. `Makefile.in' `aclocal.m4' @@ -26409,8 +26408,8 @@ environment for MS-Windows. `gawk-4.1.1'. Like most GNU software, `gawk' is configured automatically for your system by running the `configure' program. This program is a Bourne shell script that is generated automatically using -GNU `autoconf'. (The `autoconf' software is described fully starting -with *note (Autoconf)Top:: autoconf,Autoconf--Generating Automatic +GNU Autoconf. (The Autoconf software is described fully starting with +*note (Autoconf)Top:: autoconf,Autoconf--Generating Automatic Configuration Scripts.) To configure `gawk', simply run `configure': @@ -26488,8 +26487,8 @@ command line when compiling `gawk' from scratch, including: improvement. `--with-whiny-user-strftime' - Force use of the included version of the `strftime()' function for - deficient systems. + Force use of the included version of the C `strftime()' function + for deficient systems. Use the command `./configure --help' to see the full list of options that `configure' supplies. @@ -26533,9 +26532,9 @@ any constants that `configure' defined and should not have. `custom.h' is automatically included by `config.h'. It is also possible that the `configure' program generated by -`autoconf' will not work on your system in some other fashion. If you -do have a problem, the file `configure.ac' is the input for `autoconf'. -You may be able to change this file and generate a new version of +Autoconf will not work on your system in some other fashion. If you do +have a problem, the file `configure.ac' is the input for Autoconf. You +may be able to change this file and generate a new version of `configure' that works on your system (*note Bugs::, for information on how to report problems in configuring `gawk'). The same mechanism may be used to send in updates to `configure.ac' and/or `custom.h'. @@ -26696,7 +26695,12 @@ other set of (self-consistent) environment variables and compiler flags. NOTE: Ancient OS/2 ports of GNU `make' are not able to handle the Makefiles of this package. If you encounter any problems with `make', try GNU Make 3.79.1 or later versions. You should find - the latest version on `ftp://hobbes.nmsu.edu/pub/os2/'. + the latest version on `ftp://hobbes.nmsu.edu/pub/os2/'.(1) + + ---------- Footnotes ---------- + + (1) As of May, 2014, this site is still there, but the author could +not find a package for GNU Make. File: gawk.info, Node: PC Testing, Next: PC Using, Prev: PC Compiling, Up: PC Installation @@ -26737,11 +26741,11 @@ Networking::). EMX (OS/2 only) supports at least the `|&' operator. files as described in *note AWKPATH Variable::. However, semicolons (rather than colons) separate elements in the `AWKPATH' variable. If `AWKPATH' is not set or is empty, then the default search path for -MS-Windows and MS-DOS versions is `".;c:/lib/awk;c:/gnu/lib/awk"'. +MS-Windows and MS-DOS versions is `.;c:/lib/awk;c:/gnu/lib/awk'. The search path for OS/2 (32 bit, EMX) is determined by the prefix directory (most likely `/usr' or `c:/usr') that has been specified as -an option of the `configure' script like it is the case for the Unix +an option of the `configure' script as is the case for the Unix versions. If `c:/usr' is the prefix directory then the default search path contains `.' and `c:/usr/share/awk'. Additionally, to support binary distributions of `gawk' for OS/2 systems whose drive `c:' might @@ -26749,7 +26753,7 @@ not support long file names or might not exist at all, there is a special environment variable. If `UNIXROOT' specifies a drive then this specific drive is also searched for program files. E.g., if `UNIXROOT' is set to `e:' the complete default search path is -`".;c:/usr/share/awk;e:/usr/share/awk"'. +`.;c:/usr/share/awk;e:/usr/share/awk'. An `sh'-like shell (as opposed to `command.com' under MS-DOS or `cmd.exe' under MS-Windows or OS/2) may be useful for `awk' programming. @@ -26757,10 +26761,9 @@ The DJGPP collection of tools includes an MS-DOS port of Bash, and several shells are available for OS/2, including `ksh'. Under MS-Windows, OS/2 and MS-DOS, `gawk' (and many other text -programs) silently translate end-of-line `"\r\n"' to `"\n"' on input -and `"\n"' to `"\r\n"' on output. A special `BINMODE' variable -(c.e.) allows control over these translations and is interpreted as -follows: +programs) silently translate end-of-line `\r\n' to `\n' on input and +`\n' to `\r\n' on output. A special `BINMODE' variable (c.e.) allows +control over these translations and is interpreted as follows: * If `BINMODE' is `"r"', or one, then binary mode is set on read (i.e., no translations on reads). @@ -26786,11 +26789,11 @@ and cannot be changed mid-stream. Versions::). `mawk' and `gawk' handle `BINMODE' similarly; however, `mawk' adds a `-W BINMODE=N' option and an environment variable that can set `BINMODE', `RS', and `ORS'. The files `binmode[1-3].awk' -(under `gnu/lib/awk' in some of the prepared distributions) have been -chosen to match `mawk''s `-W BINMODE=N' option. These can be changed -or discarded; in particular, the setting of `RS' giving the fewest -"surprises" is open to debate. `mawk' uses `RS = "\r\n"' if binary -mode is set on read, which is appropriate for files with the +(under `gnu/lib/awk' in some of the prepared binary distributions) have +been chosen to match `mawk''s `-W BINMODE=N' option. These can be +changed or discarded; in particular, the setting of `RS' giving the +fewest "surprises" is open to debate. `mawk' uses `RS = "\r\n"' if +binary mode is set on read, which is appropriate for files with the MS-DOS-style end-of-line. To illustrate, the following examples set binary mode on writes for @@ -26893,10 +26896,10 @@ or: $ MMK/DESCRIPTION=[.vms]descrip.mms gawk `MMK' is an open source, free, near-clone of `MMS' and can better -handle `ODS-5' volumes with upper- and lowercase filenames. `MMK' is +handle ODS-5 volumes with upper- and lowercase filenames. `MMK' is available from `https://github.com/endlesssoftware/mmk'. - With `ODS-5' volumes and extended parsing enabled, the case of the + With ODS-5 volumes and extended parsing enabled, the case of the target parameter may need to be exact. `gawk' has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 using @@ -26904,8 +26907,8 @@ Compaq C V6.4, and Alpha/VMS 7.3, Alpha/VMS 7.3-2, and IA64/VMS 8.3. The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.(1) - The `[.vms]gawk_build_steps.txt' provides information on how to build -`gawk' into a PCSI kit that is compatible with the GNV product. + *Note VMS GNV::, for information on building `gawk' as a PCSI kit +that is compatible with the GNV product. ---------- Footnotes ---------- @@ -27147,11 +27150,12 @@ get this information with the command `gawk --version'. Once you have a precise problem, send email to <bug-gawk@gnu.org>. - Using this address automatically sends a copy of your mail to me. -If necessary, I can be reached directly at <arnold@skeeve.com>. 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._ + The `gawk' maintainers subscribe to this address and thus they will +receive your bug report. If necessary, the primary maintainer can be +reached directly at <arnold@skeeve.com>. The bug reporting address is +preferred since the email list is archived at the GNU Project. _All +email should be in English. This is the only language understood in +common by all the maintainers._ CAUTION: Do _not_ try to report bugs in `gawk' by posting to the Usenet/Internet newsgroup `comp.lang.awk'. While the `gawk' @@ -27186,7 +27190,7 @@ considered authoritative if it conflicts with this Info file. The people maintaining the non-Unix ports of `gawk' are as follows: MS-DOS with DJGPP Scott Deifik, <scottd.mail@sbcglobal.net>. -MS-Windows with MINGW Eli Zaretskii, <eliz@gnu.org>. +MS-Windows with MinGW Eli Zaretskii, <eliz@gnu.org>. OS/2 Andreas Buening, <andreas.buening@nexgo.de>. VMS Pat Rankin, <r.pat.rankin@gmail.com>, and John Malmberg, <wb8tyw@qsl.net>. @@ -27292,12 +27296,13 @@ Busybox Awk (http://busybox.net). The OpenSolaris POSIX `awk' - The version of `awk' in `/usr/xpg4/bin' on Solaris is more-or-less - POSIX-compliant. It is based on the `awk' from Mortice Kern - Systems for PCs. This author was able to make it compile and work - under GNU/Linux with 1-2 hours of work. Making it more generally - portable (using GNU Autoconf and/or Automake) would take more - work, and this has not been done, at least to our knowledge. + The versions of `awk' in `/usr/xpg4/bin' and `/usr/xpg6/bin' on + Solaris are more-or-less POSIX-compliant. They are based on the + `awk' from Mortice Kern Systems for PCs. This author was able to + make this code compile and work under GNU/Linux with 1-2 hours of + work. Making it more generally portable (using GNU Autoconf + and/or Automake) would take more work, and this has not been done, + at least to our knowledge. The source code used to be available from the OpenSolaris web site. However, that project was ended and the web site shut down. @@ -27335,6 +27340,9 @@ QSE Awk `http://www.quiktrim.org/QTawk.html' for more information, including the manual and a download link. + The project may als be frozen; no new code changes have been made + since approximately 2008. + Other Versions See also the Wikipedia article (http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations), @@ -27377,7 +27385,7 @@ one more option available on the command line: `-Y' `--parsedebug' - Prints out the parse stack information as the program is being + Print out the parse stack information as the program is being parsed. This option is intended only for serious `gawk' developers and not @@ -27406,7 +27414,7 @@ as well as any considerations you should bear in mind. * New Ports:: Porting `gawk' to a new operating system. * Derived Files:: Why derived files are kept in the - `git' repository. + Git repository. File: gawk.info, Node: Accessing The Source, Next: Adding Code, Up: Additions @@ -27427,9 +27435,9 @@ doesn't have it. Once you have done so, use the command: git clone git://git.savannah.gnu.org/gawk.git -This will clone the `gawk' repository. If you are behind a firewall -that will not allow you to use the Git native protocol, you can still -access the repository using: +This clones the `gawk' repository. If you are behind a firewall that +does not allow you to use the Git native protocol, you can still access +the repository using: git clone http://git.savannah.gnu.org/r/gawk.git @@ -27451,7 +27459,7 @@ C.2.2 Adding New Features You are free to add any new features you like to `gawk'. However, if you want your changes to be incorporated into the `gawk' distribution, there are several steps that you need to take in order to make it -possible to include your changes: +possible to include them: 1. Before building the new feature into `gawk' itself, consider writing it as an extension module (*note Dynamic Extensions::). @@ -27468,9 +27476,10 @@ possible to include your changes: 3. Get the latest version. It is much easier for me to integrate changes if they are relative to the most recent distributed - version of `gawk'. If your version of `gawk' is very old, I may - not be able to integrate them at all. (*Note Getting::, for - information on getting the latest version of `gawk'.) + version of `gawk', or better yet, relative to the latest code in + the Git repository. If your version of `gawk' is very old, I may + not be able to integrate your changes at all. (*Note Getting::, + for information on getting the latest version of `gawk'.) 4. See *note (Version)Top:: standards, GNU Coding Standards. This document describes how GNU software should be written. If you @@ -27567,7 +27576,8 @@ possible to include your changes: 8. Include an entry for the `ChangeLog' file with your submission. This helps further minimize the amount of work I have to do, - making it easier for me to accept patches. + making it easier for me to accept patches. It is simplest if you + just make this part of your diff. Although this sounds like a lot of work, please remember that while you may write the new code, I have to maintain it and support it. If it @@ -27608,18 +27618,24 @@ steps: people. Thus, you should not change them unless it is for a very good reason; i.e., changes are not out of the question, but changes to these files are scrutinized extra carefully. The files - are `dfa.c', `dfa.h', `getopt1.c', `getopt.c', `getopt.h', - `install-sh', `mkinstalldirs', `regcomp.c', `regex.c', - `regexec.c', `regexex.c', `regex.h', `regex_internal.c', and - `regex_internal.h'. - - 5. Be willing to continue to maintain the port. Non-Unix operating + are `dfa.c', `dfa.h', `getopt.c', `getopt.h', `getopt1.c', + `getopt_int.h', `gettext.h', `regcomp.c', `regex.c', `regex.h', + `regex_internal.c', `regex_internal.h', and `regexec.c'. + + 5. A number of other files are provided by the GNU Autotools + (Autoconf, Automake, and GNU `gettext'). You should not change + them either, unless it is for a very good reason. The files are + `ABOUT-NLS', `config.guess', `config.rpath', `config.sub', + `depcomp', `INSTALL', `install-sh', `missing', `mkinstalldirs', + `xalloc.h', and `ylwrap'. + + 6. Be willing to continue to maintain the port. Non-Unix operating systems are supported by volunteers who maintain the code needed to compile and run `gawk' on their systems. If noone volunteers to maintain a port, it becomes unsupported and it may be necessary to remove it from the distribution. - 6. Supply an appropriate `gawkmisc.???' file. Each port has its own + 7. Supply an appropriate `gawkmisc.???' file. Each port has its own `gawkmisc.???' that implements certain operating system specific functions. This is cleaner than a plethora of `#ifdef's scattered throughout the code. The `gawkmisc.c' in the main source @@ -27635,7 +27651,7 @@ steps: (Currently, this is only an issue for the PC operating system ports.) - 7. Supply a `Makefile' as well as any other C source and header files + 8. Supply a `Makefile' as well as any other C source and header files that are necessary for your operating system. All your code should be in a separate subdirectory, with a name that is the same as, or reminiscent of, either your operating system or the @@ -27645,7 +27661,7 @@ steps: avoid using names for your files that duplicate the names of files in the main source directory. - 8. Update the documentation. Please write a section (or sections) + 9. Update the documentation. Please write a section (or sections) for this Info file describing the installation and compilation steps needed to compile and/or install `gawk' for your system. @@ -27659,13 +27675,13 @@ style and brace layout that suits your taste. File: gawk.info, Node: Derived Files, Prev: New Ports, Up: Additions -C.2.4 Why Generated Files Are Kept In `git' -------------------------------------------- +C.2.4 Why Generated Files Are Kept In Git +----------------------------------------- -If you look at the `gawk' source in the `git' repository, you will -notice that it includes files that are automatically generated by GNU -infrastructure tools, such as `Makefile.in' from `automake' and even -`configure' from `autoconf'. +If you look at the `gawk' source in the Git repository, you will notice +that it includes files that are automatically generated by GNU +infrastructure tools, such as `Makefile.in' from Automake and even +`configure' from Autoconf. This is different from many Free Software projects that do not store the derived files, because that keeps the repository less cluttered, @@ -27692,10 +27708,10 @@ build?) If the repository has all the generated files, then it's easy to just check them out and build. (Or _easier_, depending upon how far -back we go. `:-)') +back we go.) And that brings us to the second (and stronger) reason why all the -files really need to be in `git'. It boils down to who do you cater +files really need to be in Git. It boils down to who do you cater to--the `gawk' developer(s), or the user who just wants to check out a version and try it out? @@ -27721,7 +27737,7 @@ idea how to create it, and that was not the only problem.) He felt _extremely_ frustrated. With respect to that branch, the maintainer is no different than Jane User who wants to try to build -`gawk-4.0-stable' or `master' from the repository. +`gawk-4.1-stable' or `master' from the repository. Thus, the maintainer thinks that it's not just important, but critical, that for any given branch, the above incantation _just works_. @@ -27736,32 +27752,26 @@ critical, that for any given branch, the above incantation _just works_. B. He is really good at `git diff x y > /tmp/diff1 ; gvim /tmp/diff1' to remove the diffs that aren't of interest in - order to review code. `:-)' + order to review code. 2. It would certainly help if everyone used the same versions of the GNU tools as he does, which in general are the latest released - versions of `automake', `autoconf', `bison', and `gettext'. + versions of Automake, Autoconf, `bison', and `gettext'. - A. Installing from source is quite easy. It's how the maintainer - worked for years under Fedora. He had `/usr/local/bin' at - the front of his `PATH' and just did: - - wget http://ftp.gnu.org/gnu/PACKAGE/PACKAGE-X.Y.Z.tar.gz - tar -xpzvf PACKAGE-X.Y.Z.tar.gz - cd PACKAGE-X.Y.Z - ./configure && make && make check - make install # as root - - B. These days the maintainer uses Ubuntu 12.04 which is medium - current, but he is already doing the above for `autoconf', - `automake' and `bison'. + Installing from source is quite easy. It's how the maintainer + worked for years, and still works. He had `/usr/local/bin' at the + front of his `PATH' and just did: + wget http://ftp.gnu.org/gnu/PACKAGE/PACKAGE-X.Y.Z.tar.gz + tar -xpzvf PACKAGE-X.Y.Z.tar.gz + cd PACKAGE-X.Y.Z + ./configure && make && make check + make install # as root Most of the above was originally written by the maintainer to other `gawk' developers. It raised the objection from one of the developers -"... that anybody pulling down the source from `git' is not an end -user." +"... that anybody pulling down the source from Git is not an end user." However, this is not true. There are "power `awk' users" who can build `gawk' (using the magic incantation shown previously) but who @@ -27770,12 +27780,12 @@ all the time. It was then suggested that there be a `cron' job to create nightly tarballs of "the source." Here, the problem is that there are source -trees, corresponding to the various branches! So, nightly tar balls +trees, corresponding to the various branches! So, nightly tarballs aren't the answer, especially as the repository can go for weeks without significant change being introduced. - Fortunately, the `git' server can meet this need. For any given -branch named BRANCHNAME, use: + Fortunately, the Git server can meet this need. For any given branch +named BRANCHNAME, use: wget http://git.savannah.gnu.org/cgit/gawk.git/snapshot/gawk-BRANCHNAME.tar.gz @@ -27786,9 +27796,9 @@ to retrieve a snapshot of the given branch. (1) We tried. It was painful. (2) There is one GNU program that is (in our opinion) severely -difficult to bootstrap from the `git' repository. For example, on the -author's old (but still working) PowerPC macintosh with Mac OS X 10.5, -it was necessary to bootstrap a ton of software, starting with `git' +difficult to bootstrap from the Git repository. For example, on the +author's old (but still working) PowerPC Macintosh with Mac OS X 10.5, +it was necessary to bootstrap a ton of software, starting with Git itself, in order to try to work with the latest code. It's not pleasant, and especially on older systems, it's a big waste of time. @@ -27796,8 +27806,8 @@ pleasant, and especially on older systems, it's a big waste of time. maintainers had dropped `.gz' and `.bz2' files and only distribute `.tar.xz' files. It was necessary to bootstrap `xz' first! - (3) A branch created by one of the other developers that did not -include the generated files. + (3) A branch (since removed) created by one of the other developers +that did not include the generated files. File: gawk.info, Node: Future Extensions, Next: Implementation Limitations, Prev: Additions, Up: Notes @@ -27810,11 +27820,11 @@ C.3 Probable Future Extensions Hey! -- Larry Wall - The `TODO' file in the `gawk' Git repository lists possible future -enhancements. Some of these relate to the source code, and others to -possible new features. Please see that file for the list. *Note -Additions::, if you are interested in tackling any of the projects -listed there. + The `TODO' file in the `master' branch of the `gawk' Git repository +lists possible future enhancements. Some of these relate to the source +code, and others to possible new features. Please see that file for +the list. *Note Additions::, if you are interested in tackling any of +the projects listed there. File: gawk.info, Node: Implementation Limitations, Next: Extension Design, Prev: Future Extensions, Up: Notes @@ -27891,9 +27901,9 @@ The old extension mechanism had several problems: * Being able to call into `gawk' from an extension required linker facilities that are common on Unix-derived systems but that did - not work on Windows systems; users wanting extensions on Windows - had to statically link them into `gawk', even though Windows - supports dynamic loading of shared objects. + not work on MS-Windows systems; users wanting extensions on + MS-Windows had to statically link them into `gawk', even though + MS-Windows supports dynamic loading of shared objects. * The API would change occasionally as `gawk' changed; no compatibility between versions was ever offered or planned for. @@ -27941,8 +27951,8 @@ Some goals for the new API were: flattening") in order to loop over all the element in an easy fashion for C code. - - The ability to create arrays (including `gawk''s true - multidimensional arrays). + - The ability to create arrays (including `gawk''s true arrays + of arrays). Some additional important goals were: @@ -27956,7 +27966,7 @@ Some goals for the new API were: * The API mechanism should not require access to `gawk''s symbols(1) by the compile-time or dynamic linker, in order to enable creation - of extensions that also work on Windows. + of extensions that also work on MS-Windows. During development, it became clear that there were other features that should be available to extensions, which were also subsequently @@ -27994,7 +28004,7 @@ Mechanism Outline::, for the details. (1) The "symbols" are the variables and functions defined inside `gawk'. Access to these symbols by code external to `gawk' loaded -dynamically at runtime is problematic on Windows. +dynamically at runtime is problematic on MS-Windows. File: gawk.info, Node: Extension Other Design Decisions, Next: Extension Future Growth, Prev: Extension New Mechanism Goals, Up: Extension Design @@ -28250,15 +28260,14 @@ like this: `""'. Humans are used to working in decimal; i.e., base 10. In base 10, numbers go from 0 to 9, and then "roll over" into the next column. -(Remember grade school? 42 is 4 times 10 plus 2.) +(Remember grade school? 42 = 4 x 10 + 2.) There are other number bases though. Computers commonly use base 2 or "binary", base 8 or "octal", and base 16 or "hexadecimal". In binary, each column represents two times the value in the column to its right. Each column may contain either a 0 or a 1. Thus, binary 1010 -represents 1 times 8, plus 0 times 4, plus 1 times 2, plus 0 times 1, -or decimal 10. Octal and hexadecimal are discussed more in *note -Nondecimal-numbers::. +represents (1 x 8) + (0 x 4) + (1 x 2) + (0 x 1), or decimal 10. Octal +and hexadecimal are discussed more in *note Nondecimal-numbers::. At the very lowest level, computers store values as groups of binary digits, or "bits". Modern computers group bits into groups of eight, @@ -28290,8 +28299,7 @@ Glossary Action A series of `awk' statements attached to a rule. If the rule's pattern matches an input record, `awk' executes the rule's action. - Actions are always enclosed in curly braces. (*Note Action - Overview::.) + Actions are always enclosed in braces. (*Note Action Overview::.) Amazing `awk' Assembler Henry Spencer at the University of Toronto wrote a retargetable @@ -28377,9 +28385,9 @@ Boolean Expression Bourne Shell The standard shell (`/bin/sh') on Unix and Unix-like systems, - originally written by Steven R. Bourne. Many shells (Bash, `ksh', - `pdksh', `zsh') are generally upwardly compatible with the Bourne - shell. + originally written by Steven R. Bourne at Bell Laboratories. Many + shells (Bash, `ksh', `pdksh', `zsh') are generally upwardly + compatible with the Bourne shell. Built-in Function The `awk' language provides built-in functions that perform various @@ -28400,7 +28408,8 @@ Built-in Variable Variables::.) Braces - See "Curly Braces." + The characters `{' and `}'. Braces are used in `awk' for + delimiting actions, compound statements, and function bodies. C The system programming language that most GNU software is written @@ -28421,8 +28430,8 @@ Character Set ASCII (American Standard Code for Information Interchange). Many European countries use an extension of ASCII known as ISO-8859-1 (ISO Latin-1). The Unicode character set (http://www.unicode.org) - is becoming increasingly popular and standard, and is particularly - widely used on GNU/Linux systems. + is increasingly popular and standard, and is particularly widely + used on GNU/Linux systems. CHEM A preprocessor for `pic' that reads descriptions of molecules and @@ -28432,7 +28441,7 @@ CHEM Cookie A peculiar goodie, token, saying or remembrance produced by or - presented to a program. (With thanks to Doug McIlroy.) + presented to a program. (With thanks to Professor Doug McIlroy.) Coprocess A subordinate program with which two-way communications is @@ -28467,8 +28476,7 @@ Comparison Expression process. (*Note Typing and Comparison::.) Curly Braces - The characters `{' and `}'. Curly braces are used in `awk' for - delimiting actions, compound statements, and function bodies. + See "Braces." Dark Corner An area in the language where specifications often were (or still @@ -28508,8 +28516,8 @@ Dynamic Regular Expression (*Note Computed Regexps::.) Environment - A collection of strings, of the form NAME`='`val', that each - program has available to it. Users generally place values into the + A collection of strings, of the form `NAME=VAL', that each program + has available to it. Users generally place values into the environment in order to provide information to various programs. Typical examples are the environment variables `HOME' and `PATH'. @@ -28559,11 +28567,11 @@ Floating-Point Number See also "Double Precision" and "Single Precision." Format - Format strings are used to control the appearance of output in the - `strftime()' and `sprintf()' functions, and are used in the - `printf' statement as well. Also, data conversions from numbers - to strings are controlled by the format strings contained in the - built-in variables `CONVFMT' and `OFMT'. (*Note Control Letters::.) + Format strings control the appearance of output in the + `strftime()' and `sprintf()' functions, and in the `printf' + statement as well. Also, data conversions from numbers to strings + are controlled by the format strings contained in the built-in + variables `CONVFMT' and `OFMT'. (*Note Control Letters::.) Free Documentation License This document describes the terms under which this Info file is @@ -28618,8 +28626,8 @@ Hexadecimal Base 16 notation, where the digits are `0'-`9' and `A'-`F', with `A' representing 10, `B' representing 11, and so on, up to `F' for 15. Hexadecimal numbers are written in C using a leading `0x', to - indicate their base. Thus, `0x12' is 18 (1 times 16 plus 2). - *Note Nondecimal-numbers::. + indicate their base. Thus, `0x12' is 18 ((1 x 16) + 2). *Note + Nondecimal-numbers::. I/O Abbreviation for "Input/Output," the act of moving data into and/or @@ -28676,7 +28684,7 @@ Keyword `gawk''s keywords are: `BEGIN', `BEGINFILE', `END', `ENDFILE', `break', `case', `continue', `default' `delete', `do...while', `else', `exit', `for...in', `for', `function', `func', `if', - `nextfile', `next', `switch', and `while'. + `next', `nextfile', `switch', and `while'. Lesser General Public License This document describes the terms under which binary library @@ -28732,11 +28740,7 @@ Number Octal Base-eight notation, where the digits are `0'-`7'. Octal numbers are written in C using a leading `0', to indicate their base. - Thus, `013' is 11 (one times 8 plus 3). *Note - Nondecimal-numbers::. - -P1003.1 - See "POSIX." + Thus, `013' is 11 ((1 x 8) + 3). *Note Nondecimal-numbers::. Pattern Patterns tell `awk' which input records are interesting to which @@ -28777,9 +28781,9 @@ Range (of input lines) specify single lines. (*Note Pattern Overview::.) Recursion - When a function calls itself, either directly or indirectly. As - long as this is not clear, refer to the entry for "recursion." If - this is clear, stop, and proceed to the next entry. + When a function calls itself, either directly or indirectly. If + this is clear, stop, and proceed to the next entry. Otherwise, + refer to the entry for "recursion." Redirection Redirection means performing input from something other than the @@ -28860,8 +28864,8 @@ Single Precision parts. Single precision numbers keep track of fewer digits than do double precision numbers, but operations on them are sometimes less expensive in terms of CPU time. This is the type used by - some very old versions of `awk' to store numeric values. It is - the C type `float'. + some ancient versions of `awk' to store numeric values. It is the + C type `float'. Space The character generated by hitting the space bar on the keyboard. @@ -28895,7 +28899,7 @@ Text Domain Timestamp A value in the "seconds since the epoch" format used by Unix and POSIX systems. Used for the `gawk' functions `mktime()', - `strftime()', and `systime()'. See also "Epoch" and "UTC." + `strftime()', and `systime()'. See also "Epoch," "GMT," and "UTC." Unix A computer operating system originally developed in the early @@ -30410,7 +30414,7 @@ Index * actions, control statements in: Statements. (line 6) * actions, default: Very Simple. (line 34) * actions, empty: Very Simple. (line 39) -* Ada programming language: Glossary. (line 20) +* Ada programming language: Glossary. (line 19) * adding, features to gawk: Adding Code. (line 6) * adding, fields: Changing Fields. (line 53) * advanced features, fixed-width data: Constant Size. (line 10) @@ -30429,8 +30433,8 @@ Index * allocating memory for extensions: Memory Allocation Functions. (line 6) * Alpha (DEC): Manual History. (line 28) -* amazing awk assembler (aaa): Glossary. (line 12) -* amazingly workable formatter (awf): Glossary. (line 25) +* amazing awk assembler (aaa): Glossary. (line 11) +* amazingly workable formatter (awf): Glossary. (line 24) * ambiguity, syntactic: /= operator vs. /=.../ regexp constant: Assignment Ops. (line 148) * ampersand (&), && operator <1>: Precedence. (line 86) @@ -30442,7 +30446,7 @@ Index * and: Bitwise Functions. (line 39) * AND bitwise operation: Bitwise Functions. (line 6) * and Boolean-logic operator: Boolean Ops. (line 6) -* ANSI: Glossary. (line 35) +* ANSI: Glossary. (line 34) * API informational variables: Extension API Informational Variables. (line 6) * API version: Extension Versioning. @@ -30548,7 +30552,7 @@ Index * asterisk (*), *= operator: Assignment Ops. (line 130) * atan2: Numeric Functions. (line 11) * automatic displays, in debugger: Debugger Info. (line 24) -* awf (amazingly workable formatter) program: Glossary. (line 25) +* awf (amazingly workable formatter) program: Glossary. (line 24) * awk debugging, enabling: Options. (line 108) * awk language, POSIX version: Assignment Ops. (line 137) * awk profiling, enabling: Options. (line 242) @@ -30769,9 +30773,9 @@ Index * Brink, Jeroen: DOS Quoting. (line 10) * Broder, Alan J.: Contributors. (line 88) * Brown, Martin: Contributors. (line 82) -* BSD-based operating systems: Glossary. (line 616) +* BSD-based operating systems: Glossary. (line 611) * bt debugger command (alias for backtrace): Execution Stack. (line 13) -* Buening, Andreas <1>: Bugs. (line 70) +* Buening, Andreas <1>: Bugs. (line 71) * Buening, Andreas <2>: Contributors. (line 92) * Buening, Andreas: Acknowledgments. (line 60) * buffering, input/output <1>: Two-way I/O. (line 70) @@ -30890,7 +30894,7 @@ Index * common extensions, RS as a regexp: gawk split records. (line 6) * common extensions, single character fields: Single Character Fields. (line 6) -* comp.lang.awk newsgroup: Bugs. (line 38) +* comp.lang.awk newsgroup: Bugs. (line 39) * comparison expressions: Typing and Comparison. (line 9) * comparison expressions, as patterns: Expression Patterns. (line 14) @@ -30977,7 +30981,7 @@ Index * cut.awk program: Cut Program. (line 45) * d debugger command (alias for delete): Breakpoint Control. (line 64) * d.c., See dark corner: Conventions. (line 38) -* dark corner <1>: Glossary. (line 189) +* dark corner <1>: Glossary. (line 188) * dark corner: Conventions. (line 38) * dark corner, "0" is actually true: Truth Values. (line 24) * dark corner, /= operator vs. /=.../ regexp constant: Assignment Ops. @@ -31148,7 +31152,7 @@ Index * decimal point character, locale specific: Options. (line 270) * decrement operators: Increment Ops. (line 35) * default keyword: Switch Statement. (line 6) -* Deifik, Scott <1>: Bugs. (line 70) +* Deifik, Scott <1>: Bugs. (line 71) * Deifik, Scott <2>: Contributors. (line 53) * Deifik, Scott: Acknowledgments. (line 60) * delete ARRAY: Delete. (line 39) @@ -31320,7 +31324,7 @@ Index * environment variables used by gawk: Environment Variables. (line 6) * environment variables, in ENVIRON array: Auto-set. (line 60) -* epoch, definition of: Glossary. (line 235) +* epoch, definition of: Glossary. (line 234) * equals sign (=), = operator: Assignment Ops. (line 6) * equals sign (=), == operator <1>: Precedence. (line 65) * equals sign (=), == operator: Comparison Operators. @@ -31566,10 +31570,10 @@ Index * frame debugger command: Execution Stack. (line 25) * Free Documentation License (FDL): GNU Free Documentation License. (line 7) -* Free Software Foundation (FSF) <1>: Glossary. (line 297) +* Free Software Foundation (FSF) <1>: Glossary. (line 296) * Free Software Foundation (FSF) <2>: Getting. (line 10) * Free Software Foundation (FSF): Manual History. (line 6) -* FreeBSD: Glossary. (line 616) +* FreeBSD: Glossary. (line 611) * FS variable <1>: User-modified. (line 50) * FS variable: Field Separators. (line 15) * FS variable, --field-separator option and: Options. (line 21) @@ -31583,7 +31587,7 @@ Index * FS, containing ^: Regexp Field Splitting. (line 59) * FS, in multiline records: Multiple Line. (line 41) -* FSF (Free Software Foundation) <1>: Glossary. (line 297) +* FSF (Free Software Foundation) <1>: Glossary. (line 296) * FSF (Free Software Foundation) <2>: Getting. (line 10) * FSF (Free Software Foundation): Manual History. (line 6) * fts() extension function: Extension Sample File Functions. @@ -31646,7 +31650,7 @@ Index * gawk, break statement in: Break Statement. (line 51) * gawk, built-in variables and: Built-in Variables. (line 14) * gawk, character classes and: Bracket Expressions. (line 90) -* gawk, coding style in: Adding Code. (line 38) +* gawk, coding style in: Adding Code. (line 39) * gawk, command-line options, and regular expressions: GNU Regexp Operators. (line 70) * gawk, comparison operators and: Comparison Operators. @@ -31732,7 +31736,7 @@ Index (line 63) * gawkextlib: gawkextlib. (line 6) * gawkextlib project: gawkextlib. (line 6) -* General Public License (GPL): Glossary. (line 306) +* General Public License (GPL): Glossary. (line 305) * General Public License, See GPL: Manual History. (line 11) * generate time values: Time Functions. (line 25) * gensub <1>: String Functions. (line 89) @@ -31780,29 +31784,29 @@ Index * gettext() function (C library): Explaining gettext. (line 63) * gettimeofday() extension function: Extension Sample Time. (line 12) -* git utility <1>: Adding Code. (line 111) +* git utility <1>: Adding Code. (line 112) * git utility <2>: Accessing The Source. (line 10) * git utility <3>: Other Versions. (line 29) * git utility: gawkextlib. (line 29) -* git, use of for gawk source code: Derived Files. (line 6) +* Git, use of for gawk source code: Derived Files. (line 6) * GMP: Gawk and MPFR. (line 6) * GNITS mailing list: Acknowledgments. (line 52) * GNU awk, See gawk: Preface. (line 53) * GNU Free Documentation License: GNU Free Documentation License. (line 7) -* GNU General Public License: Glossary. (line 306) -* GNU Lesser General Public License: Glossary. (line 397) +* GNU General Public License: Glossary. (line 305) +* GNU Lesser General Public License: Glossary. (line 396) * GNU long options <1>: Options. (line 6) * GNU long options: Command Line. (line 13) * GNU long options, printing list of: Options. (line 154) -* GNU Project <1>: Glossary. (line 315) +* GNU Project <1>: Glossary. (line 314) * GNU Project: Manual History. (line 11) -* GNU/Linux <1>: Glossary. (line 616) +* GNU/Linux <1>: Glossary. (line 611) * GNU/Linux <2>: I18N Example. (line 55) * GNU/Linux: Manual History. (line 28) * Gordon, Assaf: Contributors. (line 105) -* GPL (General Public License) <1>: Glossary. (line 306) +* GPL (General Public License) <1>: Glossary. (line 305) * GPL (General Public License): Manual History. (line 11) * GPL (General Public License), printing: Options. (line 88) * grcat program: Group Functions. (line 16) @@ -31858,8 +31862,8 @@ Index (line 53) * IGNORECASE variable, with ~ and !~ operators: Case-sensitivity. (line 26) -* Illumos: Other Versions. (line 104) -* Illumos, POSIX-compliant awk: Other Versions. (line 104) +* Illumos: Other Versions. (line 105) +* Illumos, POSIX-compliant awk: Other Versions. (line 105) * implementation issues, gawk: Notes. (line 6) * implementation issues, gawk, debugging: Compatibility Mode. (line 6) * implementation issues, gawk, limits <1>: Redirection. (line 135) @@ -31935,21 +31939,21 @@ Index * internationalization, localization, portability and: I18N Portability. (line 6) * internationalizing a program: Explaining gettext. (line 6) -* interpreted programs <1>: Glossary. (line 357) +* interpreted programs <1>: Glossary. (line 356) * interpreted programs: Basic High Level. (line 15) * interval expressions, regexp operator: Regexp Operators. (line 117) * inventory-shipped file: Sample Data Files. (line 32) * invoke shell command: I/O Functions. (line 75) * isarray: Type Functions. (line 11) -* ISO: Glossary. (line 368) +* ISO: Glossary. (line 367) * ISO 8859-1: Glossary. (line 133) * ISO Latin-1: Glossary. (line 133) * Jacobs, Andrew: Passwd Functions. (line 90) * Jaegermann, Michal <1>: Contributors. (line 45) * Jaegermann, Michal: Acknowledgments. (line 60) -* Java implementation of awk: Other Versions. (line 112) -* Java programming language: Glossary. (line 380) -* jawk: Other Versions. (line 112) +* Java implementation of awk: Other Versions. (line 113) +* Java programming language: Glossary. (line 379) +* jawk: Other Versions. (line 113) * Jedi knights: Undocumented. (line 6) * Johansen, Chris: Signature Program. (line 25) * join() user-defined function: Join Function. (line 18) @@ -31958,7 +31962,7 @@ Index * Kasal, Stepan: Acknowledgments. (line 60) * Kenobi, Obi-Wan: Undocumented. (line 6) * Kernighan, Brian <1>: Glossary. (line 143) -* Kernighan, Brian <2>: Basic Data Typing. (line 55) +* Kernighan, Brian <2>: Basic Data Typing. (line 54) * Kernighan, Brian <3>: Other Versions. (line 13) * Kernighan, Brian <4>: Contributors. (line 11) * Kernighan, Brian <5>: BTL. (line 6) @@ -32001,9 +32005,9 @@ Index * length: String Functions. (line 167) * length of input record: String Functions. (line 174) * length of string: String Functions. (line 167) -* Lesser General Public License (LGPL): Glossary. (line 397) -* LGPL (Lesser General Public License): Glossary. (line 397) -* libmawk: Other Versions. (line 120) +* Lesser General Public License (LGPL): Glossary. (line 396) +* LGPL (Lesser General Public License): Glossary. (line 396) +* libmawk: Other Versions. (line 121) * libraries of awk functions: Library Functions. (line 6) * libraries of awk functions, assertions: Assert Function. (line 6) * libraries of awk functions, associative arrays and: Library Names. @@ -32047,7 +32051,7 @@ Index * lint checking, undefined functions: Pass By Value/Reference. (line 88) * LINT variable: User-modified. (line 88) -* Linux <1>: Glossary. (line 616) +* Linux <1>: Glossary. (line 611) * Linux <2>: I18N Example. (line 55) * Linux: Manual History. (line 28) * list all global variables, in debugger: Debugger Info. (line 48) @@ -32085,7 +32089,7 @@ Index * mail-list file: Sample Data Files. (line 6) * mailing labels, printing: Labels Program. (line 6) * mailing list, GNITS: Acknowledgments. (line 52) -* Malmberg, John <1>: Bugs. (line 70) +* Malmberg, John <1>: Bugs. (line 71) * Malmberg, John: Acknowledgments. (line 60) * mark parity: Ordinal Functions. (line 45) * marked string extraction (internationalization): String Extraction. @@ -32106,6 +32110,7 @@ Index * mawk utility <4>: Getline/Pipe. (line 62) * mawk utility: Escape Sequences. (line 124) * maximum precision supported by MPFR library: Auto-set. (line 213) +* McIlroy, Doug: Glossary. (line 149) * McPhee, Patrick: Contributors. (line 100) * message object files: Explaining gettext. (line 42) * message object files, converting from portable object files: I18N Example. @@ -32138,7 +32143,7 @@ Index * namespace issues, functions: Definition Syntax. (line 20) * nawk utility: Names. (line 10) * negative zero: Unexpected Results. (line 34) -* NetBSD: Glossary. (line 616) +* NetBSD: Glossary. (line 611) * networks, programming: TCP/IP Networking. (line 6) * networks, support for: Special Network. (line 6) * newlines <1>: Boolean Ops. (line 67) @@ -32227,7 +32232,7 @@ Index * OFS variable <1>: User-modified. (line 114) * OFS variable <2>: Output Separators. (line 6) * OFS variable: Changing Fields. (line 64) -* OpenBSD: Glossary. (line 616) +* OpenBSD: Glossary. (line 611) * OpenSolaris: Other Versions. (line 96) * operating systems, BSD-based: Manual History. (line 28) * operating systems, PC, gawk on: PC Using. (line 6) @@ -32296,7 +32301,6 @@ Index * output, standard: Special FD. (line 6) * p debugger command (alias for print): Viewing And Changing Data. (line 36) -* P1003.1 POSIX standard: Glossary. (line 454) * parent process ID of gawk process: Auto-set. (line 181) * parentheses (), in a profile: Profiling. (line 146) * parentheses (), regexp operator: Regexp Operators. (line 80) @@ -32314,7 +32318,7 @@ Index * patterns, types of: Pattern Overview. (line 15) * pawk (profiling version of Brian Kernighan's awk): Other Versions. (line 78) -* pawk, awk-like facilities for Python: Other Versions. (line 124) +* pawk, awk-like facilities for Python: Other Versions. (line 125) * PC operating systems, gawk on: PC Using. (line 6) * PC operating systems, gawk on, installing: PC Installation. (line 6) * percent sign (%), % operator: Precedence. (line 55) @@ -32328,7 +32332,7 @@ Index (line 6) * pipe, input: Getline/Pipe. (line 9) * pipe, output: Redirection. (line 57) -* Pitts, Dave <1>: Bugs. (line 70) +* Pitts, Dave <1>: Bugs. (line 71) * Pitts, Dave: Acknowledgments. (line 60) * Plauger, P.J.: Library Functions. (line 12) * plug-in: Extension Intro. (line 6) @@ -32497,22 +32501,22 @@ Index * programming conventions, private variable names: Library Names. (line 23) * programming language, recipe for: History. (line 6) -* programming languages, Ada: Glossary. (line 20) +* programming languages, Ada: Glossary. (line 19) * programming languages, data-driven vs. procedural: Getting Started. (line 12) -* programming languages, Java: Glossary. (line 380) +* programming languages, Java: Glossary. (line 379) * programming, basic steps: Basic High Level. (line 20) * programming, concepts: Basic Concepts. (line 6) * pwcat program: Passwd Functions. (line 23) * q debugger command (alias for quit): Miscellaneous Debugger Commands. (line 99) -* QSE Awk: Other Versions. (line 130) +* QSE Awk: Other Versions. (line 131) * Quanstrom, Erik: Alarm Program. (line 8) * question mark (?), ?: operator: Precedence. (line 92) * question mark (?), regexp operator <1>: GNU Regexp Operators. (line 59) * question mark (?), regexp operator: Regexp Operators. (line 112) -* QuikTrim Awk: Other Versions. (line 134) +* QuikTrim Awk: Other Versions. (line 135) * quit debugger command: Miscellaneous Debugger Commands. (line 99) * QUIT signal (MS-Windows): Profiling. (line 214) @@ -32533,7 +32537,7 @@ Index * range expressions (regexps): Bracket Expressions. (line 6) * range patterns: Ranges. (line 6) * range patterns, line continuation and: Ranges. (line 65) -* Rankin, Pat <1>: Bugs. (line 70) +* Rankin, Pat <1>: Bugs. (line 71) * Rankin, Pat <2>: Contributors. (line 37) * Rankin, Pat <3>: Assignment Ops. (line 100) * Rankin, Pat: Acknowledgments. (line 60) @@ -32638,7 +32642,7 @@ Index * right angle bracket (>), >> operator (I/O): Redirection. (line 50) * right shift: Bitwise Functions. (line 52) * right shift, bitwise: Bitwise Functions. (line 32) -* Ritchie, Dennis: Basic Data Typing. (line 55) +* Ritchie, Dennis: Basic Data Typing. (line 54) * RLENGTH variable: Auto-set. (line 244) * RLENGTH variable, match() function and: String Functions. (line 224) * Robbins, Arnold <1>: Future Extensions. (line 6) @@ -32706,7 +32710,7 @@ Index * search paths, for source files: AWKPATH Variable. (line 6) * searching, files for regular expressions: Egrep Program. (line 6) * searching, for words: Dupword Program. (line 6) -* sed utility <1>: Glossary. (line 12) +* sed utility <1>: Glossary. (line 11) * sed utility <2>: Simple Sed. (line 6) * sed utility: Field Splitting Summary. (line 46) @@ -32842,19 +32846,19 @@ Index * source code, Brian Kernighan's awk: Other Versions. (line 13) * source code, Busybox Awk: Other Versions. (line 88) * source code, gawk: Gawk Distribution. (line 6) -* source code, Illumos awk: Other Versions. (line 104) -* source code, jawk: Other Versions. (line 112) -* source code, libmawk: Other Versions. (line 120) +* source code, Illumos awk: Other Versions. (line 105) +* source code, jawk: Other Versions. (line 113) +* source code, libmawk: Other Versions. (line 121) * source code, mawk: Other Versions. (line 44) * source code, mixing: Options. (line 117) * source code, pawk: Other Versions. (line 78) -* source code, pawk (Python version): Other Versions. (line 124) -* source code, QSE Awk: Other Versions. (line 130) -* source code, QuikTrim Awk: Other Versions. (line 134) +* source code, pawk (Python version): Other Versions. (line 125) +* source code, QSE Awk: Other Versions. (line 131) +* source code, QuikTrim Awk: Other Versions. (line 135) * source code, Solaris awk: Other Versions. (line 96) * source files, search path for: Igawk Program. (line 368) * sparse arrays: Array Intro. (line 71) -* Spencer, Henry: Glossary. (line 12) +* Spencer, Henry: Glossary. (line 11) * split: String Functions. (line 313) * split string into array: String Functions. (line 294) * split utility: Split Program. (line 6) @@ -32870,7 +32874,7 @@ Index * square root: Numeric Functions. (line 78) * srand: Numeric Functions. (line 82) * stack frame: Debugging Terms. (line 10) -* Stallman, Richard <1>: Glossary. (line 297) +* Stallman, Richard <1>: Glossary. (line 296) * Stallman, Richard <2>: Contributors. (line 23) * Stallman, Richard <3>: Acknowledgments. (line 18) * Stallman, Richard: Manual History. (line 6) @@ -32959,7 +32963,7 @@ Index * testbits.awk program: Bitwise Functions. (line 70) * testext extension: Extension Sample API Tests. (line 6) -* Texinfo <1>: Adding Code. (line 99) +* Texinfo <1>: Adding Code. (line 100) * Texinfo <2>: Distribution contents. (line 77) * Texinfo <3>: Extract Program. (line 12) @@ -33063,7 +33067,7 @@ Index (line 6) * uniq utility: Uniq Program. (line 6) * uniq.awk program: Uniq Program. (line 65) -* Unix: Glossary. (line 616) +* Unix: Glossary. (line 611) * Unix awk, backslashes in escape sequences: Escape Sequences. (line 124) * Unix awk, close() function and: Close Files And Pipes. @@ -33177,7 +33181,7 @@ Index * xor: Bitwise Functions. (line 55) * XOR bitwise operation: Bitwise Functions. (line 6) * Yawitz, Efraim: Contributors. (line 129) -* Zaretskii, Eli <1>: Bugs. (line 70) +* Zaretskii, Eli <1>: Bugs. (line 71) * Zaretskii, Eli <2>: Contributors. (line 55) * Zaretskii, Eli: Acknowledgments. (line 60) * zero, negative vs. positive: Unexpected Results. (line 34) @@ -33211,536 +33215,537 @@ Index Tag Table: Node: Top1292 -Node: Foreword40832 -Node: Preface45177 -Ref: Preface-Footnote-148324 -Ref: Preface-Footnote-248431 -Node: History48663 -Node: Names51037 -Ref: Names-Footnote-152501 -Node: This Manual52574 -Ref: This Manual-Footnote-158353 -Node: Conventions58453 -Node: Manual History60609 -Ref: Manual History-Footnote-164040 -Ref: Manual History-Footnote-264081 -Node: How To Contribute64155 -Node: Acknowledgments65394 -Node: Getting Started69543 -Node: Running gawk71922 -Node: One-shot73112 -Node: Read Terminal74337 -Ref: Read Terminal-Footnote-175987 -Ref: Read Terminal-Footnote-276263 -Node: Long76434 -Node: Executable Scripts77810 -Ref: Executable Scripts-Footnote-179643 -Ref: Executable Scripts-Footnote-279745 -Node: Comments80292 -Node: Quoting82759 -Node: DOS Quoting88075 -Node: Sample Data Files88750 -Node: Very Simple91265 -Node: Two Rules95915 -Node: More Complex97810 -Ref: More Complex-Footnote-1100742 -Node: Statements/Lines100827 -Ref: Statements/Lines-Footnote-1105282 -Node: Other Features105547 -Node: When106475 -Node: Invoking Gawk108623 -Node: Command Line110086 -Node: Options110877 -Ref: Options-Footnote-1126689 -Node: Other Arguments126714 -Node: Naming Standard Input129376 -Node: Environment Variables130470 -Node: AWKPATH Variable131028 -Ref: AWKPATH Variable-Footnote-1133806 -Ref: AWKPATH Variable-Footnote-2133851 -Node: AWKLIBPATH Variable134111 -Node: Other Environment Variables134870 -Node: Exit Status138525 -Node: Include Files139200 -Node: Loading Shared Libraries142778 -Node: Obsolete144161 -Node: Undocumented144858 -Node: Regexp145100 -Node: Regexp Usage146489 -Node: Escape Sequences148522 -Node: Regexp Operators154189 -Ref: Regexp Operators-Footnote-1161669 -Ref: Regexp Operators-Footnote-2161816 -Node: Bracket Expressions161914 -Ref: table-char-classes163804 -Node: GNU Regexp Operators166327 -Node: Case-sensitivity170050 -Ref: Case-sensitivity-Footnote-1172942 -Ref: Case-sensitivity-Footnote-2173177 -Node: Leftmost Longest173285 -Node: Computed Regexps174486 -Node: Reading Files177835 -Node: Records179837 -Node: awk split records180572 -Node: gawk split records185430 -Ref: gawk split records-Footnote-1189951 -Node: Fields189988 -Ref: Fields-Footnote-1192952 -Node: Nonconstant Fields193038 -Ref: Nonconstant Fields-Footnote-1195268 -Node: Changing Fields195470 -Node: Field Separators201424 -Node: Default Field Splitting204126 -Node: Regexp Field Splitting205243 -Node: Single Character Fields208584 -Node: Command Line Field Separator209643 -Node: Full Line Fields212985 -Ref: Full Line Fields-Footnote-1213493 -Node: Field Splitting Summary213539 -Ref: Field Splitting Summary-Footnote-1216638 -Node: Constant Size216739 -Node: Splitting By Content221346 -Ref: Splitting By Content-Footnote-1225096 -Node: Multiple Line225136 -Ref: Multiple Line-Footnote-1230992 -Node: Getline231171 -Node: Plain Getline233387 -Node: Getline/Variable235482 -Node: Getline/File236629 -Node: Getline/Variable/File238013 -Ref: Getline/Variable/File-Footnote-1239612 -Node: Getline/Pipe239699 -Node: Getline/Variable/Pipe242398 -Node: Getline/Coprocess243505 -Node: Getline/Variable/Coprocess244757 -Node: Getline Notes245494 -Node: Getline Summary248298 -Ref: table-getline-variants248706 -Node: Read Timeout249618 -Ref: Read Timeout-Footnote-1253445 -Node: Command line directories253503 -Node: Printing254385 -Node: Print256016 -Node: Print Examples257357 -Node: Output Separators260136 -Node: OFMT262152 -Node: Printf263510 -Node: Basic Printf264416 -Node: Control Letters265955 -Node: Format Modifiers269809 -Node: Printf Examples275836 -Node: Redirection278543 -Node: Special Files285515 -Node: Special FD286048 -Ref: Special FD-Footnote-1289672 -Node: Special Network289746 -Node: Special Caveats290596 -Node: Close Files And Pipes291392 -Ref: Close Files And Pipes-Footnote-1298530 -Ref: Close Files And Pipes-Footnote-2298678 -Node: Expressions298828 -Node: Values299960 -Node: Constants300636 -Node: Scalar Constants301316 -Ref: Scalar Constants-Footnote-1302175 -Node: Nondecimal-numbers302425 -Node: Regexp Constants305425 -Node: Using Constant Regexps305900 -Node: Variables308970 -Node: Using Variables309625 -Node: Assignment Options311349 -Node: Conversion313224 -Ref: table-locale-affects318660 -Ref: Conversion-Footnote-1319284 -Node: All Operators319393 -Node: Arithmetic Ops320023 -Node: Concatenation322528 -Ref: Concatenation-Footnote-1325324 -Node: Assignment Ops325444 -Ref: table-assign-ops330427 -Node: Increment Ops331744 -Node: Truth Values and Conditions335182 -Node: Truth Values336265 -Node: Typing and Comparison337314 -Node: Variable Typing338107 -Ref: Variable Typing-Footnote-1342007 -Node: Comparison Operators342129 -Ref: table-relational-ops342539 -Node: POSIX String Comparison346087 -Ref: POSIX String Comparison-Footnote-1347171 -Node: Boolean Ops347309 -Ref: Boolean Ops-Footnote-1351379 -Node: Conditional Exp351470 -Node: Function Calls353197 -Node: Precedence356955 -Node: Locales360624 -Node: Patterns and Actions362227 -Node: Pattern Overview363281 -Node: Regexp Patterns364958 -Node: Expression Patterns365501 -Node: Ranges369282 -Node: BEGIN/END372388 -Node: Using BEGIN/END373150 -Ref: Using BEGIN/END-Footnote-1375886 -Node: I/O And BEGIN/END375992 -Node: BEGINFILE/ENDFILE378277 -Node: Empty381208 -Node: Using Shell Variables381525 -Node: Action Overview383808 -Node: Statements386159 -Node: If Statement388013 -Node: While Statement389516 -Node: Do Statement391560 -Node: For Statement392716 -Node: Switch Statement395868 -Node: Break Statement397971 -Node: Continue Statement400026 -Node: Next Statement401819 -Node: Nextfile Statement404209 -Node: Exit Statement406864 -Node: Built-in Variables409268 -Node: User-modified410364 -Ref: User-modified-Footnote-1418049 -Node: Auto-set418111 -Ref: Auto-set-Footnote-1430676 -Ref: Auto-set-Footnote-2430881 -Node: ARGC and ARGV430937 -Node: Arrays434791 -Node: Array Basics436289 -Node: Array Intro437115 -Ref: figure-array-elements439088 -Node: Reference to Elements441495 -Node: Assigning Elements443768 -Node: Array Example444259 -Node: Scanning an Array445991 -Node: Controlling Scanning449006 -Ref: Controlling Scanning-Footnote-1454179 -Node: Delete454495 -Ref: Delete-Footnote-1457260 -Node: Numeric Array Subscripts457317 -Node: Uninitialized Subscripts459500 -Node: Multidimensional461125 -Node: Multiscanning464218 -Node: Arrays of Arrays465807 -Node: Functions470447 -Node: Built-in471266 -Node: Calling Built-in472344 -Node: Numeric Functions474332 -Ref: Numeric Functions-Footnote-1478166 -Ref: Numeric Functions-Footnote-2478523 -Ref: Numeric Functions-Footnote-3478571 -Node: String Functions478840 -Ref: String Functions-Footnote-1501851 -Ref: String Functions-Footnote-2501980 -Ref: String Functions-Footnote-3502228 -Node: Gory Details502315 -Ref: table-sub-escapes503984 -Ref: table-sub-posix-92505338 -Ref: table-sub-proposed506689 -Ref: table-posix-sub508043 -Ref: table-gensub-escapes509588 -Ref: Gory Details-Footnote-1510764 -Ref: Gory Details-Footnote-2510815 -Node: I/O Functions510966 -Ref: I/O Functions-Footnote-1518089 -Node: Time Functions518236 -Ref: Time Functions-Footnote-1528700 -Ref: Time Functions-Footnote-2528768 -Ref: Time Functions-Footnote-3528926 -Ref: Time Functions-Footnote-4529037 -Ref: Time Functions-Footnote-5529149 -Ref: Time Functions-Footnote-6529376 -Node: Bitwise Functions529642 -Ref: table-bitwise-ops530204 -Ref: Bitwise Functions-Footnote-1534449 -Node: Type Functions534633 -Node: I18N Functions535775 -Node: User-defined537420 -Node: Definition Syntax538224 -Ref: Definition Syntax-Footnote-1543149 -Node: Function Example543218 -Ref: Function Example-Footnote-1545862 -Node: Function Caveats545884 -Node: Calling A Function546402 -Node: Variable Scope547357 -Node: Pass By Value/Reference550345 -Node: Return Statement553853 -Node: Dynamic Typing556837 -Node: Indirect Calls557766 -Node: Library Functions567453 -Ref: Library Functions-Footnote-1570966 -Ref: Library Functions-Footnote-2571109 -Node: Library Names571280 -Ref: Library Names-Footnote-1574753 -Ref: Library Names-Footnote-2574973 -Node: General Functions575059 -Node: Strtonum Function576087 -Node: Assert Function579017 -Node: Round Function582343 -Node: Cliff Random Function583884 -Node: Ordinal Functions584900 -Ref: Ordinal Functions-Footnote-1587977 -Ref: Ordinal Functions-Footnote-2588229 -Node: Join Function588440 -Ref: Join Function-Footnote-1590211 -Node: Getlocaltime Function590411 -Node: Readfile Function594147 -Node: Data File Management595986 -Node: Filetrans Function596618 -Node: Rewind Function600687 -Node: File Checking602074 -Ref: File Checking-Footnote-1603206 -Node: Empty Files603407 -Node: Ignoring Assigns605637 -Node: Getopt Function607191 -Ref: Getopt Function-Footnote-1618494 -Node: Passwd Functions618697 -Ref: Passwd Functions-Footnote-1627676 -Node: Group Functions627764 -Ref: Group Functions-Footnote-1635706 -Node: Walking Arrays635919 -Node: Sample Programs638055 -Node: Running Examples638729 -Node: Clones639457 -Node: Cut Program640681 -Node: Egrep Program650534 -Ref: Egrep Program-Footnote-1658505 -Node: Id Program658615 -Node: Split Program662279 -Ref: Split Program-Footnote-1665817 -Node: Tee Program665945 -Node: Uniq Program668752 -Node: Wc Program676182 -Ref: Wc Program-Footnote-1680450 -Ref: Wc Program-Footnote-2680650 -Node: Miscellaneous Programs680742 -Node: Dupword Program681930 -Node: Alarm Program683961 -Node: Translate Program688768 -Ref: Translate Program-Footnote-1693159 -Ref: Translate Program-Footnote-2693429 -Node: Labels Program693563 -Ref: Labels Program-Footnote-1696934 -Node: Word Sorting697018 -Node: History Sorting701061 -Node: Extract Program702897 -Ref: Extract Program-Footnote-1710427 -Node: Simple Sed710556 -Node: Igawk Program713618 -Ref: Igawk Program-Footnote-1728793 -Ref: Igawk Program-Footnote-2728994 -Node: Anagram Program729132 -Node: Signature Program732200 -Node: Advanced Features733447 -Node: Nondecimal Data735333 -Node: Array Sorting736910 -Node: Controlling Array Traversal737607 -Node: Array Sorting Functions745887 -Ref: Array Sorting Functions-Footnote-1749794 -Node: Two-way I/O749988 -Ref: Two-way I/O-Footnote-1755504 -Node: TCP/IP Networking755586 -Node: Profiling758430 -Node: Internationalization765938 -Node: I18N and L10N767363 -Node: Explaining gettext768049 -Ref: Explaining gettext-Footnote-1773189 -Ref: Explaining gettext-Footnote-2773373 -Node: Programmer i18n773538 -Node: Translator i18n777763 -Node: String Extraction778557 -Ref: String Extraction-Footnote-1779518 -Node: Printf Ordering779604 -Ref: Printf Ordering-Footnote-1782386 -Node: I18N Portability782450 -Ref: I18N Portability-Footnote-1784899 -Node: I18N Example784962 -Ref: I18N Example-Footnote-1787684 -Node: Gawk I18N787756 -Node: Debugger788377 -Node: Debugging789348 -Node: Debugging Concepts789789 -Node: Debugging Terms791645 -Node: Awk Debugging794242 -Node: Sample Debugging Session795134 -Node: Debugger Invocation795654 -Node: Finding The Bug796987 -Node: List of Debugger Commands803469 -Node: Breakpoint Control804801 -Node: Debugger Execution Control808465 -Node: Viewing And Changing Data811825 -Node: Execution Stack815183 -Node: Debugger Info816696 -Node: Miscellaneous Debugger Commands820690 -Node: Readline Support825874 -Node: Limitations826766 -Node: Arbitrary Precision Arithmetic829014 -Ref: Arbitrary Precision Arithmetic-Footnote-1830663 -Node: General Arithmetic830811 -Node: Floating Point Issues832531 -Node: String Conversion Precision833412 -Ref: String Conversion Precision-Footnote-1835117 -Node: Unexpected Results835226 -Node: POSIX Floating Point Problems837379 -Ref: POSIX Floating Point Problems-Footnote-1841200 -Node: Integer Programming841238 -Node: Floating-point Programming843049 -Ref: Floating-point Programming-Footnote-1849377 -Ref: Floating-point Programming-Footnote-2849647 -Node: Floating-point Representation849911 -Node: Floating-point Context851076 -Ref: table-ieee-formats851915 -Node: Rounding Mode853299 -Ref: table-rounding-modes853778 -Ref: Rounding Mode-Footnote-1856793 -Node: Gawk and MPFR856972 -Node: Arbitrary Precision Floats858381 -Ref: Arbitrary Precision Floats-Footnote-1860824 -Node: Setting Precision861145 -Ref: table-predefined-precision-strings861829 -Node: Setting Rounding Mode863974 -Ref: table-gawk-rounding-modes864378 -Node: Floating-point Constants865565 -Node: Changing Precision867017 -Ref: Changing Precision-Footnote-1868409 -Node: Exact Arithmetic868583 -Node: Arbitrary Precision Integers871717 -Ref: Arbitrary Precision Integers-Footnote-1874732 -Node: Dynamic Extensions874879 -Node: Extension Intro876337 -Node: Plugin License877602 -Node: Extension Mechanism Outline878287 -Ref: figure-load-extension878711 -Ref: figure-load-new-function880196 -Ref: figure-call-new-function881198 -Node: Extension API Description883182 -Node: Extension API Functions Introduction884632 -Node: General Data Types889498 -Ref: General Data Types-Footnote-1895191 -Node: Requesting Values895490 -Ref: table-value-types-returned896227 -Node: Memory Allocation Functions897185 -Ref: Memory Allocation Functions-Footnote-1899931 -Node: Constructor Functions900027 -Node: Registration Functions901785 -Node: Extension Functions902470 -Node: Exit Callback Functions904772 -Node: Extension Version String906021 -Node: Input Parsers906671 -Node: Output Wrappers916474 -Node: Two-way processors920990 -Node: Printing Messages923193 -Ref: Printing Messages-Footnote-1924270 -Node: Updating `ERRNO'924422 -Node: Accessing Parameters925161 -Node: Symbol Table Access926391 -Node: Symbol table by name926905 -Node: Symbol table by cookie928881 -Ref: Symbol table by cookie-Footnote-1933014 -Node: Cached values933077 -Ref: Cached values-Footnote-1936582 -Node: Array Manipulation936673 -Ref: Array Manipulation-Footnote-1937771 -Node: Array Data Types937810 -Ref: Array Data Types-Footnote-1940513 -Node: Array Functions940605 -Node: Flattening Arrays944479 -Node: Creating Arrays951331 -Node: Extension API Variables956062 -Node: Extension Versioning956698 -Node: Extension API Informational Variables958599 -Node: Extension API Boilerplate959685 -Node: Finding Extensions963489 -Node: Extension Example964049 -Node: Internal File Description964779 -Node: Internal File Ops968870 -Ref: Internal File Ops-Footnote-1980416 -Node: Using Internal File Ops980556 -Ref: Using Internal File Ops-Footnote-1982903 -Node: Extension Samples983169 -Node: Extension Sample File Functions984693 -Node: Extension Sample Fnmatch992260 -Node: Extension Sample Fork993739 -Node: Extension Sample Inplace994952 -Node: Extension Sample Ord996730 -Node: Extension Sample Readdir997566 -Ref: table-readdir-file-types998421 -Node: Extension Sample Revout999220 -Node: Extension Sample Rev2way999811 -Node: Extension Sample Read write array1000552 -Node: Extension Sample Readfile1002431 -Node: Extension Sample API Tests1003531 -Node: Extension Sample Time1004056 -Node: gawkextlib1005371 -Node: Language History1008152 -Node: V7/SVR3.11009746 -Node: SVR41012066 -Node: POSIX1013508 -Node: BTL1014894 -Node: POSIX/GNU1015628 -Node: Feature History1021227 -Node: Common Extensions1034339 -Node: Ranges and Locales1035651 -Ref: Ranges and Locales-Footnote-11040268 -Ref: Ranges and Locales-Footnote-21040295 -Ref: Ranges and Locales-Footnote-31040529 -Node: Contributors1040750 -Node: Installation1046101 -Node: Gawk Distribution1046995 -Node: Getting1047479 -Node: Extracting1048305 -Node: Distribution contents1049997 -Node: Unix Installation1055718 -Node: Quick Installation1056335 -Node: Additional Configuration Options1058781 -Node: Configuration Philosophy1060517 -Node: Non-Unix Installation1062871 -Node: PC Installation1063329 -Node: PC Binary Installation1064640 -Node: PC Compiling1066488 -Node: PC Testing1069448 -Node: PC Using1070624 -Node: Cygwin1074792 -Node: MSYS1075601 -Node: VMS Installation1076115 -Node: VMS Compilation1076911 -Ref: VMS Compilation-Footnote-11078163 -Node: VMS Dynamic Extensions1078221 -Node: VMS Installation Details1079594 -Node: VMS Running1081845 -Node: VMS GNV1084679 -Node: VMS Old Gawk1085402 -Node: Bugs1085872 -Node: Other Versions1089790 -Node: Notes1095874 -Node: Compatibility Mode1096674 -Node: Additions1097457 -Node: Accessing The Source1098384 -Node: Adding Code1099824 -Node: New Ports1105869 -Node: Derived Files1110004 -Ref: Derived Files-Footnote-11115325 -Ref: Derived Files-Footnote-21115359 -Ref: Derived Files-Footnote-31115959 -Node: Future Extensions1116057 -Node: Implementation Limitations1116640 -Node: Extension Design1117888 -Node: Old Extension Problems1119042 -Ref: Old Extension Problems-Footnote-11120550 -Node: Extension New Mechanism Goals1120607 -Ref: Extension New Mechanism Goals-Footnote-11123972 -Node: Extension Other Design Decisions1124158 -Node: Extension Future Growth1126264 -Node: Old Extension Mechanism1127100 -Node: Basic Concepts1128840 -Node: Basic High Level1129521 -Ref: figure-general-flow1129793 -Ref: figure-process-flow1130392 -Ref: Basic High Level-Footnote-11133621 -Node: Basic Data Typing1133806 -Node: Glossary1137161 -Node: Copying1162392 -Node: GNU Free Documentation License1199948 -Node: Index1225084 +Node: Foreword40830 +Node: Preface45175 +Ref: Preface-Footnote-148322 +Ref: Preface-Footnote-248429 +Node: History48661 +Node: Names51035 +Ref: Names-Footnote-152499 +Node: This Manual52572 +Ref: This Manual-Footnote-158351 +Node: Conventions58451 +Node: Manual History60607 +Ref: Manual History-Footnote-164038 +Ref: Manual History-Footnote-264079 +Node: How To Contribute64153 +Node: Acknowledgments65392 +Node: Getting Started69541 +Node: Running gawk71914 +Node: One-shot73104 +Node: Read Terminal74329 +Ref: Read Terminal-Footnote-175979 +Ref: Read Terminal-Footnote-276255 +Node: Long76426 +Node: Executable Scripts77802 +Ref: Executable Scripts-Footnote-179635 +Ref: Executable Scripts-Footnote-279737 +Node: Comments80284 +Node: Quoting82751 +Node: DOS Quoting88067 +Node: Sample Data Files88742 +Node: Very Simple91257 +Node: Two Rules95895 +Node: More Complex97790 +Ref: More Complex-Footnote-1100722 +Node: Statements/Lines100807 +Ref: Statements/Lines-Footnote-1105262 +Node: Other Features105527 +Node: When106455 +Node: Invoking Gawk108603 +Node: Command Line110066 +Node: Options110857 +Ref: Options-Footnote-1126669 +Node: Other Arguments126694 +Node: Naming Standard Input129356 +Node: Environment Variables130450 +Node: AWKPATH Variable131008 +Ref: AWKPATH Variable-Footnote-1133786 +Ref: AWKPATH Variable-Footnote-2133831 +Node: AWKLIBPATH Variable134091 +Node: Other Environment Variables134850 +Node: Exit Status138505 +Node: Include Files139180 +Node: Loading Shared Libraries142758 +Node: Obsolete144141 +Node: Undocumented144838 +Node: Regexp145080 +Node: Regexp Usage146469 +Node: Escape Sequences148502 +Node: Regexp Operators154169 +Ref: Regexp Operators-Footnote-1161649 +Ref: Regexp Operators-Footnote-2161796 +Node: Bracket Expressions161894 +Ref: table-char-classes163784 +Node: GNU Regexp Operators166307 +Node: Case-sensitivity170030 +Ref: Case-sensitivity-Footnote-1172922 +Ref: Case-sensitivity-Footnote-2173157 +Node: Leftmost Longest173265 +Node: Computed Regexps174466 +Node: Reading Files177815 +Node: Records179817 +Node: awk split records180552 +Node: gawk split records185410 +Ref: gawk split records-Footnote-1189931 +Node: Fields189968 +Ref: Fields-Footnote-1192932 +Node: Nonconstant Fields193018 +Ref: Nonconstant Fields-Footnote-1195248 +Node: Changing Fields195450 +Node: Field Separators201404 +Node: Default Field Splitting204106 +Node: Regexp Field Splitting205223 +Node: Single Character Fields208564 +Node: Command Line Field Separator209623 +Node: Full Line Fields212965 +Ref: Full Line Fields-Footnote-1213473 +Node: Field Splitting Summary213519 +Ref: Field Splitting Summary-Footnote-1216618 +Node: Constant Size216719 +Node: Splitting By Content221326 +Ref: Splitting By Content-Footnote-1225076 +Node: Multiple Line225116 +Ref: Multiple Line-Footnote-1230972 +Node: Getline231151 +Node: Plain Getline233367 +Node: Getline/Variable235462 +Node: Getline/File236609 +Node: Getline/Variable/File237993 +Ref: Getline/Variable/File-Footnote-1239592 +Node: Getline/Pipe239679 +Node: Getline/Variable/Pipe242378 +Node: Getline/Coprocess243485 +Node: Getline/Variable/Coprocess244737 +Node: Getline Notes245474 +Node: Getline Summary248278 +Ref: table-getline-variants248686 +Node: Read Timeout249598 +Ref: Read Timeout-Footnote-1253425 +Node: Command line directories253483 +Node: Printing254365 +Node: Print255996 +Node: Print Examples257337 +Node: Output Separators260116 +Node: OFMT262132 +Node: Printf263490 +Node: Basic Printf264396 +Node: Control Letters265935 +Node: Format Modifiers269789 +Node: Printf Examples275816 +Node: Redirection278523 +Node: Special Files285495 +Node: Special FD286028 +Ref: Special FD-Footnote-1289652 +Node: Special Network289726 +Node: Special Caveats290576 +Node: Close Files And Pipes291372 +Ref: Close Files And Pipes-Footnote-1298510 +Ref: Close Files And Pipes-Footnote-2298658 +Node: Expressions298808 +Node: Values299940 +Node: Constants300616 +Node: Scalar Constants301296 +Ref: Scalar Constants-Footnote-1302155 +Node: Nondecimal-numbers302405 +Node: Regexp Constants305405 +Node: Using Constant Regexps305880 +Node: Variables308950 +Node: Using Variables309605 +Node: Assignment Options311329 +Node: Conversion313204 +Ref: table-locale-affects318640 +Ref: Conversion-Footnote-1319264 +Node: All Operators319373 +Node: Arithmetic Ops320003 +Node: Concatenation322508 +Ref: Concatenation-Footnote-1325304 +Node: Assignment Ops325424 +Ref: table-assign-ops330407 +Node: Increment Ops331724 +Node: Truth Values and Conditions335162 +Node: Truth Values336245 +Node: Typing and Comparison337294 +Node: Variable Typing338087 +Ref: Variable Typing-Footnote-1341987 +Node: Comparison Operators342109 +Ref: table-relational-ops342519 +Node: POSIX String Comparison346067 +Ref: POSIX String Comparison-Footnote-1347151 +Node: Boolean Ops347289 +Ref: Boolean Ops-Footnote-1351359 +Node: Conditional Exp351450 +Node: Function Calls353177 +Node: Precedence356935 +Node: Locales360604 +Node: Patterns and Actions362207 +Node: Pattern Overview363261 +Node: Regexp Patterns364938 +Node: Expression Patterns365481 +Node: Ranges369262 +Node: BEGIN/END372368 +Node: Using BEGIN/END373130 +Ref: Using BEGIN/END-Footnote-1375866 +Node: I/O And BEGIN/END375972 +Node: BEGINFILE/ENDFILE378257 +Node: Empty381188 +Node: Using Shell Variables381505 +Node: Action Overview383788 +Node: Statements386115 +Node: If Statement387963 +Node: While Statement389461 +Node: Do Statement391505 +Node: For Statement392661 +Node: Switch Statement395813 +Node: Break Statement397916 +Node: Continue Statement399971 +Node: Next Statement401764 +Node: Nextfile Statement404154 +Node: Exit Statement406809 +Node: Built-in Variables409213 +Node: User-modified410309 +Ref: User-modified-Footnote-1417994 +Node: Auto-set418056 +Ref: Auto-set-Footnote-1430621 +Ref: Auto-set-Footnote-2430826 +Node: ARGC and ARGV430882 +Node: Arrays434736 +Node: Array Basics436234 +Node: Array Intro437060 +Ref: figure-array-elements439033 +Node: Reference to Elements441440 +Node: Assigning Elements443713 +Node: Array Example444204 +Node: Scanning an Array445936 +Node: Controlling Scanning448951 +Ref: Controlling Scanning-Footnote-1454124 +Node: Delete454440 +Ref: Delete-Footnote-1457205 +Node: Numeric Array Subscripts457262 +Node: Uninitialized Subscripts459445 +Node: Multidimensional461070 +Node: Multiscanning464163 +Node: Arrays of Arrays465752 +Node: Functions470392 +Node: Built-in471211 +Node: Calling Built-in472289 +Node: Numeric Functions474277 +Ref: Numeric Functions-Footnote-1478111 +Ref: Numeric Functions-Footnote-2478468 +Ref: Numeric Functions-Footnote-3478516 +Node: String Functions478785 +Ref: String Functions-Footnote-1501796 +Ref: String Functions-Footnote-2501925 +Ref: String Functions-Footnote-3502173 +Node: Gory Details502260 +Ref: table-sub-escapes503929 +Ref: table-sub-posix-92505283 +Ref: table-sub-proposed506634 +Ref: table-posix-sub507988 +Ref: table-gensub-escapes509533 +Ref: Gory Details-Footnote-1510709 +Ref: Gory Details-Footnote-2510760 +Node: I/O Functions510911 +Ref: I/O Functions-Footnote-1518034 +Node: Time Functions518181 +Ref: Time Functions-Footnote-1528645 +Ref: Time Functions-Footnote-2528713 +Ref: Time Functions-Footnote-3528871 +Ref: Time Functions-Footnote-4528982 +Ref: Time Functions-Footnote-5529094 +Ref: Time Functions-Footnote-6529321 +Node: Bitwise Functions529587 +Ref: table-bitwise-ops530149 +Ref: Bitwise Functions-Footnote-1534394 +Node: Type Functions534578 +Node: I18N Functions535720 +Node: User-defined537365 +Node: Definition Syntax538169 +Ref: Definition Syntax-Footnote-1543094 +Node: Function Example543163 +Ref: Function Example-Footnote-1545807 +Node: Function Caveats545829 +Node: Calling A Function546347 +Node: Variable Scope547302 +Node: Pass By Value/Reference550290 +Node: Return Statement553798 +Node: Dynamic Typing556782 +Node: Indirect Calls557711 +Node: Library Functions567398 +Ref: Library Functions-Footnote-1570911 +Ref: Library Functions-Footnote-2571054 +Node: Library Names571225 +Ref: Library Names-Footnote-1574698 +Ref: Library Names-Footnote-2574918 +Node: General Functions575004 +Node: Strtonum Function576032 +Node: Assert Function578962 +Node: Round Function582288 +Node: Cliff Random Function583829 +Node: Ordinal Functions584845 +Ref: Ordinal Functions-Footnote-1587922 +Ref: Ordinal Functions-Footnote-2588174 +Node: Join Function588385 +Ref: Join Function-Footnote-1590156 +Node: Getlocaltime Function590356 +Node: Readfile Function594092 +Node: Data File Management595931 +Node: Filetrans Function596563 +Node: Rewind Function600632 +Node: File Checking602019 +Ref: File Checking-Footnote-1603151 +Node: Empty Files603352 +Node: Ignoring Assigns605582 +Node: Getopt Function607136 +Ref: Getopt Function-Footnote-1618439 +Node: Passwd Functions618642 +Ref: Passwd Functions-Footnote-1627621 +Node: Group Functions627709 +Ref: Group Functions-Footnote-1635651 +Node: Walking Arrays635864 +Node: Sample Programs638000 +Node: Running Examples638674 +Node: Clones639402 +Node: Cut Program640626 +Node: Egrep Program650479 +Ref: Egrep Program-Footnote-1658450 +Node: Id Program658560 +Node: Split Program662224 +Ref: Split Program-Footnote-1665762 +Node: Tee Program665890 +Node: Uniq Program668697 +Node: Wc Program676127 +Ref: Wc Program-Footnote-1680395 +Ref: Wc Program-Footnote-2680595 +Node: Miscellaneous Programs680687 +Node: Dupword Program681875 +Node: Alarm Program683906 +Node: Translate Program688713 +Ref: Translate Program-Footnote-1693104 +Ref: Translate Program-Footnote-2693374 +Node: Labels Program693508 +Ref: Labels Program-Footnote-1696879 +Node: Word Sorting696963 +Node: History Sorting701006 +Node: Extract Program702842 +Ref: Extract Program-Footnote-1710372 +Node: Simple Sed710501 +Node: Igawk Program713563 +Ref: Igawk Program-Footnote-1728738 +Ref: Igawk Program-Footnote-2728939 +Node: Anagram Program729077 +Node: Signature Program732145 +Node: Advanced Features733392 +Node: Nondecimal Data735278 +Node: Array Sorting736855 +Node: Controlling Array Traversal737552 +Node: Array Sorting Functions745832 +Ref: Array Sorting Functions-Footnote-1749739 +Node: Two-way I/O749933 +Ref: Two-way I/O-Footnote-1755449 +Node: TCP/IP Networking755531 +Node: Profiling758375 +Node: Internationalization765883 +Node: I18N and L10N767308 +Node: Explaining gettext767994 +Ref: Explaining gettext-Footnote-1773134 +Ref: Explaining gettext-Footnote-2773318 +Node: Programmer i18n773483 +Node: Translator i18n777708 +Node: String Extraction778502 +Ref: String Extraction-Footnote-1779463 +Node: Printf Ordering779549 +Ref: Printf Ordering-Footnote-1782331 +Node: I18N Portability782395 +Ref: I18N Portability-Footnote-1784844 +Node: I18N Example784907 +Ref: I18N Example-Footnote-1787629 +Node: Gawk I18N787701 +Node: Debugger788322 +Node: Debugging789293 +Node: Debugging Concepts789734 +Node: Debugging Terms791590 +Node: Awk Debugging794187 +Node: Sample Debugging Session795079 +Node: Debugger Invocation795599 +Node: Finding The Bug796932 +Node: List of Debugger Commands803414 +Node: Breakpoint Control804746 +Node: Debugger Execution Control808410 +Node: Viewing And Changing Data811770 +Node: Execution Stack815128 +Node: Debugger Info816641 +Node: Miscellaneous Debugger Commands820635 +Node: Readline Support825819 +Node: Limitations826711 +Node: Arbitrary Precision Arithmetic828959 +Ref: Arbitrary Precision Arithmetic-Footnote-1830608 +Node: General Arithmetic830756 +Node: Floating Point Issues832476 +Node: String Conversion Precision833357 +Ref: String Conversion Precision-Footnote-1835062 +Node: Unexpected Results835171 +Node: POSIX Floating Point Problems837324 +Ref: POSIX Floating Point Problems-Footnote-1841145 +Node: Integer Programming841183 +Node: Floating-point Programming842994 +Ref: Floating-point Programming-Footnote-1849322 +Ref: Floating-point Programming-Footnote-2849592 +Node: Floating-point Representation849856 +Node: Floating-point Context851021 +Ref: table-ieee-formats851860 +Node: Rounding Mode853244 +Ref: table-rounding-modes853723 +Ref: Rounding Mode-Footnote-1856738 +Node: Gawk and MPFR856917 +Node: Arbitrary Precision Floats858326 +Ref: Arbitrary Precision Floats-Footnote-1860769 +Node: Setting Precision861090 +Ref: table-predefined-precision-strings861774 +Node: Setting Rounding Mode863919 +Ref: table-gawk-rounding-modes864323 +Node: Floating-point Constants865510 +Node: Changing Precision866962 +Ref: Changing Precision-Footnote-1868354 +Node: Exact Arithmetic868528 +Node: Arbitrary Precision Integers871662 +Ref: Arbitrary Precision Integers-Footnote-1874677 +Node: Dynamic Extensions874824 +Node: Extension Intro876282 +Node: Plugin License877547 +Node: Extension Mechanism Outline878232 +Ref: figure-load-extension878656 +Ref: figure-load-new-function880141 +Ref: figure-call-new-function881143 +Node: Extension API Description883127 +Node: Extension API Functions Introduction884577 +Node: General Data Types889443 +Ref: General Data Types-Footnote-1895136 +Node: Requesting Values895435 +Ref: table-value-types-returned896172 +Node: Memory Allocation Functions897130 +Ref: Memory Allocation Functions-Footnote-1899876 +Node: Constructor Functions899972 +Node: Registration Functions901730 +Node: Extension Functions902415 +Node: Exit Callback Functions904717 +Node: Extension Version String905966 +Node: Input Parsers906616 +Node: Output Wrappers916419 +Node: Two-way processors920935 +Node: Printing Messages923138 +Ref: Printing Messages-Footnote-1924215 +Node: Updating `ERRNO'924367 +Node: Accessing Parameters925106 +Node: Symbol Table Access926336 +Node: Symbol table by name926850 +Node: Symbol table by cookie928826 +Ref: Symbol table by cookie-Footnote-1932959 +Node: Cached values933022 +Ref: Cached values-Footnote-1936527 +Node: Array Manipulation936618 +Ref: Array Manipulation-Footnote-1937716 +Node: Array Data Types937755 +Ref: Array Data Types-Footnote-1940458 +Node: Array Functions940550 +Node: Flattening Arrays944424 +Node: Creating Arrays951276 +Node: Extension API Variables956007 +Node: Extension Versioning956643 +Node: Extension API Informational Variables958544 +Node: Extension API Boilerplate959630 +Node: Finding Extensions963434 +Node: Extension Example963994 +Node: Internal File Description964724 +Node: Internal File Ops968815 +Ref: Internal File Ops-Footnote-1980361 +Node: Using Internal File Ops980501 +Ref: Using Internal File Ops-Footnote-1982848 +Node: Extension Samples983116 +Node: Extension Sample File Functions984640 +Node: Extension Sample Fnmatch992207 +Node: Extension Sample Fork993686 +Node: Extension Sample Inplace994899 +Node: Extension Sample Ord996677 +Node: Extension Sample Readdir997513 +Ref: table-readdir-file-types998368 +Node: Extension Sample Revout999167 +Node: Extension Sample Rev2way999758 +Node: Extension Sample Read write array1000499 +Node: Extension Sample Readfile1002378 +Node: Extension Sample API Tests1003478 +Node: Extension Sample Time1004003 +Node: gawkextlib1005318 +Node: Language History1008105 +Node: V7/SVR3.11009699 +Node: SVR41012019 +Node: POSIX1013461 +Node: BTL1014847 +Node: POSIX/GNU1015581 +Node: Feature History1021180 +Node: Common Extensions1034292 +Node: Ranges and Locales1035604 +Ref: Ranges and Locales-Footnote-11040221 +Ref: Ranges and Locales-Footnote-21040248 +Ref: Ranges and Locales-Footnote-31040482 +Node: Contributors1040703 +Node: Installation1046054 +Node: Gawk Distribution1046948 +Node: Getting1047432 +Node: Extracting1048258 +Node: Distribution contents1049900 +Node: Unix Installation1055617 +Node: Quick Installation1056234 +Node: Additional Configuration Options1058676 +Node: Configuration Philosophy1060414 +Node: Non-Unix Installation1062765 +Node: PC Installation1063223 +Node: PC Binary Installation1064534 +Node: PC Compiling1066382 +Ref: PC Compiling-Footnote-11069381 +Node: PC Testing1069486 +Node: PC Using1070662 +Node: Cygwin1074820 +Node: MSYS1075629 +Node: VMS Installation1076143 +Node: VMS Compilation1076939 +Ref: VMS Compilation-Footnote-11078160 +Node: VMS Dynamic Extensions1078218 +Node: VMS Installation Details1079591 +Node: VMS Running1081842 +Node: VMS GNV1084676 +Node: VMS Old Gawk1085399 +Node: Bugs1085869 +Node: Other Versions1089873 +Node: Notes1096098 +Node: Compatibility Mode1096898 +Node: Additions1097680 +Node: Accessing The Source1098605 +Node: Adding Code1100041 +Node: New Ports1106219 +Node: Derived Files1110700 +Ref: Derived Files-Footnote-11115776 +Ref: Derived Files-Footnote-21115810 +Ref: Derived Files-Footnote-31116406 +Node: Future Extensions1116520 +Node: Implementation Limitations1117126 +Node: Extension Design1118374 +Node: Old Extension Problems1119528 +Ref: Old Extension Problems-Footnote-11121045 +Node: Extension New Mechanism Goals1121102 +Ref: Extension New Mechanism Goals-Footnote-11124463 +Node: Extension Other Design Decisions1124652 +Node: Extension Future Growth1126758 +Node: Old Extension Mechanism1127594 +Node: Basic Concepts1129334 +Node: Basic High Level1130015 +Ref: figure-general-flow1130287 +Ref: figure-process-flow1130886 +Ref: Basic High Level-Footnote-11134115 +Node: Basic Data Typing1134300 +Node: Glossary1137627 +Node: Copying1162779 +Node: GNU Free Documentation License1200335 +Node: Index1225471 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index f5e13fb0..416bfd8a 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -788,7 +788,7 @@ particular records in a file and perform operations upon them. programming. * Profiling:: Profiling your @command{awk} programs. * I18N and L10N:: Internationalization and Localization. -* Explaining gettext:: How GNU @code{gettext} works. +* Explaining gettext:: How GNU @command{gettext} works. * Programmer i18n:: Features for the programmer. * Translator i18n:: Features for the translator. * String Extraction:: Extracting marked strings. @@ -965,7 +965,7 @@ particular records in a file and perform operations upon them. * New Ports:: Porting @command{gawk} to a new operating system. * Derived Files:: Why derived files are kept in the - @command{git} repository. + Git repository. * Future Extensions:: New features that may be implemented one day. * Implementation Limitations:: Some limitations of the @@ -2172,7 +2172,7 @@ pattern to search for and one action to perform upon finding the pattern. Syntactically, a rule consists of a pattern followed by an action. The -action is enclosed in curly braces to separate it from the pattern. +action is enclosed in braces to separate it from the pattern. Newlines usually separate rules. Therefore, an @command{awk} program looks like this: @@ -2938,10 +2938,10 @@ for @emph{every} input line. If the action is omitted, the default action is to print all lines that match the pattern. @cindex actions, empty -Thus, we could leave out the action (the @code{print} statement and the curly +Thus, we could leave out the action (the @code{print} statement and the braces) in the previous example and the result would be the same: @command{awk} prints all lines matching the pattern @samp{li}. By comparison, -omitting the @code{print} statement but retaining the curly braces makes an +omitting the @code{print} statement but retaining the braces makes an empty action that does nothing (i.e., no lines are printed). @cindex @command{awk} programs, one-line examples @@ -3683,7 +3683,7 @@ with @samp{#!} scripts (@pxref{Executable Scripts}), like so: @cindex portable object files, generating @cindex files, portable object, generating Analyze the source program and -generate a GNU @code{gettext} Portable Object Template file on standard +generate a GNU @command{gettext} Portable Object Template file on standard output for all string constants that have been marked for translation. @xref{Internationalization}, for information about this option. @@ -12994,11 +12994,11 @@ in outline, an @command{awk} program generally looks like this: @cindex @code{;} (semicolon), separating statements in actions @cindex semicolon (@code{;}), separating statements in actions An action consists of one or more @command{awk} @dfn{statements}, enclosed -in curly braces (@samp{@{@r{@dots{}}@}}). Each statement specifies one +in braces (@samp{@{@r{@dots{}}@}}). Each statement specifies one thing to do. The statements are separated by newlines or semicolons. -The curly braces around an action must be used even if the action +The braces around an action must be used even if the action contains only one statement, or if it contains no statements at -all. However, if you omit the action entirely, omit the curly braces as +all. However, if you omit the action entirely, omit the braces as well. An omitted action is equivalent to @samp{@{ print $0 @}}: @example @@ -13024,7 +13024,7 @@ programs. The @command{awk} language gives you C-like constructs special ones (@pxref{Statements}). @item Compound statements -Enclose one or more statements in curly braces. A compound statement +Enclose one or more statements in braces. A compound statement is used in order to put several statements together in the body of an @code{if}, @code{while}, @code{do}, or @code{for} statement. @@ -13072,7 +13072,7 @@ Many control statements contain other statements. For example, the @code{if} statement contains another statement that may or may not be executed. The contained statement is called the @dfn{body}. To include more than one statement in the body, group them into a -single @dfn{compound statement} with curly braces, separating them with +single @dfn{compound statement} with braces, separating them with newlines or semicolons. @menu @@ -13126,7 +13126,7 @@ if the value of @code{x} is evenly divisible by two), then the first statement is executed. If the @code{else} keyword appears on the same line as @var{then-body} and @var{then-body} is not a compound statement (i.e., not surrounded by -curly braces), then a semicolon must separate @var{then-body} from +braces), then a semicolon must separate @var{then-body} from the @code{else}. To illustrate this, the previous example can be rewritten as: @@ -26817,7 +26817,7 @@ a requirement. @menu * I18N and L10N:: Internationalization and Localization. -* Explaining gettext:: How GNU @code{gettext} works. +* Explaining gettext:: How GNU @command{gettext} works. * Programmer i18n:: Features for the programmer. * Translator i18n:: Features for the translator. * I18N Example:: A simple i18n example. @@ -26841,22 +26841,22 @@ responses, and information related to how numerical and monetary values are printed and read. @node Explaining gettext -@section GNU @code{gettext} +@section GNU @command{gettext} @cindex internationalizing a program @c STARTOFRANGE gettex -@cindex @code{gettext} library -@command{gawk} uses GNU @code{gettext} to provide its internationalization +@cindex @command{gettext} library +@command{gawk} uses GNU @command{gettext} to provide its internationalization features. -The facilities in GNU @code{gettext} focus on messages; strings printed +The facilities in GNU @command{gettext} focus on messages; strings printed by a program, either directly or via formatting with @code{printf} or @code{sprintf()}.@footnote{For some operating systems, the @command{gawk} -port doesn't support GNU @code{gettext}. +port doesn't support GNU @command{gettext}. Therefore, these features are not available if you are using one of those operating systems. Sorry.} -@cindex portability, @code{gettext} library and -When using GNU @code{gettext}, each application has its own +@cindex portability, @command{gettext} library and +When using GNU @command{gettext}, each application has its own @dfn{text domain}. This is a unique name, such as @samp{kpilot} or @samp{gawk}, that identifies the application. A complete application may have multiple components---programs written @@ -26880,7 +26880,7 @@ language). @cindex @code{textdomain()} function (C library) @item The programmer indicates the application's text domain -(@code{"guide"}) to the @code{gettext} library, +(@command{"guide"}) to the @command{gettext} library, by calling the @code{textdomain()} function. @cindex @code{.pot} files @@ -26924,7 +26924,7 @@ are installed in a standard place. @cindex @code{bindtextdomain()} function (C library) @item -For testing and development, it is possible to tell @code{gettext} +For testing and development, it is possible to tell @command{gettext} to use @file{.gmo} files in a different directory than the standard one by using the @code{bindtextdomain()} function. @@ -26957,7 +26957,7 @@ strings enclosed in calls to @code{gettext()}. @cindex @code{_} (underscore), C macro @cindex underscore (@code{_}), C macro -The GNU @code{gettext} developers, recognizing that typing +The GNU @command{gettext} developers, recognizing that typing @samp{gettext(@dots{})} over and over again is both painful and ugly to look at, use the macro @samp{_} (an underscore) to make things easier: @@ -26970,7 +26970,7 @@ printf("%s", _("Don't Panic!\n")); @end example @cindex internationalization, localization, locale categories -@cindex @code{gettext} library, locale categories +@cindex @command{gettext} library, locale categories @cindex locale categories @noindent This reduces the typing overhead to just three extra characters per string @@ -26978,12 +26978,12 @@ and is considerably easier to read as well. There are locale @dfn{categories} for different types of locale-related information. -The defined locale categories that @code{gettext} knows about are: +The defined locale categories that @command{gettext} knows about are: @table @code @cindex @code{LC_MESSAGES} locale category @item LC_MESSAGES -Text messages. This is the default category for @code{gettext} +Text messages. This is the default category for @command{gettext} operations, but it is possible to supply a different one explicitly, if necessary. (It is almost never necessary to supply a different category.) @@ -27031,7 +27031,7 @@ before or after the day in a date, local month abbreviations, and so on. @cindex @code{LC_ALL} locale category @item LC_ALL -All of the above. (Not too useful in the context of @code{gettext}.) +All of the above. (Not too useful in the context of @command{gettext}.) @end table @c ENDOFRANGE gettex @@ -27047,7 +27047,7 @@ internationalization: @cindex @code{TEXTDOMAIN} variable @item TEXTDOMAIN This variable indicates the application's text domain. -For compatibility with GNU @code{gettext}, the default +For compatibility with GNU @command{gettext}, the default value is @code{"messages"}. @cindex internationalization, localization, marked strings @@ -27102,7 +27102,7 @@ The same remarks about argument order as for the @code{dcgettext()} function app @cindexgawkfunc{bindtextdomain} @item @code{bindtextdomain(@var{directory}} [@code{,} @var{domain} ]@code{)} Change the directory in which -@code{gettext} looks for @file{.gmo} files, in case they +@command{gettext} looks for @file{.gmo} files, in case they will not or cannot be placed in the standard locations (e.g., during testing). Return the directory in which @var{domain} is ``bound.'' @@ -27241,12 +27241,12 @@ $ @kbd{gawk --gen-pot -f guide.awk > guide.pot} @cindex @code{xgettext} utility When run with @option{--gen-pot}, @command{gawk} does not execute your program. Instead, it parses it as usual and prints all marked strings -to standard output in the format of a GNU @code{gettext} Portable Object +to standard output in the format of a GNU @command{gettext} Portable Object file. Also included in the output are any constant strings that appear as the first argument to @code{dcgettext()} or as the first and second argument to @code{dcngettext()}.@footnote{The @command{xgettext} utility that comes with GNU -@code{gettext} can handle @file{.awk} files.} +@command{gettext} can handle @file{.awk} files.} @xref{I18N Example}, for the full list of steps to go through to create and test translations for @command{guide}. @@ -27262,7 +27262,7 @@ Format strings for @code{printf} and @code{sprintf()} (@pxref{Printf}) present a special problem for translation. Consider the following:@footnote{This example is borrowed -from the GNU @code{gettext} manual.} +from the GNU @command{gettext} manual.} @c line broken here only for smallbook format @example @@ -27514,8 +27514,8 @@ msgstr "Like, the scoop is" The next step is to make the directory to hold the binary message object file and then to create the @file{guide.mo} file. We pretend that our file is to be used in the @code{en_US.UTF-8} locale. -The directory layout shown here is standard for GNU @code{gettext} on -GNU/Linux systems. Other versions of @code{gettext} may use a different +The directory layout shown here is standard for GNU @command{gettext} on +GNU/Linux systems. Other versions of @command{gettext} may use a different layout: @example @@ -27568,16 +27568,16 @@ $ @kbd{gawk --posix -f guide.awk -f libintl.awk} @section @command{gawk} Can Speak Your Language @command{gawk} itself has been internationalized -using the GNU @code{gettext} package. -(GNU @code{gettext} is described in +using the GNU @command{gettext} package. +(GNU @command{gettext} is described in complete detail in @ifinfo -@inforef{Top, , GNU @code{gettext} utilities, gettext, GNU gettext tools}.) +@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU gettext tools}.) @end ifinfo @ifnotinfo @cite{GNU gettext tools}.) @end ifnotinfo -As of this writing, the latest version of GNU @code{gettext} is +As of this writing, the latest version of GNU @command{gettext} is @uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, version 0.18.2.1}. If a translation of @command{gawk}'s messages exists, @@ -33239,7 +33239,7 @@ code must be compiled. Assuming that the functions are in a file named @file{filefuncs.c}, and @var{idir} is the location of the @file{gawkapi.h} header file, the following steps@footnote{In practice, you would probably want to -use the GNU Autotools---Automake, Autoconf, Libtool, and Gettext---to +use the GNU Autotools---Automake, Autoconf, Libtool, and @command{gettext}---to configure and build your libraries. Instructions for doing so are beyond the scope of this @value{DOCUMENT}. @xref{gawkextlib}, for WWW links to the tools.} create a GNU/Linux shared library: @@ -33993,7 +33993,7 @@ In addition, you must have the GNU Autotools installed @uref{http://www.gnu.org/software/automake, Automake}, @uref{http://www.gnu.org/software/libtool, Libtool}, and -@uref{http://www.gnu.org/software/gettext, Gettext}). +@uref{http://www.gnu.org/software/gettext, GNU @command{gettext}}). The simple recipe for building and testing @code{gawkextlib} is as follows. First, build and install @command{gawk}: @@ -35008,7 +35008,7 @@ The use of GNU Automake to help in standardizing the configuration process (@pxref{Quick Installation}). @item -The use of GNU @code{gettext} for @command{gawk}'s own message output +The use of GNU @command{gettext} for @command{gawk}'s own message output (@pxref{Gawk I18N}). @item @@ -35589,7 +35589,7 @@ provided the port to BeOS and its documentation. @cindex Peters, Arno Arno Peters did the initial work to convert @command{gawk} to use -GNU Automake and GNU @code{gettext}. +GNU Automake and GNU @command{gettext}. @item @cindex Broder, Alan J.@: @@ -35767,7 +35767,6 @@ file and then use @code{tar} to extract it. You can use the following pipeline to produce the @command{gawk} distribution: @example -# Under System V, add 'o' to the tar options gzip -d -c gawk-@value{VERSION}.@value{PATCHLEVEL}.tar.gz | tar -xvpf - @end example @@ -35922,8 +35921,8 @@ actual @file{Makefile} for creating the documentation. @item Makefile.am @itemx */Makefile.am -Files used by the GNU @command{automake} software for generating -the @file{Makefile.in} files used by @command{autoconf} and +Files used by the GNU Automake software for generating +the @file{Makefile.in} files used by Autoconf and @command{configure}. @item Makefile.in @@ -36019,9 +36018,9 @@ to @file{gawk-@value{VERSION}.@value{PATCHLEVEL}}. Like most GNU software, @command{gawk} is configured automatically for your system by running the @command{configure} program. This program is a Bourne shell script that is generated automatically using -GNU @command{autoconf}. +GNU Autoconf. @ifnotinfo -(The @command{autoconf} software is +(The Autoconf software is described fully in @cite{Autoconf---Generating Automatic Configuration Scripts}, which can be found online at @@ -36029,7 +36028,7 @@ which can be found online at the Free Software Foundation's web site}.) @end ifnotinfo @ifinfo -(The @command{autoconf} software is described fully starting with +(The Autoconf software is described fully starting with @inforef{Top, , Autoconf, autoconf,Autoconf---Generating Automatic Configuration Scripts}.) @end ifinfo @@ -36132,7 +36131,7 @@ improvement. @cindex @option{--with-whiny-user-strftime} configuration option @cindex configuration option, @code{--with-whiny-user-strftime} @item --with-whiny-user-strftime -Force use of the included version of the @code{strftime()} +Force use of the included version of the C @code{strftime()} function for deficient systems. @end table @@ -36179,9 +36178,9 @@ should not have. @file{custom.h} is automatically included by @file{config.h}. It is also possible that the @command{configure} program generated by -@command{autoconf} will not work on your system in some other fashion. +Autoconf will not work on your system in some other fashion. If you do have a problem, the file @file{configure.ac} is the input for -@command{autoconf}. You may be able to change this file and generate a +Autoconf. You may be able to change this file and generate a new version of @command{configure} that works on your system (@pxref{Bugs}, for information on how to report problems in configuring @command{gawk}). @@ -36347,7 +36346,7 @@ and @option{--libexecdir=c:/usr/lib}. @end ignore @ignore -The internal @code{gettext} library tends to be problematic. It is therefore recommended +The internal @command{gettext} library tends to be problematic. It is therefore recommended to use either an external one (@option{--without-included-gettext}) or to disable NLS entirely (@option{--disable-nls}). @end ignore @@ -36384,7 +36383,9 @@ Ancient OS/2 ports of GNU @command{make} are not able to handle the Makefiles of this package. If you encounter any problems with @command{make}, try GNU Make 3.79.1 or later versions. You should find the latest version on -@uref{ftp://hobbes.nmsu.edu/pub/os2/}. +@uref{ftp://hobbes.nmsu.edu/pub/os2/}.@footnote{As of May, 2014, +this site is still there, but the author could not find a package +for GNU Make.} @end quotation @end ifclear @@ -36439,14 +36440,14 @@ program files as described in @ref{AWKPATH Variable}. However, semicolons (rather than colons) separate elements in the @env{AWKPATH} variable. If @env{AWKPATH} is not set or is empty, then the default search path for MS-Windows and MS-DOS versions is -@code{@w{".;c:/lib/awk;c:/gnu/lib/awk"}}. +@samp{@w{.;c:/lib/awk;c:/gnu/lib/awk}}. @ifclear FOR_PRINT @cindex @command{gawk}, OS/2 version of @cindex @code{UNIXROOT} variable, on OS/2 systems The search path for OS/2 (32 bit, EMX) is determined by the prefix directory (most likely @file{/usr} or @file{c:/usr}) that has been specified as an option of -the @command{configure} script like it is the case for the Unix versions. +the @command{configure} script as is the case for the Unix versions. If @file{c:/usr} is the prefix directory then the default search path contains @file{.} and @file{c:/usr/share/awk}. Additionally, to support binary distributions of @command{gawk} for OS/2 @@ -36454,7 +36455,7 @@ systems whose drive @samp{c:} might not support long file names or might not exi at all, there is a special environment variable. If @env{UNIXROOT} specifies a drive then this specific drive is also searched for program files. E.g., if @env{UNIXROOT} is set to @file{e:} the complete default search path is -@code{@w{".;c:/usr/share/awk;e:/usr/share/awk"}}. +@samp{@w{.;c:/usr/share/awk;e:/usr/share/awk}}. An @command{sh}-like shell (as opposed to @command{command.com} under MS-DOS or @command{cmd.exe} under MS-Windows or OS/2) may be useful for @command{awk} programming. @@ -36478,8 +36479,8 @@ Under MS-Windows, OS/2 and MS-DOS, Under MS-Windows and MS-DOS, @end ifset @command{gawk} (and many other text programs) silently -translate end-of-line @code{"\r\n"} to @code{"\n"} on input and @code{"\n"} -to @code{"\r\n"} on output. A special @code{BINMODE} variable @value{COMMONEXT} +translate end-of-line @samp{\r\n} to @samp{\n} on input and @samp{\n} +to @samp{\r\n} on output. A special @code{BINMODE} variable @value{COMMONEXT} allows control over these translations and is interpreted as follows: @itemize @value{BULLET} @@ -36520,7 +36521,7 @@ The name @code{BINMODE} was chosen to match @command{mawk} @command{mawk} adds a @samp{-W BINMODE=@var{N}} option and an environment variable that can set @code{BINMODE}, @code{RS}, and @code{ORS}. The files @file{binmode[1-3].awk} (under @file{gnu/lib/awk} in some of the -prepared distributions) have been chosen to match @command{mawk}'s @samp{-W +prepared binary distributions) have been chosen to match @command{mawk}'s @samp{-W BINMODE=@var{N}} option. These can be changed or discarded; in particular, the setting of @code{RS} giving the fewest ``surprises'' is open to debate. @command{mawk} uses @samp{RS = "\r\n"} if binary mode is set on read, which is @@ -36644,11 +36645,11 @@ or: $ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms gawk} @end example -@code{MMK} is an open source, free, near-clone of @code{MMS} and -can better handle @code{ODS-5} volumes with upper- and lowercase filenames. -@code{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}. +@command{MMK} is an open source, free, near-clone of @command{MMS} and +can better handle ODS-5 volumes with upper- and lowercase filenames. +@command{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}. -With @code{ODS-5} volumes and extended parsing enabled, the case of the target +With ODS-5 volumes and extended parsing enabled, the case of the target parameter may need to be exact. @command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 @@ -36657,8 +36658,8 @@ The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture is also known as ``Itanium.''} -The @file{[.vms]gawk_build_steps.txt} provides information on how to build -@command{gawk} into a PCSI kit that is compatible with the GNV product. +@xref{VMS GNV}, for information on building +@command{gawk} as a PCSI kit that is compatible with the GNV product. @node VMS Dynamic Extensions @appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS @@ -36863,7 +36864,7 @@ The VMS GNV package provides a build environment similar to POSIX with ports of a collection of open source tools. The @command{gawk} found in the GNV base kit is an older port. Currently the GNV project is being reorganized to supply individual PCSI packages for each component. -See @uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}. +See @w{@uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}.} The normal build procedure for @command{gawk} produces a program that is suitable for use with GNV. @@ -36964,12 +36965,14 @@ Once you have a precise problem, send email to @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. @cindex Robbins, Arnold -Using this address automatically sends a copy of your -mail to me. If necessary, I can be reached directly at +The @command{gawk} maintainers subscribe to this address and +thus they will receive your bug report. +If necessary, the primary maintainer can be reached directly at @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com}. The bug reporting address is preferred since the email list is archived at the GNU Project. -@emph{All email should be in English, since that is my native language.} +@emph{All email should be in English. This is the only language +understood in common by all the maintainers.} @cindex @code{comp.lang.awk} newsgroup @quotation CAUTION @@ -37016,13 +37019,13 @@ as follows: @cindex Rankin, Pat @cindex Malmberg, John @cindex Pitts, Dave -@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890} +@multitable {MS-Windows with MinGW} {123456789012345678901234567890123456789001234567890} @item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}. -@item MS-Windows with MINGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. +@item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. -@c Leave this in the print version on purpose. OS/2 not mentioned anywhere else -@c in the print version though. +@c Leave this in the print version on purpose. +@c OS/2 is not mentioned anywhere else in the print version though. @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. @item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and @@ -37180,10 +37183,10 @@ information, see the @uref{http://busybox.net, project's home page}. @cindex Solaris, POSIX-compliant @command{awk} @cindex source code, Solaris @command{awk} @item The OpenSolaris POSIX @command{awk} -The version of @command{awk} in @file{/usr/xpg4/bin} on Solaris is -more-or-less POSIX-compliant. It is based on the @command{awk} from -Mortice Kern Systems for PCs. -This author was able to make it compile and work under GNU/Linux +The versions of @command{awk} in @file{/usr/xpg4/bin} and +@file{/usr/xpg6/bin} on Solaris are more-or-less POSIX-compliant. +They are based on the @command{awk} from Mortice Kern Systems for PCs. +This author was able to make this code compile and work under GNU/Linux with 1--2 hours of work. Making it more generally portable (using GNU Autoconf and/or Automake) would take more work, and this has not been done, at least to our knowledge. @@ -37238,6 +37241,9 @@ under the GPL. It has a large number of extensions over standard See @uref{http://www.quiktrim.org/QTawk.html} for more information, including the manual and a download link. +The project may als be frozen; no new code changes have been made +since approximately 2008. + @item Other Versions See also the @uref{http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations, Wikipedia article}, for information on additional versions. @@ -37287,7 +37293,7 @@ is one more option available on the command line: @table @code @item -Y @itemx --parsedebug -Prints out the parse stack information as the program is being parsed. +Print out the parse stack information as the program is being parsed. @end table This option is intended only for serious @command{gawk} developers @@ -37312,7 +37318,7 @@ as well as any considerations you should bear in mind. * New Ports:: Porting @command{gawk} to a new operating system. * Derived Files:: Why derived files are kept in the - @command{git} repository. + Git repository. @end menu @node Accessing The Source @@ -37336,8 +37342,8 @@ git clone git://git.savannah.gnu.org/gawk.git @end example @noindent -This will clone the @command{gawk} repository. If you are behind a -firewall that will not allow you to use the Git native protocol, you +This clones the @command{gawk} repository. If you are behind a +firewall that does not allow you to use the Git native protocol, you can still access the repository using: @example @@ -37365,7 +37371,7 @@ that has a Git plug-in for working with Git repositories. You are free to add any new features you like to @command{gawk}. However, if you want your changes to be incorporated into the @command{gawk} distribution, there are several steps that you need to take in order to -make it possible to include your changes: +make it possible to include them: @enumerate 1 @item @@ -37387,8 +37393,9 @@ or @EMAIL{assign@@gnu.org,assign at gnu dot org}. @item Get the latest version. It is much easier for me to integrate changes if they are relative to -the most recent distributed version of @command{gawk}. If your version of -@command{gawk} is very old, I may not be able to integrate them at all. +the most recent distributed version of @command{gawk}, or better yet, +relative to the latest code in the Git repository. If your version of +@command{gawk} is very old, I may not be able to integrate your changes at all. (@xref{Getting}, for information on getting the latest version of @command{gawk}.) @@ -37519,6 +37526,7 @@ not do so, particularly if there are lots of changes. Include an entry for the @file{ChangeLog} file with your submission. This helps further minimize the amount of work I have to do, making it easier for me to accept patches. +It is simplest if you just make this part of your diff. @end enumerate Although this sounds like a lot of work, please remember that while you @@ -37576,10 +37584,39 @@ A number of the files that come with @command{gawk} are maintained by other people. Thus, you should not change them unless it is for a very good reason; i.e., changes are not out of the question, but changes to these files are scrutinized extra carefully. -The files are @file{dfa.c}, @file{dfa.h}, @file{getopt1.c}, @file{getopt.c}, -@file{getopt.h}, @file{install-sh}, @file{mkinstalldirs}, @file{regcomp.c}, -@file{regex.c}, @file{regexec.c}, @file{regexex.c}, @file{regex.h}, -@file{regex_internal.c}, and @file{regex_internal.h}. +The files are +@file{dfa.c}, +@file{dfa.h}, +@file{getopt.c}, +@file{getopt.h}, +@file{getopt1.c}, +@file{getopt_int.h}, +@file{gettext.h}, +@file{regcomp.c}, +@file{regex.c}, +@file{regex.h}, +@file{regex_internal.c}, +@file{regex_internal.h}, +and +@file{regexec.c}. + +@item +A number of other files are provided by the GNU +Autotools (Autoconf, Automake, and GNU @command{gettext}). +You should not change them either, unless it is for a very +good reason. The files are +@file{ABOUT-NLS}, +@file{config.guess}, +@file{config.rpath}, +@file{config.sub}, +@file{depcomp}, +@file{INSTALL}, +@file{install-sh}, +@file{missing}, +@file{mkinstalldirs}, +@file{xalloc.h}, +and +@file{ylwrap}. @item Be willing to continue to maintain the port. @@ -37630,16 +37667,16 @@ In the code that you supply and maintain, feel free to use a coding style and brace layout that suits your taste. @node Derived Files -@appendixsubsec Why Generated Files Are Kept In @command{git} +@appendixsubsec Why Generated Files Are Kept In Git @c STARTOFRANGE gawkgit -@cindex @command{git}, use of for @command{gawk} source code +@cindex Git, use of for @command{gawk} source code @c From emails written March 22, 2012, to the gawk developers list. -If you look at the @command{gawk} source in the @command{git} +If you look at the @command{gawk} source in the Git repository, you will notice that it includes files that are automatically generated by GNU infrastructure tools, such as @file{Makefile.in} from -@command{automake} and even @file{configure} from @command{autoconf}. +Automake and even @file{configure} from Autoconf. This is different from many Free Software projects that do not store the derived files, because that keeps the repository less cluttered, @@ -37665,11 +37702,10 @@ there a guarantee that we could find that @command{bison} version? Or that @emph{it} would build?) If the repository has all the generated files, then it's easy to just check -them out and build. (Or @emph{easier}, depending upon how far back we go. -@code{:-)}) +them out and build. (Or @emph{easier}, depending upon how far back we go.) And that brings us to the second (and stronger) reason why all the files -really need to be in @command{git}. It boils down to who do you cater +really need to be in Git. It boils down to who do you cater to---the @command{gawk} developer(s), or the user who just wants to check out a version and try it out? @@ -37678,10 +37714,10 @@ wants it to be possible for any interested @command{awk} user in the world to just clone the repository, check out the branch of interest and build it. Without their having to have the correct version(s) of the autotools.@footnote{There is one GNU program that is (in our opinion) -severely difficult to bootstrap from the @command{git} repository. For -example, on the author's old (but still working) PowerPC macintosh with +severely difficult to bootstrap from the Git repository. For +example, on the author's old (but still working) PowerPC Macintosh with Mac OS X 10.5, it was necessary to bootstrap a ton of software, starting -with @command{git} itself, in order to try to work with the latest code. +with Git itself, in order to try to work with the latest code. It's not pleasant, and especially on older systems, it's a big waste of time. @@ -37704,14 +37740,14 @@ This is extremely important for the @code{master} and Further, the @command{gawk} maintainer would argue that it's also important for the @command{gawk} developers. When he tried to check out -the @code{xgawk} branch@footnote{A branch created by one of the other +the @code{xgawk} branch@footnote{A branch (since removed) created by one of the other developers that did not include the generated files.} to build it, he couldn't. (No @file{ltmain.sh} file, and he had no idea how to create it, and that was not the only problem.) He felt @emph{extremely} frustrated. With respect to that branch, the maintainer is no different than Jane User who wants to try to build -@code{gawk-4.0-stable} or @code{master} from the repository. +@code{gawk-4.1-stable} or @code{master} from the repository. Thus, the maintainer thinks that it's not just important, but critical, that for any given branch, the above incantation @emph{just works}. @@ -37731,14 +37767,14 @@ It's the maintainer's job to merge them and he will deal with it. @item He is really good at @samp{git diff x y > /tmp/diff1 ; gvim /tmp/diff1} to -remove the diffs that aren't of interest in order to review code. @code{:-)} +remove the diffs that aren't of interest in order to review code. @end enumerate @item It would certainly help if everyone used the same versions of the GNU tools as he does, which in general are the latest released versions of -@command{automake}, -@command{autoconf}, +Automake, +Autoconf, @command{bison}, and @command{gettext}. @@ -37750,10 +37786,10 @@ now it hasn't been a real issue since I'm the only one who's been dorking with the configuration machinery. @end ignore -@enumerate A -@item -Installing from source is quite easy. It's how the maintainer worked for years -under Fedora. +@c @enumerate A +@c @item +Installing from source is quite easy. It's how the maintainer worked for years, +and still works. He had @file{/usr/local/bin} at the front of his @env{PATH} and just did: @example @@ -37764,10 +37800,11 @@ cd @var{package}-@var{x}.@var{y}.@var{z} make install # as root @end example -@item +@c @item +@ignore These days the maintainer uses Ubuntu 12.04 which is medium current, but -he is already doing the above for @command{autoconf}, @command{automake} -and @command{bison}. +he is already doing the above for Automake, Autoconf, and @command{bison}. +@end ignore @ignore (C. Rant: Recent Linux versions with GNOME 3 really suck. What @@ -37775,7 +37812,7 @@ and @command{bison}. me to Ubuntu, but Ubuntu 11.04 and 11.10 are totally unusable from a UI perspective. Bleah.) @end ignore -@end enumerate +@c @end enumerate @ignore @item @@ -37791,7 +37828,7 @@ the "real" changes and the second with "everything else needed for Most of the above was originally written by the maintainer to other @command{gawk} developers. It raised the objection from one of the developers ``@dots{} that anybody pulling down the source from -@command{git} is not an end user.'' +Git is not an end user.'' However, this is not true. There are ``power @command{awk} users'' who can build @command{gawk} (using the magic incantation shown previously) @@ -37801,10 +37838,10 @@ kept buildable all the time. It was then suggested that there be a @command{cron} job to create nightly tarballs of ``the source.'' Here, the problem is that there are source trees, corresponding to the various branches! So, -nightly tar balls aren't the answer, especially as the repository can go +nightly tarballs aren't the answer, especially as the repository can go for weeks without significant change being introduced. -Fortunately, the @command{git} server can meet this need. For any given +Fortunately, the Git server can meet this need. For any given branch named @var{branchname}, use: @example @@ -37864,9 +37901,10 @@ Larry @author Larry Wall @end quotation -The @file{TODO} file in the @command{gawk} Git repository lists possible -future enhancements. Some of these relate to the source code, and others -to possible new features. Please see that file for the list. +The @file{TODO} file in the @code{master} branch of the @command{gawk} +Git repository lists possible future enhancements. Some of these relate +to the source code, and others to possible new features. Please see +that file for the list. @xref{Additions}, if you are interested in tackling any of the projects listed there. @@ -37938,8 +37976,8 @@ documentation in this @value{DOCUMENT}, but it was quite minimal. @item Being able to call into @command{gawk} from an extension required linker facilities that are common on Unix-derived systems but that did -not work on Windows systems; users wanting extensions on Windows -had to statically link them into @command{gawk}, even though Windows supports +not work on MS-Windows systems; users wanting extensions on MS-Windows +had to statically link them into @command{gawk}, even though MS-Windows supports dynamic loading of shared objects. @item @@ -37993,7 +38031,7 @@ in order to loop over all the element in an easy fashion for C code. @item The ability to create arrays (including @command{gawk}'s true -multidimensional arrays). +arrays of arrays). @end itemize @end itemize @@ -38014,8 +38052,8 @@ The API mechanism should not require access to @command{gawk}'s symbols@footnote{The @dfn{symbols} are the variables and functions defined inside @command{gawk}. Access to these symbols by code external to @command{gawk} loaded dynamically at runtime is -problematic on Windows.} by the compile-time or dynamic linker, -in order to enable creation of extensions that also work on Windows. +problematic on MS-Windows.} by the compile-time or dynamic linker, +in order to enable creation of extensions that also work on MS-Windows. @end itemize During development, it became clear that there were other features @@ -38362,14 +38400,14 @@ like this: @code{""}. Humans are used to working in decimal; i.e., base 10. In base 10, numbers go from 0 to 9, and then ``roll over'' into the next -column. (Remember grade school? 42 is 4 times 10 plus 2.) +column. (Remember grade school? 42 = 4 x 10 + 2.) There are other number bases though. Computers commonly use base 2 or @dfn{binary}, base 8 or @dfn{octal}, and base 16 or @dfn{hexadecimal}. In binary, each column represents two times the value in the column to its right. Each column may contain either a 0 or a 1. -Thus, binary 1010 represents 1 times 8, plus 0 times 4, plus 1 times 2, -plus 0 times 1, or decimal 10. +Thus, binary 1010 represents (1 x 8) + (0 x 4) + (1 x 2) ++ (0 x 1), or decimal 10. Octal and hexadecimal are discussed more in @ref{Nondecimal-numbers}. @@ -38406,7 +38444,7 @@ Where it makes sense, POSIX @command{awk} is compatible with 1999 ISO C. @item Action A series of @command{awk} statements attached to a rule. If the rule's pattern matches an input record, @command{awk} executes the -rule's action. Actions are always enclosed in curly braces. +rule's action. Actions are always enclosed in braces. (@xref{Action Overview}.) @cindex Spencer, Henry @@ -38511,7 +38549,7 @@ Named after the English mathematician Boole. See also ``Logical Expression.'' @item Bourne Shell The standard shell (@file{/bin/sh}) on Unix and Unix-like systems, -originally written by Steven R.@: Bourne. +originally written by Steven R.@: Bourne at Bell Laboratories. Many shells (Bash, @command{ksh}, @command{pdksh}, @command{zsh}) are generally upwardly compatible with the Bourne shell. @@ -38561,7 +38599,9 @@ Changing some of them affects @command{awk}'s running environment. (@xref{Built-in Variables}.) @item Braces -See ``Curly Braces.'' +The characters @samp{@{} and @samp{@}}. Braces are used in +@command{awk} for delimiting actions, compound statements, and function +bodies. @item C The system programming language that most GNU software is written in. The @@ -38586,7 +38626,7 @@ or place. The most common character set in use today is ASCII (American Standard Code for Information Interchange). Many European countries use an extension of ASCII known as ISO-8859-1 (ISO Latin-1). The @uref{http://www.unicode.org, Unicode character set} is -becoming increasingly popular and standard, and is particularly +increasingly popular and standard, and is particularly widely used on GNU/Linux systems. @cindex Kernighan, Brian @@ -38599,10 +38639,11 @@ It was written in @command{awk} by Brian Kernighan and Jon Bentley, and is available from @uref{http://netlib.sandia.gov/netlib/typesetting/chem.gz}. +@cindex McIlroy, Doug @cindex cookie @item Cookie A peculiar goodie, token, saying or remembrance -produced by or presented to a program. (With thanks to Doug McIlroy.) +produced by or presented to a program. (With thanks to Professor Doug McIlroy.) @ignore From: Doug McIlroy <doug@cs.dartmouth.edu> Date: Sat, 13 Oct 2012 19:55:25 -0400 @@ -38680,9 +38721,7 @@ statements, and in patterns to select which input records to process. (@xref{Typing and Comparison}.) @item Curly Braces -The characters @samp{@{} and @samp{@}}. Curly braces are used in -@command{awk} for delimiting actions, compound statements, and function -bodies. +See ``Braces.'' @cindex dark corner @item Dark Corner @@ -38727,7 +38766,7 @@ ordinary expression. It could be a string constant, such as (@xref{Computed Regexps}.) @item Environment -A collection of strings, of the form @var{name}@code{=}@code{val}, that each +A collection of strings, of the form @samp{@var{name}=@var{val}}, that each program has available to it. Users generally place values into the environment in order to provide information to various programs. Typical examples are the environment variables @env{HOME} and @env{PATH}. @@ -38781,8 +38820,8 @@ this is just a number that can have a fractional part. See also ``Double Precision'' and ``Single Precision.'' @item Format -Format strings are used to control the appearance of output in the -@code{strftime()} and @code{sprintf()} functions, and are used in the +Format strings control the appearance of output in the +@code{strftime()} and @code{sprintf()} functions, and in the @code{printf} statement as well. Also, data conversions from numbers to strings are controlled by the format strings contained in the built-in variables @code{CONVFMT} and @code{OFMT}. (@xref{Control Letters}.) @@ -38851,7 +38890,7 @@ Base 16 notation, where the digits are @code{0}--@code{9} and @code{A}--@code{F}, with @samp{A} representing 10, @samp{B} representing 11, and so on, up to @samp{F} for 15. Hexadecimal numbers are written in C using a leading @samp{0x}, -to indicate their base. Thus, @code{0x12} is 18 (1 times 16 plus 2). +to indicate their base. Thus, @code{0x12} is 18 ((1 x 16) + 2). @xref{Nondecimal-numbers}. @item I/O @@ -38925,8 +38964,8 @@ meaning. Keywords are reserved and may not be used as variable names. @code{function}, @code{func}, @code{if}, -@code{nextfile}, @code{next}, +@code{nextfile}, @code{switch}, and @code{while}. @@ -38987,13 +39026,9 @@ Ancient @command{awk} implementations used single precision floating-point. @item Octal Base-eight notation, where the digits are @code{0}--@code{7}. Octal numbers are written in C using a leading @samp{0}, -to indicate their base. Thus, @code{013} is 11 (one times 8 plus 3). +to indicate their base. Thus, @code{013} is 11 ((1 x 8) + 3). @xref{Nondecimal-numbers}. -@cindex P1003.1 POSIX standard -@item P1003.1 -See ``POSIX.'' - @item Pattern Patterns tell @command{awk} which input records are interesting to which rules. @@ -39034,8 +39069,8 @@ specify single lines. (@xref{Pattern Overview}.) @item Recursion When a function calls itself, either directly or indirectly. -As long as this is not clear, refer to the entry for ``recursion.'' If this is clear, stop, and proceed to the next entry. +Otherwise, refer to the entry for ``recursion.'' @item Redirection Redirection means performing input from something other than the standard input @@ -39114,7 +39149,7 @@ expressions, and function calls have side effects. An internal representation of numbers that can have fractional parts. Single precision numbers keep track of fewer digits than do double precision numbers, but operations on them are sometimes less expensive in terms of CPU time. -This is the type used by some very old versions of @command{awk} to store +This is the type used by some ancient versions of @command{awk} to store numeric values. It is the C type @code{float}. @item Space @@ -39151,7 +39186,7 @@ into the local language. A value in the ``seconds since the epoch'' format used by Unix and POSIX systems. Used for the @command{gawk} functions @code{mktime()}, @code{strftime()}, and @code{systime()}. -See also ``Epoch'' and ``UTC.'' +See also ``Epoch,'' ``GMT,'' and ``UTC.'' @cindex Linux @cindex GNU/Linux diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 3794a25b..45e807a2 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -783,7 +783,7 @@ particular records in a file and perform operations upon them. programming. * Profiling:: Profiling your @command{awk} programs. * I18N and L10N:: Internationalization and Localization. -* Explaining gettext:: How GNU @code{gettext} works. +* Explaining gettext:: How GNU @command{gettext} works. * Programmer i18n:: Features for the programmer. * Translator i18n:: Features for the translator. * String Extraction:: Extracting marked strings. @@ -960,7 +960,7 @@ particular records in a file and perform operations upon them. * New Ports:: Porting @command{gawk} to a new operating system. * Derived Files:: Why derived files are kept in the - @command{git} repository. + Git repository. * Future Extensions:: New features that may be implemented one day. * Implementation Limitations:: Some limitations of the @@ -2139,7 +2139,7 @@ pattern to search for and one action to perform upon finding the pattern. Syntactically, a rule consists of a pattern followed by an action. The -action is enclosed in curly braces to separate it from the pattern. +action is enclosed in braces to separate it from the pattern. Newlines usually separate rules. Therefore, an @command{awk} program looks like this: @@ -2866,10 +2866,10 @@ for @emph{every} input line. If the action is omitted, the default action is to print all lines that match the pattern. @cindex actions, empty -Thus, we could leave out the action (the @code{print} statement and the curly +Thus, we could leave out the action (the @code{print} statement and the braces) in the previous example and the result would be the same: @command{awk} prints all lines matching the pattern @samp{li}. By comparison, -omitting the @code{print} statement but retaining the curly braces makes an +omitting the @code{print} statement but retaining the braces makes an empty action that does nothing (i.e., no lines are printed). @cindex @command{awk} programs, one-line examples @@ -3611,7 +3611,7 @@ with @samp{#!} scripts (@pxref{Executable Scripts}), like so: @cindex portable object files, generating @cindex files, portable object, generating Analyze the source program and -generate a GNU @code{gettext} Portable Object Template file on standard +generate a GNU @command{gettext} Portable Object Template file on standard output for all string constants that have been marked for translation. @xref{Internationalization}, for information about this option. @@ -12374,11 +12374,11 @@ in outline, an @command{awk} program generally looks like this: @cindex @code{;} (semicolon), separating statements in actions @cindex semicolon (@code{;}), separating statements in actions An action consists of one or more @command{awk} @dfn{statements}, enclosed -in curly braces (@samp{@{@r{@dots{}}@}}). Each statement specifies one +in braces (@samp{@{@r{@dots{}}@}}). Each statement specifies one thing to do. The statements are separated by newlines or semicolons. -The curly braces around an action must be used even if the action +The braces around an action must be used even if the action contains only one statement, or if it contains no statements at -all. However, if you omit the action entirely, omit the curly braces as +all. However, if you omit the action entirely, omit the braces as well. An omitted action is equivalent to @samp{@{ print $0 @}}: @example @@ -12404,7 +12404,7 @@ programs. The @command{awk} language gives you C-like constructs special ones (@pxref{Statements}). @item Compound statements -Enclose one or more statements in curly braces. A compound statement +Enclose one or more statements in braces. A compound statement is used in order to put several statements together in the body of an @code{if}, @code{while}, @code{do}, or @code{for} statement. @@ -12452,7 +12452,7 @@ Many control statements contain other statements. For example, the @code{if} statement contains another statement that may or may not be executed. The contained statement is called the @dfn{body}. To include more than one statement in the body, group them into a -single @dfn{compound statement} with curly braces, separating them with +single @dfn{compound statement} with braces, separating them with newlines or semicolons. @menu @@ -12506,7 +12506,7 @@ if the value of @code{x} is evenly divisible by two), then the first statement is executed. If the @code{else} keyword appears on the same line as @var{then-body} and @var{then-body} is not a compound statement (i.e., not surrounded by -curly braces), then a semicolon must separate @var{then-body} from +braces), then a semicolon must separate @var{then-body} from the @code{else}. To illustrate this, the previous example can be rewritten as: @@ -25961,7 +25961,7 @@ a requirement. @menu * I18N and L10N:: Internationalization and Localization. -* Explaining gettext:: How GNU @code{gettext} works. +* Explaining gettext:: How GNU @command{gettext} works. * Programmer i18n:: Features for the programmer. * Translator i18n:: Features for the translator. * I18N Example:: A simple i18n example. @@ -25985,22 +25985,22 @@ responses, and information related to how numerical and monetary values are printed and read. @node Explaining gettext -@section GNU @code{gettext} +@section GNU @command{gettext} @cindex internationalizing a program @c STARTOFRANGE gettex -@cindex @code{gettext} library -@command{gawk} uses GNU @code{gettext} to provide its internationalization +@cindex @command{gettext} library +@command{gawk} uses GNU @command{gettext} to provide its internationalization features. -The facilities in GNU @code{gettext} focus on messages; strings printed +The facilities in GNU @command{gettext} focus on messages; strings printed by a program, either directly or via formatting with @code{printf} or @code{sprintf()}.@footnote{For some operating systems, the @command{gawk} -port doesn't support GNU @code{gettext}. +port doesn't support GNU @command{gettext}. Therefore, these features are not available if you are using one of those operating systems. Sorry.} -@cindex portability, @code{gettext} library and -When using GNU @code{gettext}, each application has its own +@cindex portability, @command{gettext} library and +When using GNU @command{gettext}, each application has its own @dfn{text domain}. This is a unique name, such as @samp{kpilot} or @samp{gawk}, that identifies the application. A complete application may have multiple components---programs written @@ -26024,7 +26024,7 @@ language). @cindex @code{textdomain()} function (C library) @item The programmer indicates the application's text domain -(@code{"guide"}) to the @code{gettext} library, +(@command{"guide"}) to the @command{gettext} library, by calling the @code{textdomain()} function. @cindex @code{.pot} files @@ -26068,7 +26068,7 @@ are installed in a standard place. @cindex @code{bindtextdomain()} function (C library) @item -For testing and development, it is possible to tell @code{gettext} +For testing and development, it is possible to tell @command{gettext} to use @file{.gmo} files in a different directory than the standard one by using the @code{bindtextdomain()} function. @@ -26101,7 +26101,7 @@ strings enclosed in calls to @code{gettext()}. @cindex @code{_} (underscore), C macro @cindex underscore (@code{_}), C macro -The GNU @code{gettext} developers, recognizing that typing +The GNU @command{gettext} developers, recognizing that typing @samp{gettext(@dots{})} over and over again is both painful and ugly to look at, use the macro @samp{_} (an underscore) to make things easier: @@ -26114,7 +26114,7 @@ printf("%s", _("Don't Panic!\n")); @end example @cindex internationalization, localization, locale categories -@cindex @code{gettext} library, locale categories +@cindex @command{gettext} library, locale categories @cindex locale categories @noindent This reduces the typing overhead to just three extra characters per string @@ -26122,12 +26122,12 @@ and is considerably easier to read as well. There are locale @dfn{categories} for different types of locale-related information. -The defined locale categories that @code{gettext} knows about are: +The defined locale categories that @command{gettext} knows about are: @table @code @cindex @code{LC_MESSAGES} locale category @item LC_MESSAGES -Text messages. This is the default category for @code{gettext} +Text messages. This is the default category for @command{gettext} operations, but it is possible to supply a different one explicitly, if necessary. (It is almost never necessary to supply a different category.) @@ -26175,7 +26175,7 @@ before or after the day in a date, local month abbreviations, and so on. @cindex @code{LC_ALL} locale category @item LC_ALL -All of the above. (Not too useful in the context of @code{gettext}.) +All of the above. (Not too useful in the context of @command{gettext}.) @end table @c ENDOFRANGE gettex @@ -26191,7 +26191,7 @@ internationalization: @cindex @code{TEXTDOMAIN} variable @item TEXTDOMAIN This variable indicates the application's text domain. -For compatibility with GNU @code{gettext}, the default +For compatibility with GNU @command{gettext}, the default value is @code{"messages"}. @cindex internationalization, localization, marked strings @@ -26246,7 +26246,7 @@ The same remarks about argument order as for the @code{dcgettext()} function app @cindexgawkfunc{bindtextdomain} @item @code{bindtextdomain(@var{directory}} [@code{,} @var{domain} ]@code{)} Change the directory in which -@code{gettext} looks for @file{.gmo} files, in case they +@command{gettext} looks for @file{.gmo} files, in case they will not or cannot be placed in the standard locations (e.g., during testing). Return the directory in which @var{domain} is ``bound.'' @@ -26385,12 +26385,12 @@ $ @kbd{gawk --gen-pot -f guide.awk > guide.pot} @cindex @code{xgettext} utility When run with @option{--gen-pot}, @command{gawk} does not execute your program. Instead, it parses it as usual and prints all marked strings -to standard output in the format of a GNU @code{gettext} Portable Object +to standard output in the format of a GNU @command{gettext} Portable Object file. Also included in the output are any constant strings that appear as the first argument to @code{dcgettext()} or as the first and second argument to @code{dcngettext()}.@footnote{The @command{xgettext} utility that comes with GNU -@code{gettext} can handle @file{.awk} files.} +@command{gettext} can handle @file{.awk} files.} @xref{I18N Example}, for the full list of steps to go through to create and test translations for @command{guide}. @@ -26406,7 +26406,7 @@ Format strings for @code{printf} and @code{sprintf()} (@pxref{Printf}) present a special problem for translation. Consider the following:@footnote{This example is borrowed -from the GNU @code{gettext} manual.} +from the GNU @command{gettext} manual.} @c line broken here only for smallbook format @example @@ -26658,8 +26658,8 @@ msgstr "Like, the scoop is" The next step is to make the directory to hold the binary message object file and then to create the @file{guide.mo} file. We pretend that our file is to be used in the @code{en_US.UTF-8} locale. -The directory layout shown here is standard for GNU @code{gettext} on -GNU/Linux systems. Other versions of @code{gettext} may use a different +The directory layout shown here is standard for GNU @command{gettext} on +GNU/Linux systems. Other versions of @command{gettext} may use a different layout: @example @@ -26712,16 +26712,16 @@ $ @kbd{gawk --posix -f guide.awk -f libintl.awk} @section @command{gawk} Can Speak Your Language @command{gawk} itself has been internationalized -using the GNU @code{gettext} package. -(GNU @code{gettext} is described in +using the GNU @command{gettext} package. +(GNU @command{gettext} is described in complete detail in @ifinfo -@inforef{Top, , GNU @code{gettext} utilities, gettext, GNU gettext tools}.) +@inforef{Top, , GNU @command{gettext} utilities, gettext, GNU gettext tools}.) @end ifinfo @ifnotinfo @cite{GNU gettext tools}.) @end ifnotinfo -As of this writing, the latest version of GNU @code{gettext} is +As of this writing, the latest version of GNU @command{gettext} is @uref{ftp://ftp.gnu.org/gnu/gettext/gettext-0.18.2.1.tar.gz, version 0.18.2.1}. If a translation of @command{gawk}'s messages exists, @@ -32383,7 +32383,7 @@ code must be compiled. Assuming that the functions are in a file named @file{filefuncs.c}, and @var{idir} is the location of the @file{gawkapi.h} header file, the following steps@footnote{In practice, you would probably want to -use the GNU Autotools---Automake, Autoconf, Libtool, and Gettext---to +use the GNU Autotools---Automake, Autoconf, Libtool, and @command{gettext}---to configure and build your libraries. Instructions for doing so are beyond the scope of this @value{DOCUMENT}. @xref{gawkextlib}, for WWW links to the tools.} create a GNU/Linux shared library: @@ -33137,7 +33137,7 @@ In addition, you must have the GNU Autotools installed @uref{http://www.gnu.org/software/automake, Automake}, @uref{http://www.gnu.org/software/libtool, Libtool}, and -@uref{http://www.gnu.org/software/gettext, Gettext}). +@uref{http://www.gnu.org/software/gettext, GNU @command{gettext}}). The simple recipe for building and testing @code{gawkextlib} is as follows. First, build and install @command{gawk}: @@ -34152,7 +34152,7 @@ The use of GNU Automake to help in standardizing the configuration process (@pxref{Quick Installation}). @item -The use of GNU @code{gettext} for @command{gawk}'s own message output +The use of GNU @command{gettext} for @command{gawk}'s own message output (@pxref{Gawk I18N}). @item @@ -34733,7 +34733,7 @@ provided the port to BeOS and its documentation. @cindex Peters, Arno Arno Peters did the initial work to convert @command{gawk} to use -GNU Automake and GNU @code{gettext}. +GNU Automake and GNU @command{gettext}. @item @cindex Broder, Alan J.@: @@ -34911,7 +34911,6 @@ file and then use @code{tar} to extract it. You can use the following pipeline to produce the @command{gawk} distribution: @example -# Under System V, add 'o' to the tar options gzip -d -c gawk-@value{VERSION}.@value{PATCHLEVEL}.tar.gz | tar -xvpf - @end example @@ -35066,8 +35065,8 @@ actual @file{Makefile} for creating the documentation. @item Makefile.am @itemx */Makefile.am -Files used by the GNU @command{automake} software for generating -the @file{Makefile.in} files used by @command{autoconf} and +Files used by the GNU Automake software for generating +the @file{Makefile.in} files used by Autoconf and @command{configure}. @item Makefile.in @@ -35163,9 +35162,9 @@ to @file{gawk-@value{VERSION}.@value{PATCHLEVEL}}. Like most GNU software, @command{gawk} is configured automatically for your system by running the @command{configure} program. This program is a Bourne shell script that is generated automatically using -GNU @command{autoconf}. +GNU Autoconf. @ifnotinfo -(The @command{autoconf} software is +(The Autoconf software is described fully in @cite{Autoconf---Generating Automatic Configuration Scripts}, which can be found online at @@ -35173,7 +35172,7 @@ which can be found online at the Free Software Foundation's web site}.) @end ifnotinfo @ifinfo -(The @command{autoconf} software is described fully starting with +(The Autoconf software is described fully starting with @inforef{Top, , Autoconf, autoconf,Autoconf---Generating Automatic Configuration Scripts}.) @end ifinfo @@ -35276,7 +35275,7 @@ improvement. @cindex @option{--with-whiny-user-strftime} configuration option @cindex configuration option, @code{--with-whiny-user-strftime} @item --with-whiny-user-strftime -Force use of the included version of the @code{strftime()} +Force use of the included version of the C @code{strftime()} function for deficient systems. @end table @@ -35323,9 +35322,9 @@ should not have. @file{custom.h} is automatically included by @file{config.h}. It is also possible that the @command{configure} program generated by -@command{autoconf} will not work on your system in some other fashion. +Autoconf will not work on your system in some other fashion. If you do have a problem, the file @file{configure.ac} is the input for -@command{autoconf}. You may be able to change this file and generate a +Autoconf. You may be able to change this file and generate a new version of @command{configure} that works on your system (@pxref{Bugs}, for information on how to report problems in configuring @command{gawk}). @@ -35491,7 +35490,7 @@ and @option{--libexecdir=c:/usr/lib}. @end ignore @ignore -The internal @code{gettext} library tends to be problematic. It is therefore recommended +The internal @command{gettext} library tends to be problematic. It is therefore recommended to use either an external one (@option{--without-included-gettext}) or to disable NLS entirely (@option{--disable-nls}). @end ignore @@ -35528,7 +35527,9 @@ Ancient OS/2 ports of GNU @command{make} are not able to handle the Makefiles of this package. If you encounter any problems with @command{make}, try GNU Make 3.79.1 or later versions. You should find the latest version on -@uref{ftp://hobbes.nmsu.edu/pub/os2/}. +@uref{ftp://hobbes.nmsu.edu/pub/os2/}.@footnote{As of May, 2014, +this site is still there, but the author could not find a package +for GNU Make.} @end quotation @end ifclear @@ -35583,14 +35584,14 @@ program files as described in @ref{AWKPATH Variable}. However, semicolons (rather than colons) separate elements in the @env{AWKPATH} variable. If @env{AWKPATH} is not set or is empty, then the default search path for MS-Windows and MS-DOS versions is -@code{@w{".;c:/lib/awk;c:/gnu/lib/awk"}}. +@samp{@w{.;c:/lib/awk;c:/gnu/lib/awk}}. @ifclear FOR_PRINT @cindex @command{gawk}, OS/2 version of @cindex @code{UNIXROOT} variable, on OS/2 systems The search path for OS/2 (32 bit, EMX) is determined by the prefix directory (most likely @file{/usr} or @file{c:/usr}) that has been specified as an option of -the @command{configure} script like it is the case for the Unix versions. +the @command{configure} script as is the case for the Unix versions. If @file{c:/usr} is the prefix directory then the default search path contains @file{.} and @file{c:/usr/share/awk}. Additionally, to support binary distributions of @command{gawk} for OS/2 @@ -35598,7 +35599,7 @@ systems whose drive @samp{c:} might not support long file names or might not exi at all, there is a special environment variable. If @env{UNIXROOT} specifies a drive then this specific drive is also searched for program files. E.g., if @env{UNIXROOT} is set to @file{e:} the complete default search path is -@code{@w{".;c:/usr/share/awk;e:/usr/share/awk"}}. +@samp{@w{.;c:/usr/share/awk;e:/usr/share/awk}}. An @command{sh}-like shell (as opposed to @command{command.com} under MS-DOS or @command{cmd.exe} under MS-Windows or OS/2) may be useful for @command{awk} programming. @@ -35622,8 +35623,8 @@ Under MS-Windows, OS/2 and MS-DOS, Under MS-Windows and MS-DOS, @end ifset @command{gawk} (and many other text programs) silently -translate end-of-line @code{"\r\n"} to @code{"\n"} on input and @code{"\n"} -to @code{"\r\n"} on output. A special @code{BINMODE} variable @value{COMMONEXT} +translate end-of-line @samp{\r\n} to @samp{\n} on input and @samp{\n} +to @samp{\r\n} on output. A special @code{BINMODE} variable @value{COMMONEXT} allows control over these translations and is interpreted as follows: @itemize @value{BULLET} @@ -35664,7 +35665,7 @@ The name @code{BINMODE} was chosen to match @command{mawk} @command{mawk} adds a @samp{-W BINMODE=@var{N}} option and an environment variable that can set @code{BINMODE}, @code{RS}, and @code{ORS}. The files @file{binmode[1-3].awk} (under @file{gnu/lib/awk} in some of the -prepared distributions) have been chosen to match @command{mawk}'s @samp{-W +prepared binary distributions) have been chosen to match @command{mawk}'s @samp{-W BINMODE=@var{N}} option. These can be changed or discarded; in particular, the setting of @code{RS} giving the fewest ``surprises'' is open to debate. @command{mawk} uses @samp{RS = "\r\n"} if binary mode is set on read, which is @@ -35788,11 +35789,11 @@ or: $ @kbd{MMK/DESCRIPTION=[.vms]descrip.mms gawk} @end example -@code{MMK} is an open source, free, near-clone of @code{MMS} and -can better handle @code{ODS-5} volumes with upper- and lowercase filenames. -@code{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}. +@command{MMK} is an open source, free, near-clone of @command{MMS} and +can better handle ODS-5 volumes with upper- and lowercase filenames. +@command{MMK} is available from @uref{https://github.com/endlesssoftware/mmk}. -With @code{ODS-5} volumes and extended parsing enabled, the case of the target +With ODS-5 volumes and extended parsing enabled, the case of the target parameter may need to be exact. @command{gawk} has been tested under VAX/VMS 7.3 and Alpha/VMS 7.3-1 @@ -35801,8 +35802,8 @@ The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture is also known as ``Itanium.''} -The @file{[.vms]gawk_build_steps.txt} provides information on how to build -@command{gawk} into a PCSI kit that is compatible with the GNV product. +@xref{VMS GNV}, for information on building +@command{gawk} as a PCSI kit that is compatible with the GNV product. @node VMS Dynamic Extensions @appendixsubsubsec Compiling @command{gawk} Dynamic Extensions on VMS @@ -36007,7 +36008,7 @@ The VMS GNV package provides a build environment similar to POSIX with ports of a collection of open source tools. The @command{gawk} found in the GNV base kit is an older port. Currently the GNV project is being reorganized to supply individual PCSI packages for each component. -See @uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}. +See @w{@uref{https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/}.} The normal build procedure for @command{gawk} produces a program that is suitable for use with GNV. @@ -36108,12 +36109,14 @@ Once you have a precise problem, send email to @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org}. @cindex Robbins, Arnold -Using this address automatically sends a copy of your -mail to me. If necessary, I can be reached directly at +The @command{gawk} maintainers subscribe to this address and +thus they will receive your bug report. +If necessary, the primary maintainer can be reached directly at @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com}. The bug reporting address is preferred since the email list is archived at the GNU Project. -@emph{All email should be in English, since that is my native language.} +@emph{All email should be in English. This is the only language +understood in common by all the maintainers.} @cindex @code{comp.lang.awk} newsgroup @quotation CAUTION @@ -36160,13 +36163,13 @@ as follows: @cindex Rankin, Pat @cindex Malmberg, John @cindex Pitts, Dave -@multitable {MS-Windows with MINGW} {123456789012345678901234567890123456789001234567890} +@multitable {MS-Windows with MinGW} {123456789012345678901234567890123456789001234567890} @item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net}. -@item MS-Windows with MINGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. +@item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org}. -@c Leave this in the print version on purpose. OS/2 not mentioned anywhere else -@c in the print version though. +@c Leave this in the print version on purpose. +@c OS/2 is not mentioned anywhere else in the print version though. @item OS/2 @tab Andreas Buening, @EMAIL{andreas.buening@@nexgo.de,andreas dot buening at nexgo dot de}. @item VMS @tab Pat Rankin, @EMAIL{r.pat.rankin@@gmail.com,r.pat.rankin at gmail.com}, and @@ -36324,10 +36327,10 @@ information, see the @uref{http://busybox.net, project's home page}. @cindex Solaris, POSIX-compliant @command{awk} @cindex source code, Solaris @command{awk} @item The OpenSolaris POSIX @command{awk} -The version of @command{awk} in @file{/usr/xpg4/bin} on Solaris is -more-or-less POSIX-compliant. It is based on the @command{awk} from -Mortice Kern Systems for PCs. -This author was able to make it compile and work under GNU/Linux +The versions of @command{awk} in @file{/usr/xpg4/bin} and +@file{/usr/xpg6/bin} on Solaris are more-or-less POSIX-compliant. +They are based on the @command{awk} from Mortice Kern Systems for PCs. +This author was able to make this code compile and work under GNU/Linux with 1--2 hours of work. Making it more generally portable (using GNU Autoconf and/or Automake) would take more work, and this has not been done, at least to our knowledge. @@ -36382,6 +36385,9 @@ under the GPL. It has a large number of extensions over standard See @uref{http://www.quiktrim.org/QTawk.html} for more information, including the manual and a download link. +The project may als be frozen; no new code changes have been made +since approximately 2008. + @item Other Versions See also the @uref{http://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations, Wikipedia article}, for information on additional versions. @@ -36431,7 +36437,7 @@ is one more option available on the command line: @table @code @item -Y @itemx --parsedebug -Prints out the parse stack information as the program is being parsed. +Print out the parse stack information as the program is being parsed. @end table This option is intended only for serious @command{gawk} developers @@ -36456,7 +36462,7 @@ as well as any considerations you should bear in mind. * New Ports:: Porting @command{gawk} to a new operating system. * Derived Files:: Why derived files are kept in the - @command{git} repository. + Git repository. @end menu @node Accessing The Source @@ -36480,8 +36486,8 @@ git clone git://git.savannah.gnu.org/gawk.git @end example @noindent -This will clone the @command{gawk} repository. If you are behind a -firewall that will not allow you to use the Git native protocol, you +This clones the @command{gawk} repository. If you are behind a +firewall that does not allow you to use the Git native protocol, you can still access the repository using: @example @@ -36509,7 +36515,7 @@ that has a Git plug-in for working with Git repositories. You are free to add any new features you like to @command{gawk}. However, if you want your changes to be incorporated into the @command{gawk} distribution, there are several steps that you need to take in order to -make it possible to include your changes: +make it possible to include them: @enumerate 1 @item @@ -36531,8 +36537,9 @@ or @EMAIL{assign@@gnu.org,assign at gnu dot org}. @item Get the latest version. It is much easier for me to integrate changes if they are relative to -the most recent distributed version of @command{gawk}. If your version of -@command{gawk} is very old, I may not be able to integrate them at all. +the most recent distributed version of @command{gawk}, or better yet, +relative to the latest code in the Git repository. If your version of +@command{gawk} is very old, I may not be able to integrate your changes at all. (@xref{Getting}, for information on getting the latest version of @command{gawk}.) @@ -36663,6 +36670,7 @@ not do so, particularly if there are lots of changes. Include an entry for the @file{ChangeLog} file with your submission. This helps further minimize the amount of work I have to do, making it easier for me to accept patches. +It is simplest if you just make this part of your diff. @end enumerate Although this sounds like a lot of work, please remember that while you @@ -36720,10 +36728,39 @@ A number of the files that come with @command{gawk} are maintained by other people. Thus, you should not change them unless it is for a very good reason; i.e., changes are not out of the question, but changes to these files are scrutinized extra carefully. -The files are @file{dfa.c}, @file{dfa.h}, @file{getopt1.c}, @file{getopt.c}, -@file{getopt.h}, @file{install-sh}, @file{mkinstalldirs}, @file{regcomp.c}, -@file{regex.c}, @file{regexec.c}, @file{regexex.c}, @file{regex.h}, -@file{regex_internal.c}, and @file{regex_internal.h}. +The files are +@file{dfa.c}, +@file{dfa.h}, +@file{getopt.c}, +@file{getopt.h}, +@file{getopt1.c}, +@file{getopt_int.h}, +@file{gettext.h}, +@file{regcomp.c}, +@file{regex.c}, +@file{regex.h}, +@file{regex_internal.c}, +@file{regex_internal.h}, +and +@file{regexec.c}. + +@item +A number of other files are provided by the GNU +Autotools (Autoconf, Automake, and GNU @command{gettext}). +You should not change them either, unless it is for a very +good reason. The files are +@file{ABOUT-NLS}, +@file{config.guess}, +@file{config.rpath}, +@file{config.sub}, +@file{depcomp}, +@file{INSTALL}, +@file{install-sh}, +@file{missing}, +@file{mkinstalldirs}, +@file{xalloc.h}, +and +@file{ylwrap}. @item Be willing to continue to maintain the port. @@ -36774,16 +36811,16 @@ In the code that you supply and maintain, feel free to use a coding style and brace layout that suits your taste. @node Derived Files -@appendixsubsec Why Generated Files Are Kept In @command{git} +@appendixsubsec Why Generated Files Are Kept In Git @c STARTOFRANGE gawkgit -@cindex @command{git}, use of for @command{gawk} source code +@cindex Git, use of for @command{gawk} source code @c From emails written March 22, 2012, to the gawk developers list. -If you look at the @command{gawk} source in the @command{git} +If you look at the @command{gawk} source in the Git repository, you will notice that it includes files that are automatically generated by GNU infrastructure tools, such as @file{Makefile.in} from -@command{automake} and even @file{configure} from @command{autoconf}. +Automake and even @file{configure} from Autoconf. This is different from many Free Software projects that do not store the derived files, because that keeps the repository less cluttered, @@ -36809,11 +36846,10 @@ there a guarantee that we could find that @command{bison} version? Or that @emph{it} would build?) If the repository has all the generated files, then it's easy to just check -them out and build. (Or @emph{easier}, depending upon how far back we go. -@code{:-)}) +them out and build. (Or @emph{easier}, depending upon how far back we go.) And that brings us to the second (and stronger) reason why all the files -really need to be in @command{git}. It boils down to who do you cater +really need to be in Git. It boils down to who do you cater to---the @command{gawk} developer(s), or the user who just wants to check out a version and try it out? @@ -36822,10 +36858,10 @@ wants it to be possible for any interested @command{awk} user in the world to just clone the repository, check out the branch of interest and build it. Without their having to have the correct version(s) of the autotools.@footnote{There is one GNU program that is (in our opinion) -severely difficult to bootstrap from the @command{git} repository. For -example, on the author's old (but still working) PowerPC macintosh with +severely difficult to bootstrap from the Git repository. For +example, on the author's old (but still working) PowerPC Macintosh with Mac OS X 10.5, it was necessary to bootstrap a ton of software, starting -with @command{git} itself, in order to try to work with the latest code. +with Git itself, in order to try to work with the latest code. It's not pleasant, and especially on older systems, it's a big waste of time. @@ -36848,14 +36884,14 @@ This is extremely important for the @code{master} and Further, the @command{gawk} maintainer would argue that it's also important for the @command{gawk} developers. When he tried to check out -the @code{xgawk} branch@footnote{A branch created by one of the other +the @code{xgawk} branch@footnote{A branch (since removed) created by one of the other developers that did not include the generated files.} to build it, he couldn't. (No @file{ltmain.sh} file, and he had no idea how to create it, and that was not the only problem.) He felt @emph{extremely} frustrated. With respect to that branch, the maintainer is no different than Jane User who wants to try to build -@code{gawk-4.0-stable} or @code{master} from the repository. +@code{gawk-4.1-stable} or @code{master} from the repository. Thus, the maintainer thinks that it's not just important, but critical, that for any given branch, the above incantation @emph{just works}. @@ -36875,14 +36911,14 @@ It's the maintainer's job to merge them and he will deal with it. @item He is really good at @samp{git diff x y > /tmp/diff1 ; gvim /tmp/diff1} to -remove the diffs that aren't of interest in order to review code. @code{:-)} +remove the diffs that aren't of interest in order to review code. @end enumerate @item It would certainly help if everyone used the same versions of the GNU tools as he does, which in general are the latest released versions of -@command{automake}, -@command{autoconf}, +Automake, +Autoconf, @command{bison}, and @command{gettext}. @@ -36894,10 +36930,10 @@ now it hasn't been a real issue since I'm the only one who's been dorking with the configuration machinery. @end ignore -@enumerate A -@item -Installing from source is quite easy. It's how the maintainer worked for years -under Fedora. +@c @enumerate A +@c @item +Installing from source is quite easy. It's how the maintainer worked for years, +and still works. He had @file{/usr/local/bin} at the front of his @env{PATH} and just did: @example @@ -36908,10 +36944,11 @@ cd @var{package}-@var{x}.@var{y}.@var{z} make install # as root @end example -@item +@c @item +@ignore These days the maintainer uses Ubuntu 12.04 which is medium current, but -he is already doing the above for @command{autoconf}, @command{automake} -and @command{bison}. +he is already doing the above for Automake, Autoconf, and @command{bison}. +@end ignore @ignore (C. Rant: Recent Linux versions with GNOME 3 really suck. What @@ -36919,7 +36956,7 @@ and @command{bison}. me to Ubuntu, but Ubuntu 11.04 and 11.10 are totally unusable from a UI perspective. Bleah.) @end ignore -@end enumerate +@c @end enumerate @ignore @item @@ -36935,7 +36972,7 @@ the "real" changes and the second with "everything else needed for Most of the above was originally written by the maintainer to other @command{gawk} developers. It raised the objection from one of the developers ``@dots{} that anybody pulling down the source from -@command{git} is not an end user.'' +Git is not an end user.'' However, this is not true. There are ``power @command{awk} users'' who can build @command{gawk} (using the magic incantation shown previously) @@ -36945,10 +36982,10 @@ kept buildable all the time. It was then suggested that there be a @command{cron} job to create nightly tarballs of ``the source.'' Here, the problem is that there are source trees, corresponding to the various branches! So, -nightly tar balls aren't the answer, especially as the repository can go +nightly tarballs aren't the answer, especially as the repository can go for weeks without significant change being introduced. -Fortunately, the @command{git} server can meet this need. For any given +Fortunately, the Git server can meet this need. For any given branch named @var{branchname}, use: @example @@ -37008,9 +37045,10 @@ Larry @author Larry Wall @end quotation -The @file{TODO} file in the @command{gawk} Git repository lists possible -future enhancements. Some of these relate to the source code, and others -to possible new features. Please see that file for the list. +The @file{TODO} file in the @code{master} branch of the @command{gawk} +Git repository lists possible future enhancements. Some of these relate +to the source code, and others to possible new features. Please see +that file for the list. @xref{Additions}, if you are interested in tackling any of the projects listed there. @@ -37082,8 +37120,8 @@ documentation in this @value{DOCUMENT}, but it was quite minimal. @item Being able to call into @command{gawk} from an extension required linker facilities that are common on Unix-derived systems but that did -not work on Windows systems; users wanting extensions on Windows -had to statically link them into @command{gawk}, even though Windows supports +not work on MS-Windows systems; users wanting extensions on MS-Windows +had to statically link them into @command{gawk}, even though MS-Windows supports dynamic loading of shared objects. @item @@ -37137,7 +37175,7 @@ in order to loop over all the element in an easy fashion for C code. @item The ability to create arrays (including @command{gawk}'s true -multidimensional arrays). +arrays of arrays). @end itemize @end itemize @@ -37158,8 +37196,8 @@ The API mechanism should not require access to @command{gawk}'s symbols@footnote{The @dfn{symbols} are the variables and functions defined inside @command{gawk}. Access to these symbols by code external to @command{gawk} loaded dynamically at runtime is -problematic on Windows.} by the compile-time or dynamic linker, -in order to enable creation of extensions that also work on Windows. +problematic on MS-Windows.} by the compile-time or dynamic linker, +in order to enable creation of extensions that also work on MS-Windows. @end itemize During development, it became clear that there were other features @@ -37506,14 +37544,14 @@ like this: @code{""}. Humans are used to working in decimal; i.e., base 10. In base 10, numbers go from 0 to 9, and then ``roll over'' into the next -column. (Remember grade school? 42 is 4 times 10 plus 2.) +column. (Remember grade school? 42 = 4 x 10 + 2.) There are other number bases though. Computers commonly use base 2 or @dfn{binary}, base 8 or @dfn{octal}, and base 16 or @dfn{hexadecimal}. In binary, each column represents two times the value in the column to its right. Each column may contain either a 0 or a 1. -Thus, binary 1010 represents 1 times 8, plus 0 times 4, plus 1 times 2, -plus 0 times 1, or decimal 10. +Thus, binary 1010 represents (1 x 8) + (0 x 4) + (1 x 2) ++ (0 x 1), or decimal 10. Octal and hexadecimal are discussed more in @ref{Nondecimal-numbers}. @@ -37550,7 +37588,7 @@ Where it makes sense, POSIX @command{awk} is compatible with 1999 ISO C. @item Action A series of @command{awk} statements attached to a rule. If the rule's pattern matches an input record, @command{awk} executes the -rule's action. Actions are always enclosed in curly braces. +rule's action. Actions are always enclosed in braces. (@xref{Action Overview}.) @cindex Spencer, Henry @@ -37655,7 +37693,7 @@ Named after the English mathematician Boole. See also ``Logical Expression.'' @item Bourne Shell The standard shell (@file{/bin/sh}) on Unix and Unix-like systems, -originally written by Steven R.@: Bourne. +originally written by Steven R.@: Bourne at Bell Laboratories. Many shells (Bash, @command{ksh}, @command{pdksh}, @command{zsh}) are generally upwardly compatible with the Bourne shell. @@ -37705,7 +37743,9 @@ Changing some of them affects @command{awk}'s running environment. (@xref{Built-in Variables}.) @item Braces -See ``Curly Braces.'' +The characters @samp{@{} and @samp{@}}. Braces are used in +@command{awk} for delimiting actions, compound statements, and function +bodies. @item C The system programming language that most GNU software is written in. The @@ -37730,7 +37770,7 @@ or place. The most common character set in use today is ASCII (American Standard Code for Information Interchange). Many European countries use an extension of ASCII known as ISO-8859-1 (ISO Latin-1). The @uref{http://www.unicode.org, Unicode character set} is -becoming increasingly popular and standard, and is particularly +increasingly popular and standard, and is particularly widely used on GNU/Linux systems. @cindex Kernighan, Brian @@ -37743,10 +37783,11 @@ It was written in @command{awk} by Brian Kernighan and Jon Bentley, and is available from @uref{http://netlib.sandia.gov/netlib/typesetting/chem.gz}. +@cindex McIlroy, Doug @cindex cookie @item Cookie A peculiar goodie, token, saying or remembrance -produced by or presented to a program. (With thanks to Doug McIlroy.) +produced by or presented to a program. (With thanks to Professor Doug McIlroy.) @ignore From: Doug McIlroy <doug@cs.dartmouth.edu> Date: Sat, 13 Oct 2012 19:55:25 -0400 @@ -37824,9 +37865,7 @@ statements, and in patterns to select which input records to process. (@xref{Typing and Comparison}.) @item Curly Braces -The characters @samp{@{} and @samp{@}}. Curly braces are used in -@command{awk} for delimiting actions, compound statements, and function -bodies. +See ``Braces.'' @cindex dark corner @item Dark Corner @@ -37871,7 +37910,7 @@ ordinary expression. It could be a string constant, such as (@xref{Computed Regexps}.) @item Environment -A collection of strings, of the form @var{name}@code{=}@code{val}, that each +A collection of strings, of the form @samp{@var{name}=@var{val}}, that each program has available to it. Users generally place values into the environment in order to provide information to various programs. Typical examples are the environment variables @env{HOME} and @env{PATH}. @@ -37925,8 +37964,8 @@ this is just a number that can have a fractional part. See also ``Double Precision'' and ``Single Precision.'' @item Format -Format strings are used to control the appearance of output in the -@code{strftime()} and @code{sprintf()} functions, and are used in the +Format strings control the appearance of output in the +@code{strftime()} and @code{sprintf()} functions, and in the @code{printf} statement as well. Also, data conversions from numbers to strings are controlled by the format strings contained in the built-in variables @code{CONVFMT} and @code{OFMT}. (@xref{Control Letters}.) @@ -37995,7 +38034,7 @@ Base 16 notation, where the digits are @code{0}--@code{9} and @code{A}--@code{F}, with @samp{A} representing 10, @samp{B} representing 11, and so on, up to @samp{F} for 15. Hexadecimal numbers are written in C using a leading @samp{0x}, -to indicate their base. Thus, @code{0x12} is 18 (1 times 16 plus 2). +to indicate their base. Thus, @code{0x12} is 18 ((1 x 16) + 2). @xref{Nondecimal-numbers}. @item I/O @@ -38069,8 +38108,8 @@ meaning. Keywords are reserved and may not be used as variable names. @code{function}, @code{func}, @code{if}, -@code{nextfile}, @code{next}, +@code{nextfile}, @code{switch}, and @code{while}. @@ -38131,13 +38170,9 @@ Ancient @command{awk} implementations used single precision floating-point. @item Octal Base-eight notation, where the digits are @code{0}--@code{7}. Octal numbers are written in C using a leading @samp{0}, -to indicate their base. Thus, @code{013} is 11 (one times 8 plus 3). +to indicate their base. Thus, @code{013} is 11 ((1 x 8) + 3). @xref{Nondecimal-numbers}. -@cindex P1003.1 POSIX standard -@item P1003.1 -See ``POSIX.'' - @item Pattern Patterns tell @command{awk} which input records are interesting to which rules. @@ -38178,8 +38213,8 @@ specify single lines. (@xref{Pattern Overview}.) @item Recursion When a function calls itself, either directly or indirectly. -As long as this is not clear, refer to the entry for ``recursion.'' If this is clear, stop, and proceed to the next entry. +Otherwise, refer to the entry for ``recursion.'' @item Redirection Redirection means performing input from something other than the standard input @@ -38258,7 +38293,7 @@ expressions, and function calls have side effects. An internal representation of numbers that can have fractional parts. Single precision numbers keep track of fewer digits than do double precision numbers, but operations on them are sometimes less expensive in terms of CPU time. -This is the type used by some very old versions of @command{awk} to store +This is the type used by some ancient versions of @command{awk} to store numeric values. It is the C type @code{float}. @item Space @@ -38295,7 +38330,7 @@ into the local language. A value in the ``seconds since the epoch'' format used by Unix and POSIX systems. Used for the @command{gawk} functions @code{mktime()}, @code{strftime()}, and @code{systime()}. -See also ``Epoch'' and ``UTC.'' +See also ``Epoch,'' ``GMT,'' and ``UTC.'' @cindex Linux @cindex GNU/Linux |