static char *make_data_directory(const char *module_name, const char *data_dir) { struct dstr parsed_data_dir = {0}; bool found = false; make_data_dir(&parsed_data_dir, data_dir, module_name); found = os_file_exists(parsed_data_dir.array); if (!found && astrcmpi_n(module_name, "lib", 3) == 0) make_data_dir(&parsed_data_dir, data_dir, module_name + 3); return parsed_data_dir.array; }
static struct text_node *text_node_byname(struct text_node *node, const char *name) { struct text_node *subnode = node->first_subnode; while (subnode) { if (astrcmpi_n(subnode->str.array, name, subnode->str.len) == 0) return subnode; subnode = subnode->next; } return NULL; }
char *astrstri(char *str, const char *find) { size_t len; if (!str || !find) return NULL; len = strlen(find); do { if (astrcmpi_n(str, find, len) == 0) return str; } while (*str++); return NULL; }