aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_linearization.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-06-22 19:18:26 +0200
committerJay Berkenbilt <ejb@ql.org>2019-06-22 22:57:51 +0200
commit85a3f95a89ca392a3726f8d964024dfd10177e09 (patch)
treef6bd1b02f604e29c5b35020ebc85a32309d12752 /libqpdf/QPDF_linearization.cc
parent557bd3c26141b5e450de0fada2a27584a386125e (diff)
downloadqpdf-85a3f95a89ca392a3726f8d964024dfd10177e09.tar.zst
qpdf: exit 3 for linearization warnings without errors (fixes #50)
Diffstat (limited to 'libqpdf/QPDF_linearization.cc')
-rw-r--r--libqpdf/QPDF_linearization.cc33
1 files changed, 20 insertions, 13 deletions
diff --git a/libqpdf/QPDF_linearization.cc b/libqpdf/QPDF_linearization.cc
index 5eb6277e..cb607fed 100644
--- a/libqpdf/QPDF_linearization.cc
+++ b/libqpdf/QPDF_linearization.cc
@@ -65,17 +65,25 @@ load_vector_vector(BitStream& bit_stream,
bool
QPDF::checkLinearization()
{
- bool result = false;
+ bool errors = false;
+ bool warnings = false;
+ checkLinearization(errors, warnings);
+ return (! (errors || warnings));
+}
+
+void
+QPDF::checkLinearization(bool& errors, bool& warnings)
+{
try
{
readLinearizationData();
- result = checkLinearizationInternal();
+ checkLinearizationInternal(errors, warnings);
}
catch (QPDFExc& e)
{
*this->m->out_stream << e.what() << std::endl;
+ errors = true;
}
- return result;
}
bool
@@ -499,8 +507,8 @@ QPDF::readHGeneric(BitStream h, HGeneric& t)
t.group_length = h.getBitsInt(32); // 4
}
-bool
-QPDF::checkLinearizationInternal()
+void
+QPDF::checkLinearizationInternal(bool& any_errors, bool& any_warnings)
{
// All comments referring to the PDF spec refer to the spec for
// version 1.4.
@@ -648,11 +656,11 @@ QPDF::checkLinearizationInternal()
// Report errors
- bool result = true;
+ any_errors = (! errors.empty());
+ any_warnings = (! warnings.empty());
- if (! errors.empty())
+ if (any_errors)
{
- result = false;
for (std::list<std::string>::iterator iter = errors.begin();
iter != errors.end(); ++iter)
{
@@ -660,17 +668,14 @@ QPDF::checkLinearizationInternal()
}
}
- if (! warnings.empty())
+ if (any_warnings)
{
- result = false;
for (std::list<std::string>::iterator iter = warnings.begin();
iter != warnings.end(); ++iter)
{
*this->m->out_stream << "WARNING: " << (*iter) << std::endl;
}
}
-
- return result;
}
qpdf_offset_t
@@ -1084,7 +1089,9 @@ QPDF::showLinearizationData()
try
{
readLinearizationData();
- checkLinearizationInternal();
+ bool errors = false;
+ bool warnings = false;
+ checkLinearizationInternal(errors, warnings);
dumpLinearizationDataInternal();
}
catch (QPDFExc& e)