summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKOBAYASHI Takashi <a1415tk@aiit.ac.jp>2016-05-01 13:47:25 +0100
committerPádraig Brady <P@draigBrady.com>2016-05-14 12:41:43 +0100
commit43df058b91e94c096b642291737daea1d2868cdb (patch)
tree6834af8ebfe36a8f4b0ad5b5ae8ff6e4cfeaa281
parent99dd47ec86b508410df64bef2b7bf4922215cf5b (diff)
downloadcoreutils-43df058b91e94c096b642291737daea1d2868cdb.tar.xz
nl: reset numbering for each section
* NEWS: Mention the bug fix. * src/nl.c (proc_body, proc_footer): Reset numbering here too. * doc/coreutils.texi (nl invocation): Adjust for behavior change. * tests/misc/nl.sh: Add a test case.
-rw-r--r--NEWS3
-rw-r--r--doc/coreutils.texi8
-rw-r--r--src/nl.c16
-rwxr-xr-xtests/misc/nl.sh15
4 files changed, 32 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index 56ab1f13a..71b5c24ed 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,9 @@ GNU coreutils NEWS -*- outline -*-
System V style platforms where this information is available only
in the global variable 'tzname'. [bug introduced in coreutils-8.24]
+ nl now resets numbering for each page section rather than just for each page.
+ [This bug was present in "the beginning".]
+
stty --help no longer outputs extraneous gettext header lines
for translated languages. [bug introduced in coreutils-8.24]
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 563020148..6a671bb8e 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -1741,10 +1741,10 @@ nl [@var{option}]@dots{} [@var{file}]@dots{}
@end example
@cindex logical pages, numbering on
-@command{nl} decomposes its input into (logical) pages; by default, the
-line number is reset to 1 at the top of each logical page. @command{nl}
-treats all of the input files as a single document; it does not reset
-line numbers or logical pages between files.
+@command{nl} decomposes its input into (logical) page sections;
+by default, the line number is reset to 1 at each logical page section.
+@command{nl} treats all of the input files as a single document;
+it does not reset line numbers or logical pages between files.
@cindex headers, numbering
@cindex body, numbering
diff --git a/src/nl.c b/src/nl.c
index a4a48bca8..b276f0935 100644
--- a/src/nl.c
+++ b/src/nl.c
@@ -185,7 +185,7 @@ Write each FILE to standard output, with line numbers added.\n\
fputs (_("\
-b, --body-numbering=STYLE use STYLE for numbering body lines\n\
- -d, --section-delimiter=CC use CC for separating logical pages\n\
+ -d, --section-delimiter=CC use CC for logical page delimiters\n\
-f, --footer-numbering=STYLE use STYLE for numbering footer lines\n\
"), stdout);
fputs (_("\
@@ -193,20 +193,20 @@ Write each FILE to standard output, with line numbers added.\n\
-i, --line-increment=NUMBER line number increment at each line\n\
-l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as one\n\
-n, --number-format=FORMAT insert line numbers according to FORMAT\n\
- -p, --no-renumber do not reset line numbers at logical pages\n\
+ -p, --no-renumber do not reset line numbers for each section\n\
-s, --number-separator=STRING add STRING after (possible) line number\n\
"), stdout);
fputs (_("\
- -v, --starting-line-number=NUMBER first line number on each logical page\n\
+ -v, --starting-line-number=NUMBER first line number for each section\n\
-w, --number-width=NUMBER use NUMBER columns for line numbers\n\
"), stdout);
fputs (HELP_OPTION_DESCRIPTION, stdout);
fputs (VERSION_OPTION_DESCRIPTION, stdout);
fputs (_("\
\n\
-By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n\
-two delimiter characters for separating logical pages, a missing\n\
-second character implies :. Type \\\\ for \\. STYLE is one of:\n\
+By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn.\n\
+CC are two delimiter characters used to construct logical page delimiters,\n\
+a missing second character implies :. Type \\\\ for \\. STYLE is one of:\n\
"), stdout);
fputs (_("\
\n\
@@ -298,6 +298,8 @@ proc_body (void)
{
current_type = body_type;
current_regex = &body_regex;
+ if (reset_numbers)
+ line_no = starting_line_number;
putchar ('\n');
}
@@ -308,6 +310,8 @@ proc_footer (void)
{
current_type = footer_type;
current_regex = &footer_regex;
+ if (reset_numbers)
+ line_no = starting_line_number;
putchar ('\n');
}
diff --git a/tests/misc/nl.sh b/tests/misc/nl.sh
index e111d7a01..826894af2 100755
--- a/tests/misc/nl.sh
+++ b/tests/misc/nl.sh
@@ -37,7 +37,22 @@ cat <<\EOF > exp
1^Ia$
$
EOF
+compare exp out || fail=1
+# Ensure numbering reset at each delimiter.
+# coreutils <= v8.25 only reset at a page header.
+printf '%s\n' '\:\:\:' a '\:\:' b '\:' c > in.txt || framework_failure_
+nl -ha -fa in.txt > out.tmp || fail=1
+nl -p -ha -fa in.txt >> out.tmp || fail=1
+sed '/^$/d' < out.tmp > out || framework_failure_
+cat <<\EOF > exp
+ 1 a
+ 1 b
+ 1 c
+ 1 a
+ 2 b
+ 3 c
+EOF
compare exp out || fail=1
Exit $fail