Allow BIO_s_file to open and sequentially access files larger than 2GB on
authorAndy Polyakov <appro@openssl.org>
Mon, 6 Jun 2005 11:58:31 +0000 (11:58 +0000)
committerAndy Polyakov <appro@openssl.org>
Mon, 6 Jun 2005 11:58:31 +0000 (11:58 +0000)
affected platforms.
PR: 973

crypto/bio/bss_file.c

index dd17802f8fb18b7a7cd204ed81518ad64fd03b17..ccc741556ea54aa59151ad1c3094872f5b8abee4 100644 (file)
 #ifndef HEADER_BSS_FILE_C
 #define HEADER_BSS_FILE_C
 
 #ifndef HEADER_BSS_FILE_C
 #define HEADER_BSS_FILE_C
 
+#if defined(__linux) || defined(__sun) || defined(__hpux)
+/* Following definition aliases fopen to fopen64 on above mentioned
+ * platforms. This makes it possible to open and sequentially access
+ * files larger than 2GB from 32-bit application. It does not allow to
+ * traverse them beyond 2GB with fseek/ftell, but on the other hand *no*
+ * 32-bit platform permits that, not with fseek/ftell. Not to mention
+ * that breaking 2GB limit for seeking would require surgery to *our*
+ * API. But sequential access suffices for practical cases when you
+ * can run into large files, such as fingerprinting, so we can let API
+ * alone. For reference, the list of 32-bit platforms which allow for
+ * sequential access of large files without extra "magic" comprise *BSD,
+ * Darwin, IRIX...
+ */
+#ifndef _FILE_OFFSET_BITS
+#define _FILE_OFFSET_BITS 64
+#endif
+#endif
+
 #include <stdio.h>
 #include <errno.h>
 #include "cryptlib.h"
 #include <stdio.h>
 #include <errno.h>
 #include "cryptlib.h"