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.
pull/235/head
Nils Maier 2014-05-29 17:24:50 +02:00
parent 3c55400d23
commit d2e38aab36
4 changed files with 6 additions and 4 deletions

View File

@ -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.");

View File

@ -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(),

View File

@ -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());

View File

@ -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;