home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * 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
-