mirror of
https://github.com/curl/curl.git
synced 2026-07-28 04:03:14 +03:00
tool: improve config error messaging
- make sure that errors for specific options in config files identify the file, line number and shows the error about the correct option - improve some error message wording - add warning for leading single quote of arguments in config files (verified in test 1712) - adjust test error outputs accordingly test1712 introduces mode=warn Use the mode="warn" attribute if the output curl warning output, as it then makes the check without newlines and the prefix to better handle that the lines may wrap at different points depending on the lengths of the lines and terminal width. Fixes #20598 Closes #20666
This commit is contained in:
parent
912aa7c867
commit
8e3a2a64d1
8 changed files with 99 additions and 10 deletions
|
|
@ -336,6 +336,7 @@ struct LongShort {
|
|||
typedef enum {
|
||||
PARAM_OK = 0,
|
||||
PARAM_OPTION_UNKNOWN,
|
||||
PARAM_CONFIG_OPTION_UNKNOWN,
|
||||
PARAM_REQUIRES_PARAMETER,
|
||||
PARAM_BAD_USE,
|
||||
PARAM_HELP_REQUESTED,
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ const char *param2text(ParameterError error)
|
|||
return "had unsupported trailing garbage";
|
||||
case PARAM_OPTION_UNKNOWN:
|
||||
return "is unknown";
|
||||
case PARAM_CONFIG_OPTION_UNKNOWN:
|
||||
return "found an unknown config option";
|
||||
case PARAM_REQUIRES_PARAMETER:
|
||||
return "requires parameter";
|
||||
case PARAM_BAD_USE:
|
||||
|
|
|
|||
|
|
@ -172,6 +172,11 @@ ParameterError parseconfig(const char *filename, int max_recursive,
|
|||
param = curlx_dyn_len(&pbuf) ? curlx_dyn_ptr(&pbuf) : CURL_UNCONST("");
|
||||
}
|
||||
else {
|
||||
if(*line == '\'') {
|
||||
warnf("%s:%d Option '%s' uses argument with leading single quote. "
|
||||
"It is probably a mistake. Consider double quotes.",
|
||||
filename, lineno, option);
|
||||
}
|
||||
param = line; /* parameter starts here */
|
||||
while(*line && !ISSPACE(*line)) /* stop also on CRLF */
|
||||
line++;
|
||||
|
|
@ -192,7 +197,7 @@ ParameterError parseconfig(const char *filename, int max_recursive,
|
|||
case '#': /* comment */
|
||||
break;
|
||||
default:
|
||||
warnf("%s:%d: warning: '%s' uses unquoted whitespace. "
|
||||
warnf("%s:%d Option '%s' uses argument with unquoted whitespace. "
|
||||
"This may cause side-effects. Consider double quotes.",
|
||||
filename, lineno, option);
|
||||
}
|
||||
|
|
@ -240,11 +245,11 @@ ParameterError parseconfig(const char *filename, int max_recursive,
|
|||
res != PARAM_VERSION_INFO_REQUESTED &&
|
||||
res != PARAM_ENGINES_REQUESTED &&
|
||||
res != PARAM_CA_EMBED_REQUESTED) {
|
||||
/* only show error in the first level config call */
|
||||
if(max_recursive == CONFIG_MAX_LEVELS) {
|
||||
const char *reason = param2text(res);
|
||||
errorf("%s:%d: '%s' %s", filename, lineno, option, reason);
|
||||
}
|
||||
const char *reason = param2text(res);
|
||||
errorf("%s:%d config file option '%s' %s",
|
||||
filename, lineno, option, reason);
|
||||
if(res == PARAM_OPTION_UNKNOWN)
|
||||
res = PARAM_CONFIG_OPTION_UNKNOWN;
|
||||
err = res;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue