summaryrefslogtreecommitdiffstats
path: root/utils/storage/gen_binary_files.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/storage/gen_binary_files.cpp')
-rw-r--r--utils/storage/gen_binary_files.cpp32
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;
}