]> granicus.if.org Git - curl/commitdiff
src/tool_operate: create output file on successful download
authorKamil Dudka <kdudka@redhat.com>
Mon, 30 Mar 2015 11:56:30 +0000 (13:56 +0200)
committerKamil Dudka <kdudka@redhat.com>
Wed, 8 Apr 2015 07:43:08 +0000 (09:43 +0200)
... of an empty file

Bug: https://github.com/bagder/curl/issues/183

RELEASE-NOTES
src/tool_cb_wrt.h
src/tool_operate.c

index c4aafacfd71c8892d583d5513250e18310c0c5f2..60083e2227dfa29afa2ca7160ae4036dfa048184 100644 (file)
@@ -14,6 +14,7 @@ This release includes the following changes:
  o curl: add --false-start option
  o add CURLOPT_PATH_AS_IS
  o curl: add --path-as-is option
+ o curl: create output file on successful download of an empty file [21]
 
 This release includes the following bugfixes:
 
@@ -154,3 +155,4 @@ References to bug reports and discussions on issues:
  [18] = http://curl.haxx.se/bug/view.cgi?id=1486
  [19] = https://github.com/bagder/curl/issues/195
  [20] = https://github.com/bagder/curl/issues/192
+ [21] = https://github.com/bagder/curl/issues/183
index 380d8dd6af4af69353f4088c2089b69952acd001..ecbefa80833ddb10ee63542815a331f17438173f 100644 (file)
@@ -29,5 +29,8 @@
 
 size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata);
 
+/* create a local file for writing, return TRUE on success */
+bool tool_create_output_file(struct OutStruct *outs);
+
 #endif /* HEADER_CURL_TOOL_CB_WRT_H */
 
index 01a61f9a79ce7928b9e83061d2c54975583a6ae9..771e42da6a92df867ec85ec1590c5df4a1aa9784 100644 (file)
@@ -1388,6 +1388,13 @@ 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(outs.is_cd_filename && outs.stream && !global->mute &&
              outs.filename)
             printf("curl: Saved to filename '%s'\n", outs.filename);