X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fcommon%2Fargs.c;h=d7e9d7e88bc664162c1ac080c7f36d214f4e5fe9;hb=7a93887006449450b8fbffab3d54c3e271094c79;hp=7c6c8feb3183d6ad47bf0483461428cace0292a5;hpb=c62d28102c77e19c291c78bf6bf7f0a81abd54b9;p=fceu.git diff --git a/drivers/common/args.c b/drivers/common/args.c index 7c6c8fe..d7e9d7e 100644 --- a/drivers/common/args.c +++ b/drivers/common/args.c @@ -33,15 +33,15 @@ #include "../../types.h" #include "args.h" -void ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps) +static int ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps) { - int y=0; + int y=0,ret=0; - do + while(argsps[y].var || argsps[y].subs) { if(!argsps[y].name) { - ParseEA(x,argc,argv,(void *)argsps[y].var); + ret = ParseEA(x,argc,argv,(void *)argsps[y].var); y++; continue; } @@ -50,7 +50,7 @@ void ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps) if(argsps[y].subs) { if((x+1)>=argc) - break; + return 0; if(argsps[y].substype&0x8000) { *(int *)argsps[y].subs&=~(argsps[y].substype&(~0x8000)); @@ -69,23 +69,35 @@ void ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps) free(*(char **)argsps[y].subs); if(!( *(char **)argsps[y].subs=malloc(strlen(argv[x+1])+1) )) break; - } + } strcpy(*(char **)argsps[y].subs,argv[x+1]); break; } + ret=2; } - if(argsps[y].var) + else if(argsps[y].var) + { *argsps[y].var=1; + ret=1; + } + break; } y++; - } while(argsps[y].var || argsps[y].subs); + } + return ret; } -void ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps) +/* returns 1 if last arg was usccessfully parsed */ +int ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps) { - int x; + int x, ret=0; for(x=0;x