Explorar o código

Use _setmode to set binary mode in mingw

The _CRT_fmode stuff was never working correctly anyway, and is entirely
unsupported in mingw-w64 these days, it seems.
Nils Maier %!s(int64=11) %!d(string=hai) anos
pai
achega
d2e38aab36
Modificáronse 4 ficheiros con 6 adicións e 4 borrados
  1. 1 1
      src/AppleTLSContext.cc
  2. 1 1
      src/LibgnutlsTLSContext.cc
  3. 1 1
      src/LibsslTLSContext.cc
  4. 3 1
      src/Platform.cc

+ 1 - 1
src/AppleTLSContext.cc

@@ -343,7 +343,7 @@ bool AppleTLSContext::tryAsPKCS12(const std::string& certfile)
 {
 #if defined(__MAC_10_6)
   std::stringstream ss;
-  BufferedFile(certfile.c_str(), "rb").transfer(ss);
+  BufferedFile(certfile.c_str(), BufferedFile::READ).transfer(ss);
   auto data = ss.str();
   if (data.empty()) {
     A2_LOG_ERROR("Couldn't read certificate file.");

+ 1 - 1
src/LibgnutlsTLSContext.cc

@@ -110,7 +110,7 @@ bool GnuTLSContext::addCredentialFile(const std::string& certfile,
 bool GnuTLSContext::addP12CredentialFile(const std::string& p12file)
 {
   std::stringstream ss;
-  BufferedFile(p12file.c_str(), "rb").transfer(ss);
+  BufferedFile(p12file.c_str(), BufferedFile::READ).transfer(ss);
   auto datastr = ss.str();
   const gnutls_datum_t data = {
     (unsigned char*)datastr.c_str(),

+ 1 - 1
src/LibsslTLSContext.cc

@@ -156,7 +156,7 @@ bool OpenSSLTLSContext::addCredentialFile(const std::string& certfile,
 bool OpenSSLTLSContext::addP12CredentialFile(const std::string& p12file)
 {
   std::stringstream ss;
-  BufferedFile(p12file.c_str(), "rb").transfer(ss);
+  BufferedFile(p12file.c_str(), BufferedFile::READ).transfer(ss);
 
   auto data = ss.str();
   void *ptr = const_cast<char*>(data.c_str());

+ 3 - 1
src/Platform.cc

@@ -158,7 +158,9 @@ bool Platform::setUp()
 #endif // HAVE_WINSOCK2_H
 
 #ifdef __MINGW32__
-  unsigned int _CRT_fmode = _O_BINARY;
+  (void)_setmode(_fileno(stdin), _O_BINARY);
+  (void)_setmode(_fileno(stdout), _O_BINARY);
+  (void)_setmode(_fileno(stderr), _O_BINARY);
 #endif // __MINGW32__
 
   return true;