if (ciss->host) {
safe_strcat (dest, len, "//");
- len -= (l = safe_strlen (dest));
+ len -= (l = mutt_strlen (dest));
dest += l;
if (ciss->user) {
else
snprintf (dest, len, "%s@", ciss->user);
- len -= (l = safe_strlen (dest));
+ len -= (l = mutt_strlen (dest));
dest += l;
}
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);
}
}