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)