From da26434f0ec31c8ee3f506982224d11ed21bb876 Mon Sep 17 00:00:00 2001 From: Nishi Date: Wed, 23 Sep 2026 11:39:32 +0900 Subject: [PATCH] ok --- CMakeLists.txt | 3 +++ include/sj4ime/sj4ime.h | 1 + lib/sj4ime/ime.c | 11 +++++++---- src/sj4mkdic/readline.c | 3 ++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4d4516..d5f1eea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,9 @@ endif() if(NOT SJ4_GLOBAL) sj4_library(sj4ime) target_link_libraries(sj4ime PUBLIC sj4lib) + if(NOT SJ4_NO_UNICODE) + target_compile_definitions(sj4ime PRIVATE UCS) + endif() endif() if(SJ4_BUILD_TOOLS OR (NOT CMAKE_BINARY_DIR MATCHES CMAKE_CURRENT_SOURCE_DIR AND NOT SJ4_BUILD_ONLY_LIB)) diff --git a/include/sj4ime/sj4ime.h b/include/sj4ime/sj4ime.h index 5daf175..decad6e 100644 --- a/include/sj4ime/sj4ime.h +++ b/include/sj4ime/sj4ime.h @@ -23,6 +23,7 @@ int sj4_ime_length(Sj4Ime* ime); void* sj4_ime_kouho(Sj4Ime* ime); void* sj4_ime_kanabuf(Sj4Ime* ime); void* sj4_ime_convbuf(Sj4Ime* ime); +void sj4_ime_close(Sj4Ime*); #ifdef __cplusplus } diff --git a/lib/sj4ime/ime.c b/lib/sj4ime/ime.c index 3895010..99cbd9f 100644 --- a/lib/sj4ime/ime.c +++ b/lib/sj4ime/ime.c @@ -81,13 +81,12 @@ static void concat(int charset, u_char* out, u_char* in) { w_out[i + sj4_charset_to(charset, (u_char*)(w_out + i), in, strlen(in))] = 0; } else -#else +#endif { i = strlen(out); out[i + sj4_charset_to(charset, out + i, in, strlen(in))] = 0; } -#endif } static void concat_nc(int charset, u_char* out, u_char* in) { @@ -103,7 +102,7 @@ static void concat_nc(int charset, u_char* out, u_char* in) { memcpy(w_out + i, in, j * sizeof(wchar_t)); w_out[i + j] = 0; } else -#else +#endif { i = strlen(out); j = strlen(in); @@ -111,7 +110,6 @@ static void concat_nc(int charset, u_char* out, u_char* in) { memcpy(out + i, in, j); out[i + j] = 0; } -#endif } #define ZEROBUF memset(&ime->kouho.buffer, 0, sizeof(ime->kouho.buffer)) @@ -235,3 +233,8 @@ void* sj4_ime_kanabuf(Sj4Ime* ime) { void* sj4_ime_convbuf(Sj4Ime* ime) { return ime->convbuf; } + +void sj4_ime_close(Sj4Ime* ime) { + sj4_close(ime->lib); + free(ime); +} diff --git a/src/sj4mkdic/readline.c b/src/sj4mkdic/readline.c index fd3cfed..9b9db92 100644 --- a/src/sj4mkdic/readline.c +++ b/src/sj4mkdic/readline.c @@ -104,6 +104,7 @@ readchar() { } if((cod = unicode_to_eucjp(n)) == -1) { + code = n; return '['; } @@ -259,7 +260,7 @@ int* readline() { c = skip_blank(); if(c == '#') { - while(c != '\n') + while(c != '\n' && c != EOF) c = skip_blank(); }