summaryrefslogtreecommitdiffstats
path: root/config/cmake/HDF5Tests.c
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2011-10-18 16:44:32 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2011-10-18 16:44:32 (GMT)
commitdc90cfc1c2619b3e5455ed2da6a627e1296f1cbc (patch)
treef764d53b7fcdcc384d80fd6d13e0feb4f5a15e2f /config/cmake/HDF5Tests.c
parentcd38a32601e3aacacd45365f8f129bfe08f08898 (diff)
downloadhdf5-dc90cfc1c2619b3e5455ed2da6a627e1296f1cbc.zip
hdf5-dc90cfc1c2619b3e5455ed2da6a627e1296f1cbc.tar.gz
hdf5-dc90cfc1c2619b3e5455ed2da6a627e1296f1cbc.tar.bz2
[svn-r21596] Correct large file support test
Diffstat (limited to 'config/cmake/HDF5Tests.c')
-rw-r--r--config/cmake/HDF5Tests.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/config/cmake/HDF5Tests.c b/config/cmake/HDF5Tests.c
index f580bbc..79741a8 100644
--- a/config/cmake/HDF5Tests.c
+++ b/config/cmake/HDF5Tests.c
@@ -336,6 +336,37 @@ int main()
}
#endif
+#ifdef TEST_LFS_WORKS
+/* Return 0 when LFS is available and 1 otherwise. */
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _LARGE_FILES
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <assert.h>
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ /* check that off_t can hold 2^63 - 1 and perform basic operations... */
+#define OFF_T_64 (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ if (OFF_T_64 % 2147483647 != 1)
+ return 1;
+
+ // stat breaks on SCO OpenServer
+ struct stat buf;
+ stat( argv[0], &buf );
+ if (!S_ISREG(buf.st_mode))
+ return 2;
+
+ FILE *file = fopen( argv[0], "r" );
+ off_t offset = ftello( file );
+ fseek( file, offset, SEEK_CUR );
+ fclose( file );
+ return 0;
+}
+#endif
#ifdef GETTIMEOFDAY_GIVES_TZ
#ifdef HAVE_SYS_TIME_H