diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_operate.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/tool_operate.c b/src/tool_operate.c index 771e42da6..74e4002b1 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1388,12 +1388,17 @@ static CURLcode operate_do(struct GlobalConfig *global, #endif result = curl_easy_perform(curl); - if(!result && !outs.stream && !outs.bytes - /* we have received no data despite the transfer was successful - ==> force cration of an empty output file (if an output file - was specified) */ - && !tool_create_output_file(&outs)) - result = CURLE_WRITE_ERROR; + if(!result && !outs.stream && !outs.bytes) { + /* we have received no data despite the transfer was successful + ==> force cration of an empty output file (if an output file + was specified) */ + long cond_unmet = 0L; + /* do not create (or even overwrite) the file in case we get no + data because of unmet condition */ + curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &cond_unmet); + if(!cond_unmet && !tool_create_output_file(&outs)) + result = CURLE_WRITE_ERROR; + } if(outs.is_cd_filename && outs.stream && !global->mute && outs.filename) |