]> granicus.if.org Git - neomutt/commitdiff
imap: simplify some helper functions
authorRichard Russon <rich@flatcap.org>
Fri, 16 Nov 2018 11:59:08 +0000 (11:59 +0000)
committerRichard Russon <rich@flatcap.org>
Fri, 16 Nov 2018 12:33:05 +0000 (12:33 +0000)
imap/browse.c
imap/command.c
imap/imap.c
imap/imap_private.h
imap/message.c
imap/utf7.c
imap/util.c

index 9574d76adba1dcac1712a10082a4b9f83f2d15ee..4cf4c412ec989fda7ead0777e1507f63522038bc 100644 (file)
@@ -242,7 +242,7 @@ int imap_browse(char *path, struct BrowserState *state)
 
     /* 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;
@@ -330,7 +330,7 @@ int imap_browse(char *path, struct BrowserState *state)
 
   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))
index 37c8d0f50efbf843f89750af0ec3c911dce0de0d..c1da91f1e75bb739108380dd4ee194dcfaf9562a 100644 (file)
@@ -605,7 +605,7 @@ static void cmd_parse_list(struct ImapAccountData *adata, char *s)
   }
   else
   {
-    imap_unmunge_mbox_name(adata, s);
+    imap_unmunge_mbox_name(adata->unicode, s);
     list->name = s;
   }
 
@@ -803,7 +803,7 @@ static void cmd_parse_status(struct ImapAccountData *adata, char *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);
index b31a87b52efb9b6e38d062030141b027f9dca00d..bc2c740524d094ee592f161588d0e49f51a0021f 100644 (file)
@@ -614,7 +614,7 @@ static int imap_access2(struct ImapAccountData *adata, char *mailbox)
     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);
@@ -646,7 +646,7 @@ int imap_create_mailbox(struct ImapAccountData *adata, char *mailbox)
 {
   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)
@@ -696,8 +696,8 @@ int imap_rename_mailbox(struct ImapAccountData *adata, char *oldname, const char
   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);
@@ -723,7 +723,8 @@ int imap_delete_mailbox(struct Mailbox *m, char *path)
   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)
@@ -2197,7 +2198,7 @@ static int imap_mbox_open(struct Context *ctx)
   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))
index 87f4bed20e45487e266c1e4c35fbc58677fe4a14..320708ceea57748b81f5bf15e59a8e447a9d47ab 100644 (file)
@@ -373,8 +373,8 @@ char *imap_next_word(char *s);
 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);
@@ -382,8 +382,8 @@ bool imap_account_match(const struct ConnAccount *a1, const struct ConnAccount *
 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);
 
index 76b7d6db98192790a72469ff5efae07268d5e884..7f7bd19158f56a687cbc8717e931c3d20b4ba9e9 100644 (file)
@@ -1545,7 +1545,7 @@ int imap_copy_messages(struct Context *ctx, struct Email *e, char *dest, bool de
   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
index f05c1527ef65d51a46f28f4a9209f74c13708a49..ca6fd047a69a339575bd4ed92ba98f8331e633ee 100644 (file)
@@ -311,10 +311,10 @@ bail:
 
 /**
  * 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;
@@ -323,7 +323,7 @@ void imap_utf_encode(struct ImapAccountData *adata, char **s)
   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);
@@ -333,17 +333,17 @@ void imap_utf_encode(struct ImapAccountData *adata, char **s)
 
 /**
  * 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);
index 6d9ba40cf2b187c5decbb386a73cdd26f0409687..b6003973da9707d366f13a7b8aecc5de14b645ae 100644 (file)
@@ -170,7 +170,7 @@ struct ImapMboxData *imap_mdata_new(struct ImapAccountData *adata, const char *n
     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;
@@ -985,16 +985,15 @@ void imap_unquote_string(char *s)
 
 /**
  * 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);
 
@@ -1003,19 +1002,19 @@ void imap_munge_mbox_name(struct ImapAccountData *adata, char *dest,
 
 /**
  * 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));
   }