fix: inject <base href> from base_path config; fix relative asset/nav links; add README

This commit is contained in:
2026-06-09 01:46:53 +02:00
parent 9fc9494ccd
commit 6e40fc0eb1
6 changed files with 123 additions and 9 deletions
+12 -1
View File
@@ -77,8 +77,19 @@ int parse_request(int fd, Req *req) {
void send_page(int fd, const char *title, Buf *body, const char *script_src) {
Buf page; buf_init(&page);
buf_str(&page, "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nConnection: close\r\n\r\n");
/* inject <base href> so relative assets resolve correctly at any sub-path */
const char *ph = strstr(g_header, "{{TITLE}}");
if (ph) {
const char *head_end = strstr(g_header, "</head>");
if (ph && head_end && head_end > ph) {
/* write up to </head>, inject base tag, then rest of header */
buf_append(&page, g_header, ph - g_header);
buf_str(&page, title);
const char *after_title = ph + 9;
buf_append(&page, after_title, head_end - after_title);
if (g_cfg.base_path[0])
buf_fmt(&page, "<base href=\"%s/\">", g_cfg.base_path);
buf_str(&page, head_end);
} else if (ph) {
buf_append(&page, g_header, ph - g_header);
buf_str(&page, title);
buf_str(&page, ph + 9);