X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=url.c;h=eb9d7f6385ae0bed975232d4df700b9220591a97;hp=1740c241ef8951659929f8abdce276207f8a4ee6;hb=df9a60705a8b714c1929339fe9173cf0a06ab3ba;hpb=74a2265af51ce89bca845adc1d68f273c9933c13 diff --git a/url.c b/url.c index 1740c24..eb9d7f6 100644 --- a/url.c +++ b/url.c @@ -16,6 +16,7 @@ #endif #include "mutt.h" +#include "ascii.h" #include "mapping.h" #include "url.h" @@ -32,6 +33,7 @@ static struct mapping_t UrlMap[] = { {"pop", U_POP}, {"pops", U_POPS}, {"nntp", U_NNTP}, + {"news", U_NNTP}, {"nntps", U_NNTPS}, {"snews", U_NNTPS}, {"mailto", U_MAILTO}, @@ -171,8 +173,8 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags) snprintf (dest, len, "%s:", mutt_getnamebyvalue (ciss->scheme, UrlMap)); if (ciss->host) { - safe_strcat (dest, len, "//"); - len -= (l = mutt_strlen (dest)); + str_cat (dest, len, "//"); + len -= (l = str_len (dest)); dest += l; if (ciss->user) { @@ -181,7 +183,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 = mutt_strlen (dest)); + len -= (l = str_len (dest)); dest += l; } @@ -192,7 +194,7 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags) } if (ciss->path) - safe_strcat (dest, len, ciss->path); + str_cat (dest, len, ciss->path); return 0; } @@ -212,7 +214,7 @@ int url_parse_mailto (ENVELOPE * e, char **body, const char *src) if (!(t = strchr (src, ':'))) return -1; - if ((tmp = safe_strdup (t + 1)) == NULL) + if ((tmp = str_dup (t + 1)) == NULL) return -1; if ((headers = strchr (tmp, '?'))) @@ -234,19 +236,27 @@ int url_parse_mailto (ENVELOPE * e, char **body, const char *src) if (!ascii_strcasecmp (tag, "body")) { if (body) - mutt_str_replace (body, value); + str_replace (body, value); } else { - taglen = mutt_strlen (tag); +#define SAFEPFX (option (OPTSTRICTMAILTO) ? "" : "X-Mailto-") + taglen = str_len (tag) + str_len (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 (OPTXMAILTO); + set_option (OPTEDITHDRS); + } } } - FREE (&tmp); + mem_free (&tmp); return 0; }