From d90b523a0b93bff35fc474501e2ebb6999642d94 Mon Sep 17 00:00:00 2001 From: Bruce MacDonald Date: Thu, 7 Mar 2024 16:38:14 -0500 Subject: [PATCH] Add Unicode model filename support for Windows --- ggml.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ggml.c b/ggml.c index 92b17ee6e..1cfc53983 100644 --- a/ggml.c +++ b/ggml.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #if defined(__gnu_linux__) @@ -42,7 +43,7 @@ #endif #if defined(_WIN32) - +#include #include typedef volatile LONG atomic_int; @@ -20283,7 +20284,22 @@ struct gguf_context * gguf_init_empty(void) { } struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_params params) { - FILE * file = fopen(fname, "rb"); +#ifdef _WIN32 + setlocale(LC_ALL, ""); + size_t size = mbstowcs(NULL, fname, 0) + 1; + wchar_t *wfname = malloc(size * sizeof(wchar_t)); + if (!wfname) { + return NULL; + } + if (mbstowcs(wfname, fname, size) == (size_t)-1) { + free(wfname); + return NULL; + } + FILE * file = _wfopen(wfname, L"rb"); + free(wfname); +#else + FILE * file = fopen(fname, "rb"); +#endif if (!file) { return NULL; }