summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bio/bss_file.c
diff options
context:
space:
mode:
authortedu <>2014-04-16 19:42:24 +0000
committertedu <>2014-04-16 19:42:24 +0000
commit5fb0ca0ddf59f49b49200128095fb2d4a1577020 (patch)
tree83bea3615bf607b22ec4199424903c29c83f04d4 /src/lib/libcrypto/bio/bss_file.c
parent980353a54aa762841b1a8478c04a6c39759520b3 (diff)
downloadopenbsd-5fb0ca0ddf59f49b49200128095fb2d4a1577020.tar.gz
openbsd-5fb0ca0ddf59f49b49200128095fb2d4a1577020.tar.bz2
openbsd-5fb0ca0ddf59f49b49200128095fb2d4a1577020.zip
> As I walk through the valley of the shadow of death
> I take a look at my life and realize there's nothin' left > Cause I've been blasting and laughing so long, > That even my mama thinks that my mind is gone Remove even more unspeakable evil being perpetuated in the name of VMS. (and lesser evils done in the name of others.) ok miod
Diffstat (limited to 'src/lib/libcrypto/bio/bss_file.c')
-rw-r--r--src/lib/libcrypto/bio/bss_file.c87
1 files changed, 0 insertions, 87 deletions
diff --git a/src/lib/libcrypto/bio/bss_file.c b/src/lib/libcrypto/bio/bss_file.c
index 982317b34a..59e48e6659 100644
--- a/src/lib/libcrypto/bio/bss_file.c
+++ b/src/lib/libcrypto/bio/bss_file.c
@@ -89,10 +89,6 @@
89#include "bio_lcl.h" 89#include "bio_lcl.h"
90#include <openssl/err.h> 90#include <openssl/err.h>
91 91
92#if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
93#include <nwfileio.h>
94#endif
95
96#if !defined(OPENSSL_NO_STDIO) 92#if !defined(OPENSSL_NO_STDIO)
97 93
98static int file_write(BIO *h, const char *buf, int num); 94static int file_write(BIO *h, const char *buf, int num);
@@ -122,46 +118,8 @@ BIO
122 BIO *ret; 118 BIO *ret;
123 FILE *file = NULL; 119 FILE *file = NULL;
124 120
125#if defined(_WIN32) && defined(CP_UTF8)
126 int sz, len_0 = (int)strlen(filename) + 1;
127 DWORD flags;
128
129 /*
130 * Basically there are three cases to cover: a) filename is
131 * pure ASCII string; b) actual UTF-8 encoded string and
132 * c) locale-ized string, i.e. one containing 8-bit
133 * characters that are meaningful in current system locale.
134 * If filename is pure ASCII or real UTF-8 encoded string,
135 * MultiByteToWideChar succeeds and _wfopen works. If
136 * filename is locale-ized string, chances are that
137 * MultiByteToWideChar fails reporting
138 * ERROR_NO_UNICODE_TRANSLATION, in which case we fall
139 * back to fopen...
140 */
141 if ((sz = MultiByteToWideChar(CP_UTF8,(flags = MB_ERR_INVALID_CHARS),
142 filename, len_0, NULL, 0)) > 0 ||
143 (GetLastError() == ERROR_INVALID_FLAGS &&
144 (sz = MultiByteToWideChar(CP_UTF8,(flags = 0),
145 filename, len_0, NULL, 0)) > 0)) {
146 WCHAR wmode[8];
147 WCHAR *wfilename = _alloca(sz*sizeof(WCHAR));
148
149 if (MultiByteToWideChar(CP_UTF8, flags, filename, len_0,
150 wfilename, sz) && MultiByteToWideChar(CP_UTF8, 0, mode,
151 strlen(mode) + 1, wmode,
152 sizeof(wmode) / sizeof(wmode[0])) &&
153 (file = _wfopen(wfilename, wmode)) == NULL &&
154 (errno == ENOENT || errno == EBADF)
155 ) /* UTF - 8 decode succeeded, but no file, filename
156 * could still have been locale-ized... */
157 file = fopen(filename, mode);
158 } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
159 file = fopen(filename, mode);
160 }
161#else
162 file = fopen(filename, mode); 121 file = fopen(filename, mode);
163 122
164#endif
165 if (file == NULL) { 123 if (file == NULL) {
166 SYSerr(SYS_F_FOPEN, errno); 124 SYSerr(SYS_F_FOPEN, errno);
167 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')"); 125 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')");
@@ -304,9 +262,6 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
304 b->ptr = ptr; 262 b->ptr = ptr;
305 b->init = 1; 263 b->init = 1;
306#if BIO_FLAGS_UPLINK!=0 264#if BIO_FLAGS_UPLINK!=0
307#if defined(__MINGW32__) && defined(__MSVCRT__) && !defined(_IOB_ENTRIES)
308#define _IOB_ENTRIES 20
309#endif
310#if defined(_IOB_ENTRIES) 265#if defined(_IOB_ENTRIES)
311 /* Safety net to catch purely internal BIO_set_fp calls */ 266 /* Safety net to catch purely internal BIO_set_fp calls */
312 if ((size_t)ptr >= (size_t)stdin && 267 if ((size_t)ptr >= (size_t)stdin &&
@@ -317,37 +272,7 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
317#ifdef UP_fsetmod 272#ifdef UP_fsetmod
318 if (b->flags&BIO_FLAGS_UPLINK) 273 if (b->flags&BIO_FLAGS_UPLINK)
319 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b')); 274 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b'));
320 else
321#endif 275#endif
322 {
323#if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
324 int fd = fileno((FILE*)ptr);
325 /* Under CLib there are differences in file modes */
326 if (num & BIO_FP_TEXT)
327 setmode(fd, O_TEXT);
328 else
329 setmode(fd, O_BINARY);
330#elif defined(OPENSSL_SYS_MSDOS)
331 int fd = fileno((FILE*)ptr);
332 /* Set correct text/binary mode */
333 if (num & BIO_FP_TEXT)
334 _setmode(fd, _O_TEXT);
335 /* Dangerous to set stdin/stdout to raw (unless redirected) */
336 else {
337 if (fd == STDIN_FILENO || fd == STDOUT_FILENO) {
338 if (isatty(fd) <= 0)
339 _setmode(fd, _O_BINARY);
340 } else
341 _setmode(fd, _O_BINARY);
342 }
343#elif defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
344 int fd = fileno((FILE*)ptr);
345 if (num & BIO_FP_TEXT)
346 setmode(fd, O_TEXT);
347 else
348 setmode(fd, O_BINARY);
349#endif
350 }
351 break; 276 break;
352 case BIO_C_SET_FILENAME: 277 case BIO_C_SET_FILENAME:
353 file_free(b); 278 file_free(b);
@@ -367,18 +292,6 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
367 ret = 0; 292 ret = 0;
368 break; 293 break;
369 } 294 }
370#if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
371 if (!(num & BIO_FP_TEXT))
372 strcat(p, "b");
373 else
374 strcat(p, "t");
375#endif
376#if defined(OPENSSL_SYS_NETWARE)
377 if (!(num & BIO_FP_TEXT))
378 strcat(p, "b");
379 else
380 strcat(p, "t");
381#endif
382 fp = fopen(ptr, p); 295 fp = fopen(ptr, p);
383 if (fp == NULL) { 296 if (fp == NULL) {
384 SYSerr(SYS_F_FOPEN, errno); 297 SYSerr(SYS_F_FOPEN, errno);