From: Brad King Date: Wed, 11 Nov 2009 14:19:49 +0000 (-0500) Subject: Use setmode compatiblity macro on Windows X-Git-Tag: v2.8.0~178 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=134d82ac29e0cc7a4f9766b2aedfa18610d15794;p=thirdparty%2Flibarchive.git Use setmode compatiblity macro on Windows Instead of duplicating preprocessor tests to call setmode or _setmode, we define setmode to _setmode on Windows. SVN-Revision: 1637 --- diff --git a/libarchive/archive_read_open_fd.c b/libarchive/archive_read_open_fd.c index 33912a36a..9af5d3c60 100644 --- a/libarchive/archive_read_open_fd.c +++ b/libarchive/archive_read_open_fd.c @@ -101,10 +101,8 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size) mine->can_skip = 1; } else mine->can_skip = 0; -#if defined(__CYGWIN__) +#if defined(__CYGWIN__) || defined(_WIN32) setmode(mine->fd, O_BINARY); -#elif defined(_WIN32) - _setmode(mine->fd, _O_BINARY); #endif return (archive_read_open2(a, mine, diff --git a/libarchive/archive_read_open_file.c b/libarchive/archive_read_open_file.c index 8fb65150f..038ef2bfd 100644 --- a/libarchive/archive_read_open_file.c +++ b/libarchive/archive_read_open_file.c @@ -97,10 +97,8 @@ archive_read_open_FILE(struct archive *a, FILE *f) } else mine->can_skip = 0; -#if defined(__CYGWIN__) +#if defined(__CYGWIN__) || defined(_WIN32) setmode(fileno(mine->f), O_BINARY); -#elif defined(_WIN32) - _setmode(_fileno(mine->f), _O_BINARY); #endif return (archive_read_open2(a, mine, NULL, file_read, diff --git a/libarchive/archive_read_open_filename.c b/libarchive/archive_read_open_filename.c index 375339e3c..c92beffe8 100644 --- a/libarchive/archive_read_open_filename.c +++ b/libarchive/archive_read_open_filename.c @@ -99,10 +99,8 @@ archive_read_open_filename(struct archive *a, const char *filename, */ filename = ""; /* Normalize NULL to "" */ fd = 0; -#if defined(__CYGWIN__) +#if defined(__CYGWIN__) || defined(_WIN32) setmode(0, O_BINARY); -#elif defined(_WIN32) - _setmode(0, _O_BINARY); #endif } else { fd = open(filename, O_RDONLY | O_BINARY); diff --git a/libarchive/archive_windows.h b/libarchive/archive_windows.h index 9ed6fc32c..e65be916c 100644 --- a/libarchive/archive_windows.h +++ b/libarchive/archive_windows.h @@ -112,6 +112,7 @@ #define open __la_open #define read __la_read #define rmdir __la_rmdir +#define setmode _setmode #define stat(path,stref) __la_stat(path,stref) #define strdup _strdup #define tzset _tzset @@ -126,6 +127,7 @@ #define O_TRUNC _O_TRUNC #define O_CREAT _O_CREAT #define O_EXCL _O_EXCL +#define O_BINARY _O_BINARY #ifndef _S_IFIFO #define _S_IFIFO 0010000 /* pipe */ diff --git a/libarchive/archive_write_open_fd.c b/libarchive/archive_write_open_fd.c index 152403209..7be777201 100644 --- a/libarchive/archive_write_open_fd.c +++ b/libarchive/archive_write_open_fd.c @@ -70,10 +70,8 @@ archive_write_open_fd(struct archive *a, int fd) return (ARCHIVE_FATAL); } mine->fd = fd; -#if defined(__CYGWIN__) +#if defined(__CYGWIN__) || defined(_WIN32) setmode(mine->fd, O_BINARY); -#elif defined(_WIN32) - _setmode(mine->fd, _O_BINARY); #endif return (archive_write_open(a, mine, file_open, file_write, file_close));