From 6a7261359b4c7ebddff0c096468047077e7d06ef Mon Sep 17 00:00:00 2001 From: Anthony Avina Date: Sat, 25 Apr 2015 14:49:39 -0400 Subject: tool: New option --data-raw to HTTP POST data, '@' allowed. Add new option --data-raw which is almost the same as --data but does not have a special interpretation of the @ character. Prior to this change there was no (easy) way to pass the @ character as the first character in POST data without it being interpreted as a special character. Bug: https://github.com/bagder/curl/issues/198 Reported-by: Jens Rantil --- src/tool_getparam.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/tool_getparam.c') diff --git a/src/tool_getparam.c b/src/tool_getparam.c index 121afc44d..1b5d6d2b0 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -196,6 +196,7 @@ static const struct LongShort aliases[]= { {"c", "cookie-jar", TRUE}, {"C", "continue-at", TRUE}, {"d", "data", TRUE}, + {"dr", "data-raw", TRUE}, {"da", "data-ascii", TRUE}, {"db", "data-binary", TRUE}, {"de", "data-urlencode", TRUE}, @@ -1099,6 +1100,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ char *postdata = NULL; FILE *file; size_t size = 0; + bool raw_mode = (subletter == 'r'); if(subletter == 'e') { /* --data-urlencode*/ /* [name]=[content], we encode the content part only @@ -1124,7 +1126,6 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ } if('@' == is_file) { /* a '@' letter, it means that a file name or - (stdin) follows */ - if(curlx_strequal("-", p)) { file = stdin; set_binmode(stdin); @@ -1185,7 +1186,7 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ return PARAM_NO_MEM; } } - else if('@' == *nextarg) { + else if('@' == *nextarg && !raw_mode) { /* the data begins with a '@' letter, it means that a file name or - (stdin) follows */ nextarg++; /* pass the @ */ -- cgit v1.2.3