- Eric Wong introduced support for the new option -T. (dot) that makes curl
read stdin in a non-blocking fashion. This also brings back -T- (minus) to the previous blocking behavior since it could break stuff for people at times.
This commit is contained in:
parent
6ede4ce79d
commit
95c2b205a4
6
CHANGES
6
CHANGES
@ -6,6 +6,12 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Daniel Stenberg (24 Aug 2009)
|
||||||
|
- Eric Wong introduced support for the new option -T. (dot) that makes curl
|
||||||
|
read stdin in a non-blocking fashion. This also brings back -T- (minus) to
|
||||||
|
the previous blocking behavior since it could break stuff for people at
|
||||||
|
times.
|
||||||
|
|
||||||
Michal Marek (21 Aug 2009)
|
Michal Marek (21 Aug 2009)
|
||||||
- With CURLOPT_PROXY_TRANSFER_MODE, avoid sending invalid URLs like
|
- With CURLOPT_PROXY_TRANSFER_MODE, avoid sending invalid URLs like
|
||||||
ftp://example.com;type=i if the user specified ftp://example.com without the
|
ftp://example.com;type=i if the user specified ftp://example.com without the
|
||||||
|
@ -9,7 +9,7 @@ Curl and libcurl 7.19.7
|
|||||||
|
|
||||||
This release includes the following changes:
|
This release includes the following changes:
|
||||||
|
|
||||||
o
|
o -T. is now for non-blocking uploading from stdin
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
@ -19,6 +19,7 @@ This release includes the following bugfixes:
|
|||||||
o data corruption issue with re-connected transfers
|
o data corruption issue with re-connected transfers
|
||||||
o use after free if we're completed but easy_conn not NULL (pipelined)
|
o use after free if we're completed but easy_conn not NULL (pipelined)
|
||||||
o missing strdup() return code check
|
o missing strdup() return code check
|
||||||
|
o CURLOPT_PROXY_TRANSFER_MODE could pass along wrong syntax
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
@ -27,6 +28,7 @@ This release includes the following known bugs:
|
|||||||
This release would not have looked like this without help, code, reports and
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet
|
Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet,
|
||||||
|
Michal Marek, Eric Wong
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
@ -1183,6 +1183,9 @@ file name to use. That will most likely cause the upload operation to fail. If
|
|||||||
this is used on a HTTP(S) server, the PUT command will be used.
|
this is used on a HTTP(S) server, the PUT command will be used.
|
||||||
|
|
||||||
Use the file name "-" (a single dash) to use stdin instead of a given file.
|
Use the file name "-" (a single dash) to use stdin instead of a given file.
|
||||||
|
Alternately, the file name "." (a single period) may be specified instead
|
||||||
|
of "-" to use stdin in non-blocking mode to allow reading server output
|
||||||
|
while stdin is being uploaded.
|
||||||
|
|
||||||
You can specify one -T for each URL on the command line. Each -T + URL pair
|
You can specify one -T for each URL on the command line. Each -T + URL pair
|
||||||
specifies what to upload and to where. curl also supports "globbing" of the -T
|
specifies what to upload and to where. curl also supports "globbing" of the -T
|
||||||
|
15
src/main.c
15
src/main.c
@ -3953,6 +3953,10 @@ static void dumpeasycode(struct Configurable *config)
|
|||||||
curl_slist_free_all(easycode);
|
curl_slist_free_all(easycode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool stdin_upload(const char *uploadfile)
|
||||||
|
{
|
||||||
|
return curlx_strequal(uploadfile, "-") || curlx_strequal(uploadfile, ".");
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
operate(struct Configurable *config, int argc, argv_item_t argv[])
|
operate(struct Configurable *config, int argc, argv_item_t argv[])
|
||||||
@ -4417,7 +4421,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
infdopen=FALSE;
|
infdopen=FALSE;
|
||||||
if(uploadfile && !curlx_strequal(uploadfile, "-")) {
|
if(uploadfile && !stdin_upload(uploadfile)) {
|
||||||
/*
|
/*
|
||||||
* We have specified a file to upload and it isn't "-".
|
* We have specified a file to upload and it isn't "-".
|
||||||
*/
|
*/
|
||||||
@ -4511,11 +4515,14 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
|
|||||||
uploadfilesize=fileinfo.st_size;
|
uploadfilesize=fileinfo.st_size;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(uploadfile && curlx_strequal(uploadfile, "-")) {
|
else if(uploadfile && stdin_upload(uploadfile)) {
|
||||||
SET_BINMODE(stdin);
|
SET_BINMODE(stdin);
|
||||||
infd = STDIN_FILENO;
|
infd = STDIN_FILENO;
|
||||||
if (curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
|
if (curlx_strequal(uploadfile, ".")) {
|
||||||
warnf(config, "fcntl failed on fd=%d: %s\n", infd, strerror(errno));
|
if (curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
|
||||||
|
warnf(config,
|
||||||
|
"fcntl failed on fd=%d: %s\n", infd, strerror(errno));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(uploadfile && config->resume_from_current)
|
if(uploadfile && config->resume_from_current)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user