Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
/**
* @file clitkXdrImageIO.cxx
* @author Simon Rit <simon.rit@gmail.com>
#if !defined(unix) && !defined(__APPLE__)
//#define _read readfix
#endif
-#define AVSINT ptrdiff_t
+#define AVSINT std::ptrdiff_t
#define AVS_ERROR
#define AVS_OK
//From portdefs.h
#if defined(unix) || defined(__APPLE__)
#define O_BINARY 0
-#define setmode(a,b) 0
+//#define setmode(a,b) 0 // comment by ds
#endif
#ifndef __LARGE__
#include <math.h>
#include <stdlib.h>
#include <limits.h>
+#ifndef _WIN32
+# include <unistd.h>
+#endif
#if !defined(unix) && !defined(__APPLE__)
#include <io.h>
#endif
#include <algorithm>
-#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
{
// 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);
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;
for (i=0; i<GetNumberOfDimensions(); i++) {
if (!raw) {
- sprintf(temp, "dim%d=%d\n", i+1, GetDimensions(i));
+ sprintf(temp, "dim%d=%lu\n", i+1, GetDimensions(i));
slen = strlen(temp);
if (!checked_write(f, temp, slen, buffer)) {
free(pCompressed);
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;
}