diff --git a/src/tool_getparam.h b/src/tool_getparam.h index 4d34541393..e3cbe5454a 100644 --- a/src/tool_getparam.h +++ b/src/tool_getparam.h @@ -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, diff --git a/src/tool_helpers.c b/src/tool_helpers.c index 2a84accf2c..a23c3a80e7 100644 --- a/src/tool_helpers.c +++ b/src/tool_helpers.c @@ -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: diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c index 01594644fb..33e91d1f0c 100644 --- a/src/tool_parsecfg.c +++ b/src/tool_parsecfg.c @@ -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; } } diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index ca44e3d2b0..ecbcc28fe9 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -229,7 +229,7 @@ test1670 test1671 \ test1680 test1681 test1682 test1683 \ \ test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 \ -test1708 test1709 test1710 test1711 \ +test1708 test1709 test1710 test1711 test1712 \ \ test1800 test1801 test1802 test1847 test1848 \ \ diff --git a/tests/data/test1712 b/tests/data/test1712 new file mode 100644 index 0000000000..2466939ff2 --- /dev/null +++ b/tests/data/test1712 @@ -0,0 +1,61 @@ + + + + +HTTP +--config + + + +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 6 +Connection: close +Content-Type: text/html +Funny-head: yesyes + +-foo- + + + +# Client-side + + +http + + +config file with argument using single quotes + + +data = 'arg-with-quote' + + +http://%HOSTIP:%HTTPPORT/%TESTNUMBER --config %LOGDIR/config --silent + + + +# Verify data after the test has been "shot" + + +POST /%TESTNUMBER HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* +Content-Length: 16 +Content-Type: application/x-www-form-urlencoded + +'arg-with-quote' + + +Warning: %LOGDIR/config:1 Option 'data' uses argument with leading single quote.%SP +Warning: It is probably a mistake. Consider double quotes. + + + diff --git a/tests/data/test459 b/tests/data/test459 index 5d62307728..7a2e1db7b3 100644 --- a/tests/data/test459 +++ b/tests/data/test459 @@ -54,8 +54,8 @@ Content-Type: application/x-www-form-urlencoded arg -Warning: %LOGDIR/config:1: warning: 'data' uses unquoted whitespace. This may%SP -Warning: cause side-effects. Consider double quotes. +Warning: %LOGDIR/config:1 Option 'data' uses argument with unquoted whitespace.%SP +Warning: This may cause side-effects. Consider double quotes.