Rocco Rutte:
[apps/madmutt.git] / url.c
diff --git a/url.c b/url.c
index a7cb3c3..35cb0c1 100644 (file)
--- a/url.c
+++ b/url.c
@@ -172,7 +172,7 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags)
 
   if (ciss->host) {
     safe_strcat (dest, len, "//");
-    len -= (l = safe_strlen (dest));
+    len -= (l = mutt_strlen (dest));
     dest += l;
 
     if (ciss->user) {
@@ -181,7 +181,7 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags)
       else
         snprintf (dest, len, "%s@", ciss->user);
 
-      len -= (l = safe_strlen (dest));
+      len -= (l = mutt_strlen (dest));
       dest += l;
     }
 
@@ -237,13 +237,19 @@ int url_parse_mailto (ENVELOPE * e, char **body, const char *src)
         str_replace (body, value);
     }
     else {
-      taglen = safe_strlen (tag);
+#define SAFEPFX (option (OPTSTRICTMAILTO) ? "" : "X-Mailto-")
+      taglen = mutt_strlen (tag) + mutt_strlen (SAFEPFX);
       /* mutt_parse_rfc822_line makes some assumptions */
-      snprintf (scratch, sizeof (scratch), "%s: %s", tag, value);
+      snprintf (scratch, sizeof (scratch), "%s%s: %s", SAFEPFX, tag, value);
+#undef SAVEPFX
       scratch[taglen] = '\0';
       value = &scratch[taglen + 1];
       SKIPWS (value);
       mutt_parse_rfc822_line (e, NULL, scratch, value, 1, 0, 0, &last);
+      /* if $strict_mailto is set, force editing headers to let
+       * users have a look at what we got */
+      if (!option (OPTSTRICTMAILTO))
+        set_option (OPTEDITHDRS);
     }
   }