int main(int argc, char **argv) { struct nandsim_command *cmdopts; int retcode = 0; if (argc < 2) { cmdhelp(argc, argv); retcode = EX_USAGE; } else { cmdopts = getcommand(argv[1]); if (cmdopts != NULL && cmdopts->commandfunc != NULL) { if (checkusage(argc, cmdopts->req_argc, argv) == 1) { /* Print command specific usage */ printf("nandsim %s", cmdopts->usagestring); return (EX_USAGE); } retcode = cmdopts->commandfunc(argc, argv); if (retcode == EX_USAGE) { /* Print command-specific usage */ printf("nandsim %s", cmdopts->usagestring); } else if (retcode == EX_OSFILE) { error("Could not open device file"); } } else { error("Unknown command!"); retcode = EX_USAGE; } } return (retcode); }
void initparam(string *argv, string *defv) { int nparam; param *pvec; progname = argv[0]; // initialize program name nparam = 1 + countdefaults(defv); // include argv0 in count pvec = (param *) allocate(sizeof(param) * (nparam + 1)); setprogram(pvec, argv[0]); // install 0th argument copydefaults(pvec, defv); // set up default values if (argv[1] != NULL) // if first arg is given... checkhelp(pvec, argv[1]); // see if help is requested setarguments(pvec, argv); // args override defaults checkusage(pvec); // complain if args missing paramvec = pvec; // install parameter vector savehistory(pvec); // save activation record }