aboutsummaryrefslogtreecommitdiff
path: root/lib/formdata.c
diff options
context:
space:
mode:
authorPatrick Monnerat <patrick@monnerat.net>2017-09-06 13:42:03 +0100
committerPatrick Monnerat <patrick@monnerat.net>2017-09-06 13:42:03 +0100
commitc96d96bc5fd334f90fce04bfe89a9ecbbe8e6094 (patch)
treea61978674bdcc793d825a2eab26568bc66af21a3 /lib/formdata.c
parentd1da545a6881dbeafff86077f696f0dc22d3fc81 (diff)
mime: drop internal FILE * support.
- The part kind MIMEKIND_FILE and associated code are suppressed. - Seek data origin offset not used anymore: suppressed. - MIMEKIND_NAMEDFILE renamed MIMEKIND_FILE; associated fields/functions renamed accordingly. - Curl_getformdata() processes stdin via a callback.
Diffstat (limited to 'lib/formdata.c')
-rw-r--r--lib/formdata.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/formdata.c b/lib/formdata.c
index 9bfe7b542..61ae78d91 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -897,8 +897,16 @@ CURLcode Curl_getformdata(struct Curl_easy *data,
clen = -1;
if(post->flags & (HTTPPOST_FILENAME | HTTPPOST_READFILE)) {
- if(!strcmp(file->contents, "-"))
- result = Curl_mime_file(part, stdin, 0);
+ if(!strcmp(file->contents, "-")) {
+ /* There are a few cases where the code below won't work; in
+ particular, freopen(stdin) by the caller is not guaranteed
+ to result as expected. This feature has been kept for backward
+ compatibility: use of "-" pseudo file name should be avoided. */
+ result = curl_mime_data_cb(part, (curl_off_t) -1,
+ (curl_read_callback) fread,
+ (curl_seek_callback) fseek,
+ NULL, (void *) stdin);
+ }
else
result = curl_mime_filedata(part, file->contents);
if(!result && (post->flags & HTTPPOST_READFILE))