summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2012-03-12 14:58:34 +0800
committerPeng Wu <alexepico@gmail.com>2012-03-12 14:58:34 +0800
commita4913c389c9ee431f486ae8c6befc2556d5ae3fc (patch)
tree4abbc3810e9b735245e985babcb1510521ea0e58 /src
parentad345300d1bf8e9691ad24692a62421d04226948 (diff)
downloadlibpinyin-a4913c389c9ee431f486ae8c6befc2556d5ae3fc.tar.gz
libpinyin-a4913c389c9ee431f486ae8c6befc2556d5ae3fc.tar.xz
libpinyin-a4913c389c9ee431f486ae8c6befc2556d5ae3fc.zip
continue improves pinyin_save
Diffstat (limited to 'src')
-rw-r--r--src/pinyin.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/pinyin.cpp b/src/pinyin.cpp
index b8726f6..38deb6c 100644
--- a/src/pinyin.cpp
+++ b/src/pinyin.cpp
@@ -195,10 +195,15 @@ bool pinyin_save(pinyin_context_t * context){
"gb_char.bin", NULL);
oldchunk->load(filename);
g_free(filename);
+
context->m_phrase_index->diff(1, oldchunk, newlog);
+ gchar * tmpfilename = g_build_filename(context->m_user_dir,
+ "gb_char.dbin.tmp", NULL);
filename = g_build_filename(context->m_user_dir,
"gb_char.dbin", NULL);
- newlog->save(filename);
+ newlog->save(tmpfilename);
+ rename(tmpfilename, filename);
+ g_free(tmpfilename);
g_free(filename);
delete newlog;
@@ -209,14 +214,18 @@ bool pinyin_save(pinyin_context_t * context){
g_free(filename);
context->m_phrase_index->diff(2, oldchunk, newlog);
+ tmpfilename = g_build_filename(context->m_user_dir,
+ "gbk_char.dbin.tmp", NULL);
filename = g_build_filename(context->m_user_dir,
"gbk_char.dbin", NULL);
- newlog->save(filename);
+ newlog->save(tmpfilename);
+ rename(tmpfilename, filename);
+ g_free(tmpfilename);
g_free(filename);
delete newlog;
- gchar * tmpfilename = g_build_filename(context->m_user_dir,
- "user.db.tmp", NULL);
+ tmpfilename = g_build_filename(context->m_user_dir,
+ "user.db.tmp", NULL);
filename = g_build_filename(context->m_user_dir, "user.db", NULL);
context->m_user_bigram->save_db(tmpfilename);
rename(tmpfilename, filename);