diff options
author | Kamil Dudka <kdudka@redhat.com> | 2015-04-23 14:01:08 +0200 |
---|---|---|
committer | Kamil Dudka <kdudka@redhat.com> | 2015-04-23 14:42:07 +0200 |
commit | 710a2e99b569d3f7bbc2771badcb1add87bb7e09 (patch) | |
tree | b6e1087799e732a7ee41aeee866ebabe3b5686c1 /src | |
parent | 79478fdb68ecdb2e36ae634262133670ada44084 (diff) |
curl -z: do not write empty file on unmet condition
This commit fixes a regression introduced in curl-7_41_0-186-g261a0fe.
It also introduces a regression test 1424 based on tests 78 and 1423.
Reported-by: Viktor Szakats
Bug: https://github.com/bagder/curl/issues/237
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) |