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
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 @@
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;
diff --git a/docs/CREDITS b/docs/CREDITS
index 3fc9718..7a5c2e8 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -239,3 +239,4 @@
Andrew Cupper
Thilo-Alexander Ginkel
Adam Gashlin
+Robert Kukla