diff options
Diffstat (limited to 'src/lib/libcrypto/bio/bss_file.c')
-rw-r--r-- | src/lib/libcrypto/bio/bss_file.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/lib/libcrypto/bio/bss_file.c b/src/lib/libcrypto/bio/bss_file.c index 1f770b390f..8b3ff278d9 100644 --- a/src/lib/libcrypto/bio/bss_file.c +++ b/src/lib/libcrypto/bio/bss_file.c | |||
@@ -71,7 +71,7 @@ | |||
71 | #include <openssl/bio.h> | 71 | #include <openssl/bio.h> |
72 | #include <openssl/err.h> | 72 | #include <openssl/err.h> |
73 | 73 | ||
74 | #if !defined(NO_STDIO) | 74 | #if !defined(OPENSSL_NO_STDIO) |
75 | 75 | ||
76 | static int MS_CALLBACK file_write(BIO *h, const char *buf, int num); | 76 | static int MS_CALLBACK file_write(BIO *h, const char *buf, int num); |
77 | static int MS_CALLBACK file_read(BIO *h, char *buf, int size); | 77 | static int MS_CALLBACK file_read(BIO *h, char *buf, int size); |
@@ -103,7 +103,10 @@ BIO *BIO_new_file(const char *filename, const char *mode) | |||
103 | { | 103 | { |
104 | SYSerr(SYS_F_FOPEN,get_last_sys_error()); | 104 | SYSerr(SYS_F_FOPEN,get_last_sys_error()); |
105 | ERR_add_error_data(5,"fopen('",filename,"','",mode,"')"); | 105 | ERR_add_error_data(5,"fopen('",filename,"','",mode,"')"); |
106 | BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB); | 106 | if (errno == ENOENT) |
107 | BIOerr(BIO_F_BIO_NEW_FILE,BIO_R_NO_SUCH_FILE); | ||
108 | else | ||
109 | BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB); | ||
107 | return(NULL); | 110 | return(NULL); |
108 | } | 111 | } |
109 | if ((ret=BIO_new(BIO_s_file_internal())) == NULL) | 112 | if ((ret=BIO_new(BIO_s_file_internal())) == NULL) |
@@ -204,12 +207,17 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr) | |||
204 | b->shutdown=(int)num&BIO_CLOSE; | 207 | b->shutdown=(int)num&BIO_CLOSE; |
205 | b->ptr=(char *)ptr; | 208 | b->ptr=(char *)ptr; |
206 | b->init=1; | 209 | b->init=1; |
207 | #if defined(MSDOS) || defined(WINDOWS) | 210 | #if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) |
208 | /* Set correct text/binary mode */ | 211 | /* Set correct text/binary mode */ |
209 | if (num & BIO_FP_TEXT) | 212 | if (num & BIO_FP_TEXT) |
210 | _setmode(fileno((FILE *)ptr),_O_TEXT); | 213 | _setmode(fileno((FILE *)ptr),_O_TEXT); |
211 | else | 214 | else |
212 | _setmode(fileno((FILE *)ptr),_O_BINARY); | 215 | _setmode(fileno((FILE *)ptr),_O_BINARY); |
216 | #elif defined(OPENSSL_SYS_OS2) | ||
217 | if (num & BIO_FP_TEXT) | ||
218 | setmode(fileno((FILE *)ptr), O_TEXT); | ||
219 | else | ||
220 | setmode(fileno((FILE *)ptr), O_BINARY); | ||
213 | #endif | 221 | #endif |
214 | break; | 222 | break; |
215 | case BIO_C_SET_FILENAME: | 223 | case BIO_C_SET_FILENAME: |
@@ -233,7 +241,7 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr) | |||
233 | ret=0; | 241 | ret=0; |
234 | break; | 242 | break; |
235 | } | 243 | } |
236 | #if defined(MSDOS) || defined(WINDOWS) | 244 | #if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) |
237 | if (!(num & BIO_FP_TEXT)) | 245 | if (!(num & BIO_FP_TEXT)) |
238 | strcat(p,"b"); | 246 | strcat(p,"b"); |
239 | else | 247 | else |
@@ -303,7 +311,7 @@ static int MS_CALLBACK file_puts(BIO *bp, const char *str) | |||
303 | return(ret); | 311 | return(ret); |
304 | } | 312 | } |
305 | 313 | ||
306 | #endif /* NO_STDIO */ | 314 | #endif /* OPENSSL_NO_STDIO */ |
307 | 315 | ||
308 | #endif /* HEADER_BSS_FILE_C */ | 316 | #endif /* HEADER_BSS_FILE_C */ |
309 | 317 | ||