aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index a4685acf5..f99c24538 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;
}