improve commandline parsing more
This commit is contained in:
parent
548312eddd
commit
3513be6f7d
|
@ -33,9 +33,10 @@
|
|||
#include "../../types.h"
|
||||
#include "args.h"
|
||||
|
||||
void ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps)
|
||||
int ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps)
|
||||
{
|
||||
int y=0;
|
||||
int ret=1;
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -47,10 +48,12 @@ void ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps)
|
|||
}
|
||||
if(!strcmp(argv[x],argsps[y].name)) // A match.
|
||||
{
|
||||
//ret++;
|
||||
if(argsps[y].subs)
|
||||
{
|
||||
if((x+1)>=argc)
|
||||
break;
|
||||
ret++;
|
||||
if(argsps[y].substype&0x2000)
|
||||
{
|
||||
((void (*)(char *))argsps[y].subs)(argv[x+1]);
|
||||
|
@ -86,13 +89,20 @@ void ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps)
|
|||
}
|
||||
y++;
|
||||
} while(argsps[y].var || argsps[y].subs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps)
|
||||
int ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps)
|
||||
{
|
||||
int x;
|
||||
|
||||
for(x=0;x<argc;x++)
|
||||
ParseEA(x,argc,argv,argsps);
|
||||
for(x=0;x<argc;)
|
||||
{
|
||||
int temp = ParseEA(x,argc,argv,argsps);
|
||||
if(temp == 1 && x==argc-1)
|
||||
return argc-1;
|
||||
x += temp;
|
||||
}
|
||||
return argc;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,6 @@ typedef struct {
|
|||
int substype;
|
||||
} ARGPSTRUCT;
|
||||
|
||||
void ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps);
|
||||
int ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps);
|
||||
#define _DRIVERS_ARGH
|
||||
#endif
|
||||
|
|
|
@ -72,7 +72,7 @@ char *ParseArgies(int argc, char *argv[])
|
|||
return(0);
|
||||
}
|
||||
|
||||
ParseArguments(argc-1, &argv[1], FCEUArgs);
|
||||
int used = ParseArguments(argc-1, &argv[1], FCEUArgs);
|
||||
|
||||
return(argv[argc-1]);
|
||||
return(argv[used+1]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue