From 85b53564ef1cc58a77af206ebdbd1f3fa7d225b2 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sat, 7 Dec 2013 18:01:03 +0100 Subject: [PATCH] Markdown: if we find libmarkdown, register a renderer for text/x-markdown --- webcit/configure.ac | 7 +++++++ webcit/debian/control | 2 +- webcit/msg_renderers.c | 26 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/webcit/configure.ac b/webcit/configure.ac index 4f4ad598e..6e67b56c4 100644 --- a/webcit/configure.ac +++ b/webcit/configure.ac @@ -234,6 +234,13 @@ AC_CHECK_HEADER(libical/ical.h, ] ) +dnl Checks for the discount markdown library. +AC_CHECK_LIB(markdown, + markdown, + [ + LDFLAGS="$LDFLAGS -lmarkdown" + AC_DEFINE(HAVE_MARKDOWN,[],[whether we have markdown message rendering]) +]) dnl Check for libcitadel AC_CHECK_HEADER(libcitadel.h, diff --git a/webcit/debian/control b/webcit/debian/control index 636cdbecf..189fcdbf9 100644 --- a/webcit/debian/control +++ b/webcit/debian/control @@ -3,7 +3,7 @@ Section: web Priority: extra Maintainer: Wilfried Goesgens Build-Depends: debhelper (>= 4), po-debconf, libical-dev (>=0.43), gettext, locales, - libcitadel-dev (> 8.13), quilt (>= 0.40), autotools-dev, libssl-dev + libcitadel-dev (> 8.13), quilt (>= 0.40), autotools-dev, libssl-dev, libmarkdown-dev Standards-Version: 3.8.0 Package: citadel-webcit diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index 6fb4af226..2132a2dd4 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -1137,6 +1137,29 @@ void render_MAIL_html(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset Mime->Data = Buf; } +#ifdef HAVE_MARKDOWN +void render_MAIL_markdown(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) +{ +#include + wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); + MMIOT *doc; + char *md_as_html = NULL; + + if (StrLength(Mime->Data) == 0) + return; + + doc = mkd_string(ChrPtr(Mime->Data), StrLength(Mime->Data), 0); + mkd_compile(doc, 0); + if (mkd_document(doc, &md_as_html) != EOF) { + FreeStrBuf(&Mime->Data); + Mime->Data = NewStrBufPlain(md_as_html, -1); + } +// free(md_as_html); + mkd_cleanup(doc); + +} +#endif + void render_MAIL_UNKNOWN(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); @@ -1598,6 +1621,9 @@ InitModule_MSGRENDERERS RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain, 1, 3); RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1); RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html, 1, 100); +#ifdef HAVE_MARKDOWN + RegisterMimeRenderer(HKEY("text/x-markdown"), render_MAIL_markdown, 1, 30); +#endif RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN, 0, 0); /* these headers are citserver replies to MSG4 and friends. one evaluator for each */ -- 2.30.2