bool sj_conf_check_access(const struct mg_str key, const char *acl) { struct mg_str entry; if (acl == NULL) return false; while ((acl = mg_next_comma_list_entry(acl, &entry, NULL)) != NULL) { if (entry.len == 0) continue; bool result = (entry.p[0] != '-'); if (entry.p[0] == '-' || entry.p[0] == '+') { entry.p++; entry.len--; } if (mg_match_prefix_n(entry, key) == (int) key.len) { return result; } } return false; }
int sj_conf_check_access(const char *key, const char *acl) { int key_len; struct mg_str entry; if (acl == NULL) return 0; key_len = strlen(key); while ((acl = mg_next_comma_list_entry(acl, &entry, NULL)) != NULL) { int result; if (entry.len == 0) continue; result = (entry.p[0] != '-'); if (entry.p[0] == '-' || entry.p[0] == '+') { entry.p++; entry.len--; } if (mg_match_prefix(entry.p, entry.len, key) == key_len) { return result; } } return 0; }