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.tar.gz rockbox-3eb9e70b6467becb2aa88cc8d24a82a7c288f1fd.zip |
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 042d27cc84..70934b4f36 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) | |||
595 | static bool check_against_clause(long numeric, const char *str, | 595 | static bool check_against_clause(long numeric, const char *str, |
596 | const struct tagcache_search_clause *clause) | 596 | const struct tagcache_search_clause *clause) |
597 | { | 597 | { |
598 | switch (clause->type) | 598 | if (clause->numeric) |
599 | { | 599 | { |
600 | case clause_is: | 600 | switch (clause->type) |
601 | if (clause->numeric) | 601 | { |
602 | case clause_is: | ||
602 | return numeric == clause->numeric_data; | 603 | return numeric == clause->numeric_data; |
603 | else | 604 | case clause_is_not: |
605 | return numeric != clause->numeric_data; | ||
606 | case clause_gt: | ||
607 | return numeric > clause->numeric_data; | ||
608 | case clause_gteq: | ||
609 | return numeric >= clause->numeric_data; | ||
610 | case clause_lt: | ||
611 | return numeric < clause->numeric_data; | ||
612 | case clause_lteq: | ||
613 | return numeric <= clause->numeric_data; | ||
614 | default: | ||
615 | logf("Incorrect numeric tag: %d", clause->type); | ||
616 | } | ||
617 | } | ||
618 | else | ||
619 | { | ||
620 | switch (clause->type) | ||
621 | { | ||
622 | case clause_is: | ||
604 | return !strcasecmp(clause->str, str); | 623 | return !strcasecmp(clause->str, str); |
605 | case clause_is_not: | 624 | case clause_is_not: |
606 | if (clause->numeric) | 625 | return strcasecmp(clause->str, str); |
607 | return numeric != clause->numeric_data; | 626 | case clause_gt: |
608 | else | 627 | return 0>strcasecmp(clause->str, str); |
609 | return strcasecmp(clause->str, str); | 628 | case clause_gteq: |
610 | 629 | return 0>=strcasecmp(clause->str, str); | |
611 | case clause_gt: | 630 | case clause_lt: |
612 | return numeric > clause->numeric_data; | 631 | return 0<strcasecmp(clause->str, str); |
613 | case clause_gteq: | 632 | case clause_lteq: |
614 | return numeric >= clause->numeric_data; | 633 | return 0<=strcasecmp(clause->str, str); |
615 | case clause_lt: | 634 | case clause_contains: |
616 | return numeric < clause->numeric_data; | 635 | return (strcasestr(str, clause->str) != NULL); |
617 | case clause_lteq: | 636 | case clause_not_contains: |
618 | return numeric <= clause->numeric_data; | 637 | return (strcasestr(str, clause->str) == NULL); |
619 | 638 | case clause_begins_with: | |
620 | case clause_contains: | 639 | return (strcasestr(str, clause->str) == str); |
621 | return (strcasestr(str, clause->str) != NULL); | 640 | case clause_not_begins_with: |
622 | case clause_not_contains: | 641 | return (strcasestr(str, clause->str) != str); |
623 | return (strcasestr(str, clause->str) == NULL); | 642 | case clause_ends_with: |
624 | case clause_begins_with: | 643 | return str_ends_with(str, clause->str); |
625 | return (strcasestr(str, clause->str) == str); | 644 | case clause_not_ends_with: |
626 | case clause_not_begins_with: | 645 | return !str_ends_with(str, clause->str); |
627 | return (strcasestr(str, clause->str) != str); | 646 | |
628 | case clause_ends_with: | 647 | default: |
629 | return str_ends_with(str, clause->str); | 648 | logf("Incorrect tag: %d", clause->type); |
630 | case clause_not_ends_with: | 649 | } |
631 | return !str_ends_with(str, clause->str); | ||
632 | } | 650 | } |
633 | 651 | ||
634 | return false; | 652 | return false; |