From: Tim Kientzle Date: Sat, 27 Jun 2009 03:48:20 +0000 (-0400) Subject: On Windows, set _O_BINARY on filehandles passed in from clients. X-Git-Tag: v2.8.0~565 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15195503c7710997b8ecc3795ea8feadc05effdd;p=thirdparty%2Flibarchive.git On Windows, set _O_BINARY on filehandles passed in from clients. This should eliminate the need for clients to take special measures to get correct binary handling. SVN-Revision: 1187 --- diff --git a/libarchive/archive_read_open_fd.c b/libarchive/archive_read_open_fd.c index ed58c6c48..03a6bf622 100644 --- a/libarchive/archive_read_open_fd.c +++ b/libarchive/archive_read_open_fd.c @@ -96,7 +96,7 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size) } else mine->can_skip = 0; -#if defined(_WIN32_) +#if defined(_WIN32) _setmode(mine->fd, _O_BINARY); #endif diff --git a/libarchive/archive_read_open_file.c b/libarchive/archive_read_open_file.c index 5e78bfe4d..d1fb821fa 100644 --- a/libarchive/archive_read_open_file.c +++ b/libarchive/archive_read_open_file.c @@ -94,7 +94,7 @@ archive_read_open_FILE(struct archive *a, FILE *f) } else mine->can_skip = 0; -#if defined(_WIN32_) +#if defined(_WIN32) _setmode(_fileno(mine->f), _O_BINARY); #endif diff --git a/libarchive/archive_read_open_filename.c b/libarchive/archive_read_open_filename.c index 2651323eb..e1adf8182 100644 --- a/libarchive/archive_read_open_filename.c +++ b/libarchive/archive_read_open_filename.c @@ -96,7 +96,7 @@ archive_read_open_filename(struct archive *a, const char *filename, */ filename = ""; /* Normalize NULL to "" */ fd = 0; -#if defined(_WIN32_) +#if defined(_WIN32) _setmode(0, _O_BINARY); #endif } else { diff --git a/libarchive/archive_write_open_fd.c b/libarchive/archive_write_open_fd.c index 35e258c4c..b48e00e2e 100644 --- a/libarchive/archive_write_open_fd.c +++ b/libarchive/archive_write_open_fd.c @@ -64,6 +64,9 @@ archive_write_open_fd(struct archive *a, int fd) return (ARCHIVE_FATAL); } mine->fd = fd; +#if defined(_WIN32) + _setmode(mine->fd, _O_BINARY); +#endif return (archive_write_open(a, mine, file_open, file_write, file_close)); }