diff options
Diffstat (limited to 'src/storage')
-rw-r--r-- | src/storage/table_info.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/storage/table_info.cpp b/src/storage/table_info.cpp index 795d93d..63af8e0 100644 --- a/src/storage/table_info.cpp +++ b/src/storage/table_info.cpp @@ -23,6 +23,7 @@ #include <stdio.h> #include <assert.h> #include <string.h> +#include <locale.h> using namespace pinyin; @@ -121,6 +122,8 @@ static PHRASE_FILE_TYPE to_file_type(const char * str) { bool SystemTableInfo::load(const char * filename) { reset(); + char * locale = setlocale(LC_NUMERIC, "C"); + FILE * input = fopen(filename, "r"); if (NULL == input) { fprintf(stderr, "open %s failed.\n", filename); @@ -183,6 +186,9 @@ bool SystemTableInfo::load(const char * filename) { /* postfix reserved tables. */ postfix_tables(); + + setlocale(LC_NUMERIC, locale); + return true; } @@ -208,6 +214,8 @@ void UserTableInfo::reset() { bool UserTableInfo::load(const char * filename) { reset(); + char * locale = setlocale(LC_NUMERIC, "C"); + FILE * input = fopen(filename, "r"); if (NULL == input) { fprintf(stderr, "open %s failed.", filename); @@ -237,10 +245,14 @@ bool UserTableInfo::load(const char * filename) { fclose(input); + setlocale(LC_NUMERIC, locale); + return true; } bool UserTableInfo::save(const char * filename) { + char * locale = setlocale(LC_NUMERIC, "C"); + FILE * output = fopen(filename, "w"); if (NULL == output) { fprintf(stderr, "write %s failed.\n", filename); @@ -252,6 +264,8 @@ bool UserTableInfo::save(const char * filename) { fclose(output); + setlocale(LC_NUMERIC, locale); + return true; } |