diff options
author | Patrick Monnerat <patrick@monnerat.net> | 2017-09-03 14:45:43 +0100 |
---|---|---|
committer | Patrick Monnerat <patrick@monnerat.net> | 2017-09-03 14:45:43 +0100 |
commit | 1a3f4c19919b09ff0fd0ba228b06a217d85d4265 (patch) | |
tree | 12c70f11b95ded1acfac5b28eeb7499d0ec99e59 /lib | |
parent | 045b076ae8362006f6977a80e6a5e3ef0eb903eb (diff) |
mime: remove support "-" stdin pseudo-file name in curl_mime_filedata().
This feature is badly supported in Windows: as a replacement, a caller has
to use curl_mime_data_cb() with fread, fseek and possibly fclose
callbacks to process opened files.
The cli tool and documentation are updated accordingly.
The feature is however kept internally for form API compatibility, with
the known caveats it always had.
As a side effect, stdin size is not determined by the cli tool even if
possible and this results in a chunked transfer encoding. Test 173 is
updated accordingly.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/formdata.c | 5 | ||||
-rw-r--r-- | lib/mime.c | 15 |
2 files changed, 15 insertions, 5 deletions
diff --git a/lib/formdata.c b/lib/formdata.c index 129086dee..b7ea21c8c 100644 --- a/lib/formdata.c +++ b/lib/formdata.c @@ -897,7 +897,10 @@ CURLcode Curl_getformdata(struct Curl_easy *data, clen = -1; if(post->flags & (HTTPPOST_FILENAME | HTTPPOST_READFILE)) { - result = curl_mime_filedata(part, file->contents); + if(!strcmp(file->contents, "-")) + result = Curl_mime_file(part, stdin, 0); + else + result = curl_mime_filedata(part, file->contents); if(!result && (post->flags & HTTPPOST_READFILE)) result = curl_mime_filename(part, NULL); } diff --git a/lib/mime.c b/lib/mime.c index 11d387d62..9e1336475 100644 --- a/lib/mime.c +++ b/lib/mime.c @@ -634,8 +634,18 @@ static int mime_part_rewind(struct Curl_mimepart *part) targetstate = MIMESTATE_BODY; if(part->state.state > targetstate) { res = CURL_SEEKFUNC_CANTSEEK; - if(part->seekfunc) + if(part->seekfunc) { res = part->seekfunc(part->arg, part->origin, SEEK_SET); + switch(res) { + case CURL_SEEKFUNC_OK: + case CURL_SEEKFUNC_FAIL: + case CURL_SEEKFUNC_CANTSEEK: + break; + default: + res = CURL_SEEKFUNC_FAIL; + break; + } + } } if(res == CURL_SEEKFUNC_OK) @@ -907,9 +917,6 @@ CURLcode curl_mime_filedata(struct Curl_mimepart *part, const char *filename) if(!part || !filename) return CURLE_BAD_FUNCTION_ARGUMENT; - if(!strcmp(filename, "-")) - return Curl_mime_file(part, stdin, 0); - if(stat(filename, &sbuf) || access(filename, R_OK)) result = CURLE_READ_ERROR; |