utils/pdfseparate.cc | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-)
New commits: commit fa83d7e4f36cfc11c7b4f81f5f5e8ed69eb6dbbe Author: Daniel Kahn Gillmor <[email protected]> Date: Wed Oct 2 20:35:58 2013 +0200 pdfseparate: allow zero-padded pagespecs Bug #50914 diff --git a/utils/pdfseparate.cc b/utils/pdfseparate.cc index 1d4901b..2844dc5 100644 --- a/utils/pdfseparate.cc +++ b/utils/pdfseparate.cc @@ -7,6 +7,7 @@ // Copyright (C) 2011, 2012 Thomas Freitag <[email protected]> // Copyright (C) 2012 Albert Astals Cid <[email protected]> // Copyright (C) 2013 Pino Toscano <[email protected]> +// Copyright (C) 2013 Daniel Kahn Gillmor <[email protected]> // //======================================================================== #include "config.h" @@ -62,9 +63,24 @@ bool extractPages (const char *srcFileName, const char *destFileName) { lastPage = doc->getNumPages(); if (firstPage == 0) firstPage = 1; - if (firstPage != lastPage && strstr(destFileName, "%d") == NULL) { - error(errSyntaxError, -1, "'{0:s}' must contain '%%d' if more than one page should be extracted", destFileName); - return false; + if (firstPage != lastPage) { + bool foundmatch = false; + if (strstr(destFileName, "%d") != NULL) { + foundmatch = true; + } else { + char pattern[5]; + for (int i = 2; i < 10; i++) { + sprintf(pattern, "%%0%dd", i); + if (strstr(destFileName, pattern) != NULL) { + foundmatch = true; + break; + } + } + } + if (!foundmatch) { + error(errSyntaxError, -1, "'{0:s}' must contain '%%d' if more than one page should be extracted", destFileName); + return false; + } } for (int pageNo = firstPage; pageNo <= lastPage; pageNo++) { snprintf (pathName, sizeof (pathName) - 1, destFileName, pageNo); _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
