From 21360ec3d142d47877450b142fb0d91a53457643 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Thu, 14 Feb 2008 15:37:13 +0000 Subject: [PATCH] Use absolute links for inline images in email notifications SVN revision: 2044 --- src/elogd.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index af7c9da2..05a372d7 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -5531,9 +5531,9 @@ void insert_breaks(char *str, int n, int size) /*------------------------------------------------------------------*/ -void replace_inline_img(char *str) +void replace_inline_img(LOGBOOK *lbs, char *str) { - char *p, *pn; + char *p, *pn, *pa, old[256], link[256], base_url[256]; int index; p = str; @@ -5550,6 +5550,26 @@ void replace_inline_img(char *str) pn++; sprintf(p, "", index); memmove(p + strlen(p), pn, strlen(pn) + 1); + + /* now change href to absolute link */ + pa = p - 1; + while (pa > str && *pa != '<') // search '' + pa--; + pn = strstr(pa, "href="); + if (pn && pn - pa < 10) { + strlcpy(old, pn+6, sizeof(old)); + if (strchr(old, '\"')) + *strchr(old, '\"') = 0; + compose_base_url(lbs, base_url, sizeof(base_url), FALSE); + strlcpy(link, base_url, sizeof(link)); + strlcat(link, old, sizeof(link)); + if (strchr(link, '?')) + *strchr(link, '?') = 0; + strsubst(pn+6, TEXT_SIZE, old, link); + if (strlen(link) > strlen(old)) + p += strlen(link) - strlen(old); + } + p++; } else p++; @@ -23171,7 +23191,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command) rsputs_elcode(lbs, email, text); else { if (email) - replace_inline_img(text); + replace_inline_img(lbs, text); rsputs(text); }