/*
+ * Copyright notice from original mutt:
* Copyright (C) 2000 Thomas Roessler <roessler@does-not-exist.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License,
+ * please see the file GPL in the top level source directory.
*/
/*
#endif
#include "mutt.h"
+#include "ascii.h"
#include "mapping.h"
#include "url.h"
#include "mime.h"
+#include "lib/mem.h"
+
#include <ctype.h>
static struct mapping_t UrlMap[] = {
snprintf (dest, len, "%s:", mutt_getnamebyvalue (ciss->scheme, UrlMap));
if (ciss->host) {
- safe_strcat (dest, len, "//");
- len -= (l = strlen (dest));
+ str_cat (dest, len, "//");
+ len -= (l = str_len (dest));
dest += l;
if (ciss->user) {
else
snprintf (dest, len, "%s@", ciss->user);
- len -= (l = strlen (dest));
+ len -= (l = str_len (dest));
dest += l;
}
}
if (ciss->path)
- safe_strcat (dest, len, ciss->path);
+ str_cat (dest, len, ciss->path);
return 0;
}
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, '?')))
if (!ascii_strcasecmp (tag, "body")) {
if (body)
- mutt_str_replace (body, value);
+ str_replace (body, value);
}
else {
- taglen = 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;
}