summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
0cfd2b2)
The old code could return an error message like
at least 1 non-option args required, 0 given
even if exactly 1 arg is required. So check this case and print
exactly 1 non-option args required, 0 given
instead. The check for the upper bound has the same issue. It is
considered a bug in the application if min_argc > max_argc, so check
for this case as well.
{
if (errctx)
*errctx = NULL;
{
if (errctx)
*errctx = NULL;
+ assert(min_argc <= max_argc);
if (lpr->num_inputs < min_argc) {
if (lpr->num_inputs < min_argc) {
- xasprintf(errctx, "at least %u non-option args required, "
- "%u given", min_argc, lpr->num_inputs);
+ xasprintf(errctx, "%s %u non-option args required, %u given",
+ min_argc < max_argc? "at least" : "exactly",
+ min_argc, lpr->num_inputs);
return -E_LLS_BAD_ARG_COUNT;
}
if (lpr->num_inputs > max_argc) {
return -E_LLS_BAD_ARG_COUNT;
}
if (lpr->num_inputs > max_argc) {
xasprintf(errctx, "no non-option args allowed, "
"%u given", lpr->num_inputs);
else
xasprintf(errctx, "no non-option args allowed, "
"%u given", lpr->num_inputs);
else
- xasprintf(errctx, "at most %u non-option args allowed, "
- "%u given", max_argc, lpr->num_inputs);
+ xasprintf(errctx, "%s %u non-option args allowed, "
+ "%u given", min_argc < max_argc?
+ "at most" : "exactly",
+ max_argc, lpr->num_inputs);
return -E_LLS_BAD_ARG_COUNT;
}
return 1;
return -E_LLS_BAD_ARG_COUNT;
}
return 1;