{
char *t = safe_strdup (*s);
if (!mutt_convert_string (&t, Charset, "UTF-8", 0))
- utf8_to_utf7 (t, strlen (t), s, 0);
+ {
+ char *u7 = utf8_to_utf7 (t, strlen (t), NULL, 0);
+ FREE (s);
+ *s = u7;
+ }
FREE (&t);
}
}
return 0;
}
+static void mutt_free_opt (struct option_t* p)
+{
+ REGEXP* pp;
+
+ switch (p->type & DT_MASK)
+ {
+ case DT_ADDR:
+ rfc822_free_address ((ADDRESS**)p->data);
+ break;
+ case DT_RX:
+ pp = (REGEXP*)p->data;
+ FREE (&pp->pattern);
+ if (pp->rx)
+ {
+ regfree (pp->rx);
+ FREE (&pp->rx);
+ }
+ break;
+ case DT_PATH:
+ case DT_STR:
+ FREE ((char**)p->data);
+ break;
+ }
+}
+
+/* clean up before quitting */
+void mutt_free_opts (void)
+{
+ int i;
+
+ for (i = 0; MuttVars[i].option; i++)
+ mutt_free_opt (MuttVars + i);
+
+ mutt_free_rx_list (&Alternates);
+ mutt_free_rx_list (&UnAlternates);
+ mutt_free_rx_list (&MailLists);
+ mutt_free_rx_list (&UnMailLists);
+ mutt_free_rx_list (&SubscribedLists);
+ mutt_free_rx_list (&UnSubscribedLists);
+ mutt_free_rx_list (&NoSpamList);
+}
+
static void add_to_list (LIST **list, const char *str)
{
LIST *t, *last = NULL;
void mutt_buffer_add (BUFFER*, const char*, size_t);
void mutt_buffer_addstr (BUFFER*, const char*);
void mutt_buffer_addch (BUFFER*, char);
+void mutt_free_opts (void);
#define mutt_system(x) _mutt_system(x,0)
int _mutt_system (const char *, int);