int bstrcasecmp(const char* left, size_t leftSize, const char* right, size_t rightSize) { size_t minSize = leftSize < rightSize ? leftSize : rightSize; for (size_t i = 0; i < minSize; ++i) { ssize_t ret = chrcasecmp(left[i], right[i]); if (ret) return ret; } return (leftSize > rightSize) - (leftSize < rightSize); }
bool match_regex_at_place(Regex regex, char* text, bool case_insensitive) { if (*regex == NULL) return true; if (text[0] != '\0'){ if (regex[0]->type == brackets) { if(text[0] >= regex[0]->from && text[0] <= regex[0]->to ) return true; } if (regex[0]->type == parenthesis) { if (match_regex_at_place(regex[0]->optionA, text, case_insensitive)) return true; else if(match_regex_at_place(regex[0]->optionB, text, case_insensitive)) return true; else return false; } else if(regex[0]->type == dot || text[0] == regex[0]->single_char || (case_insensitive && chrcasecmp(text[0], regex[0]->single_char))) return match_regex_at_place(®ex[1], ++text, case_insensitive); } return false; }