diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-01-28 13:46:04 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-01-30 19:11:03 +0100 |
commit | 0364024781ffa709a1a86ae9c6638f71df0317ca (patch) | |
tree | 7fde4d205b81d4fb65a07736d95fb1a09d746022 /libqpdf | |
parent | 764feb0f8e0b7753c2d3efe644561220acbc771c (diff) | |
download | qpdf-0364024781ffa709a1a86ae9c6638f71df0317ca.tar.zst |
Use QPDFUsage exception for cli, json, and QPDFJob errors
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/JSONHandler.cc | 20 | ||||
-rw-r--r-- | libqpdf/QPDFArgParser.cc | 8 | ||||
-rw-r--r-- | libqpdf/QPDFJob.cc | 21 | ||||
-rw-r--r-- | libqpdf/QPDFJob_argv.cc | 2 | ||||
-rw-r--r-- | libqpdf/QPDFJob_config.cc | 5 | ||||
-rw-r--r-- | libqpdf/QPDFSystemError.cc | 2 | ||||
-rw-r--r-- | libqpdf/QPDFUsage.cc | 6 | ||||
-rw-r--r-- | libqpdf/build.mk | 1 |
8 files changed, 30 insertions, 35 deletions
diff --git a/libqpdf/JSONHandler.cc b/libqpdf/JSONHandler.cc index 5e3d9a8d..1d374e6a 100644 --- a/libqpdf/JSONHandler.cc +++ b/libqpdf/JSONHandler.cc @@ -1,11 +1,7 @@ #include <qpdf/JSONHandler.hh> #include <qpdf/QUtil.hh> #include <qpdf/QTC.hh> - -JSONHandler::Error::Error(std::string const& msg) : - std::runtime_error(msg) -{ -} +#include <qpdf/QPDFUsage.hh> JSONHandler::JSONHandler() : m(new Members()) @@ -17,6 +13,12 @@ JSONHandler::Members::Members() } void +JSONHandler::usage(std::string const& msg) +{ + throw QPDFUsage(msg); +} + +void JSONHandler::addAnyHandler(json_handler_t fn) { this->m->h.any_handler = fn; @@ -128,9 +130,8 @@ JSONHandler::handle(std::string const& path, JSON j) else { QTC::TC("libtests", "JSONHandler unexpected key"); - throw Error( - "JSON handler found unexpected key " + k + - " in object at " + path); + usage("JSON handler found unexpected key " + k + + " in object at " + path); } } else @@ -163,7 +164,6 @@ JSONHandler::handle(std::string const& path, JSON j) // different if this code were trying to be part of a // general-purpose JSON package. QTC::TC("libtests", "JSONHandler unhandled value"); - throw Error("JSON handler: value at " + path + - " is not of expected type"); + usage("JSON handler: value at " + path + " is not of expected type"); } } diff --git a/libqpdf/QPDFArgParser.cc b/libqpdf/QPDFArgParser.cc index c423c7d3..4018d4e1 100644 --- a/libqpdf/QPDFArgParser.cc +++ b/libqpdf/QPDFArgParser.cc @@ -2,15 +2,11 @@ #include <qpdf/QUtil.hh> #include <qpdf/QIntC.hh> #include <qpdf/QTC.hh> +#include <qpdf/QPDFUsage.hh> #include <iostream> #include <cstring> #include <cstdlib> -QPDFArgParser::Usage::Usage(std::string const& msg) : - std::runtime_error(msg) -{ -} - QPDFArgParser::Members::Members( int argc, char* argv[], char const* progname_env) : @@ -424,7 +420,7 @@ QPDFArgParser::usage(std::string const& message) // This will cause bash to fall back to regular file completion. exit(0); } - throw Usage(message); + throw QPDFUsage(message); } void diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc index b0143449..8c4efc41 100644 --- a/libqpdf/QPDFJob.cc +++ b/libqpdf/QPDFJob.cc @@ -25,21 +25,16 @@ #include <qpdf/QPDFOutlineDocumentHelper.hh> #include <qpdf/QPDFAcroFormDocumentHelper.hh> #include <qpdf/QPDFExc.hh> +#include <qpdf/QPDFUsage.hh> #include <qpdf/QPDFSystemError.hh> #include <qpdf/QPDFCryptoProvider.hh> #include <qpdf/QPDFEmbeddedFileDocumentHelper.hh> #include <qpdf/QPDFArgParser.hh> - #include <qpdf/QPDFWriter.hh> #include <qpdf/QIntC.hh> #include <qpdf/auto_job_schema.hh> // JOB_SCHEMA_DATA -QPDFJob::ConfigError::ConfigError(std::string const& msg) : - std::runtime_error(msg) -{ -} - namespace { class ImageOptimizer: public QPDFObjectHandle::StreamDataProvider @@ -452,6 +447,12 @@ QPDFJob::QPDFJob() : void +QPDFJob::usage(std::string const& msg) +{ + throw QPDFUsage(msg); +} + +void QPDFJob::setMessagePrefix(std::string const& message_prefix) { this->m->message_prefix = message_prefix; @@ -548,7 +549,7 @@ QPDFJob::parseRotationParameter(std::string const& parameter) } else { - throw ConfigError("invalid parameter to rotate: " + parameter); + usage("invalid parameter to rotate: " + parameter); } } @@ -561,7 +562,7 @@ QPDFJob::parseNumrange(char const* range, int max) } catch (std::runtime_error& e) { - throw ConfigError(e.what()); + usage(e.what()); } return std::vector<int>(); } @@ -645,10 +646,6 @@ QPDFJob::createsOutput() const void QPDFJob::checkConfiguration() { - auto usage = [](char const* msg){ - throw QPDFJob::ConfigError(msg); - }; - // QXXXQ messages are CLI-centric if (m->replace_input) { diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc index 36a2a2a6..8bf4c48b 100644 --- a/libqpdf/QPDFJob_argv.cc +++ b/libqpdf/QPDFJob_argv.cc @@ -480,7 +480,7 @@ ArgParser::parseOptions() { this->ap.parseArgs(); } - catch (QPDFArgParser::Usage& e) + catch (std::runtime_error& e) { usage(e.what()); } diff --git a/libqpdf/QPDFJob_config.cc b/libqpdf/QPDFJob_config.cc index 74fff62d..53032cea 100644 --- a/libqpdf/QPDFJob_config.cc +++ b/libqpdf/QPDFJob_config.cc @@ -3,11 +3,6 @@ #include <qpdf/QTC.hh> #include <cstring> -static void usage(std::string const& msg) -{ - throw QPDFJob::ConfigError(msg); -} - QPDFJob::Config* QPDFJob::Config::inputFile(char const* filename) { diff --git a/libqpdf/QPDFSystemError.cc b/libqpdf/QPDFSystemError.cc index 65aeaab7..73bad61e 100644 --- a/libqpdf/QPDFSystemError.cc +++ b/libqpdf/QPDFSystemError.cc @@ -10,7 +10,7 @@ QPDFSystemError::QPDFSystemError(std::string const& description, { } -QPDFSystemError::~QPDFSystemError() throw () +QPDFSystemError::~QPDFSystemError() noexcept { } diff --git a/libqpdf/QPDFUsage.cc b/libqpdf/QPDFUsage.cc new file mode 100644 index 00000000..5390b388 --- /dev/null +++ b/libqpdf/QPDFUsage.cc @@ -0,0 +1,6 @@ +#include <qpdf/QPDFUsage.hh> + +QPDFUsage::QPDFUsage(std::string const& msg) : + std::runtime_error(msg) +{ +} diff --git a/libqpdf/build.mk b/libqpdf/build.mk index 8cedb44a..e16ba5e1 100644 --- a/libqpdf/build.mk +++ b/libqpdf/build.mk @@ -89,6 +89,7 @@ SRCS_libqpdf = \ libqpdf/QPDFStreamFilter.cc \ libqpdf/QPDFSystemError.cc \ libqpdf/QPDFTokenizer.cc \ + libqpdf/QPDFUsage.cc \ libqpdf/QPDFWriter.cc \ libqpdf/QPDFXRefEntry.cc \ libqpdf/QPDF_Array.cc \ |