aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFJob_argv.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-01-23 19:11:46 +0100
committerJay Berkenbilt <ejb@ql.org>2022-01-30 19:11:03 +0100
commitfcdbc8a102ca258d105ebd2f41bbf17b29c817fd (patch)
tree520877ee0bbcb61781b9b4209a074c9180e348a6 /libqpdf/QPDFJob_argv.cc
parentc4e56fa5f40188ddf4f75d316e57143c10ed51fa (diff)
downloadqpdf-fcdbc8a102ca258d105ebd2f41bbf17b29c817fd.tar.zst
Move doFinalChecks to QPDFJob::checkConfiguration
Diffstat (limited to 'libqpdf/QPDFJob_argv.cc')
-rw-r--r--libqpdf/QPDFJob_argv.cc76
1 files changed, 4 insertions, 72 deletions
diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc
index f4a4219a..f7a4d89a 100644
--- a/libqpdf/QPDFJob_argv.cc
+++ b/libqpdf/QPDFJob_argv.cc
@@ -1474,81 +1474,13 @@ ArgParser::parseOptions()
void
ArgParser::doFinalChecks()
{
- if (o.replace_input)
- {
- if (o.outfilename)
- {
- usage("--replace-input may not be used when"
- " an output file is specified");
- }
- else if (o.split_pages)
- {
- usage("--split-pages may not be used with --replace-input");
- }
- }
- if (o.infilename == 0)
- {
- usage("an input file name is required");
- }
- else if (o.require_outfile && (o.outfilename == 0) && (! o.replace_input))
- {
- usage("an output file name is required; use - for standard output");
- }
- else if ((! o.require_outfile) &&
- ((o.outfilename != 0) || o.replace_input))
- {
- usage("no output file may be given for this option");
- }
- if (o.check_requires_password && o.check_is_encrypted)
- {
- usage("--requires-password and --is-encrypted may not be given"
- " together");
- }
-
- if (o.encrypt && (! o.allow_insecure) &&
- (o.owner_password.empty() &&
- (! o.user_password.empty()) &&
- (o.keylen == 256)))
- {
- // Note that empty owner passwords for R < 5 are copied from
- // the user password, so this lack of security is not an issue
- // for those files. Also we are consider only the ability to
- // open the file without a password to be insecure. We are not
- // concerned about whether the viewer enforces security
- // settings when the user and owner password match.
- usage("A PDF with a non-empty user password and an empty owner"
- " password encrypted with a 256-bit key is insecure as it"
- " can be opened without a password. If you really want to"
- " do this, you must also give the --allow-insecure option"
- " before the -- that follows --encrypt.");
- }
-
- if (o.require_outfile && o.outfilename &&
- (strcmp(o.outfilename.get(), "-") == 0))
+ try
{
- if (o.split_pages)
- {
- usage("--split-pages may not be used when"
- " writing to standard output");
- }
- if (o.verbose)
- {
- usage("--verbose may not be used when"
- " writing to standard output");
- }
- if (o.progress)
- {
- usage("--progress may not be used when"
- " writing to standard output");
- }
+ o.checkConfiguration();
}
-
- if ((! o.split_pages) &&
- QUtil::same_file(o.infilename.get(), o.outfilename.get()))
+ catch (std::runtime_error& e)
{
- QTC::TC("qpdf", "qpdf same file error");
- usage("input file and output file are the same;"
- " use --replace-input to intentionally overwrite the input file");
+ usage(e.what());
}
}