parseconfig: dash options can't specified with colon or equals
Bug: http://curl.haxx.se/bug/view.cgi?id=1297 Reported-by: Michael Osipov
This commit is contained in:
parent
d81cbbcc2c
commit
0db811b69b
28
docs/curl.1
28
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:
|
||||
|
@ -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) */
|
||||
|
Loading…
Reference in New Issue
Block a user