From 01c42149cbdc194644a2f138598029938e0dd447 Mon Sep 17 00:00:00 2001 From: Gabe Goodhart Date: Thu, 19 Sep 2024 17:09:57 -0600 Subject: [PATCH] clip unicode --- examples/llava/clip.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/examples/llava/clip.cpp b/examples/llava/clip.cpp index b8941c74..3a735f17 100644 --- a/examples/llava/clip.cpp +++ b/examples/llava/clip.cpp @@ -40,6 +40,14 @@ #include #include +#if defined(_WIN32) +#define WIN32_LEAN_AND_MEAN +#ifndef NOMINMAX + #define NOMINMAX +#endif +#include +#endif + #define LOG_INF(...) do { fprintf(stdout, __VA_ARGS__); } while (0) #define LOG_WRN(...) do { fprintf(stderr, __VA_ARGS__); } while (0) #define LOG_ERR(...) do { fprintf(stderr, __VA_ARGS__); } while (0) @@ -1227,7 +1235,22 @@ struct clip_ctx * clip_model_load(const char * fname, const int verbosity = 1) { return nullptr; } +#ifdef _WIN32 + int wlen = MultiByteToWideChar(CP_UTF8, 0, fname, -1, NULL, 0); + if (!wlen) { + return NULL; + } + wchar_t * wbuf = (wchar_t *) malloc(wlen * sizeof(wchar_t)); + wlen = MultiByteToWideChar(CP_UTF8, 0, fname, -1, wbuf, wlen); + if (!wlen) { + free(wbuf); + return NULL; + } + auto fin = std::ifstream(wbuf, std::ios::binary); + free(wbuf); +#else auto fin = std::ifstream(fname, std::ios::binary); +#endif if (!fin) { LOG_ERR("cannot open model file for loading tensors\n"); clip_free(new_clip); -- 2.39.3 (Apple Git-146)