/*
 *
 *    do_args.c - Argument processing  - WB or CLI
 *
 */

#include <exec/types.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <workbench/startup.h>
#include <stdio.h>
#include "defines.h"

extern struct WBStartup *WBenchMsg;
extern char title[];
extern long density, show, all;
char *myname;
void *OpenLibrary();
struct IconBase *IconBase;
long atol();

/*
 *  General purpose Workbench argument processing subroutine.
 *  It retrieves arguments from the icon ToolTypes array.
 */


getWBargs()
{
   struct WBArg *wbArg;
   char   **toolArray;
   char   *string;
   struct DiskObject *diskObj;   

   if(IconBase = (struct IconBase *) OpenLibrary("icon.library",0L))
      {
	  wbArg = WBenchMsg->sm_ArgList;
      diskObj = (struct DiskObject *)GetDiskObject(wbArg->wa_Name);
      if(diskObj)
         {
         toolArray = diskObj->do_ToolTypes;
         if(string = FindToolType(toolArray,"DENSITY"))
            {
			density = atol(string);
			if (density <0 || density >DENSITYMAX) density = DENSITYDEF;
            }
         if(string = FindToolType(toolArray,"ALL"))
            {
			all = TRUE;
			}
         if(string = FindToolType(toolArray,"SHOW"))
            {
			show = TRUE;
			}
         FreeDiskObject(diskObj);
         }
      CloseLibrary(IconBase);
      }
}

      
getCLIargs(argc,argv)
int argc;
char *argv[];
{
    register char  *p;

	/* get command name */
    myname = (argc-- < 1) ? "PrFont" : *argv++;

    while (argc > 0) 
		{
		argc--;			/* One fewer to process  */
		p = *argv++;	/* Get arg pointer and bump to next */

		if (*p != '-')  /* If no '-' it is invalid */
			{
			usage();
			done(14);
			}

		p++;
    	switch (*p) {
	    	case 'a':		/* All - print all characters */
				all = TRUE;
				break;
	    	case 's':		/* Show - no print  */
				show = TRUE;
				break;
	    	case 'd':		/* print density */
				density = atoi(++p);
				if (density <0 || density >DENSITYMAX) density = DENSITYDEF;
				break;
	    	default:		/* Wrong option  */
			usage();
			done(14);
		    }
		}

}

usage()
{
	fprintf(stderr,"Usage:%s: -d# -s -a\n",myname);
	fprintf(stderr,"Print All Fonts\n");
	fprintf(stderr,"-d#   Density of the printer graphics (1-7)\n");
	fprintf(stderr,"-s    Show on screen only - don't print\n");
	fprintf(stderr,"-a    Show All characters, not 1 line\n");
}

#ifdef AZTEC_C

_wb_parse()  /* keep aztec's paws off it */
{
}
#endif
