summaryrefslogtreecommitdiff
path: root/utils/pdfseparate.cc
diff options
context:
space:
mode:
Diffstat (limited to 'utils/pdfseparate.cc')
-rw-r--r--utils/pdfseparate.cc22
1 files changed, 19 insertions, 3 deletions
diff --git a/utils/pdfseparate.cc b/utils/pdfseparate.cc
index 1d4901ba..2844dc52 100644
--- a/utils/pdfseparate.cc
+++ b/utils/pdfseparate.cc
@@ -7,6 +7,7 @@
// Copyright (C) 2011, 2012 Thomas Freitag <Thomas.Freitag@alfa.de>
// Copyright (C) 2012 Albert Astals Cid <aacid@kde.org>
// Copyright (C) 2013 Pino Toscano <pino@kde.org>
+// Copyright (C) 2013 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
//
//========================================================================
#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);