Package: gawk
Version: 1:5.2.1-2+b1
Severity: minor
Tags: patch
* What led up to the situation?
Checking for defects with a new version
test-[g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z < "man
page"
[Use "groff -e ' $' -e '\\~$' <file>" to find obvious trailing spaces.]
["test-groff" is a script in the repository for "groff"; is not shipped]
(local copy and "troff" slightly changed by me).
[The fate of "test-nroff" was decided in groff bug #55941.]
* What was the outcome of this action?
troff:<stdin>:172: warning [page 2, line 21]: cannot break line
troff:<stdin>:250: warning [page 3, line 4]: cannot break line
troff:<stdin>:739: warning [page 6, line 48]: cannot break line
troff:<stdin>:918: warning [page 8, line 3]: cannot break line
troff:<stdin>:1406: warning [page 11, line 55]: cannot break line
an.tmac:<stdin>:1501: style: use of deprecated macro: .PD
an.tmac:<stdin>:1504: style: use of deprecated macro: .PD
an.tmac:<stdin>:1507: style: use of deprecated macro: .PD
an.tmac:<stdin>:1532: style: use of deprecated macro: .PD
an.tmac:<stdin>:1535: style: use of deprecated macro: .PD
an.tmac:<stdin>:1538: style: use of deprecated macro: .PD
troff:<stdin>:1644: warning [page 13, line 13]: cannot break line
troff:<stdin>:1738: warning [page 13, line 53]: cannot break line
troff:<stdin>:1786: warning [page 13, line 72]: cannot break line
troff:<stdin>:2244: warning [page 16, line 69]: cannot break line
* What outcome did you expect instead?
No output (no warnings).
-.-
General remarks and further material, if a diff-file exist, are in the
attachments.
-- System Information:
Debian Release: trixie/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 6.12.12-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1),
LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)
Versions of packages gawk depends on:
ii libc6 2.40-7
ii libgmp10 2:6.3.0+dfsg-3
ii libmpfr6 4.2.1-1+b2
ii libreadline8t64 8.2-6
ii libsigsegv2 2.14-1+b2
gawk recommends no packages.
Versions of packages gawk suggests:
pn gawk-doc <none>
-- no debconf information
Input file is gawk.1
Output from "mandoc -T lint gawk.1": (shortened list)
1 input text line longer than 80 bytes: patterns, the associ...
-.-.
Output from "test-nroff -mandoc -t -ww -z gawk.1": (shortened list)
9 cannot break line
-.-.
Find a repeated word
! 2367 --> the
-.-.
Strings longer than 3/4 of a standard line length (80)
Use "\:" to split the string at the end of an output line, for example a
long URL (web address)
172 .IR
https://www.gnu.org/software/gawk/manual/html_node/Debugger.html#Debugger .
250 .I https://www.gnu.org/software/gawk/manual/html_node/Options.html#Options
560 .I https://www.gnu.org/software/gawk/manual/html_node/Records.html
576 .IR https://www.gnu.org/software/gawk/manual/html_node/Fields.html .
632 .I
https://www.gnu.org/software/gawk/manual/html_node/Comma-Separated-Fields.html
638 .IR
https://www.gnu.org/software/gawk/manual/html_node/Built_002din-Variables .
657 .I https://www.gnu.org/software/gawk/manual/html_node/PC-Using.html
721 .I https://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html
739 .I
https://www.gnu.org/software/gawk/manual/html_node/Case_002dsensitivity.html
770 .I https://www.gnu.org/software/gawk/manual/html_node/Auto_002dset
777 .I
https://www.gnu.org/software/gawk/manual/html_node/Setting-the-rounding-mode
918 .IR
https://www.gnu.org/software/gawk/manual/html_node/Namespaces.html#Namespaces .
991 .I https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences
1131 .I https://www.gnu.org/software/gawk/manual/html_node/Regexp.html
1406 .I
https://www.gnu.org/software/gawk/manual/html_node/I_002fO-Functions.html#I_002fO-Functions
1463 .IR https://www.gnu.org/software/gawk/manual/html_node/Printf.html .
1608 .IR https://www.gnu.org/software/gawk/manual/html_node/String-Functions .
1644 .IR
https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
.
1738 .I
https://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html#Gory-Details
1786 .I
https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
1928 .IR https://www.gnu.org/software/gawk/manual/html_node/Time-Functions .
1948 .I
https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html#Time-Functions
2050 .IR
https://www.gnu.org/software/gawk/manual/html_node/I18N-Functions.html#I18N-Functions
.
2201 .IR
https://www.gnu.org/software/gawk/manual/html_node/Dynamic-Extensions.html#Dynamic-Extensions
.
2244 .I
https://www.gnu.org/software/gawk/manual/html_node/Internationalization.html#Internationalization
2252 .IR https://www.gnu.org/software/gawk/manual/html_node/POSIX_002fGNU.html .
-.-.
Wrong distance (not two spaces) between sentences in the input file.
Separate the sentences and subordinate clauses; each begins on a new
line. See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").
The best procedure is to always start a new sentence on a new line,
at least, if you are typing on a computer.
Remember coding: Only one command ("sentence") on each (logical) line.
E-mail: Easier to quote exactly the relevant lines.
Generally: Easier to edit the sentence.
Patches: Less unaffected text.
Search for two adjacent words is easier, when they belong to the same line,
and the same phrase.
The amount of space between sentences in the output can then be
controlled with the ".ss" request.
Mark a final abbreviation point as such by suffixing it with "\&".
Some sentences (etc.) do not begin on a new line.
Split (sometimes) lines after a punctuation mark; before a conjunction.
Lines with only one (or two) space(s) between sentences could be split,
so latter sentences begin on a new line.
Use
#!/usr/bin/sh
sed -e '/^\./n' \
-e 's/\([[:alpha:]]\)\. */\1.\n/g' $1
to split lines after a sentence period.
Check result with the difference between the formatted outputs.
See also the attachment "general.bugs"
189:passing in options or source code (!) on the command line
223:the program. The trace is printed to standard error. Each ``op code''
255:Force arbitrary precision arithmetic on numbers. This option has
269:a member of the development team who is. If this situation
360:Signal the end of options. This is useful to allow further arguments to the
496:before processing the contents of the file. Similarly,
637:This list is purposely terse. For details, see
882:supports true multidimensional arrays. It does not require that
922:They may also be regular expressions. How the
1007:regular expression constants. These are written with a leading
1012:and passed to user-defined functions. Variables that have been so
1120:to skip it. If that is not done,
1443:returned to the calling function. If using a pipe, coprocess, or socket to
1462:are similar to those of C. For details, see
1566:to integers. Return the quotient of
1624:integers starting with 1. If the optional
1637:unchanged. The optional string
1927:formatting them. Details are provided in
2163:Functions may be called indirectly. To do this, assign
2221:natural language. Such strings are marked in the \*(AK program with
2308:The interval is in milliseconds. On systems that do not support
2436:Addison-Wesley, 2023. ISBN 9-780138-269722.
-.-.
Split lines longer than 80 characters into two or more lines.
Appropriate break points are the end of a sentence and a subordinate
clause; after punctuation marks.
Add "\:" to split the string for the output, "\<newline>" in the source.
Line 632, length 81
.I
https://www.gnu.org/software/gawk/manual/html_node/Comma-Separated-Fields.html
Line 918, length 83
.IR
https://www.gnu.org/software/gawk/manual/html_node/Namespaces.html#Namespaces .
Line 1126, length 81
patterns, the associated statement is executed for each input record that
matches
Line 1406, length 94
.I
https://www.gnu.org/software/gawk/manual/html_node/I_002fO-Functions.html#I_002fO-Functions
Line 1644, length 95
.IR
https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
.
Line 1738, length 84
.I
https://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html#Gory-Details
Line 1786, length 92
.I
https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
Line 1948, length 88
.I
https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html#Time-Functions
Line 2050, length 91
.IR
https://www.gnu.org/software/gawk/manual/html_node/I18N-Functions.html#I18N-Functions
.
Line 2090, length 105
\fBdcngettext(\fIstring1\fB, \fIstring2\fB, \fInumber \fR[\fB, \fIdomain
\fR[\fB, \fIcategory\fR]]\fB)\fR
Line 2201, length 99
.IR
https://www.gnu.org/software/gawk/manual/html_node/Dynamic-Extensions.html#Dynamic-Extensions
.
Line 2244, length 100
.I
https://www.gnu.org/software/gawk/manual/html_node/Internationalization.html#Internationalization
-.-.
Add a zero (0) in front of a decimal fraction that begins with a period
(.)
160:.sp .5
2062:.sp .5
-.-.
Put a parenthetical sentence, phrase on a separate line,
if not part of a code.
See man-pages(7), item "semantic newline".
[List of affected lines removed.]
-.-
Change a HYPHEN-MINUS (code 0x55, 2D) to a dash
(\-, minus) if it matches "[[:alph:]]-[[:alpha:]]" in the name of an
option).
Facilitates the copy and paste of
a) an option in UTF-8 text
b) web addresses (URL).
632:.I
https://www.gnu.org/software/gawk/manual/html_node/Comma-Separated-Fields.html
777:.I
https://www.gnu.org/software/gawk/manual/html_node/Setting-the-rounding-mode
-.-.
One space only after a possible end of sentence
(after a punctuation, that
can end a sentence).
gawk.1:223:the program. The trace is printed to standard error. Each ``op code''
gawk.1:255:Force arbitrary precision arithmetic on numbers. This option has
gawk.1:269:a member of the development team who is. If this situation
gawk.1:360:Signal the end of options. This is useful to allow further arguments
to the
gawk.1:496:before processing the contents of the file. Similarly,
gawk.1:637:This list is purposely terse. For details, see
gawk.1:882:supports true multidimensional arrays. It does not require that
gawk.1:922:They may also be regular expressions. How the
gawk.1:1007:regular expression constants. These are written with a leading
gawk.1:1012:and passed to user-defined functions. Variables that have been so
gawk.1:1073:.IB pattern " ? " pattern " : " pattern
gawk.1:1075:.BI ! " pattern"
gawk.1:1120:to skip it. If that is not done,
gawk.1:1224:.IB expr1 " ? " expr2 " : " expr3\/\fR.
gawk.1:1443:returned to the calling function. If using a pipe, coprocess, or
socket to
gawk.1:1462:are similar to those of C. For details, see
gawk.1:1566:to integers. Return the quotient of
gawk.1:1624:integers starting with 1. If the optional
gawk.1:1637:unchanged. The optional string
gawk.1:1927:formatting them. Details are provided in
gawk.1:2163:Functions may be called indirectly. To do this, assign
gawk.1:2221:natural language. Such strings are marked in the \*(AK program with
gawk.1:2308:The interval is in milliseconds. On systems that do not support
gawk.1:2436:Addison-Wesley, 2023. ISBN 9-780138-269722.
-.-.
Put a subordinate sentence (after a comma) on a new line.
[List of affected lines removed.]
-.-
Section headings (.SH and .SS) do not need quoting their arguments.
1265:.SS "I/O Statements"
-.-.
Output from "test-nroff -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z
":
troff:<stdin>:172: warning [page 2, line 21]: cannot break line
troff:<stdin>:250: warning [page 3, line 4]: cannot break line
troff:<stdin>:739: warning [page 6, line 48]: cannot break line
troff:<stdin>:918: warning [page 8, line 3]: cannot break line
troff:<stdin>:1406: warning [page 11, line 55]: cannot break line
an.tmac:<stdin>:1501: style: use of deprecated macro: .PD
an.tmac:<stdin>:1504: style: use of deprecated macro: .PD
an.tmac:<stdin>:1507: style: use of deprecated macro: .PD
an.tmac:<stdin>:1532: style: use of deprecated macro: .PD
an.tmac:<stdin>:1535: style: use of deprecated macro: .PD
an.tmac:<stdin>:1538: style: use of deprecated macro: .PD
troff:<stdin>:1644: warning [page 13, line 13]: cannot break line
troff:<stdin>:1738: warning [page 13, line 53]: cannot break line
troff:<stdin>:1786: warning [page 13, line 72]: cannot break line
troff:<stdin>:2244: warning [page 16, line 69]: cannot break line
-.-.
Additionally:
Put web addresses on a new line to avoid unnecessary line breaks.
-.-
Generally:
Split (sometimes) lines after a punctuation mark; before a conjunction.
--- gawk.1 2025-03-09 04:30:41.866159209 +0000
+++ gawk.1.new 2025-03-09 05:34:05.881667107 +0000
@@ -85,7 +85,7 @@ remains unique.
Additionally, every long option has a corresponding short
option, so that the option's functionality may be used from
within
-.B #!
+.B #!\&
executable scripts.
.SH OPTIONS
.I Gawk
@@ -157,7 +157,7 @@ The optional
.I file
argument specifies a file with a list
of commands for the debugger to execute non-interactively.
-.sp .5
+.sp 0.5
In this mode of execution,
.I gawk
loads the
@@ -169,7 +169,8 @@ and
.B \-\^\-include
options.
The debugger is documented in \*(EP; see
-.IR https://www.gnu.org/software/gawk/manual/html_node/Debugger.html#Debugger .
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Debugger.html#Debugger
.
.TP
.BI \-e " program-text\fR, \fP" \-\^\-source " program-text"
Use
@@ -184,9 +185,9 @@ Similar to
.BR \-f ,
however, this option is the last one processed.
This should be used with
-.B #!
+.B #!\&
scripts, particularly for CGI applications, to avoid
-passing in options or source code (!) on the command line
+passing in options or source code (!\&) on the command line
from a URL.
This option disables command-line variable assignments.
.TP
@@ -220,8 +221,9 @@ are treated as if they begin with an imp
.TP
.BR \-I ", " \-\^\-trace
Print the internal byte code names as they are executed when running
-the program. The trace is printed to standard error. Each ``op code''
-is preceded by a
+the program.
+The trace is printed to standard error.
+Each ``op code'' is preceded by a
.B +
sign in the output.
.TP
@@ -247,13 +249,14 @@ The library initialization routine is ex
Provide warnings about constructs that are
dubious or non-portable to other \*(AK implementations.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Options.html#Options
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Options.html#Options
for the list of possible values for
.IR value .
.TP
.BR \-M ", " \-\^\-bignum
-Force arbitrary precision arithmetic on numbers. This option has
-no effect if
+Force arbitrary precision arithmetic on numbers.
+This option has no effect if
.I gawk
is not compiled to use the GNU MPFR and GMP libraries.
(In such a case,
@@ -266,9 +269,9 @@ This feature is
The primary
.I gawk
maintainer is no longer supporting it, although there is
-a member of the development team who is. If this situation
-changes, the feature
-will be removed from
+a member of the development team who is.
+If this situation changes,
+the feature will be removed from
.IR gawk .
.ig
Set
@@ -357,7 +360,8 @@ Per the
these options cause an immediate, successful exit.
.TP
.B \-\^\-
-Signal the end of options. This is useful to allow further arguments to the
+Signal the end of options.
+This is useful to allow further arguments to the
\*(AK program itself to start with a \*(lq\-\*(rq.
.PP
In compatibility mode,
@@ -429,13 +433,13 @@ the
and
.B \-\^\-include
options. If this variable does not exist, the default path is
-\fB".:/usr/local/share/awk"\fR.
+\fB".:/\:usr/\:local/\:share/\:awk"\fR.
(The actual directory may vary, depending upon how
.I gawk
was built and installed.)
If a file name given to the
.B \-f
-option contains a \*(lq/\*(rq character, no path search is performed.
+option contains a \*(lq/\:\*(rq character, no path search is performed.
.PP
The environment variable
.B AWKLIBPATH
@@ -443,7 +447,7 @@ specifies a search path to use when find
the
.B \-\^\-load
option. If this variable does not exist, the default path is
-\fB"/usr/local/lib/gawk"\fR.
+\fB"/\:usr/\:local/\:lib/\:gawk"\fR.
(The actual directory may vary, depending upon how
.I gawk
was built and installed.)
@@ -493,7 +497,8 @@ if a
rule exists,
.I gawk
executes the associated code
-before processing the contents of the file. Similarly,
+before processing the contents of the file.
+Similarly,
.I gawk
executes
the code associated with
@@ -557,7 +562,8 @@ Normally, records are separated by newli
records are separated by assigning values to the built-in variable
.BR RS .
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Records.html
+.br
+.I https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Records.html
for the details.
.SS Fields
As each input record is read,
@@ -573,7 +579,8 @@ and
.B FPAT
may be used to control input field splitting.
See the details, starting at
-.IR https://www.gnu.org/software/gawk/manual/html_node/Fields.html .
+.br
+.IR https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Fields.html .
.PP
Each field in the input record may be referenced by its position:
.BR $1 ,
@@ -629,13 +636,16 @@ fields are separated by commas.
Double-quotes may be used to enclose fields containing
commas, newlines, or doubled double-quotes.
See
-.I
https://www.gnu.org/software/gawk/manual/html_node/Comma-Separated-Fields.html
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Comma\-Separated\-Fields.html
for more details.
.SS Built-in Variables
.IR Gawk\^ "'s"
built-in variables are listed below.
-This list is purposely terse. For details, see
-.IR https://www.gnu.org/software/gawk/manual/html_node/Built_002din-Variables .
+This list is purposely terse.
+For details, see
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Built_002din\-Variables
.
.TP "\w'\fBFIELDWIDTHS\fR'u+1n"
.B ARGC
The number of command line arguments.
@@ -652,9 +662,10 @@ Array of command line arguments. The ar
\- 1.
.TP
.B BINMODE
-On non-POSIX systems, specifies use of \*(lqbinary\*(rq mode for all file I/O.
+On non-POSIX systems, specifies use of \*(lqbinary\*(rq mode for all file
I/\:O.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/PC-Using.html
+.br
+.I https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:PC\-Using.html
for the details.
.TP
.B CONVFMT
@@ -718,7 +729,8 @@ as the field separator.
.B FS
The input field separator, a space by default.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Field\-Separators.html
for the details.
.TP
.B FUNCTAB
@@ -736,7 +748,8 @@ array.
Controls the case-sensitivity of all regular expression
and string operations.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Case_002dsensitivity.html
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Case_002dsensitivity.html
for details.
.TP
.B LINT
@@ -767,14 +780,16 @@ numbers, 53 by default.
The elements of this array provide access to information about the
running \*(AK program.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Auto_002dset
+.br
+.I https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Auto_002dset
for the details.
.TP
.B ROUNDMODE
The rounding mode to use for arbitrary precision arithmetic on
numbers, by default \fB"N"\fR (IEEE-754 roundTiesToEven mode).
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Setting-the-rounding-mode
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Setting\-the\-rounding\-mode
for the details.
.TP
.B RS
@@ -879,10 +894,11 @@ statement may also be used to delete the
just by specifying the array name without a subscript.
.PP
.I gawk
-supports true multidimensional arrays. It does not require that
-such arrays be ``rectangular'' as in C or C++.
+supports true multidimensional arrays.
+It does not require that such arrays be ``rectangular'' as in C or C++.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Arrays
+.br
+.I https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Arrays
for details.
.SS Namespaces
.I Gawk
@@ -915,14 +931,16 @@ namespace names. The names of additiona
may be used as namespace names or as simple identifiers in other
namespaces.
For more details, see
-.IR
https://www.gnu.org/software/gawk/manual/html_node/Namespaces.html#Namespaces .
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Namespaces.html#Namespaces
.
.SS Variable Typing And Conversion
Variables and fields
may be (floating point) numbers, or strings, or both.
-They may also be regular expressions. How the
-value of a variable is interpreted depends upon its context. If used in
-a numeric expression, it will be treated as a number; if used as a string
-it will be treated as a string.
+They may also be regular expressions.
+How the value of a variable is interpreted depends upon its context.
+If used in a numeric expression,
+it will be treated as a number;
+if used as a string it will be treated as a string.
.PP
To force a variable to be treated as a number, add zero to it; to force it
to be treated as a string, concatenate it with the null string.
@@ -988,29 +1006,31 @@ between double quotes (like \fB"value"\f
.I "escape sequences"
are recognized, as in C.
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Escape\-Sequences
for the details.
.SS Regexp Constants
A regular expression constant is a sequence of characters enclosed
between forward slashes (like
-.BR /value/ ).
+.BR /\:value/\: ).
.PP
The escape sequences described in the manual may also be used inside
constant regular expressions
(e.g.,
-.B "/[\ \et\ef\en\er\ev]/"
+.B "/\:[\ \et\ef\en\er\ev]/\:"
matches whitespace characters).
.PP
.I Gawk
provides
.I "strongly typed"
-regular expression constants. These are written with a leading
+regular expression constants.
+These are written with a leading
.B @
symbol (like so:
-.BR @/value/ ).
+.BR @/\:value/\: ).
Such constants may be assigned to scalars (variables, array elements)
-and passed to user-defined functions. Variables that have been so
-assigned have regular expression type.
+and passed to user-defined functions.
+Variables that have been so assigned have regular expression type.
.SH PATTERNS AND ACTIONS
\*(AK is a line-oriented language. The pattern comes first, and then the
action. Action statements are enclosed in
@@ -1066,13 +1086,13 @@ and to the pattern-action statements the
.B END
.B BEGINFILE
.B ENDFILE
-.BI / "regular expression" /
+.BI /\: "regular expression" /\:
.I "relational expression"
.IB pattern " && " pattern
.IB pattern " || " pattern
-.IB pattern " ? " pattern " : " pattern
+.IB pattern " ?\& " pattern " : " pattern
.BI ( pattern )
-.BI ! " pattern"
+.BI !\& " pattern"
.IB pattern1 ", " pattern2
.fi
.RE
@@ -1117,18 +1137,21 @@ is the empty string if the file was open
Otherwise, there is some problem with the file and the code should
use
.B nextfile
-to skip it. If that is not done,
+to skip it.
+If that is not done,
.I gawk
produces its usual fatal error for files that cannot be opened.
.PP
For
-.BI / "regular expression" /
-patterns, the associated statement is executed for each input record that
matches
-the regular expression.
+.BI /\: "regular expression" /\:
+patterns,
+the associated statement is executed for each input record
+that matches the regular expression.
Regular expressions are essentially the same as those in
.IR egrep (1).
See
-.I https://www.gnu.org/software/gawk/manual/html_node/Regexp.html
+.br
+.I https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Regexp.html
for the details on regular expressions.
.PP
A
@@ -1168,11 +1191,11 @@ and
.BR } .
Action statements consist of the usual assignment, conditional, and looping
statements found in most languages. The operators, control statements,
-and input/output statements
+and input/\:output statements
available are patterned after those in C.
.SS Operators
The operators in \*(AK, in order of decreasing precedence, are:
-.TP "\w'\fB*= /= %= ^=\fR'u+1n"
+.TP "\w'\fB*= /\:= %= ^=\fR'u+1n"
.BR ( \&.\|.\|. )
Grouping
.TP
@@ -1188,7 +1211,7 @@ Exponentiation.
.B "+ \- !"
Unary plus, unary minus, and logical negation.
.TP
-.B "* / %"
+.B "* /\: %"
Multiplication, division, and modulus.
.TP
.B "+ \-"
@@ -1198,7 +1221,7 @@ Addition and subtraction.
String concatenation.
.TP
.B "| |&"
-Piped I/O for
+Piped I/\:O for
.BR getline ,
.BR print ,
and
@@ -1221,7 +1244,7 @@ Logical OR.
.TP
.B ?:
The C conditional expression. This has the form
-.IB expr1 " ? " expr2 " : " expr3\/\fR.
+.IB expr1 " ? " expr2 " : " expr3\/\:\fR.
If
.I expr1
is true, the value of the expression is
@@ -1234,7 +1257,7 @@ and
.I expr3
is evaluated.
.TP
-.B "= += \-= *= /= %= ^="
+.B "= += \-= *= /\:= %= ^="
Assignment. Both absolute assignment
.BI ( var " = " value )
and operator-assignment (the other forms) are supported.
@@ -1262,8 +1285,8 @@ as follows:
\fB}\fR
.fi
.RE
-.SS "I/O Statements"
-The input/output statements are as follows:
+.SS I/\:O Statements
+The input/\:output statements are as follows:
.TP "\w'\fBprintf \fIfmt, expr-list\fR'u+1n"
\fBclose(\fIfile \fR[\fB, \fIhow\fR]\fB)\fR
Close an open file, pipe or coprocess.
@@ -1403,7 +1426,8 @@ Execute the command
and return the exit status.
(This may not be available on non-\*(PX systems.)
See
-.I
https://www.gnu.org/software/gawk/manual/html_node/I_002fO-Functions.html#I_002fO-Functions
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:I_002fO\-Functions.html#I_002fO\-Functions
for the full details on the exit status.
.PP
Additional output redirections are allowed for
@@ -1429,7 +1453,7 @@ The
function returns 1 on success, zero on end of file, and \-1 on an error.
If the
.IR errno (3)
-value indicates that the I/O operation may be retried,
+value indicates that the I/\:O operation may be retried,
and \fBPROCINFO["\fIinput\^\fP", "RETRY"]\fR
is set, then \-2 is returned instead of \-1, and further calls to
.B getline
@@ -1440,7 +1464,8 @@ is set to a string describing the proble
.PP
.BR NOTE :
Failure in opening a two-way socket results in a non-fatal error being
-returned to the calling function. If using a pipe, coprocess, or socket to
+returned to the calling function.
+If using a pipe, coprocess, or socket to
.BR getline ,
or from
.B print
@@ -1459,10 +1484,12 @@ The \*(AK versions of the
statement and
.B sprintf()
function
-are similar to those of C. For details, see
-.IR https://www.gnu.org/software/gawk/manual/html_node/Printf.html .
+are similar to those of C.
+For details, see
+.br
+.IR https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Printf.html .
.SS Special File Names
-When doing I/O redirection from either
+When doing I/\:O redirection from either
.B print
or
.B printf
@@ -1477,36 +1504,36 @@ allow access to open file descriptors in
parent process (usually the shell).
These file names may also be used on the command line to name data files.
The filenames are:
-.TP "\w'\fB/dev/stdout\fR'u+1n"
+.TP "\w'\fB/\:dev/\:stdout\fR'u+1n"
.B \-
The standard input.
.TP
-.B /dev/stdin
+.B /\:dev/\:stdin
The standard input.
.TP
-.B /dev/stdout
+.B /\:dev/\:stdout
The standard output.
.TP
-.B /dev/stderr
+.B /\:dev/\:stderr
The standard error output.
.TP
-.BI /dev/fd/\^ n
+.BI /\:dev/\:fd/\:\^ n
The file associated with the open file descriptor
.IR n .
.PP
The following special filenames may be used with the
.B |&
-coprocess operator for creating TCP/IP network connections:
+coprocess operator for creating TCP/\:IP network connections:
.TP
.PD 0
-.BI /inet/tcp/ lport / rhost / rport
+.BI /\:inet/\:tcp/\: lport /\: rhost /\: rport
.TP
.PD 0
-.BI /inet4/tcp/ lport / rhost / rport
+.BI /\:inet4/\:tcp/\: lport /\: rhost /\: rport
.TP
.PD
-.BI /inet6/tcp/ lport / rhost / rport
-Files for a TCP/IP connection on local port
+.BI /\:inet6/\:tcp/\: lport /\: rhost /\: rport
+Files for a TCP/\:IP connection on local port
.I lport
to
remote host
@@ -1517,33 +1544,33 @@ Use a port of
.B 0
to have the system pick a port.
Use
-.B /inet4
+.B /\:inet4
to force an IPv4 connection,
and
-.B /inet6
+.B /\:inet6
to force an IPv6 connection.
Plain
-.B /inet
+.B /\:inet
uses the system default (most likely IPv4).
Usable only with the
.B |&
-two-way I/O operator.
+two-way I/\:O operator.
.TP
.PD 0
-.BI /inet/udp/ lport / rhost / rport
+.BI /\:inet/\:udp/\: lport /\: rhost /\: rport
.TP
.PD 0
-.BI /inet4/udp/ lport / rhost / rport
+.BI /\:inet4/\:udp/\: lport /\: rhost /\: rport
.TP
.PD
-.BI /inet6/udp/ lport / rhost / rport
-Similar, but use UDP/IP instead of TCP/IP.
+.BI /\:inet6/\:udp/\: lport /\: rhost /\: rport
+Similar, but use UDP/\:IP instead of TCP/\:IP.
.SS Numeric Functions
\*(AK has the following built-in arithmetic functions:
.TP "\w'\fBsrand(\fR[\fIexpr\^\fR]\fB)\fR'u+1n"
.BI atan2( y , " x" )
Return the arctangent of
-.I y/x
+.I y/\:x
in radians.
.TP
.BI cos( expr )
@@ -1563,7 +1590,8 @@ Truncate
.I num
and
.I denom
-to integers. Return the quotient of
+to integers.
+Return the quotient of
.I num
divided by
.I denom
@@ -1605,7 +1633,8 @@ number generator.
.SS String Functions
.I Gawk
has the following built-in string functions; details are provided in
-.IR https://www.gnu.org/software/gawk/manual/html_node/String-Functions .
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:String\-Functions .
.TP "\w'\fBsprintf(\fIfmt\^\fB, \fIexpr-list\^\fB)\fR'u+1n"
\fBasort(\fIs \fR[\fB, \fId\fR [\fB, \fIhow\fR] ]\fB)\fR
Return the number of elements in the source
@@ -1621,8 +1650,8 @@ comparing values, and replace the indice
sorted values
.I s
with sequential
-integers starting with 1. If the optional
-destination array
+integers starting with 1.
+If the optional destination array
.I d
is specified,
first duplicate
@@ -1634,14 +1663,16 @@ and then sort
leaving the indices of the
source array
.I s
-unchanged. The optional string
+unchanged.
+The optional string
.I how
controls the direction and the comparison mode.
Valid values for
.I how
are
described in
-.IR
https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
.
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:String\-Functions.html#String\-Functions
.
.IR s " and " d
are allowed to be the same array; this only makes sense when
supplying the third argument as well.
@@ -1735,7 +1766,8 @@ Use
to get a literal
.BR & .
(This must be typed as \fB"\e\e&"\fP; see
-.I
https://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html#Gory-Details
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Gory\-Details.html#Gory\-Details
for a fuller discussion of the rules for ampersands
and backslashes in the replacement text of
.BR sub() ,
@@ -1783,7 +1815,8 @@ operator:
.IR re .
.ft R
See
-.I
https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:String\-Functions.html#String\-Functions
for a description of how the array
.I a
is filled if it is provided.
@@ -1924,8 +1957,10 @@ all work in terms of characters, not byt
.SS Time Functions
.I Gawk
provides the following functions for obtaining time stamps and
-formatting them. Details are provided in
-.IR https://www.gnu.org/software/gawk/manual/html_node/Time-Functions .
+formatting them.
+Details are provided in
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Time\-Functions .
.TP "\w'\fBsystime()\fR'u+1n"
\fBmktime(\fIdatespec\fR [\fB, \fIutc-flag\fR]\fB)\fR
Turn
@@ -1945,7 +1980,8 @@ is out of range,
.B mktime()
returns \-1.
See
-.I
https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html#Time-Functions
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Time\-Functions.html#Time\-Functions
for the details of
.IR datespec .
.TP
@@ -2047,7 +2083,8 @@ or
The following functions may be used from within your AWK program for
translating strings at run-time.
For full details, see
-.IR
https://www.gnu.org/software/gawk/manual/html_node/I18N-Functions.html#I18N-Functions
.
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:I18N\-Functions.html#I18N\-Functions
.
.TP
\fBbindtextdomain(\fIdirectory \fR[\fB, \fIdomain\fR]\fB)\fR
Specify the directory where
@@ -2059,7 +2096,7 @@ will not or cannot be placed in the ``st
It returns the directory where
.I domain
is ``bound.''
-.sp .5
+.sp 0.5
The default
.I domain
is the value of
@@ -2140,7 +2177,7 @@ function f(p, q, a, b) # a and b ar
\&.\|.\|.
}
-/abc/ { .\|.\|.\& ; f(1, 2) ; .\|.\|.\& }
+/\:abc/\: { .\|.\|.\& ; f(1, 2) ; .\|.\|.\& }
.fi
.ft R
.RE
@@ -2160,7 +2197,8 @@ to return a value from a function. The
value is provided, or if the function returns by \*(lqfalling off\*(rq the
end.
.PP
-Functions may be called indirectly. To do this, assign
+Functions may be called indirectly.
+To do this, assign
the name of the function to be called, as a string, to a variable.
Then use the variable as if it were the name of a function, prefixed with an
.B @
@@ -2198,7 +2236,8 @@ interpreter with the
statement.
The full details are beyond the scope of this manual page;
see
-.IR
https://www.gnu.org/software/gawk/manual/html_node/Dynamic-Extensions.html#Dynamic-Extensions
.
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Dynamic\-Extensions.html#Dynamic\-Extensions
.
.SH SIGNALS
The
.I gawk
@@ -2217,8 +2256,9 @@ to dump the profile and function call st
.SH INTERNATIONALIZATION
String constants are sequences of characters enclosed in double
quotes. In non-English speaking environments, it is possible to mark
-strings in the \*(AK program as requiring translation to the local
-natural language. Such strings are marked in the \*(AK program with
+strings in the \*(AK program as
+requiring translation to the local natural language.
+Such strings are marked in the \*(AK program with
a leading underscore (\*(lq_\*(rq). For example,
.sp
.RS
@@ -2241,7 +2281,8 @@ might print
.B "bonjour, monde"
in France.
See
-.I
https://www.gnu.org/software/gawk/manual/html_node/Internationalization.html#Internationalization
+.br
+.I
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Internationalization.html#Internationalization
for the steps involved in producing and running a localizable
\*(AK program.
.SH GNU EXTENSIONS
@@ -2249,7 +2290,8 @@ for the steps involved in producing and
has a too-large number of extensions to \*(PX
.IR awk .
They are described in
-.IR https://www.gnu.org/software/gawk/manual/html_node/POSIX_002fGNU.html .
+.br
+.IR
https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:POSIX_002fGNU.html
.
All the extensions
can be disabled by
invoking
@@ -2305,7 +2347,8 @@ For connection to a remote host via sock
controls the number of retries, and
.B GAWK_MSEC_SLEEP
the interval between retries.
-The interval is in milliseconds. On systems that do not support
+The interval is in milliseconds.
+On systems that do not support
.IR usleep (3),
the value is rounded up to an integral number of seconds.
.PP
@@ -2364,7 +2407,7 @@ The original version of \*(UX
.I awk
was designed and implemented by Alfred Aho,
Peter Weinberger, and Brian Kernighan of Bell Laboratories.
-Ozan Yigit is the the current maintainer.
+Ozan Yigit is the current maintainer.
Brian Kernighan occasionally dabbles in its development.
.PP
Paul Rubin and Jay Fenlason,
@@ -2399,7 +2442,8 @@ please use the
program to report it.
.PP
Full instructions for reporting a bug are provided in
-.IR https://www.gnu.org/software/gawk/manual/html_node/Bugs.html .
+.br
+.IR https://www.gnu.org/\:software/\:gawk/\:manual/\:html_node/\:Bugs.html .
.I Please
carefully read and follow the instructions given there.
This will make bug reporting and resolution much easier for everyone involved.
@@ -2433,19 +2477,22 @@ and
.IR "The AWK Programming Language" ,
second edition,
Alfred V.\& Aho, Brian W.\& Kernighan, Peter J.\& Weinberger,
-Addison-Wesley, 2023. ISBN 9-780138-269722.
+Addison-Wesley, 2023.
+ISBN 9-780138-269722.
.PP
\*(EP,
Edition 5.3, shipped with the
.I gawk
source.
The current version of this document is available online at
-.IR https://www.gnu.org/software/gawk/manual .
+.br
+.IR https://www.gnu.org/\:software/\:gawk/\:manual .
.PP
The GNU
.B gettext
documentation, available online at
-.IR https://www.gnu.org/software/gettext .
+.br
+.IR https://www.gnu.org/\:software/\:gettext .
.SH EXAMPLES
.nf
Print and sort the login names of all users:
Any program (person), that produces man pages, should check the output
for defects by using (both groff and nroff)
[gn]roff -mandoc -t -ww -b -z -K utf8 <man page>
The same goes for man pages that are used as an input.
For a style guide use
mandoc -T lint
-.-
Any "autogenerator" should check its products with the above mentioned
'groff', 'mandoc', and additionally with 'nroff ...'.
It should also check its input files for too long (> 80) lines.
This is just a simple quality control measure.
The "autogenerator" may have to be corrected to get a better man page,
the source file may, and any additional file may.
Common defects:
Not removing trailing spaces (in in- and output).
The reason for these trailing spaces should be found and eliminated.
"git" has a "tool" to point out whitespace,
see for example "git-apply(1)" and git-config(1)")
Not beginning each input sentence on a new line.
Line length and patch size should thus be reduced.
The script "reportbug" uses 'quoted-printable' encoding when a line is
longer than 1024 characters in an 'ascii' file.
See man-pages(7), item "semantic newline".
-.-
The difference between the formatted output of the original and patched file
can be seen with:
nroff -mandoc <file1> > <out1>
nroff -mandoc <file2> > <out2>
diff -d -u <out1> <out2>
and for groff, using
\"printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - \"
instead of 'nroff -mandoc'
Add the option '-t', if the file contains a table.
Read the output from 'diff -d -u ...' with 'less -R' or similar.
-.-.
If 'man' (man-db) is used to check the manual for warnings,
the following must be set:
The option \"-warnings=w\"
The environmental variable:
export MAN_KEEP_STDERR=yes (or any non-empty value)
or
(produce only warnings):
export MANROFFOPT=\"-ww -b -z\"
export MAN_KEEP_STDERR=yes (or any non-empty value)
-.-