Remove CP_UTF8 code for Windows filenames.
Thanks to Gisle Vanem for pointing out that this code was broken and could never have compiled. Since it has never worked, and thus has never been used, remove it. Change-Id: Ic274eaf187928765a809690eda8d790b79f939a5 Reviewed-on: https://boringssl-review.googlesource.com/7190 Reviewed-by: David Benjamin <davidben@google.com>
This commit is contained in:
parent
6d49157929
commit
65dcfc7f9b
@ -87,47 +87,11 @@
|
||||
#define BIO_FP_WRITE 0x04
|
||||
#define BIO_FP_APPEND 0x08
|
||||
|
||||
static FILE *open_file(const char *filename, const char *mode) {
|
||||
#if defined(OPENSSL_WINDOWS) && defined(CP_UTF8)
|
||||
int sz, len_0 = (int)strlen(filename) + 1;
|
||||
DWORD flags;
|
||||
|
||||
/* Basically there are three cases to cover: a) filename is pure ASCII
|
||||
* string; b) actual UTF-8 encoded string and c) locale-ized string, i.e. one
|
||||
* containing 8-bit characters that are meaningful in current system locale.
|
||||
* If filename is pure ASCII or real UTF-8 encoded string,
|
||||
* MultiByteToWideChar succeeds and _wfopen works. If filename is locale-ized
|
||||
* string, chances are that MultiByteToWideChar fails reporting
|
||||
* ERROR_NO_UNICODE_TRANSLATION, in which case we fall back to fopen... */
|
||||
if ((sz = MultiByteToWideChar(CP_UTF8, (flags = MB_ERR_INVALID_CHARS),
|
||||
filename, len_0, NULL, 0)) > 0 ||
|
||||
(GetLastError() == ERROR_INVALID_FLAGS &&
|
||||
(sz = MultiByteToWideChar(CP_UTF8, (flags = 0), filename, len_0, NULL,
|
||||
0)) > 0)) {
|
||||
WCHAR wmode[8];
|
||||
WCHAR *wfilename = _alloca(sz * sizeof(WCHAR));
|
||||
|
||||
if (MultiByteToWideChar(CP_UTF8, flags, filename, len_0, wfilename, sz) &&
|
||||
MultiByteToWideChar(CP_UTF8, 0, mode, strlen(mode) + 1, wmode,
|
||||
sizeof(wmode) / sizeof(wmode[0])) &&
|
||||
(file = _wfopen(wfilename, wmode)) == NULL &&
|
||||
(errno == ENOENT ||
|
||||
errno == EBADF)) /* UTF-8 decode succeeded, but no file, filename
|
||||
* could still have been locale-ized... */
|
||||
return fopen(filename, mode);
|
||||
} else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
|
||||
return fopen(filename, mode);
|
||||
}
|
||||
#else
|
||||
return fopen(filename, mode);
|
||||
#endif
|
||||
}
|
||||
|
||||
BIO *BIO_new_file(const char *filename, const char *mode) {
|
||||
BIO *ret;
|
||||
FILE *file;
|
||||
|
||||
file = open_file(filename, mode);
|
||||
file = fopen(filename, mode);
|
||||
if (file == NULL) {
|
||||
OPENSSL_PUT_SYSTEM_ERROR();
|
||||
|
||||
@ -256,7 +220,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
fp = open_file(ptr, p);
|
||||
fp = fopen(ptr, p);
|
||||
if (fp == NULL) {
|
||||
OPENSSL_PUT_SYSTEM_ERROR();
|
||||
ERR_add_error_data(5, "fopen('", ptr, "','", p, "')");
|
||||
|
Loading…
Reference in New Issue
Block a user