diff options
-rw-r--r-- | qt-ui/subsurfacewebservices.cpp | 2 | ||||
-rw-r--r-- | windows.c | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp index 266332f29..20e5707ea 100644 --- a/qt-ui/subsurfacewebservices.cpp +++ b/qt-ui/subsurfacewebservices.cpp @@ -753,7 +753,7 @@ void DivelogsDeWebServices::downloadFinished() int errorcode; zipFile.seek(0); -#ifdef Q_OS_UNIX +#if defined(Q_OS_UNIX) && defined(LIBZIP_VERSION_MAJOR) int duppedfd = dup(zipFile.handle()); struct zip *zip = zip_fdopen(duppedfd, 0, &errorcode); if (!zip) @@ -157,14 +157,19 @@ void *subsurface_opendir(const char *path) #define O_BINARY 0 #endif -/* we use zip_fdopen since zip_open doesn't have a wchar_t version */ struct zip *subsurface_zip_open_readonly(const char *path, int flags, int *errorp) { +#if defined(LIBZIP_VERSION_MAJOR) + /* libzip 0.10 has zip_fdopen, let's use it since zip_open doesn't have a + * wchar_t version */ int fd = subsurface_open(path, O_RDONLY | O_BINARY, 0); struct zip *ret = zip_fdopen(fd, flags, errorp); if (!ret) close(fd); return ret; +#else + return zip_open(path, flags, errorp); +#endif } int subsurface_zip_close(struct zip *zip) |