summaryrefslogtreecommitdiff
path: root/src/pr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pr.c')
-rw-r--r--src/pr.c20
1 files changed, 6 insertions, 14 deletions
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;