summaryrefslogtreecommitdiffstats
path: root/alias.c
diff options
context:
space:
mode:
authorRocco Rutte <pdmef@gmx.net>2008-07-21 09:11:40 +0200
committerRocco Rutte <pdmef@gmx.net>2008-07-21 09:11:40 +0200
commit9b9fe617685a772b44ee454edada923f9bf28591 (patch)
tree2d422663cc843314dd46dd9c677db8de0d6107dc /alias.c
parentab70b12289a42e3591d25bbea9ad417ff5290588 (diff)
Encode lines written to $alias_file in $config_charset if set. Closes #3095
Diffstat (limited to 'alias.c')
-rw-r--r--alias.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/alias.c b/alias.c
index 90608c90..75d49aa3 100644
--- a/alias.c
+++ b/alias.c
@@ -211,6 +211,20 @@ ADDRESS *mutt_get_address (ENVELOPE *env, char **pfxp)
return adr;
}
+static void recode_buf (char *buf, size_t buflen)
+{
+ char *s;
+
+ if (!ConfigCharset || !*ConfigCharset || !Charset)
+ return;
+ s = safe_strdup (buf);
+ if (!s)
+ return;
+ if (mutt_convert_string (&s, Charset, ConfigCharset, 0) == 0)
+ strfcpy (buf, s, buflen);
+ FREE(&s);
+}
+
void mutt_create_alias (ENVELOPE *cur, ADDRESS *iadr)
{
ALIAS *new, *t;
@@ -355,9 +369,11 @@ retry_name:
mutt_quote_filename (buf, sizeof (buf), new->name);
else
strfcpy (buf, new->name, sizeof (buf));
+ recode_buf (buf, sizeof (buf));
fprintf (rc, "alias %s ", buf);
buf[0] = 0;
rfc822_write_address (buf, sizeof (buf), new->addr, 0);
+ recode_buf (buf, sizeof (buf));
write_safe_address (rc, buf);
fputc ('\n', rc);
fclose (rc);