--- a/src/server/daemon/rewrite.c Mon Dec 01 21:16:45 2025 +0100 +++ b/src/server/daemon/rewrite.c Mon Dec 01 21:21:54 2025 +0100 @@ -28,6 +28,31 @@ #include "rewrite.h" + +RewriteRule* rewrite_rule_create(const CxAllocator *a, cxmutstr regex, cxmutstr url) { + regex_t reg; + if(regex.ptr) { + if(regcomp(®, regex.ptr, REG_EXTENDED)) { + log_ereport(LOG_FAILURE, "rewrite: cannot compile regex: %s", regex.ptr); + return NULL; + } + } + + RewriteRule *rule = cxMalloc(a, sizeof(RewriteRule)); + if(!rule) { + return NULL; + } + rule->has_regex = regex.ptr != NULL; + rule->regex = reg; + rule->url = string_template_compile(a, cx_strcast(url)); + if(!rule->url) { + return NULL; + } + + return rule; +} + + typedef struct RVar { cxstring str; regmatch_t *match;