>From 441c655cc8c8662bade5164d1bb07f565637294f Mon Sep 17 00:00:00 2001 From: KOBAYASHI Takashi Date: Sun, 1 May 2016 13:47:25 +0100 Subject: [PATCH] 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. --- NEWS | 3 +++ doc/coreutils.texi | 8 ++++---- src/nl.c | 16 ++++++++++------ tests/misc/nl.sh | 15 +++++++++++++++ 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index 6018aa9..a4abba7 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 5630201..6a671bb 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 a4a48bc..b276f09 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 e111d7a..826894a 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 -- 2.5.5