diff --git a/base/source/c/compile_linux_i386.sh b/base/source/c/compile_linux_i386.sh index 1d0a40440d2ba5e5714759f5c5d49317585e2ece..e36b8bc91d40162971eb58753cc53a3dde82d6eb 100755 --- a/base/source/c/compile_linux_i386.sh +++ b/base/source/c/compile_linux_i386.sh @@ -1,6 +1,6 @@ #! /bin/bash -gcc -shared -O3 unix.c -I/usr/java/jdk5/include -I/usr/java/jdk5/include/linux -o libunix.so +gcc -shared -O3 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/jdk5/include -I/usr/java/jdk5/include/linux unix.c -o libunix.so # MACHINE_BYTE_ORDER=1 corresponds to 'little endian' gcc -shared -O3 -fPIC -DMACHINE_BYTE_ORDER=1 copy*.c -I/usr/java/jdk5/include -I/usr/java/jdk5/include/linux -o libnativedata.so diff --git a/base/source/c/compile_macosx_x86_64.sh b/base/source/c/compile_macosx_x86_64.sh index 01fbb1688a32626bdbf97ba42a555d78ac22df96..0402b62529addc2b8e87910670da74c09a89a36b 100755 --- a/base/source/c/compile_macosx_x86_64.sh +++ b/base/source/c/compile_macosx_x86_64.sh @@ -1,6 +1,6 @@ #! /bin/bash -gcc -m64 -dynamiclib -O3 -D_POSIX_C_SOURCE unix.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libunix.jnilib +gcc -m64 -dynamiclib -D__STAT=stat64 -D__LSTAT=lstat64 -O3 unix.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libunix.jnilib # MACHINE_BYTE_ORDER=1 corresponds to 'little endian' gcc -m64 -dynamiclib -O3 -DMACHINE_BYTE_ORDER=1 copy*.c -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -o libnativedata.jnilib diff --git a/base/source/c/compile_solaris_sparc.sh b/base/source/c/compile_solaris_sparc.sh index 7efb3be3e71662c428fb93178e31f2acdc226e38..edd75cd52a3d2aa628077f17dad4cdf56c0dd115 100755 --- a/base/source/c/compile_solaris_sparc.sh +++ b/base/source/c/compile_solaris_sparc.sh @@ -1,6 +1,6 @@ #! /bin/bash -cc -G -KPIC -fast -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so +cc -G -KPIC -fast -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so # MACHINE_BYTE_ORDER=2 corresponds to 'big endian' cc -G -KPIC -fast -DMACHINE_BYTE_ORDER=2 copy*.c -I/usr/java/include -I/usr/java/include/solaris -o libnativedata.so diff --git a/base/source/c/compile_solaris_x86.sh b/base/source/c/compile_solaris_x86.sh index 34b1192ecedfce8be43b9f1fa4e51f536805bdd1..588e192f6b6ac6fbe8754e164420d36aa795c47a 100755 --- a/base/source/c/compile_solaris_x86.sh +++ b/base/source/c/compile_solaris_x86.sh @@ -1,6 +1,6 @@ #! /bin/bash -cc -G -KPIC -fast -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so +cc -G -KPIC -fast -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/usr/java/include -I/usr/java/include/solaris unix.c -o libunix.so # MACHINE_BYTE_ORDER=1 corresponds to 'little endian' cc -G -KPIC -fast -DMACHINE_BYTE_ORDER=1 copy*.c -I/usr/java/include -I/usr/java/include/solaris -o libnativedata.so diff --git a/base/source/c/unix.c b/base/source/c/unix.c index f4f5e636911045717614d152920d1b6a370c701b..1cfeef9fc9de76e48a37420c5f907f27783b4d34 100644 --- a/base/source/c/unix.c +++ b/base/source/c/unix.c @@ -28,6 +28,14 @@ #define SYMLINK 2 #define OTHER 3 +#ifndef __STAT +#define __STAT stat +#endif + +#ifndef __LSTAT +#define __LSTAT lstat +#endif + /* Global references. */ jclass stringClass; jclass passwordClass; @@ -126,12 +134,12 @@ JNIEXPORT jint JNICALL Java_ch_systemsx_cisd_base_unix_Unix_symlink } /* Function pointer for stat function calls. */ -typedef int (*stat_func_ptr)(const char *path, struct stat *buf); +typedef int (*stat_func_ptr)(const char *path, struct __STAT *buf); jobject call_stat(JNIEnv *env, jclass clss, jstring filename, stat_func_ptr statf) { const char* pfilename; - struct stat s; + struct __STAT s; jobject result; int retval; jbyte type; @@ -167,12 +175,12 @@ jobject call_stat(JNIEnv *env, jclass clss, jstring filename, stat_func_ptr stat JNIEXPORT jobject JNICALL Java_ch_systemsx_cisd_base_unix_Unix_stat(JNIEnv *env, jclass clss, jstring filename) { - return call_stat(env, clss, filename, &stat); + return call_stat(env, clss, filename, &__STAT); } JNIEXPORT jobject JNICALL Java_ch_systemsx_cisd_base_unix_Unix_lstat(JNIEnv *env, jclass clss, jstring filename) { - return call_stat(env, clss, filename, &lstat); + return call_stat(env, clss, filename, &__LSTAT); } JNIEXPORT jstring JNICALL Java_ch_systemsx_cisd_base_unix_Unix_readlink(JNIEnv *env, jclass clss, jstring linkname, jint linkvallen)