diff --git a/src/fdlib.h b/src/fdlib.h index ef0fcef789295ce7ccd40762cd67e7020d6f34ba..1fe5ea8f5f368f479adf25a7a5b3b0311da033a9 100644 --- a/src/fdlib.h +++ b/src/fdlib.h @@ -319,7 +319,13 @@ typedef off_t PIKE_OFF_T; #define fd_CREAT O_CREAT #define fd_TRUNC O_TRUNC #define fd_EXCL O_EXCL + +#ifdef O_BINARY +#define fd_BINARY O_BINARY +#else #define fd_BINARY 0 +#endif + #ifdef O_LARGEFILE #define fd_LARGEFILE O_LARGEFILE #else /* !O_LARGEFILE */ diff --git a/src/object.c b/src/object.c index 691fe6609cdad6701fc5a97aa6597aef128b12d5..fff835e26f5b75adf7f5de1b1a49aac9ec24fd7d 100644 --- a/src/object.c +++ b/src/object.c @@ -476,7 +476,7 @@ static struct pike_string *low_read_file(const char *file) PIKE_OFF_T len; FD f; - while((f = fd_open(file,fd_RDONLY,0666)) <0 && errno==EINTR) + while((f = fd_open(file,fd_RDONLY|fd_BINARY,0666)) <0 && errno==EINTR) check_threads_etc(); if(f >= 0) {