Loading main.c +22 −8 Original line number Diff line number Diff line Loading @@ -215,28 +215,42 @@ static void config_db (AppData* appdata) { gint ri = 0; gboolean r = FALSE; gboolean rb = FALSE; static const char* SQLITE3_MEMORY_DB = ":memory:"; sqlite3* db = NULL; gchar* sql = NULL; ri = sqlite3_open (SQLITE3_MEMORY_DB, &db); g_assert_cmpint (ri, ==, SQLITE_OK); if (ri != SQLITE_OK) { g_warning ("sqlite3_open :memory: db failed, query will not work."); goto db_fail; } g_assert_nonnull (db); /* TODO make db path configurable */ /* TODO remove user name in db path */ sql = sqlite3_mprintf ("ATTACH %Q AS maindb", "/home/sylecn/.cache/ibus/pinyin/main.db"); r = sqlite3_exec_simple (db, sql); g_assert (r); rb = sqlite3_exec_simple (db, sql); if (! rb) { g_warning ("attach maindb failed, query will not work."); goto attach_fail; } sqlite3_free (sql); /* TODO make db path configurable */ sql = sqlite3_mprintf ("ATTACH %Q AS userdb", "/home/sylecn/.cache/ibus/pinyin/user-1.0.db"); r = sqlite3_exec_simple (db, sql); g_assert (r); sqlite3_free (sql); rb = sqlite3_exec_simple (db, sql); if (! rb) { g_warning ("attach userdb failed, query will not work."); goto attach_fail; } appdata->db = db; return; attach_fail: sqlite3_free (sql); sqlite3_close (db); db_fail: appdata->db = NULL; } static void Loading meson.build +1 −1 Original line number Diff line number Diff line # -*- mode: conf -*- project('zero-pinyin-service', ['c', 'cpp'], version: '0.3.1', version: '0.3.2', license: 'GPL', default_options: [ 'warning_level=2', Loading zero-pinyin-service.c +5 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ get_candidates_for_n_pinyin (sqlite3* db, const guint DEFAULT_LIMIT = 50; GList* result = NULL; /* GList of Candidate */ g_assert_nonnull (db); g_assert_cmpint (group_size, >=, 1); g_assert_cmpint (group_size, <=, g_list_length (pylist)); Loading Loading @@ -201,6 +202,10 @@ get_candidates (sqlite3* db, GVariantBuilder *candidates_builder, GVariantBuilder *matched_lengths_builder) { if (! db) { g_warning ("No db connection, can't get candidates."); return; } GList* pylist = NULL; guint pylist_len = 0; Loading Loading
main.c +22 −8 Original line number Diff line number Diff line Loading @@ -215,28 +215,42 @@ static void config_db (AppData* appdata) { gint ri = 0; gboolean r = FALSE; gboolean rb = FALSE; static const char* SQLITE3_MEMORY_DB = ":memory:"; sqlite3* db = NULL; gchar* sql = NULL; ri = sqlite3_open (SQLITE3_MEMORY_DB, &db); g_assert_cmpint (ri, ==, SQLITE_OK); if (ri != SQLITE_OK) { g_warning ("sqlite3_open :memory: db failed, query will not work."); goto db_fail; } g_assert_nonnull (db); /* TODO make db path configurable */ /* TODO remove user name in db path */ sql = sqlite3_mprintf ("ATTACH %Q AS maindb", "/home/sylecn/.cache/ibus/pinyin/main.db"); r = sqlite3_exec_simple (db, sql); g_assert (r); rb = sqlite3_exec_simple (db, sql); if (! rb) { g_warning ("attach maindb failed, query will not work."); goto attach_fail; } sqlite3_free (sql); /* TODO make db path configurable */ sql = sqlite3_mprintf ("ATTACH %Q AS userdb", "/home/sylecn/.cache/ibus/pinyin/user-1.0.db"); r = sqlite3_exec_simple (db, sql); g_assert (r); sqlite3_free (sql); rb = sqlite3_exec_simple (db, sql); if (! rb) { g_warning ("attach userdb failed, query will not work."); goto attach_fail; } appdata->db = db; return; attach_fail: sqlite3_free (sql); sqlite3_close (db); db_fail: appdata->db = NULL; } static void Loading
meson.build +1 −1 Original line number Diff line number Diff line # -*- mode: conf -*- project('zero-pinyin-service', ['c', 'cpp'], version: '0.3.1', version: '0.3.2', license: 'GPL', default_options: [ 'warning_level=2', Loading
zero-pinyin-service.c +5 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ get_candidates_for_n_pinyin (sqlite3* db, const guint DEFAULT_LIMIT = 50; GList* result = NULL; /* GList of Candidate */ g_assert_nonnull (db); g_assert_cmpint (group_size, >=, 1); g_assert_cmpint (group_size, <=, g_list_length (pylist)); Loading Loading @@ -201,6 +202,10 @@ get_candidates (sqlite3* db, GVariantBuilder *candidates_builder, GVariantBuilder *matched_lengths_builder) { if (! db) { g_warning ("No db connection, can't get candidates."); return; } GList* pylist = NULL; guint pylist_len = 0; Loading