Explorar el Código

ENH: make sure files are binary for download and make status a pair of value string

Bill Hoffman hace 17 años
padre
commit
0bfad2946d
Se han modificado 2 ficheros con 10 adiciones y 4 borrados
  1. 5 3
      Source/cmFileCommand.cxx
  2. 5 1
      Source/cmFileCommand.h

+ 5 - 3
Source/cmFileCommand.cxx

@@ -1970,7 +1970,7 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string>
       }
     i++;
     }
-  std::ofstream fout(file.c_str());
+  std::ofstream fout(file.c_str(), std::ios::binary);
   if(!fout)
     {
     this->SetError("FILE(DOWNLOAD url file TIMEOUT time) can not open "
@@ -2008,8 +2008,10 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string>
   curl_easy_cleanup(curl);
   if(statusVar.size())
     {
-    this->Makefile->AddDefinition(statusVar.c_str(),
-                                  curl_easy_strerror(res));
+    cmOStringStream result;
+    result << (int)res << ";\"" << curl_easy_strerror(res) << "\"";
+    this->Makefile->AddDefinition(statusVar.c_str(), 
+                                  result.str().c_str());
     }
   curl_global_cleanup();
   if(chunkDebug.size())

+ 5 - 1
Source/cmFileCommand.h

@@ -150,7 +150,11 @@ public:
       "DOWNLOAD will download the givin URL to the given file. "
       "If LOG var is specified a log of the download will be put in var. "
       "If STATUS var is specified the status of the operation will"
-      " be put in var. If TIMEOUT time is specified, the operation will "
+      " be put in var. The status is returned in a list of length 2. "
+      "The first element is the numeric return value for the operation, "
+      "and the second element is a string value for the error. A 0 "
+      "numeric error means no error in the operation. "
+      "If TIMEOUT time is specified, the operation will "
       "timeout after time seconds, time can be specified as a float.\n";
     }