Commit 99593e0eef6204e0fcf0ddcae937c81cac8a1745
1 parent
4ccc8b1a
Use ClosedFileInputSource when merging files (fixes #154)
Showing
2 changed files
with
8 additions
and
2 deletions
ChangeLog
| 1 | 2018-06-22 Jay Berkenbilt <ejb@ql.org> | 1 | 2018-06-22 Jay Berkenbilt <ejb@ql.org> |
| 2 | 2 | ||
| 3 | + * Don't leave files open when merging. This makes it possible | ||
| 4 | + merge more files at once than the operating system's open file | ||
| 5 | + limit. Fixes #154. | ||
| 6 | + | ||
| 3 | * Add ClosedFileInputSource class, and input source that keeps its | 7 | * Add ClosedFileInputSource class, and input source that keeps its |
| 4 | input file closed when not reading it. At the expense of some | 8 | input file closed when not reading it. At the expense of some |
| 5 | performance, this allows you to operate on many files without | 9 | performance, this allows you to operate on many files without |
qpdf/qpdf.cc
| @@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
| 7 | 7 | ||
| 8 | #include <qpdf/QUtil.hh> | 8 | #include <qpdf/QUtil.hh> |
| 9 | #include <qpdf/QTC.hh> | 9 | #include <qpdf/QTC.hh> |
| 10 | +#include <qpdf/ClosedFileInputSource.hh> | ||
| 10 | #include <qpdf/Pl_StdioFile.hh> | 11 | #include <qpdf/Pl_StdioFile.hh> |
| 11 | #include <qpdf/Pl_Discard.hh> | 12 | #include <qpdf/Pl_Discard.hh> |
| 12 | #include <qpdf/PointerHolder.hh> | 13 | #include <qpdf/PointerHolder.hh> |
| @@ -2083,8 +2084,9 @@ static void handle_page_specs(QPDF& pdf, Options& o, | @@ -2083,8 +2084,9 @@ static void handle_page_specs(QPDF& pdf, Options& o, | ||
| 2083 | QTC::TC("qpdf", "qpdf pages encryption password"); | 2084 | QTC::TC("qpdf", "qpdf pages encryption password"); |
| 2084 | password = o.encryption_file_password; | 2085 | password = o.encryption_file_password; |
| 2085 | } | 2086 | } |
| 2086 | - qpdf->processFile( | ||
| 2087 | - page_spec.filename.c_str(), password); | 2087 | + qpdf->processInputSource( |
| 2088 | + new ClosedFileInputSource( | ||
| 2089 | + page_spec.filename.c_str()), password); | ||
| 2088 | page_spec_qpdfs[page_spec.filename] = qpdf; | 2090 | page_spec_qpdfs[page_spec.filename] = qpdf; |
| 2089 | } | 2091 | } |
| 2090 | 2092 |