diff options
Diffstat (limited to 'pdf/xpdf/pdftops.cc')
-rw-r--r-- | pdf/xpdf/pdftops.cc | 16 |
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; } |