diff options
-rw-r--r-- | docs/curl.1 | 28 | ||||
-rw-r--r-- | src/tool_parsecfg.c | 14 |
2 files changed, 26 insertions, 16 deletions
diff --git a/docs/curl.1 b/docs/curl.1 index 57751ffd6..e94827f7b 100644 --- a/docs/curl.1 +++ b/docs/curl.1 @@ -722,16 +722,21 @@ See this online resource for further details: .IP "-K, --config <config file>" Specify which config file to read curl arguments from. The config file is a text file in which command line arguments can be written which then will be -used as if they were written on the actual command line. Options and their -parameters must be specified on the same config file line, separated by -whitespace, colon, the equals sign or any combination thereof (however, -the preferred separator is the equals sign). If the parameter is to contain -whitespace, the parameter must be enclosed within quotes. Within double -quotes, the following escape sequences are available: \\\\, \\", \\t, \\n, -\\r and \\v. A backslash preceding any other letter is ignored. If the -first column of a config line is a '#' character, the rest of the line will be -treated as a comment. Only write one option per physical line in the config -file. +used as if they were written on the actual command line. + +Options and their parameters must be specified on the same config file line, +separated by whitespace, colon, or the equals sign. Long option names can +optionally be given in the config file without the initial double dashes and +if so, the colon or equals characters can be used as separators. If the option +is specified with one or two dashes, there can be no colon or equals character +between the option and its parameter. + +If the parameter is to contain whitespace, the parameter must be enclosed +within quotes. Within double quotes, the following escape sequences are +available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash preceding any other +letter is ignored. If the first column of a config line is a '#' character, +the rest of the line will be treated as a comment. Only write one option per +physical line in the config file. Specify the filename to -K, --config as '-' to make curl read the file from stdin. @@ -742,9 +747,6 @@ line. So, it could look similar to this: url = "http://curl.haxx.se/docs/" -Long option names can optionally be given in the config file without the -initial double dashes. - When curl is invoked, it always (unless \fI-q\fP is used) checks for a default config file and uses it if found. The default config file is checked for in the following places in this order: diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c index 680688ab7..4d5145bcc 100644 --- a/src/tool_parsecfg.c +++ b/src/tool_parsecfg.c @@ -35,7 +35,10 @@ #include "memdebug.h" /* keep this as LAST include */ #define CURLRC DOT_CHAR "curlrc" -#define ISSEP(x) (((x) == '=') || ((x) == ':')) + +/* only acknowledge colon or equals as separators if the option was not + specified with an initial dash! */ +#define ISSEP(x,dash) (!dash && (((x) == '=') || ((x) == ':'))) static const char *unslashquote(const char *line, char *param); static char *my_get_line(FILE *fp); @@ -123,6 +126,7 @@ int parseconfig(const char *filename, char *param; int lineno = 0; bool alloced_param; + bool dashed_option; while(NULL != (aline = my_get_line(file))) { lineno++; @@ -146,7 +150,11 @@ int parseconfig(const char *filename, /* the option keywords starts here */ option = line; - while(*line && !ISSPACE(*line) && !ISSEP(*line)) + + /* the option starts with a dash? */ + dashed_option = option[0]=='-'?TRUE:FALSE; + + while(*line && !ISSPACE(*line) && !ISSEP(*line, dashed_option)) line++; /* ... and has ended here */ @@ -158,7 +166,7 @@ int parseconfig(const char *filename, #endif /* pass spaces and separator(s) */ - while(*line && (ISSPACE(*line) || ISSEP(*line))) + while(*line && (ISSPACE(*line) || ISSEP(*line, dashed_option))) line++; /* the parameter starts here (unless quoted) */ |