2022-06-19 05:13:49 +00:00
|
|
|
#include <ctype.h>
|
|
|
|
#include <gargoyle/twine.h>
|
|
|
|
|
|
|
|
static uint8_t is_sep(char tok) {
|
|
|
|
return (tok == '_' || tok == '-');
|
|
|
|
}
|
|
|
|
|
|
|
|
uint8_t gargoyle_cmp(const char *s1, const char *s2, uint16_t len, uint8_t flags) {
|
|
|
|
while(*s1 && *s2 && len) {
|
|
|
|
if(flags & GARGOYLE_CMP_ICASE && isalpha(*s1) && tolower(*s1) == tolower(*s2)) {
|
|
|
|
s1 += 1, s2 += 1;
|
|
|
|
} else if(flags & GARGOYLE_CMP_SYMBL && is_sep(*s1) && is_sep(*s2)) {
|
|
|
|
s1 += 1, s2 += 1;
|
|
|
|
} else if(*s1 == *s2) {
|
|
|
|
s1 += 1, s2 += 1;
|
|
|
|
} else {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
len -= 1;
|
|
|
|
}
|
|
|
|
|
2022-06-19 06:38:20 +00:00
|
|
|
return 1;
|
2022-06-19 06:19:44 +00:00
|
|
|
}
|
2022-06-22 21:45:57 +00:00
|
|
|
|
|
|
|
char *gargoyle_cpy(char *dst, const char *src, uint16_t len) {
|
|
|
|
uint16_t idx = 1;
|
|
|
|
|
|
|
|
for(; len; dst += 1, len -= 1, idx += 1) {
|
|
|
|
if(*src) {
|
|
|
|
*dst = *src;
|
|
|
|
src += 1;
|
|
|
|
} else {
|
|
|
|
*dst = '\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return dst;
|
|
|
|
}
|