From 839fc10a4f44749a85d0b1a564dc7c515f5b7746 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 7 Feb 2021 14:41:23 +0400 Subject: [PATCH] Fixed the Windows build Opening ZIM archives by file descriptor (as well as embedded ZIM archives) is not supported under Windows. --- include/reader.h | 2 ++ src/reader.cpp | 2 ++ src/wrapper/java/kiwixreader.cpp | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/include/reader.h b/include/reader.h index cbeaaad2a..94c108f9d 100644 --- a/include/reader.h +++ b/include/reader.h @@ -56,8 +56,10 @@ class Reader * (.zim extesion). */ explicit Reader(const string zimFilePath); +#ifndef _WIN32 explicit Reader(int fd); Reader(int fd, zim::offset_type offset, zim::size_type size); +#endif ~Reader() = default; /** diff --git a/src/reader.cpp b/src/reader.cpp index 0278b5033..523c1f766 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -86,6 +86,7 @@ Reader::Reader(const string zimFilePath) srand(time(nullptr)); } +#ifndef _WIN32 Reader::Reader(int fd) : zimArchive(new zim::Archive(fd)), zimFilePath("") @@ -101,6 +102,7 @@ Reader::Reader(int fd, zim::offset_type offset, zim::size_type size) /* initialize random seed: */ srand(time(nullptr)); } +#endif // #ifndef _WIN32 zim::Archive* Reader::getZimArchive() const { diff --git a/src/wrapper/java/kiwixreader.cpp b/src/wrapper/java/kiwixreader.cpp index b7f968822..cc3c27706 100644 --- a/src/wrapper/java/kiwixreader.cpp +++ b/src/wrapper/java/kiwixreader.cpp @@ -68,6 +68,7 @@ int jni2fd(const jobject& fdObj, JNIEnv* env) JNIEXPORT jlong JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getNativeReaderByFD( JNIEnv* env, jobject obj, jobject fdObj) { +#ifndef _WIN32 int fd = jni2fd(fdObj, env); LOG("Attempting to create reader with fd: %d", fd); @@ -80,11 +81,17 @@ JNIEXPORT jlong JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getNativeReaderBy LOG(e.what()); return 0; } +#else + jclass exception = env->FindClass("java/lang/UnsupportedOperationException"); + env->ThrowNew(exception, "org.kiwix.kiwixlib.JNIKiwixReader.getNativeReaderByFD() is not supported under Windows"); + return 0; +#endif } JNIEXPORT jlong JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getNativeReaderEmbedded( JNIEnv* env, jobject obj, jobject fdObj, jlong offset, jlong size) { +#ifndef _WIN32 int fd = jni2fd(fdObj, env); LOG("Attempting to create reader with fd: %d", fd); @@ -97,6 +104,11 @@ JNIEXPORT jlong JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getNativeReaderEm LOG(e.what()); return 0; } +#else + jclass exception = env->FindClass("java/lang/UnsupportedOperationException"); + env->ThrowNew(exception, "org.kiwix.kiwixlib.JNIKiwixReader.getNativeReaderEmbedded() is not supported under Windows"); + return 0; +#endif } JNIEXPORT void JNICALL