summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2020-07-21 15:27:45 +0800
committerPeng Wu <alexepico@gmail.com>2020-07-21 17:43:26 +0800
commit49cbae6d9a9df24fa73dc55a684e52d8fcdd0dcf (patch)
tree098bf2a0cc2540b5ba4a5faf736ba5338d16304b
parent035d5fdda849c2b1d369fbfcb6ebe705ca2c3221 (diff)
downloadibus-libpinyin-49cbae6d9a9df24fa73dc55a684e52d8fcdd0dcf.tar.gz
ibus-libpinyin-49cbae6d9a9df24fa73dc55a684e52d8fcdd0dcf.tar.xz
ibus-libpinyin-49cbae6d9a9df24fa73dc55a684e52d8fcdd0dcf.zip
init network dictionary
-rw-r--r--src/PYLibPinyin.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc
index 52365ad..1f9d444 100644
--- a/src/PYLibPinyin.cc
+++ b/src/PYLibPinyin.cc
@@ -68,6 +68,19 @@ LibPinyinBackEnd::initPinyinContext (Config *config)
context = pinyin_init (LIBPINYIN_DATADIR, userdir);
g_free (userdir);
+ /* init network dictionary */
+ pinyin_load_phrase_library (context, NETWORK_DICTIONARY);
+ time_t start = config->networkDictionaryStartTimestamp ();
+ time_t end = config->networkDictionaryEndTimestamp ();
+
+ readNetworkDictionary (context, PKGDATADIR G_DIR_SEPARATOR_S "network.txt",
+ start, end);
+
+ /* save the timestamp */
+ config->networkDictionaryStartTimestamp (start);
+ config->networkDictionaryEndTimestamp (end);
+
+ /* load addon dictionaries */
const char *dicts = config->dictionaries ().c_str ();
gchar ** indices = g_strsplit_set (dicts, ";", -1);
for (size_t i = 0; i < g_strv_length(indices); ++i) {
@@ -114,6 +127,19 @@ LibPinyinBackEnd::initChewingContext (Config *config)
context = pinyin_init (LIBPINYIN_DATADIR, userdir);
g_free(userdir);
+ /* init network dictionary */
+ pinyin_load_phrase_library (context, NETWORK_DICTIONARY);
+ time_t start = config->networkDictionaryStartTimestamp ();
+ time_t end = config->networkDictionaryEndTimestamp ();
+
+ readNetworkDictionary (context, PKGDATADIR G_DIR_SEPARATOR_S "network.txt",
+ start, end);
+
+ /* save the timestamp */
+ config->networkDictionaryStartTimestamp (start);
+ config->networkDictionaryEndTimestamp (end);
+
+ /* load addon dictionaries */
const char *dicts = config->dictionaries ().c_str ();
gchar ** indices = g_strsplit_set (dicts, ";", -1);
for (size_t i = 0; i < g_strv_length(indices); ++i) {
@@ -362,6 +388,11 @@ LibPinyinBackEnd::readNetworkDictionary(pinyin_context_t * context,
FILE * dictfile = fopen (filename, "r");
+ if (NULL == dictfile) {
+ fprintf (stderr, "failed to open file: %s.\n", filename);
+ return FALSE;
+ }
+
if (!checkNetworkDictionary (context, dictfile, start, loaded)) {
fclose (dictfile);
return FALSE;