diff options
Diffstat (limited to 'utils/storage/gen_binary_files.cpp')
-rw-r--r-- | utils/storage/gen_binary_files.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/utils/storage/gen_binary_files.cpp b/utils/storage/gen_binary_files.cpp index fe73d75..e3f2d81 100644 --- a/utils/storage/gen_binary_files.cpp +++ b/utils/storage/gen_binary_files.cpp @@ -24,10 +24,12 @@ #include "utils_helper.h" static const gchar * table_dir = "."; +static gboolean gen_punct_table = FALSE; static GOptionEntry entries[] = { {"table-dir", 0, 0, G_OPTION_ARG_FILENAME, &table_dir, "table directory", NULL}, + {"gen-punct-table", 0, 0, G_OPTION_ARG_NONE, &gen_punct_table, "generate punctuation table", NULL}, {NULL} }; @@ -83,6 +85,29 @@ bool generate_binary_files(const char * pinyin_table_filename, return true; } +bool generate_punct_table(const char * tablename) { + PunctTable punct_table; + bool retval = punct_table.attach(tablename, ATTACH_CREATE|ATTACH_READWRITE); + if (!retval) { + fprintf(stderr, "open %s failed!\n", tablename); + exit(ENOENT); + } + + gchar * filename = g_build_filename(table_dir, "punct.table", NULL); + FILE * tablefile = fopen(filename, "r"); + if (NULL == tablefile) { + fprintf(stderr, "open %s failed!\n", filename); + exit(ENOENT); + } + + punct_table.load_text(tablefile); + + fclose(tablefile); + g_free(filename); + + return true; +} + int main(int argc, char * argv[]){ setlocale(LC_ALL, ""); @@ -95,16 +120,16 @@ int main(int argc, char * argv[]){ g_print("option parsing failed:%s\n", error->message); exit(EINVAL); } + g_option_context_free(context); SystemTableInfo2 system_table_info; - gchar * filename = g_build_filename(table_dir, SYSTEM_TABLE_INFO, NULL); + const gchar * filename = SYSTEM_TABLE_INFO; bool retval = system_table_info.load(filename); if (!retval) { fprintf(stderr, "load table.conf failed.\n"); exit(ENOENT); } - g_free(filename); const pinyin_table_info_t * phrase_files = system_table_info.get_default_tables(); @@ -120,5 +145,8 @@ int main(int argc, char * argv[]){ ADDON_SYSTEM_PHRASE_INDEX, phrase_files, type); + if (gen_punct_table) + generate_punct_table(SYSTEM_PUNCT_TABLE); + return 0; } |