/*
 *
 *    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>

#define DELAYMAX 100
#define DELAYDEF 0
#define STRINGMAX 100

extern struct WBStartup *WBenchMsg;
extern char title[];
extern long delay;
char filename[STRINGMAX];
char title[STRINGMAX];    /* Window title */
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,"DELAY"))
            {
			delay = atol(string);
			if (delay <0 || delay >DELAYMAX) delay = DELAYDEF;
            }
         if(string = FindToolType(toolArray,"TITLE"))
            {
			if (*string != '\0') 
				{
				strncpy(title, string,STRINGMAX-1);
				title[STRINGMAX-1] = '\0';
				}
			}
         if(string = FindToolType(toolArray,"FILE"))
            {
			if (*string != '\0') 
				{
				strncpy(filename, string,STRINGMAX-1);
				filename[STRINGMAX-1] = '\0';
				}
			}
         FreeDiskObject(diskObj);
         }
      CloseLibrary(IconBase);
      }
}

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

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

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

		if (*p != '-')  /* If no '-' it is the filename */
			{
			strncpy(filename, p,STRINGMAX-1);
			filename[STRINGMAX-1] = '\0';
			continue;
			}

		p++;
    	switch (*p) {
	    	case 't':		/* Title  */
				strncpy(title, ++p,STRINGMAX-1);
				title[sizeof(title)-1] = '\0';
				break;
	    	case 'd':		/* delay in 1/50 sec. */
				delay = atoi(++p);
				if (delay <0 || delay >DELAYMAX) delay = DELAYDEF;
				break;
	    	default:		/* Wrong option  */
			usage();
			done(14);
		    }
		}

}

usage()
{
	fprintf(stderr,"Usage:%s: -d# -tstr file\n",myname);
	fprintf(stderr,"Workbench Application Skeleton\n");
	fprintf(stderr,"-d#   delay for do_it routine in 1/50 sec\n");
	fprintf(stderr,"-tstr string for window title\n");
}

#ifdef AZTEC_C

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