/* * * do_args.c - Argument processing - WB or CLI * */ #include #include #include #include #include #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