Commit 1c443a1c3574706a57d71a0d066ef16280709383

Authored by m-holger
1 parent d90b4006

Refactor `QPDFJob::Selection` and `Inputs`: remove `Selection::password` member …

…and replace it with a setter that directly sets `Input::password`, centralize password handling, simplify file processing, and adjust related logic in `handlePageSpecs`.
libqpdf/QPDFJob.cc
... ... @@ -2405,10 +2405,6 @@ QPDFJob::Inputs::process(std::string const& filename, QPDFJob::Input& input)
2405 2405 void
2406 2406 QPDFJob::Inputs::process_all()
2407 2407 {
2408   - for (auto& selection: selections) {
2409   - selection.process(*this);
2410   - }
2411   -
2412 2408 if (!infile_name().empty()) {
2413 2409 files.erase("");
2414 2410 }
... ... @@ -2479,7 +2475,7 @@ QPDFJob::Inputs::new_selection(
2479 2475 std::string const& filename, std::string const& password, std::string const& range)
2480 2476 {
2481 2477 auto& selection = new_selection(filename);
2482   - selection.password = password;
  2478 + selection.password(password);
2483 2479 selection.range = range;
2484 2480 }
2485 2481  
... ... @@ -2501,11 +2497,13 @@ QPDFJob::Selection::filename()
2501 2497 }
2502 2498  
2503 2499 void
2504   -QPDFJob::Selection::process(QPDFJob::Inputs& in)
  2500 +QPDFJob::Selection::password(std::string password)
2505 2501 {
2506   - if (!password.empty()) {
2507   - input().password = password;
  2502 + auto& in = input();
  2503 + if (!in.password.empty()) {
  2504 + usage("--password already specified for this file");
2508 2505 }
  2506 + in.password = password;
2509 2507 }
2510 2508  
2511 2509 // Handle all page specifications.
... ...
libqpdf/QPDFJob_config.cc
... ... @@ -1025,11 +1025,7 @@ QPDFJob::PagesConfig::password(std::string const& arg)
1025 1025 if (config->o.m->inputs.selections.empty()) {
1026 1026 usage("in --pages, --password must follow a file name");
1027 1027 }
1028   - auto& last = config->o.m->inputs.selections.back();
1029   - if (!last.password.empty()) {
1030   - usage("--password already specified for this file");
1031   - }
1032   - last.password = arg;
  1028 + config->o.m->inputs.selections.back().password(arg);
1033 1029 return this;
1034 1030 }
1035 1031  
... ...
libqpdf/qpdf/QPDFJob_private.hh
... ... @@ -12,9 +12,9 @@ struct QPDFJob::Selection
12 12 {
13 13 Selection() = delete;
14 14  
15   - Selection(std::pair<const std::string, QPDFJob::Input>& entry);
  15 + Selection(std::pair<const std::string, Input>& entry);
16 16  
17   - Selection(QPDFJob::Selection const& other, int page) :
  17 + Selection(Selection const& other, int page) :
18 18 in_entry(other.in_entry),
19 19 selected_pages({page})
20 20 {
... ... @@ -22,11 +22,9 @@ struct QPDFJob::Selection
22 22  
23 23 QPDFJob::Input& input();
24 24 std::string const& filename();
25   -
26   - void process(Inputs& in);
  25 + void password(std::string password);
27 26  
28 27 std::pair<const std::string, QPDFJob::Input>* in_entry{nullptr};
29   - std::string password;
30 28 std::string range; // An empty range means all pages.
31 29 std::vector<int> selected_pages;
32 30 };
... ...