diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFJob_argv.cc | 10 | ||||
-rw-r--r-- | libqpdf/QPDFJob_config.cc | 31 |
2 files changed, 36 insertions, 5 deletions
diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc index a32818ba..063f77d8 100644 --- a/libqpdf/QPDFJob_argv.cc +++ b/libqpdf/QPDFJob_argv.cc @@ -46,6 +46,7 @@ namespace std::shared_ptr<QPDFJob::Config> c_main; std::shared_ptr<QPDFJob::CopyAttConfig> c_copy_att; std::shared_ptr<QPDFJob::AttConfig> c_att; + std::shared_ptr<QPDFJob::PagesConfig> c_pages; std::vector<char*> accumulated_args; // points to member in ap char* pages_password; }; @@ -310,6 +311,7 @@ ArgParser::argPages() usage("the --pages may only be specified one time"); } this->accumulated_args.clear(); + this->c_pages = c_main->pages(); this->ap.selectOptionTable(O_PAGES); } @@ -402,7 +404,7 @@ ArgParser::argPagesPositional(char* arg) { range = "1-z"; } - o.page_specs.push_back(QPDFJob::PageSpec(file, this->pages_password, range)); + this->c_pages->pageSpec(file, this->pages_password, range); this->accumulated_args.clear(); this->pages_password = nullptr; if (next_file != nullptr) @@ -415,10 +417,8 @@ void ArgParser::argEndPages() { argPagesPositional(nullptr); - if (o.page_specs.empty()) - { - usage("--pages: no page specifications given"); - } + c_pages->end(); + c_pages = nullptr; } void diff --git a/libqpdf/QPDFJob_config.cc b/libqpdf/QPDFJob_config.cc index 7342aeea..c4961fd3 100644 --- a/libqpdf/QPDFJob_config.cc +++ b/libqpdf/QPDFJob_config.cc @@ -657,3 +657,34 @@ QPDFJob::AttConfig::end() this->config.o.attachments_to_add.push_back(this->att); return this->config; } + +QPDFJob::PagesConfig::PagesConfig(Config& c) : + config(c) +{ +} + +std::shared_ptr<QPDFJob::PagesConfig> +QPDFJob::Config::pages() +{ + return std::shared_ptr<PagesConfig>(new PagesConfig(*this)); +} + +QPDFJob::Config& +QPDFJob::PagesConfig::end() +{ + if (this->config.o.page_specs.empty()) + { + throw QPDFJob::ConfigError("--pages: no page specifications given"); + } + return this->config; +} + +QPDFJob::PagesConfig& +QPDFJob::PagesConfig::pageSpec(std::string const& filename, + char const* password, + std::string const& range) +{ + this->config.o.page_specs.push_back( + QPDFJob::PageSpec(filename, password, range)); + return *this; +} |