@@ -230,6 +230,7 @@ static const struct LongShort aliases[]= {
230230 {"da" , "data-ascii" , ARG_STRING },
231231 {"db" , "data-binary" , ARG_STRING },
232232 {"de" , "data-urlencode" , ARG_STRING },
233+ {"df" , "json" , ARG_STRING },
233234 {"D" , "dump-header" , ARG_FILENAME },
234235 {"e" , "referer" , ARG_STRING },
235236 {"E" , "cert" , ARG_FILENAME },
@@ -1386,7 +1387,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
13861387 size_t size = 0 ;
13871388 bool raw_mode = (subletter == 'r' );
13881389
1389- if (subletter == 'e' ) { /* --data-urlencode*/
1390+ if (subletter == 'e' ) { /* --data-urlencode */
13901391 /* [name]=[content], we encode the content part only
13911392 * [name]@[file name]
13921393 *
@@ -1489,7 +1490,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
14891490 "an empty POST.\n" , nextarg );
14901491 }
14911492
1492- if (subletter == 'b' )
1493+ if ((subletter == 'b' ) || /* --data-binary */
1494+ (subletter == 'f' ) /* --json */ )
14931495 /* forced binary */
14941496 err = file2memory (& postdata , & size , file );
14951497 else {
@@ -1516,6 +1518,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
15161518 if (postdata )
15171519 size = strlen (postdata );
15181520 }
1521+ if (subletter == 'f' )
1522+ config -> jsoned = TRUE;
15191523
15201524#ifdef CURL_DOES_CONVERSIONS
15211525 if (subletter != 'b' ) {
@@ -1540,13 +1544,21 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
15401544 return PARAM_NO_MEM ;
15411545 }
15421546 memcpy (config -> postfields , oldpost , (size_t )oldlen );
1543- /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
1544- config -> postfields [oldlen ] = '\x26' ;
1545- memcpy (& config -> postfields [oldlen + 1 ], postdata , size );
1546- config -> postfields [oldlen + 1 + size ] = '\0' ;
1547+ if (subletter != 'f' ) {
1548+ /* skip this treatment for --json */
1549+ /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
1550+ config -> postfields [oldlen ] = '\x26' ;
1551+ memcpy (& config -> postfields [oldlen + 1 ], postdata , size );
1552+ config -> postfields [oldlen + 1 + size ] = '\0' ;
1553+ config -> postfieldsize += size + 1 ;
1554+ }
1555+ else {
1556+ memcpy (& config -> postfields [oldlen ], postdata , size );
1557+ config -> postfields [oldlen + size ] = '\0' ;
1558+ config -> postfieldsize += size ;
1559+ }
15471560 Curl_safefree (oldpost );
15481561 Curl_safefree (postdata );
1549- config -> postfieldsize += size + 1 ;
15501562 }
15511563 else {
15521564 config -> postfields = postdata ;
@@ -2367,6 +2379,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
23672379 : NULL ;
23682380
23692381 result = getparameter (orig_opt , nextarg , & passarg , global , config );
2382+
23702383 curlx_unicodefree (nextarg );
23712384 config = global -> last ;
23722385 if (result == PARAM_NEXT_OPERATION ) {
0 commit comments