Mon, 01 Dec 2025 21:21:54 +0100
add rewrite_rule_create
| src/server/daemon/rewrite.c | file | annotate | diff | comparison | revisions | |
| src/server/daemon/rewrite.h | file | annotate | diff | comparison | revisions |
--- 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;
--- a/src/server/daemon/rewrite.h Mon Dec 01 21:16:45 2025 +0100 +++ b/src/server/daemon/rewrite.h Mon Dec 01 21:21:54 2025 +0100 @@ -44,11 +44,6 @@ typedef struct RewriteRule { /* - * uncompiled regex string - */ - cxmutstr match; - - /* * Compiled match regex */ regex_t regex; @@ -64,6 +59,8 @@ StringTemplate *url; } RewriteRule; +RewriteRule* rewrite_rule_create(const CxAllocator *a, cxmutstr regex, cxmutstr url); + int rewrite_url( RewriteRule *rule, regmatch_t *match,