gargoyle/src/sleuth.c

34 lines
854 B
C

#include <gargoyle/codex.h>
#include <gargoyle/sleuth.h>
#include <gargoyle/twine.h>
#include <stddef.h>
struct gargoyle_opt *gargoyle_find_brand(uint16_t optc, struct gargoyle_opt *optv, const char *brand) {
for(; optc; optc -= 1, optv += 1) {
const char *idx = brand;
if(optv->type == GARGOYLE_TYPE_BOOL && gargoyle_cmp(idx, "no-", 3, GARGOYLE_CMP_ICASE)) {
idx += 3;
}
uint8_t end = !*(idx + optv->brand_sz);
uint8_t eql = *(idx + optv->brand_sz) == '=';
if(gargoyle_cmp(idx, optv->brand, optv->brand_sz, GARGOYLE_CMP_ICASE) && (end || eql)) {
return optv;
}
}
return NULL;
}
struct gargoyle_opt *gargoyle_find_emblem(uint16_t optc, struct gargoyle_opt *optv, const char emblem) {
for(; optc; optc -= 1, optv += 1) {
if(emblem == optv->emblem) {
return optv;
}
}
return NULL;
}