diff --git a/src/main.c b/src/main.c index a4685acf52d6289abc705a49da37a9a7af6f5c7a..f99c245384e434c838da998273094908d58cc578 100644 --- a/src/main.c +++ b/src/main.c @@ -510,6 +510,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ time_t now; int hit=-1; bool longopt=FALSE; + bool singleopt=FALSE; /* when true means '-o foo' used '-ofoo' */ + /* single-letter, long-name, @@ -640,7 +642,11 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ if(hit < 0) { return PARAM_OPTION_UNKNOWN; } - if((!nextarg || !*nextarg) && aliases[hit].extraparam) { + if(!longopt && flag[1]) { + nextarg=&flag[1]; /* this is the actual extra parameter */ + singleopt=TRUE; /* don't loop anymore after this */ + } + else if((!nextarg || !*nextarg) && aliases[hit].extraparam) { return PARAM_REQUIRES_PARAMETER; } else if(nextarg && aliases[hit].extraparam) @@ -1056,7 +1062,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ } hit = -1; - } while(*++parse && !*usedarg); + } while(!singleopt && *++parse && !*usedarg); return PARAM_OK; }