From 6f8fe67ace4346c3c22fb3348d54ba1cfeb59669 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 27 Oct 2005 21:02:01 +0000 Subject: tommink[at]post.pl reported in bug report #1337723 (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload binary data from stdin on Windows if the data contained control-Z (hex 1a) since that is treated as end-of-file when read in text mode. Gisle Vanem pointed out the fix, and I made both -T and --data-binary take advantage of it. --- src/main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index cd42b0d06..33200cea0 100644 --- a/src/main.c +++ b/src/main.c @@ -1797,8 +1797,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */ nextarg++; /* pass the @ */ - if(curlx_strequal("-", nextarg)) + if(curlx_strequal("-", nextarg)) { file = stdin; +#ifdef O_BINARY + if(subletter == 'b') /* forced binary */ + setmode(fileno(stdin), O_BINARY); +#endif + } else { file = fopen(nextarg, "rb"); if(!file) @@ -3620,6 +3625,9 @@ operate(struct Configurable *config, int argc, char *argv[]) } else if(uploadfile && curlx_strequal(uploadfile, "-")) { +#ifdef O_BINARY + setmode(fileno(stdin), O_BINARY); +#endif infd = stdin; } -- cgit v1.2.3