Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pdf/xpdf/pdftops.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pdf/xpdf/pdftops.cc')
-rw-r--r--pdf/xpdf/pdftops.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/pdf/xpdf/pdftops.cc b/pdf/xpdf/pdftops.cc
index 7f60be0..d5d2de8 100644
--- a/pdf/xpdf/pdftops.cc
+++ b/pdf/xpdf/pdftops.cc
@@ -127,6 +127,9 @@ int main(int argc, char *argv[]) {
PSOutputDev *psOut;
GBool ok;
char *p;
+ int exitCode;
+
+ exitCode = 99;
// parse args
ok = parseArgs(argDesc, &argc, argv);
@@ -178,7 +181,7 @@ int main(int argc, char *argv[]) {
if (paperSize[0]) {
if (!globalParams->setPSPaperSize(paperSize)) {
fprintf(stderr, "Invalid paper size\n");
- exit(1);
+ goto err0;
}
} else {
if (paperWidth) {
@@ -234,12 +237,14 @@ int main(int argc, char *argv[]) {
delete ownerPW;
}
if (!doc->isOk()) {
+ exitCode = 1;
goto err1;
}
// check for print permission
if (!doc->okToPrint()) {
error(-1, "Printing this document is not allowed.");
+ exitCode = 3;
goto err1;
}
@@ -276,19 +281,26 @@ int main(int argc, char *argv[]) {
doc->getCatalog(), firstPage, lastPage, mode);
if (psOut->isOk()) {
doc->displayPages(psOut, firstPage, lastPage, 72, 0, gFalse);
+ } else {
+ delete psOut;
+ exitCode = 2;
+ goto err2;
}
delete psOut;
+ exitCode = 0;
+
// clean up
err2:
delete psFileName;
err1:
delete doc;
delete globalParams;
+ err0:
// check for memory leaks
Object::memCheck(stderr);
gMemReport(stderr);
- return 0;
+ return exitCode;
}