jorton 2004/03/30 03:53:35
Modified: file_io/unix open.c
include apr_file_io.h
Log:
* include/apr_file_io.h: Add APR_LARGEFILE flag, with warning.
* file_io/unix/open.c (apr_file_open): Map APR_LARGEFILE onto
O_LARGEFILE for non-LFS builds.
Revision Changes Path
1.117 +4 -0 apr/file_io/unix/open.c
Index: open.c
===================================================================
RCS file: /home/cvs/apr/file_io/unix/open.c,v
retrieving revision 1.116
retrieving revision 1.117
diff -w -d -u -r1.116 -r1.117
--- open.c 27 Mar 2004 13:11:17 -0000 1.116
+++ open.c 30 Mar 2004 11:53:35 -0000 1.117
@@ -101,6 +101,10 @@
#if APR_HAS_LARGE_FILES && defined(_LARGEFILE64_SOURCE)
oflags |= O_LARGEFILE;
+#elif defined(O_LARGEFILE)
+ if (flag & APR_LARGEFILE) {
+ oflags |= O_LARGEFILE;
+ }
#endif
#if APR_HAS_THREADS
1.150 +14 -0 apr/include/apr_file_io.h
Index: apr_file_io.h
===================================================================
RCS file: /home/cvs/apr/include/apr_file_io.h,v
retrieving revision 1.149
retrieving revision 1.150
diff -w -d -u -r1.149 -r1.150
--- apr_file_io.h 13 Feb 2004 09:38:28 -0000 1.149
+++ apr_file_io.h 30 Mar 2004 11:53:35 -0000 1.150
@@ -69,6 +69,20 @@
is opened */
#define APR_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this file should
support apr_socket_sendfile
operation */
+#define APR_LARGEFILE 0x04000 /**< Platform dependent flag to enable
large file
+ support; WARNING see below. */
+
+/** @warning The APR_LARGEFILE flag only has effect on some platforms
+ * where sizeof(apr_off_t) == 4. Where implemented, it allows opening
+ * and writing to a file which exceeds the size which can be
+ * represented by apr_off_t (2 gigabytes). When a file's size does
+ * exceed 2Gb, apr_file_info_get() will fail with an error on the
+ * descriptor, likewise apr_stat()/apr_lstat() will fail on the
+ * filename. apr_dir_read() will fail with APR_INCOMPLETE on a
+ * directory entry for a large file depending on the particular
+ * APR_FINFO_* flags. Generally, it is not recommended to use this
+ * flag. */
+
/** @} */
/**