]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/pdftops.cc
Reused eog HIG dialog in GPdf.
[evince.git] / pdf / xpdf / pdftops.cc
index 7f60be024f9063f20ffd1a3b50b8eb8be227c2c8..2bb2e3b284f0cb30b0975f928cf687a593768966 100644 (file)
@@ -2,7 +2,7 @@
 //
 // pdftops.cc
 //
-// Copyright 1996-2002 Glyph & Cog, LLC
+// Copyright 1996-2003 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -89,7 +89,7 @@ static ArgDesc argDesc[] = {
   {"-noembcidtt", argFlag, &noEmbedCIDTTFonts, 0,
    "don't embed CID TrueType fonts"},
   {"-paper",  argString,   paperSize,       sizeof(paperSize),
-   "paper size (letter, legal, A4, A3)"},
+   "paper size (letter, legal, A4, A3, match)"},
   {"-paperw", argInt,      &paperWidth,     0,
    "paper width, in points"},
   {"-paperh", argInt,      &paperHeight,    0,
@@ -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,8 @@ int main(int argc, char *argv[]) {
   if (paperSize[0]) {
     if (!globalParams->setPSPaperSize(paperSize)) {
       fprintf(stderr, "Invalid paper size\n");
-      exit(1);
+      delete fileName;
+      goto err0;
     }
   } else {
     if (paperWidth) {
@@ -234,12 +238,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 +282,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;
+ err0:
   delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
   gMemReport(stderr);
 
-  return 0;
+  return exitCode;
 }