summaryrefslogtreecommitdiffstats
path: root/utils/storage
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2010-09-30 15:08:07 +0800
committerPeng Wu <alexepico@gmail.com>2010-09-30 15:08:07 +0800
commitf84457ea19cf4e402cce86d3d5a4a21baa72dcb8 (patch)
tree4b7ac94c297a71416df810dd1e779358480eb1dd /utils/storage
parent4374bffd4c98e9f3d6643f3855a4f49786b0257a (diff)
downloadlibpinyin-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.cpp34
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);