| 146 | } |
| 147 | |
| 148 | bool cbm_str_contains(const char *s, const char *sub) { |
| 149 | if (!s || !sub) { |
| 150 | return false; |
| 151 | } |
| 152 | if (sub[0] == '\0') { |
| 153 | return true; |
| 154 | } |
| 155 | return strstr(s, sub) != NULL; |
| 156 | } |
| 157 | |
| 158 | char *cbm_str_tolower(CBMArena *a, const char *s) { |
| 159 | if (!s) { |