diff options
| author | Miika Pekkarinen <miipekk@ihme.org> | 2006-10-05 09:49:18 +0000 |
|---|---|---|
| committer | Miika Pekkarinen <miipekk@ihme.org> | 2006-10-05 09:49:18 +0000 |
| commit | 3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd (patch) | |
| tree | 8acd75dae30fe60991e4d50b9c60c9704e67d384 /apps | |
| parent | ac39354b9eb21679a5f4b2c3bad81794b77a95b1 (diff) | |
| download | rockbox-3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd.zip rockbox-3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd.tar.gz rockbox-3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd.tar.bz2 rockbox-3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd.tar.xz | |
Accepted FS#6098 as the first patch from Robert Kukla and implemented using two switches.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11124 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/tagcache.c | 80 |
1 files changed, 49 insertions, 31 deletions
diff --git a/apps/tagcache.c b/apps/tagcache.c index 042d27c..70934b4 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c @@ -595,40 +595,58 @@ inline static bool str_ends_with(const char *str1, const char *str2) static bool check_against_clause(long numeric, const char *str, const struct tagcache_search_clause *clause) { - switch (clause->type) + if (clause->numeric) { - case clause_is: - if (clause->numeric) + switch (clause->type) + { + case clause_is: return numeric == clause->numeric_data; - else + case clause_is_not: + return numeric != clause->numeric_data; + case clause_gt: + return numeric > clause->numeric_data; + case clause_gteq: + return numeric >= clause->numeric_data; + case clause_lt: + return numeric < clause->numeric_data; + case clause_lteq: + return numeric <= clause->numeric_data; + default: + logf("Incorrect numeric tag: %d", clause->type); + } + } + else + { + switch (clause->type) + { + case clause_is: return !strcasecmp(clause->str, str); - case clause_is_not: - if (clause->numeric) - return numeric != clause->numeric_data; - else - return strcasecmp(clause->str, str); - - case clause_gt: - return numeric > clause->numeric_data; - case clause_gteq: - return numeric >= clause->numeric_data; - case clause_lt: - return numeric < clause->numeric_data; - case clause_lteq: - return numeric <= clause->numeric_data; - - case clause_contains: - return (strcasestr(str, clause->str) != NULL); - case clause_not_contains: - return (strcasestr(str, clause->str) == NULL); - case clause_begins_with: - return (strcasestr(str, clause->str) == str); - case clause_not_begins_with: - return (strcasestr(str, clause->str) != str); - case clause_ends_with: - return str_ends_with(str, clause->str); - case clause_not_ends_with: - return !str_ends_with(str, clause->str); + case clause_is_not: + return strcasecmp(clause->str, str); + case clause_gt: + return 0>strcasecmp(clause->str, str); + case clause_gteq: + return 0>=strcasecmp(clause->str, str); + case clause_lt: + return 0<strcasecmp(clause->str, str); + case clause_lteq: + return 0<=strcasecmp(clause->str, str); + case clause_contains: + return (strcasestr(str, clause->str) != NULL); + case clause_not_contains: + return (strcasestr(str, clause->str) == NULL); + case clause_begins_with: + return (strcasestr(str, clause->str) == str); + case clause_not_begins_with: + return (strcasestr(str, clause->str) != str); + case clause_ends_with: + return str_ends_with(str, clause->str); + case clause_not_ends_with: + return !str_ends_with(str, clause->str); + + default: + logf("Incorrect tag: %d", clause->type); + } } return false; |