From 1f93c9633997b8843e9b30ad29fe3b2631cf3655 Mon Sep 17 00:00:00 2001 From: Pádraig Brady
Date: Wed, 24 Aug 2011 00:09:30 +0100 Subject: pr: fix so that LAST_PAGE is honored with -T Ever since the LAST_PAGE functionality was added in commit ed0923a1, 1996-12-05, "Apply big patch (patch-20) from Roland Huebner" it was ignored when -t or -T were specified or when -l <= 10. * src/pr.c (print_page): Increment the current page here. (print_header): Don't increment the current page here. * tests/pr/pr-tests: Add a test case. * NEWS: Mention the fix Reported at http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9347 --- NEWS | 3 +++ src/pr.c | 4 ++-- tests/pr/pr-tests | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 569c33b0a..db5a474a0 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,9 @@ GNU coreutils NEWS -*- outline -*- as much memory. du, chmod, chgrp and chown started using fts in 6.0. chcon was added in coreutils-6.9.91 with fts support. ] + pr -T no longer ignores a specified LAST_PAGE to stop at. + [bug introduced in textutils-1.19q] + printf '%d' '"' no longer accesses out-of-bounds memory in the diagnostic. [bug introduced in sh-utils-1.16] diff --git a/src/pr.c b/src/pr.c index 771418c45..d1adc5591 100644 --- a/src/pr.c +++ b/src/pr.c @@ -1887,7 +1887,7 @@ print_page (void) print_a_FF = false; } - if (last_page_number < page_number) + if (last_page_number < ++page_number) return false; /* Stop printing with LAST_PAGE */ reset_status (); /* Change ON_HOLD to OPEN. */ @@ -2399,7 +2399,7 @@ print_header (void) /* The translator must ensure that formatting the translation of "Page %"PRIuMAX does not generate more than (sizeof page_text - 1) bytes. */ - sprintf (page_text, _("Page %"PRIuMAX), page_number++); + sprintf (page_text, _("Page %"PRIuMAX), page_number); available_width = header_width_available - mbswidth (page_text, 0); available_width = MAX (0, available_width); lhs_spaces = available_width >> 1; diff --git a/tests/pr/pr-tests b/tests/pr/pr-tests index aafc0cfdb..d3dc25fba 100755 --- a/tests/pr/pr-tests +++ b/tests/pr/pr-tests @@ -403,6 +403,10 @@ my @tv = ( # This would clobber so much of the heap, it'd segfault or abort every time. ['smash-heap', '-t -e300', "a".("\b"x50)."\t", "a\b".(" "x300)."\n", 0], ['smash-heap8', '-t -e', "a".("\b"x50)."\t", "a\b".(" "x 8)."\n", 0], + +# Before coreutils-8.13 page numbers were not handled correctly when +# headers were not printed (when -l <= 10 or -t or -T specified) +['page-range', '+1:1 -2 -l1 -s" "', "a\nb\nc\n", "a b\n", 0], ); # Convert the above old-style test vectors to the newer -- cgit v1.2.3-70-g09d2