summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
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 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)
595static bool check_against_clause(long numeric, const char *str, 595static 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;