/* if our target exists and has inferiors, enter it if we
* aren't already going to */
- imap_munge_mbox_name(adata, munged_mbox, sizeof(munged_mbox), mbox);
+ imap_munge_mbox_name(adata->unicode, munged_mbox, sizeof(munged_mbox), mbox);
snprintf(buf, sizeof(buf), "%s \"\" %s", list_cmd, munged_mbox);
imap_cmd_start(adata, buf);
adata->cmdtype = IMAP_CT_LIST;
mutt_debug(3, "Quoting mailbox scan: %s -> ", mbox);
snprintf(buf, sizeof(buf), "%s%%", mbox);
- imap_munge_mbox_name(adata, munged_mbox, sizeof(munged_mbox), buf);
+ imap_munge_mbox_name(adata->unicode, munged_mbox, sizeof(munged_mbox), buf);
mutt_debug(3, "%s\n", munged_mbox);
snprintf(buf, sizeof(buf), "%s \"\" %s", list_cmd, munged_mbox);
if (browse_add_list_result(adata, buf, state, false))
}
else
{
- imap_unmunge_mbox_name(adata, s);
+ imap_unmunge_mbox_name(adata->unicode, s);
list->name = s;
}
{
s = imap_next_word(mailbox);
*(s - 1) = '\0';
- imap_unmunge_mbox_name(adata, mailbox);
+ imap_unmunge_mbox_name(adata->unicode, mailbox);
}
status = imap_mboxcache_get(adata, mailbox, 1);
return 0;
}
- imap_munge_mbox_name(adata, mbox, sizeof(mbox), mailbox);
+ imap_munge_mbox_name(adata->unicode, mbox, sizeof(mbox), mailbox);
if (mutt_bit_isset(adata->capabilities, IMAP4REV1))
snprintf(buf, sizeof(buf), "STATUS %s (UIDVALIDITY)", mbox);
{
char buf[LONG_STRING * 2], mbox[LONG_STRING];
- imap_munge_mbox_name(adata, mbox, sizeof(mbox), mailbox);
+ imap_munge_mbox_name(adata->unicode, mbox, sizeof(mbox), mailbox);
snprintf(buf, sizeof(buf), "CREATE %s", mbox);
if (imap_exec(adata, buf, 0) != 0)
char newmbox[LONG_STRING];
int rc = 0;
- imap_munge_mbox_name(adata, oldmbox, sizeof(oldmbox), oldname);
- imap_munge_mbox_name(adata, newmbox, sizeof(newmbox), newname);
+ imap_munge_mbox_name(adata->unicode, oldmbox, sizeof(oldmbox), oldname);
+ imap_munge_mbox_name(adata->unicode, newmbox, sizeof(newmbox), newname);
struct Buffer *b = mutt_buffer_pool_get();
mutt_buffer_printf(b, "RENAME %s %s", oldmbox, newmbox);
char mbox[PATH_MAX];
struct Url *url = url_parse(path);
- imap_munge_mbox_name(m->account->adata, mbox, sizeof(mbox), url->path);
+ struct ImapAccountData *adata = imap_adata_get(m);
+ imap_munge_mbox_name(adata->unicode, mbox, sizeof(mbox), url->path);
url_free(&url);
snprintf(buf, sizeof(buf), "DELETE %s", mbox);
if (imap_exec(m->account->adata, buf, 0) != 0)
adata->max_msn = 0;
mutt_message(_("Selecting %s..."), adata->mbox_name);
- imap_munge_mbox_name(adata, buf, sizeof(buf), adata->mbox_name);
+ imap_munge_mbox_name(adata->unicode, buf, sizeof(buf), adata->mbox_name);
/* pipeline ACL test */
if (mutt_bit_isset(adata->capabilities, ACL))
void imap_qualify_path(char *buf, size_t buflen, struct ConnAccount *conn_account, char *path);
void imap_quote_string(char *dest, size_t dlen, const char *src, bool quote_backtick);
void imap_unquote_string(char *s);
-void imap_munge_mbox_name(struct ImapAccountData *adata, char *dest, size_t dlen, const char *src);
-void imap_unmunge_mbox_name(struct ImapAccountData *adata, char *s);
+void imap_munge_mbox_name(bool unicode, char *dest, size_t dlen, const char *src);
+void imap_unmunge_mbox_name(bool unicode, char *s);
struct SeqsetIterator *mutt_seqset_iterator_new(const char *seqset);
int mutt_seqset_iterator_next(struct SeqsetIterator *iter, unsigned int *next);
void mutt_seqset_iterator_free(struct SeqsetIterator **p_iter);
void imap_get_parent(const char *mbox, char delim, char *buf, size_t buflen);
/* utf7.c */
-void imap_utf_encode(struct ImapAccountData *adata, char **s);
-void imap_utf_decode(struct ImapAccountData *adata, char **s);
+void imap_utf_encode(bool unicode, char **s);
+void imap_utf_decode(bool unicode, char **s);
void imap_allow_reopen(struct Mailbox *m);
void imap_disallow_reopen(struct Mailbox *m);
imap_fix_path(adata, buf, mbox, sizeof(mbox));
if (!*mbox)
mutt_str_strfcpy(mbox, "INBOX", sizeof(mbox));
- imap_munge_mbox_name(adata, mmbox, sizeof(mmbox), mbox);
+ imap_munge_mbox_name(adata->unicode, mmbox, sizeof(mmbox), mbox);
/* loop in case of TRYCREATE */
do
/**
* imap_utf_encode - Encode email from local charset to UTF-8
- * @param adata Imap Account data
- * @param s Email to convert
+ * @param unicode true if Unicode is allowed
+ * @param s Email to convert
*/
-void imap_utf_encode(struct ImapAccountData *adata, char **s)
+void imap_utf_encode(bool unicode, char **s)
{
if (!Charset || !s)
return;
if (t && (mutt_ch_convert_string(&t, Charset, "utf-8", 0) == 0))
{
FREE(s);
- if (adata->unicode)
+ if (unicode)
*s = mutt_str_strdup(t);
else
*s = utf8_to_utf7(t, strlen(t), NULL, 0);
/**
* imap_utf_decode - Decode email from UTF-8 to local charset
- * @param[in] adata Imap Account data
- * @param[out] s Email to convert
+ * @param[in] unicode true if Unicode is allowed
+ * @param[out] s Email to convert
*/
-void imap_utf_decode(struct ImapAccountData *adata, char **s)
+void imap_utf_decode(bool unicode, char **s)
{
if (!Charset)
return;
char *t = NULL;
- if (adata->unicode)
+ if (unicode)
t = mutt_str_strdup(*s);
else
t = utf7_to_utf8(*s, strlen(*s), 0, 0);
mutt_str_strfcpy(buf, "INBOX", sizeof(buf));
mdata->name = mutt_str_strdup(buf);
- imap_munge_mbox_name(adata, buf, sizeof(buf), mdata->name);
+ imap_munge_mbox_name(adata->unicode, buf, sizeof(buf), mdata->name);
mdata->munge_name = mutt_str_strdup(buf);
return mdata;
/**
* imap_munge_mbox_name - Quote awkward characters in a mailbox name
- * @param adata Imap Account data
- * @param dest Buffer to store safe mailbox name
- * @param dlen Length of buffer
- * @param src Mailbox name
+ * @param unicode true if Unicode is allowed
+ * @param dest Buffer to store safe mailbox name
+ * @param dlen Length of buffer
+ * @param src Mailbox name
*/
-void imap_munge_mbox_name(struct ImapAccountData *adata, char *dest,
- size_t dlen, const char *src)
+void imap_munge_mbox_name(bool unicode, char *dest, size_t dlen, const char *src)
{
char *buf = mutt_str_strdup(src);
- imap_utf_encode(adata, &buf);
+ imap_utf_encode(unicode, &buf);
imap_quote_string(dest, dlen, buf, false);
/**
* imap_unmunge_mbox_name - Remove quoting from a mailbox name
- * @param adata Imap Account data
- * @param s Mailbox name
+ * @param unicode true if Unicode is allowed
+ * @param s Mailbox name
*
* The string will be altered in-place.
*/
-void imap_unmunge_mbox_name(struct ImapAccountData *adata, char *s)
+void imap_unmunge_mbox_name(bool unicode, char *s)
{
imap_unquote_string(s);
char *buf = mutt_str_strdup(s);
if (buf)
{
- imap_utf_decode(adata, &buf);
+ imap_utf_decode(unicode, &buf);
strncpy(s, buf, strlen(s));
}