Index: third_party/zlib/contrib/minizip/ioapi.c |
diff --git a/third_party/zlib/contrib/minizip/ioapi.c b/third_party/zlib/contrib/minizip/ioapi.c |
index 49958f61ffd660c96031aa49dbcffd08b127ea45..7f5c191b2afd1624a653afafad3fef722e864bc3 100644 |
--- a/third_party/zlib/contrib/minizip/ioapi.c |
+++ b/third_party/zlib/contrib/minizip/ioapi.c |
@@ -10,10 +10,22 @@ |
*/ |
-#if (defined(_WIN32)) |
+#if defined(_WIN32) && (!(defined(_CRT_SECURE_NO_WARNINGS))) |
#define _CRT_SECURE_NO_WARNINGS |
#endif |
+#if defined(__APPLE__) || defined(IOAPI_NO_64) |
+// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions |
+#define FOPEN_FUNC(filename, mode) fopen(filename, mode) |
+#define FTELLO_FUNC(stream) ftello(stream) |
+#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) |
+#else |
+#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) |
+#define FTELLO_FUNC(stream) ftello64(stream) |
+#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) |
+#endif |
+ |
+ |
#include "ioapi.h" |
voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode) |
@@ -47,7 +59,7 @@ ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream |
else |
{ |
uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); |
- if ((tell_uLong) == ((uLong)-1)) |
+ if ((tell_uLong) == MAXU32) |
return (ZPOS64_T)-1; |
else |
return tell_uLong; |
@@ -112,7 +124,7 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, |
mode_fopen = "wb"; |
if ((filename!=NULL) && (mode_fopen != NULL)) |
- file = fopen64((const char*)filename, mode_fopen); |
+ file = FOPEN_FUNC((const char*)filename, mode_fopen); |
return file; |
} |
@@ -142,7 +154,7 @@ static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream) |
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) |
{ |
ZPOS64_T ret; |
- ret = ftello64((FILE *)stream); |
+ ret = FTELLO_FUNC((FILE *)stream); |
return ret; |
} |
@@ -188,7 +200,7 @@ static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T |
} |
ret = 0; |
- if(fseeko64((FILE *)stream, offset, fseek_origin) != 0) |
+ if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0) |
ret = -1; |
return ret; |