summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChoe Hwanjin <choe.hwanjin@gmail.com>2022-09-18 13:52:31 +0900
committerChoe Hwanjin <choe.hwanjin@gmail.com>2022-09-18 13:52:31 +0900
commitd58b56a42c9b7f874e0dabce7588e8ccc82cdc66 (patch)
tree86724d3ff5c7be632db22a4717e62f7488bbd0cf
parenta3d8eb6167cb92fe9d192402bb9b8dbe20ff7e26 (diff)
downloadlibhangul-init.tar.gz
hangul_init: Add user_defined_keyboard_path argumentinit
키보드 파일 위치를 환경 변수로만 조정하는 것보다 hangul_init() 함수에서 직접 키보드 파일 위치를 지정할 수 있는 편이 라이브러리 사용에 편리한 것 같다.
-rw-r--r--hangul/hangul.h2
-rw-r--r--hangul/hangulinputcontext.c11
-rw-r--r--hangul/hangulinternals.h2
-rw-r--r--hangul/hangulkeyboard.c9
-rw-r--r--test/hangul.c6
-rw-r--r--test/test.c6
-rw-r--r--tools/hangul.c2
7 files changed, 19 insertions, 19 deletions
diff --git a/hangul/hangul.h b/hangul/hangul.h
index 36156db..dbb0212 100644
--- a/hangul/hangul.h
+++ b/hangul/hangul.h
@@ -96,7 +96,7 @@ enum {
};
/* library */
-int hangul_init();
+int hangul_init(const char* user_defined_keyboard_path);
int hangul_fini();
/* keyboard */
diff --git a/hangul/hangulinputcontext.c b/hangul/hangulinputcontext.c
index cd54945..ba85be4 100644
--- a/hangul/hangulinputcontext.c
+++ b/hangul/hangulinputcontext.c
@@ -1587,21 +1587,24 @@ hangul_ic_is_transliteration(HangulInputContext *hic)
/**
* @ingroup hangulic
- * @breif libhangul을 초기화 하는 함수.
+ * @brief libhangul을 초기화 하는 함수.
+ * @param user_defined_keyboard_path 한글 키보드 파일을 읽을 디렉토리 패스.
+ * PATH 환경 변수와 같이 :으로 구분하여 여러개를 지정할 수 있다.
+ * NULL을 주면 내장 기본값을 사용한다.
*
* libhangul의 함수를 사용하기 전에 호출해야 한다.
*/
int
-hangul_init()
+hangul_init(const char* user_defined_keyboard_path)
{
int res;
- res = hangul_keyboard_list_init();
+ res = hangul_keyboard_list_init(user_defined_keyboard_path);
return res;
}
/**
* @ingroup hangulic
- * @breif libhangul에서 사용한 리소스를 해제하는 함수.
+ * @brief libhangul에서 사용한 리소스를 해제하는 함수.
*
* libhangul의 함수의 사용이 끝나면 호출해야 한다.
*/
diff --git a/hangul/hangulinternals.h b/hangul/hangulinternals.h
index 8fb0d70..6d8d075 100644
--- a/hangul/hangulinternals.h
+++ b/hangul/hangulinternals.h
@@ -35,7 +35,7 @@ ucschar hangul_keyboard_combine(const HangulKeyboard* keyboard,
ucschar hangul_keyboard_get_mapping(const HangulKeyboard* keyboard,
int tableid, unsigned key);
-int hangul_keyboard_list_init();
+int hangul_keyboard_list_init(const char* user_defined_keyboard_path);
int hangul_keyboard_list_fini();
const HangulKeyboard* hangul_keyboard_list_get_keyboard(const char* id);
diff --git a/hangul/hangulkeyboard.c b/hangul/hangulkeyboard.c
index 11354d8..8ba62a7 100644
--- a/hangul/hangulkeyboard.c
+++ b/hangul/hangulkeyboard.c
@@ -888,7 +888,7 @@ hangul_keyboard_get_keyboard_path()
}
int
-hangul_keyboard_list_init()
+hangul_keyboard_list_init(const char* user_defined_keyboard_path)
{
#if ENABLE_EXTERNAL_KEYBOARDS
/* 이 함수를 중복 호출할 경우에 대한 처리
@@ -903,7 +903,12 @@ hangul_keyboard_list_init()
hangul_builtin_keyboard_count = 0;
/* libhangul data dir에서 keyboard 로딩 */
- char* libhangul_keyboard_path = hangul_keyboard_get_keyboard_path();
+ char* libhangul_keyboard_path = NULL;
+ if (user_defined_keyboard_path == NULL) {
+ libhangul_keyboard_path = hangul_keyboard_get_keyboard_path();
+ } else {
+ libhangul_keyboard_path = strdup(user_defined_keyboard_path);
+ }
unsigned n = 0;
diff --git a/test/hangul.c b/test/hangul.c
index a019f06..5331556 100644
--- a/test/hangul.c
+++ b/test/hangul.c
@@ -68,11 +68,7 @@ main(int argc, char *argv[])
keyboard = argv[1];
}
- char* keyboard_path = getenv("LIBHANGUL_KEYBOARD_PATH");
- if (keyboard_path == NULL)
- setenv("LIBHANGUL_KEYBOARD_PATH", TEST_LIBHANGUL_KEYBOARD_PATH, 1);
-
- hangul_init();
+ hangul_init(TEST_LIBHANGUL_KEYBOARD_PATH);
hic = hangul_ic_new(keyboard);
if (hic == NULL) {
diff --git a/test/test.c b/test/test.c
index f476c48..73e3c4c 100644
--- a/test/test.c
+++ b/test/test.c
@@ -613,11 +613,7 @@ Suite* libhangul_suite()
int main()
{
- char* keyboard_path = getenv("LIBHANGUL_KEYBOARD_PATH");
- if (keyboard_path == NULL)
- setenv("LIBHANGUL_KEYBOARD_PATH", TEST_LIBHANGUL_KEYBOARD_PATH, 1);
-
- hangul_init();
+ hangul_init(TEST_LIBHANGUL_KEYBOARD_PATH);
int number_failed;
Suite* s = libhangul_suite();
diff --git a/tools/hangul.c b/tools/hangul.c
index cd62ae6..a2a36fb 100644
--- a/tools/hangul.c
+++ b/tools/hangul.c
@@ -295,7 +295,7 @@ main(int argc, char *argv[])
setlocale(LC_ALL, "");
- hangul_init();
+ hangul_init(NULL);
res = EXIT_SUCCESS;
keyboard = "2";