]> mj.ucw.cz Git - paperjam.git/blobdiff - paperjam.cc
TODO: a4r paper
[paperjam.git] / paperjam.cc
index 5aa4c6139fd76814a3d6297ced7a339ebd1201eb..0d3bf12c57fe95452fcd8cb1ec5b626966ce2f6d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     PaperJam -- Main program
  *
- *     (c) 2018 Martin Mares <mj@ucw.cz>
+ *     (c) 2018--2022 Martin Mares <mj@ucw.cz>
  */
 
 #include <cassert>
 const char *in_name;
 const char *out_name;
 bool recalc_bbox;
-int debug_mode;
+bool no_auto_transforms;
+int debug_level;
 int debug_indent;
 
 /*** Messages ***/
 
 void debug(const char *msg, ...)
 {
-  if (!debug_mode)
+  if (!debug_level)
     return;
   va_list args;
   va_start(args, msg);
@@ -54,11 +55,22 @@ void die(const char *msg, ...)
   exit(1);
 }
 
+void err(const char *msg, ...)
+{
+  va_list args;
+  va_start(args, msg);
+  char buf[1024];
+  vsnprintf(buf, sizeof(buf), msg, args);
+  va_end(args);
+  throw paperjam_error(buf);
+}
+
 /*** Arguments ***/
 
 enum opt {
   OPT_HELP = 256,
   OPT_VERSION,
+  OPT_NO_AUTO,
 };
 
 static const struct option long_opts[] = {
@@ -78,12 +90,27 @@ static void usage()
 Options:\n\
 -b, --bbox             Recalculate bounding boxes\n\
 -d, --debug            Show debugging messages\n\
+    --no-auto          Disable automatic rotation of pages\n\
+\n\
+<command> = <name>(<args>, <named-arg>[=<value>], ...) [<pipeline>]\n\
+<pipeline> = { <stage>, <stage>, ... }\n\
+<stage> = <page> <page> ... [: <commands>]\n\
+\n\
+Example:\n\
+paperjam 'book nup(2, paper=a4)' input.pdf output.pdf\n\
 \n\
 Commands:\n\
 ");
   parser_help();
 }
 
+static void show_version()
+{
+  printf("PaperJam " VERSION " -- a PDF processor\n");
+  printf("(c) " YEAR " Martin Mares, distributed under GNU GPL 2+\n");
+  printf("Built on " BUILD_DATE " from Git commit " BUILD_COMMIT "\n");
+}
+
 int main(int argc, char **argv)
 {
   int c;
@@ -94,14 +121,17 @@ int main(int argc, char **argv)
        recalc_bbox = 1;
        break;
       case 'd':
-       debug_mode++;
+       debug_level++;
        break;
       case OPT_VERSION:
-       printf("This is paperjam with no version yet.\n");      // FIXME
+       show_version();
        return 0;
       case OPT_HELP:
        usage();
        return 0;
+      case OPT_NO_AUTO:
+       no_auto_transforms = true;
+       break;
       default:
        exit(1);
       }