diff options
author | Peng Wu <alexepico@gmail.com> | 2010-09-30 15:08:07 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2010-09-30 15:08:07 +0800 |
commit | f84457ea19cf4e402cce86d3d5a4a21baa72dcb8 (patch) | |
tree | 4b7ac94c297a71416df810dd1e779358480eb1dd /utils/storage | |
parent | 4374bffd4c98e9f3d6643f3855a4f49786b0257a (diff) | |
download | libpinyin-f84457ea19cf4e402cce86d3d5a4a21baa72dcb8.tar.gz libpinyin-f84457ea19cf4e402cce86d3d5a4a21baa72dcb8.tar.xz libpinyin-f84457ea19cf4e402cce86d3d5a4a21baa72dcb8.zip |
add required check.
Diffstat (limited to 'utils/storage')
-rw-r--r-- | utils/storage/tag_utility.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/utils/storage/tag_utility.cpp b/utils/storage/tag_utility.cpp index 6ade289..456bc62 100644 --- a/utils/storage/tag_utility.cpp +++ b/utils/storage/tag_utility.cpp @@ -129,6 +129,40 @@ bool taglib_read(const char * input_line, int & line_type, GPtrArray * values, for ( int i = cur_entry->m_num_of_values + 1; i < num_of_tokens; ++i){ g_return_val_if_fail(i < num_of_tokens, false); + const char * tmp = tokens[i]; + + /* check ignored tags. */ + bool ignored = false; + int ignored_len = g_strv_length( entry->m_ignored_tags ); + for ( int m = 0; m < ignored_len; ++m) { + if ( strcmp(tmp, entry->m_ignored_tags[i]) == 0) { + ignored = true; + break; + } + } + + if ( ignored ) { + ++i; + continue; + } + + /* check required tags. */ + bool required = false; + int required_len = g_strv_length( entry->m_required_tags); + for ( int m = 0; m < required_len; ++m) { + if ( strcmp(tmp, entry->m_required_tags[i]) == 0) { + required = true; + break; + } + } + + /* warning on the un-expected tags. */ + if ( !required ) { + g_warning("un-expected tags:%s.\n", tmp); + ++i; + continue; + } + char * key = g_strdup(tokens[i]); ++i; g_return_val_if_fail(i < num_of_tokens, false); |