diff --git a/TODO b/TODO
index 63363ab..9740d8a 100644
--- a/TODO
+++ b/TODO
@@ -3,14 +3,13 @@ Candidates for upcoming release
* Trivial fixes:
* Remove travisci
- * Update manual to clearly state qpdf's exit codes including mention
- of not exiting with code 1.
* Quick issues:
* #438: things written to stdout instead of stderr; --no-warn issues
* #454: integer overflow
* #451: BufferInputSource performance enhancement
* #432: WindowsCryptProvider fixes
+ * Add --warning-exit-0 option. Search for --no-warn in the docs.
* Easy build/test
* #429: cygwin build and openssl version (see #455)
diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml
index 11e963d..9579562 100644
--- a/manual/qpdf-manual.xml
+++ b/manual/qpdf-manual.xml
@@ -594,6 +594,40 @@ make
Most options require an output file, but some testing or
inspection commands do not. These are specifically noted.
+
+ Exit Status
+
+ The exit status of qpdf may be interpreted as
+ follows:
+
+
+
+ 0: no errors or warnings were found. The
+ file may still have problems qpdf can't detect.
+
+
+
+
+ 2: errors were found. qpdf was not able to
+ fully process the file.
+
+
+
+
+ 3: qpdf encountered problems that it was
+ able to recover from. In some cases, the resulting file may
+ still be damaged. Note that qpdf still exits with status
+ 3 if it finds warnings even when
+ is specified.
+
+
+
+ Note that qpdf never exists with status
+ 1. If you get an exit status of
+ 1, it was something else, like the shell not
+ being able to find or execute qpdf.
+
+ Shell Completion
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc
index 4e69766..1cfbb04 100644
--- a/qpdf/qpdf.cc
+++ b/qpdf/qpdf.cc
@@ -1621,7 +1621,8 @@ ArgParser::argHelp()
<< "Ordinarily, qpdf exits with a status of 0 on success or a status of 2\n"
<< "if any errors occurred. If there were warnings but not errors, qpdf\n"
<< "exits with a status of 3. If warnings would have been issued but --no-warn\n"
- << "was given, an exit status of 3 is still used.\n";
+ << "was given, an exit status of 3 is still used. qpdf does not use exit\n"
+ << "status 1, since that is used by the shell if it can't execute qpdf.\n";
}
void