summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-clean-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-clean-file.c')
-rw-r--r--source/pdf/pdf-clean-file.c27
1 files changed, 3 insertions, 24 deletions
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++;