summaryrefslogtreecommitdiffstats
path: root/crypto/bio/bss_file.c
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2005-06-06 11:58:31 +0000
committerAndy Polyakov <appro@openssl.org>2005-06-06 11:58:31 +0000
commit8fa6a40be2935ca109a28cc43d28cd27051ada01 (patch)
tree9a26124c3a05169c7fc2ac1a7f5b334d49125ab7 /crypto/bio/bss_file.c
parent4b5598682a3ed929ab058cef3a056c528b557168 (diff)
Allow BIO_s_file to open and sequentially access files larger than 2GB on
affected platforms. PR: 973
Diffstat (limited to 'crypto/bio/bss_file.c')
-rw-r--r--crypto/bio/bss_file.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c
index dd17802f8f..ccc741556e 100644
--- a/crypto/bio/bss_file.c
+++ b/crypto/bio/bss_file.c
@@ -65,6 +65,24 @@
#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"