home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / printer / prfont12.lha / doargs.c < prev    next >
C/C++ Source or Header  |  1990-02-21  |  2KB  |  117 lines

  1. /*
  2.  *
  3.  *    do_args.c - Argument processing  - WB or CLI
  4.  *
  5.  */
  6.  
  7. #include <exec/types.h>
  8. #include <workbench/workbench.h>
  9. #include <workbench/icon.h>
  10. #include <workbench/startup.h>
  11. #include <stdio.h>
  12. #include "defines.h"
  13.  
  14. extern struct WBStartup *WBenchMsg;
  15. extern char title[];
  16. extern long density, show, all;
  17. char *myname;
  18. void *OpenLibrary();
  19. struct IconBase *IconBase;
  20. long atol();
  21.  
  22. /*
  23.  *  General purpose Workbench argument processing subroutine.
  24.  *  It retrieves arguments from the icon ToolTypes array.
  25.  */
  26.  
  27.  
  28. getWBargs()
  29. {
  30.    struct WBArg *wbArg;
  31.    char   **toolArray;
  32.    char   *string;
  33.    struct DiskObject *diskObj;   
  34.  
  35.    if(IconBase = (struct IconBase *) OpenLibrary("icon.library",0L))
  36.       {
  37.       wbArg = WBenchMsg->sm_ArgList;
  38.       diskObj = (struct DiskObject *)GetDiskObject(wbArg->wa_Name);
  39.       if(diskObj)
  40.          {
  41.          toolArray = diskObj->do_ToolTypes;
  42.          if(string = FindToolType(toolArray,"DENSITY"))
  43.             {
  44.             density = atol(string);
  45.             if (density <0 || density >DENSITYMAX) density = DENSITYDEF;
  46.             }
  47.          if(string = FindToolType(toolArray,"ALL"))
  48.             {
  49.             all = TRUE;
  50.             }
  51.          if(string = FindToolType(toolArray,"SHOW"))
  52.             {
  53.             show = TRUE;
  54.             }
  55.          FreeDiskObject(diskObj);
  56.          }
  57.       CloseLibrary(IconBase);
  58.       }
  59. }
  60.  
  61.       
  62. getCLIargs(argc,argv)
  63. int argc;
  64. char *argv[];
  65. {
  66.     register char  *p;
  67.  
  68.     /* get command name */
  69.     myname = (argc-- < 1) ? "PrFont" : *argv++;
  70.  
  71.     while (argc > 0) 
  72.         {
  73.         argc--;            /* One fewer to process  */
  74.         p = *argv++;    /* Get arg pointer and bump to next */
  75.  
  76.         if (*p != '-')  /* If no '-' it is invalid */
  77.             {
  78.             usage();
  79.             done(14);
  80.             }
  81.  
  82.         p++;
  83.         switch (*p) {
  84.             case 'a':        /* All - print all characters */
  85.                 all = TRUE;
  86.                 break;
  87.             case 's':        /* Show - no print  */
  88.                 show = TRUE;
  89.                 break;
  90.             case 'd':        /* print density */
  91.                 density = atoi(++p);
  92.                 if (density <0 || density >DENSITYMAX) density = DENSITYDEF;
  93.                 break;
  94.             default:        /* Wrong option  */
  95.             usage();
  96.             done(14);
  97.             }
  98.         }
  99.  
  100. }
  101.  
  102. usage()
  103. {
  104.     fprintf(stderr,"Usage:%s: -d# -s -a\n",myname);
  105.     fprintf(stderr,"Print All Fonts\n");
  106.     fprintf(stderr,"-d#   Density of the printer graphics (1-7)\n");
  107.     fprintf(stderr,"-s    Show on screen only - don't print\n");
  108.     fprintf(stderr,"-a    Show All characters, not 1 line\n");
  109. }
  110.  
  111. #ifdef AZTEC_C
  112.  
  113. _wb_parse()  /* keep aztec's paws off it */
  114. {
  115. }
  116. #endif
  117.