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>
- #include "limits.h"
-
- /* The input data */
- extern double apr ; /* Anual percentage rate (-a) */
- extern double bb ; /* Beginning balence (-b) */
- extern double ad ; /* Annual Deposit (-d) */
- extern long yrs ; /* Years till retirement (-y) */
-
- extern int batch;
-
-
- char *name;
-
- double atof();
- long atol();
-
- extern struct WBStartup *WBenchMsg;
- 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;
- int any = 0;
-
- 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,"FILE"))
- {
- if (*string != '\0')
- {
- strncpy(filename, string,STRINGMAX-1);
- filename[STRINGMAX-1] = '\0';
- }
- }
- if(string = FindToolType(toolArray,"BALANCE"))
- {
- if (get_float(string,&bb)) any = 1;
- }
- if(string = FindToolType(toolArray,"INTEREST"))
- {
- if (get_float(string,&apr)) any = 1;
- }
- if(string = FindToolType(toolArray,"DEPOSIT"))
- {
- if (get_float(string,&ad)) any = 1;
- }
- if(string = FindToolType(toolArray,"YEARS"))
- {
- yrs = atol(string);
- any = 1;
- }
- FreeDiskObject(diskObj);
- }
- CloseLibrary(IconBase);
- if (any) put_values();
- }
- }
-
-
- /*
- * scan the CLI arg array for options
- */
-
- getCLIargs(argc,argv)
- int argc;
- char *argv[];
- {
- int len,cnt;
- int any = 0;
- batch = 1;
- for (cnt=1; cnt < argc; cnt++)
- {
- if (argv[cnt][0] != '-') /* If no '-' it is the filename */
- {
- strncpy(filename, argv[cnt],STRINGMAX-1);
- filename[STRINGMAX-1] = '\0';
- continue;
- }
- else
- { switch(argv[cnt][1])
- {
- case 'a':
-
- apr = atof(&argv[cnt][2]) ;
- if ( apr < MINAPR ||
- apr > MAXAPR)
- fatal("Bad -a value: %s", argv[cnt]) ;
- any++;
- break ;
-
- case 'b':
- bb = atof(&argv[cnt][2]) ;
- if (bb < MINBB)
- fatal("Bad -b value: %s", argv[cnt]) ;
- any++;
- break ;
-
- case 'w':
- batch = 0;
- break ;
-
- case 'd':
- ad = atof(&argv[cnt][2]) ;
- if (ad < MINAD)
- fatal("Bad -d value: %s", argv[cnt]) ;
- any++;
- break ;
-
-
- case 'y':
- yrs = atol(&argv[cnt][2]) ;
- if (yrs < MINYRS)
- fatal("Bad -y value: %s", argv[cnt]) ;
- any++;
- break ;
-
-
- case '?': /* help option */
- printf(" ira [-options]\n");
- printf(" IRA Version 2.0 - Calculate Nest-Egg\n");
- printf(" Options:\n");
- printf(" -ann.n : Anual percentage rate\n");
- printf(" -bnnnn.nn : Beginning balence\n");
- printf(" -dnnnn.nn : Yearly deposit\n");
- printf(" -ynn : Years till retirement\n");
- printf(" -w : Put up the window\n");
- printf(" -? : display this list.\n");
- exit(0);
-
- default:
- usage();
- }
- }
- }
- if (any) put_values();
- }
-
- usage()
- {
- printf("%s -? for help\n",name);
- exit(10);
- }
-
- fatal(arg1,arg2)
- char * arg1,arg2;
- {
- fprintf(stderr,arg1,arg2);
- usage();
- }
-
-
- #ifdef AZTEC_C
-
- _wb_parse() /* keep aztec's paws off it */
- {
- }
- #endif
-