in scripts/hypervisor.c [41:105]
static int parseopt(int argc, char *argv[])
{
int ch, i;
char *token, *tmpptr, *cmdstr;
cmdstr = cmd = NULL;
daemonize = 0;
for(i = 0; i < MAXOPT + 1; i++){
cmdopt[i] = NULL;
}
struct option long_options[] = {
{"daemon",optional_argument,NULL,'d'},
{"exec",required_argument,NULL,'e'},
{0,0,0,0},
};
while((ch=getopt_long(argc, argv, "dec:", long_options, NULL)) != -1) {
switch(ch)
{
case 'e':
if((cmdstr = strdup(optarg)) == NULL )
return -1;
break;
case 'd':
daemonize = 1;
break;
default:
USAGE();
return -1;
}
}
if(cmdstr == NULL){
USAGE();
return -1;
}
for(i = 0;i < MAXOPT + 1;cmdstr = NULL, i++){
token = strtok_r(cmdstr, " \t\n", &tmpptr);
if(token == NULL){
break;
} else {
cmdopt[i] = strdup(token);
if(i == 0){
cmd = strdup(token);
}
}
}
if( (cmd == NULL) || (strlen(cmd) == 0) ){
fprintf(stderr, "Error, cmd should not be empty.\n");
return -1;
}
if(i == MAXOPT + 1){
fprintf(stderr, "Argument too long\n");
return -1;
}
cmdopt[i] = NULL;
return 0;
}