summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-10-05 09:49:18 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-10-05 09:49:18 +0000
commit3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd (patch)
tree8acd75dae30fe60991e4d50b9c60c9704e67d384 /apps
parentac39354b9eb21679a5f4b2c3bad81794b77a95b1 (diff)
downloadrockbox-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.c80
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;