X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkXdrImageIOWriter.cxx;h=19567aaec1c58ac98895460d945fa6c5f71e0f77;hb=5a05b543778b62236f31fbb5e0db507e0e0c733d;hp=1e826db7d6ab07b49142085d84d2ce6180069fba;hpb=faf73a151b8b24e5590a39d58dd69040f0ff1303;p=clitk.git diff --git a/common/clitkXdrImageIOWriter.cxx b/common/clitkXdrImageIOWriter.cxx index 1e826db..19567aa 100644 --- a/common/clitkXdrImageIOWriter.cxx +++ b/common/clitkXdrImageIOWriter.cxx @@ -41,7 +41,6 @@ //From portdefs.h #if defined(unix) || defined(__APPLE__) #define O_BINARY 0 -#define setmode(a,b) 0 #endif #ifndef __LARGE__ @@ -97,7 +96,9 @@ void clitk::XdrImageIO::Write(const void* buffer) #include #include #include -#include +#ifndef _WIN32 +# include +#endif #if !defined(unix) && !defined(__APPLE__) #include #endif @@ -106,7 +107,7 @@ void clitk::XdrImageIO::Write(const void* buffer) #include -#ifdef WIN32 +#ifdef _WIN32 // don't use min() and max() macros indirectly defined by windows.h, // but use portable std::min() and std:max() instead #ifndef NOMINMAX @@ -254,7 +255,7 @@ static int wxdr_write(int handle, const void * buf, unsigned len) { // if (handle == 1) // stdout if (handle == fileno(stdout)) { -#ifdef WIN32 +#ifdef _WIN32 // Behave as C standard library write(): return number of bytes // written or -1 and errno set on error. fflush(stdout); @@ -835,6 +836,12 @@ void clitk::XdrImageIO::WriteImage(const char* file, char* headerinfo, char* hea char *buf2; size_t slen; +#ifdef _WIN32 + int oldFMode; + _get_fmode(&oldFMode); + _set_fmode(O_BINARY); /* default binary i/o */ +#endif + if (bLittleEndian) swap_test = 0x00000001; @@ -1201,5 +1208,10 @@ WRITE_COORDS: if (f != fileno(stdout)) close(f); if (getsize) return; + +#ifdef _WIN32 + _set_fmode(oldFMode ? oldFMode : _O_TEXT); /* restore default binary i/o */ +#endif + return AVS_OK; }