From a21d9a21de1fee178c265a44f7f80aff1899b48f Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 1 Apr 2005 07:39:45 +0000 Subject: Don't let pr treat +1:-1 like +1:18446744073709551615. (strtoumax): Remove declaration. (first_last_page): Use xstrtoumax in place of strtoumax, so we don't interpret a negative page number (e.g., in an option like --pages=1:-1) as valid. --- src/pr.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/pr.c b/src/pr.c index 4e3793133..dba1adf2c 100644 --- a/src/pr.c +++ b/src/pr.c @@ -324,10 +324,6 @@ #include "timespec.h" #include "xstrtol.h" -#if ! (HAVE_DECL_STRTOUMAX || defined strtoumax) -uintmax_t strtoumax (); -#endif - /* The official name of this program (e.g., no `g' prefix). */ #define PROGRAM_NAME "pr" @@ -806,20 +802,19 @@ first_last_page (char const *pages) char *p; uintmax_t first; uintmax_t last = UINTMAX_MAX; - int err; + strtol_error err = xstrtoumax (pages, &p, 10, &first, ""); + if (err != LONGINT_OK && err != LONGINT_INVALID_SUFFIX_CHAR) + _STRTOL_ERROR (EXIT_FAILURE, pages, _("page range"), err); - errno = 0; - first = strtoumax (pages, &p, 10); - err = errno; if (p == pages || !first) return false; if (*p == ':') { char const *p1 = p + 1; - errno = 0; - last = strtoumax (p1, &p, 10); - err |= errno; + err = xstrtoumax (p1, &p, 10, &last, ""); + if (err != LONGINT_OK) + _STRTOL_ERROR (EXIT_FAILURE, pages, _("page range"), err); if (p1 == p || last < first) return false; } @@ -827,9 +822,6 @@ first_last_page (char const *pages) if (*p) return false; - if (err) - error (EXIT_FAILURE, err, _("Page range `%s'"), pages); - first_page_number = first; last_page_number = last; return true; -- cgit v1.2.3-54-g00ecf