From 4ce9b5a1023be2e931d4205ed17f44f135c920d1 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 11 May 2016 12:42:12 +0200 Subject: Add common page range parsing function for tools. --- source/pdf/pdf-clean-file.c | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) (limited to 'source/pdf/pdf-clean-file.c') diff --git a/source/pdf/pdf-clean-file.c b/source/pdf/pdf-clean-file.c index 2a80f0cc..e886dc5f 100644 --- a/source/pdf/pdf-clean-file.c +++ b/source/pdf/pdf-clean-file.c @@ -206,39 +206,18 @@ static void retainpages(fz_context *ctx, globals *glo, int argc, char **argv) while (argc - argidx) { int page, spage, epage; - char *spec, *dash; - char *pagelist = argv[argidx]; + const char *pagelist = argv[argidx]; pagecount = pdf_count_pages(ctx, doc); - spec = fz_strsep(&pagelist, ","); - while (spec) - { - dash = strchr(spec, '-'); - - if (dash == spec) - spage = epage = pagecount; - else - spage = epage = atoi(spec); - - if (dash) - { - if (strlen(dash) > 1) - epage = atoi(dash + 1); - else - epage = pagecount; - } - - spage = fz_clampi(spage, 1, pagecount); - epage = fz_clampi(epage, 1, pagecount); + while ((pagelist = fz_parse_page_range(ctx, pagelist, &spage, &epage, pagecount))) + { if (spage < epage) for (page = spage; page <= epage; ++page) retainpage(ctx, doc, parent, kids, page); else for (page = spage; page >= epage; --page) retainpage(ctx, doc, parent, kids, page); - - spec = fz_strsep(&pagelist, ","); } argidx++; -- cgit v1.2.3