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