//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>
-#include <unistd.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;
}