home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Libraries / stdwin / Appls / dpv / dpv.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-03  |  2.0 KB  |  108 lines  |  [TEXT/????]

  1. /* dpv -- ditroff previewer.  Main program. */
  2.  
  3. #include "dpv.h"
  4.  
  5. int    dbg;        /* Amount of debugging output wanted */
  6. int    windowarn;    /* Set if errors must go to dialog box */
  7.  
  8. char   *progname= "dpv"; /* Program name if not taken from argv[0] */
  9.  
  10. /* Main program.  Scan arguments and call other routines. */
  11.  
  12. main(argc, argv)
  13.     int argc;
  14.     char **argv;
  15. {
  16.     int firstpage;
  17.     
  18.     winitargs(&argc, &argv);
  19.     wsetdefscrollbars(1, 1);
  20.     
  21.     if (argc > 0 && *argv != NULL && **argv != EOS) {
  22.         progname= strrchr(argv[0], '/');
  23.         if (progname != NULL)
  24.             ++progname;
  25.         else
  26.             progname= argv[0];
  27.     }
  28.     
  29.     for (;;) {
  30.         int c;
  31.         
  32.         c= getopt(argc, argv, "df:t:P:");
  33.         if (c == EOF)
  34.             break;
  35.         switch (c) {
  36.         
  37.         case 'f':    /* Alternate funnytab file */
  38.             funnyfile = optarg;
  39.             break;
  40.         
  41.         case 't':    /* Alternative font translations file */
  42.             readtrans(optarg);
  43.             break;
  44.         
  45.         case 'd':    /* Ask for debugging output */
  46.             ++dbg; /* Use -dd to increment debug level */
  47.             break;
  48.         
  49.         case 'P':    /* Add printer definition */
  50.             addprinter(optarg);
  51.             break;
  52.         
  53.         default:
  54.             usage();
  55.             /*NOTREACHED*/
  56.         
  57.         }
  58.     }
  59.     
  60.     if (optind < argc && argv[optind][0] == '+') {
  61.         if (argv[optind][1] == EOS ||
  62.             argv[optind][1] == '$')
  63.             firstpage= 32000;
  64.         else
  65.             firstpage= atoi(argv[optind] + 1);
  66.         ++optind;
  67.     }
  68.     else
  69.         firstpage= 1;
  70.     
  71.     if (optind+1 != argc || strcmp(argv[optind], "-") == 0)
  72.         usage();
  73.     
  74.     windowarn= 1; /* From now on, use dialog box for warnings */
  75.     
  76.     preview(argv[optind], firstpage);
  77.     
  78.     exit(0);
  79. }
  80.  
  81. usage()
  82. {
  83.     error(ABORT,
  84. "usage: %s [-d] [-f funnytab] [-t translationsfile] [-P printer] [+page] file",
  85.         progname);
  86. }
  87.  
  88. /*VARARGS2*/
  89. error(f, s, a1, a2, a3, a4, a5, a6, a7)
  90.     int f;
  91.     char *s;
  92. {
  93.     if (f != WARNING || !windowarn) { /* Use stderr */
  94.         if (f != 0)
  95.             wdone();
  96.         fprintf(stderr, "%s: ", progname);
  97.         fprintf(stderr, s, a1, a2, a3, a4, a5, a6, a7);
  98.         fprintf(stderr, "\n");
  99.         if (f != 0)
  100.             exit(f);
  101.     }
  102.     else { /* use dialog box */
  103.         char buf[256];
  104.         sprintf(buf, s, a1, a2, a3, a4, a5, a6, a7);
  105.         wmessage(buf);
  106.     }
  107. }
  108.