]> granicus.if.org Git - neomutt/commitdiff
imap: imap_fix/cache_path don't need ImapAccountData
authorMehdi Abaakouk <sileht@sileht.net>
Sat, 8 Dec 2018 19:37:51 +0000 (20:37 +0100)
committerRichard Russon <rich@flatcap.org>
Wed, 12 Dec 2018 12:52:22 +0000 (12:52 +0000)
imap/browse.c
imap/imap.c
imap/imap_private.h
imap/message.c
imap/util.c

index e86e2a108b5d6ee691a2c9e9425a4f20624ad432..5eeffbb41c37afeb46118bbd5ef465dbc9cdba98 100644 (file)
@@ -225,7 +225,7 @@ int imap_browse(char *path, struct BrowserState *state)
   /* skip check for parents when at the root */
   if (buf[0] != '\0')
   {
-    imap_fix_path(adata, buf, mbox, sizeof(mbox));
+    imap_fix_path(adata->delim, buf, mbox, sizeof(mbox));
     n = mutt_str_strlen(mbox);
   }
   else
@@ -444,7 +444,7 @@ int imap_mailbox_rename(const char *path)
     goto err;
   }
 
-  imap_fix_path(adata, newname, buf, sizeof(buf));
+  imap_fix_path(adata->delim, newname, buf, sizeof(buf));
 
   if (imap_rename_mailbox(adata, mdata->name, buf) < 0)
   {
index 5e84664c4365b9806a7c4aab8989dbcd07c24eeb..d672ad159e7163ea318a8ed9f3cde26929a44461 100644 (file)
@@ -2498,7 +2498,7 @@ int imap_path_canon(char *buf, size_t buflen)
   struct Url *url = url_parse(buf);
   if (url)
   {
-    imap_fix_path(NULL, url->path, tmp, sizeof(tmp));
+    imap_fix_path('\0', url->path, tmp, sizeof(tmp));
     url->path = tmp;
     url_tostring(url, tmp2, sizeof(tmp2), 0);
     mutt_str_strfcpy(buf, tmp2, buflen);
index 781bcfc44a8f7476171d0b42c6e19b0f2f5f7e35..1e4231e644833b0322f526d89b288c3767ba622b 100644 (file)
@@ -332,8 +332,8 @@ void imap_adata_free(void **ptr);
 struct ImapMboxData *imap_mdata_new(struct ImapAccountData *adata, const char* name);
 void imap_mdata_free(void **ptr);
 void imap_mdata_cache_reset(struct ImapMboxData *mdata);
-char *imap_fix_path(struct ImapAccountData *adata, const char *mailbox, char *path, size_t plen);
-void imap_cachepath(struct ImapAccountData *adata, const char *mailbox, char *dest, size_t dlen);
+char *imap_fix_path(char delim, const char *mailbox, char *path, size_t plen);
+void imap_cachepath(char delim, const char *mailbox, char *dest, size_t dlen);
 int imap_get_literal_count(const char *buf, unsigned int *bytes);
 char *imap_get_qualifier(char *buf);
 int imap_mxcmp(const char *mx1, const char *mx2);
index d24e782c6f2c684b9dcce00dc2b680f2cb51834c..6d7c68a69546d562273bc635738478331e17476c 100644 (file)
@@ -124,7 +124,7 @@ static struct BodyCache *msg_cache_open(struct Mailbox *m)
   if (mdata->bcache)
     return mdata->bcache;
 
-  imap_cachepath(adata, mdata->name, mailbox, sizeof(mailbox));
+  imap_cachepath(adata->delim, mdata->name, mailbox, sizeof(mailbox));
 
   return mutt_bcache_open(&adata->conn->account, mailbox);
 }
@@ -1576,7 +1576,7 @@ int imap_copy_messages(struct Context *ctx, struct Email *e, char *dest, bool de
     return 1;
   }
 
-  imap_fix_path(adata, buf, mbox, sizeof(mbox));
+  imap_fix_path(adata->delim, buf, mbox, sizeof(mbox));
   if (!*mbox)
     mutt_str_strfcpy(mbox, "INBOX", sizeof(mbox));
   imap_munge_mbox_name(adata->unicode, mmbox, sizeof(mmbox), mbox);
index 324dd12e77446daf63962df2004cef759e65ad8b..95050fe875c120188a0c6a89d4b059f661174a92 100644 (file)
@@ -159,7 +159,7 @@ struct ImapMboxData *imap_mdata_new(struct ImapAccountData *adata, const char *n
 
   mdata->real_name = mutt_str_strdup(name);
 
-  imap_fix_path(adata, name, buf, sizeof(buf));
+  imap_fix_path(adata->delim, name, buf, sizeof(buf));
   if (buf[0] == '\0')
     mutt_str_strfcpy(buf, "INBOX", sizeof(buf));
   mdata->name = mutt_str_strdup(buf);
@@ -423,7 +423,7 @@ header_cache_t *imap_hcache_open(struct ImapAccountData *adata, struct ImapMboxD
   char cachepath[PATH_MAX];
   char mbox[PATH_MAX];
 
-  imap_cachepath(adata, mdata->name, mbox, sizeof(mbox));
+  imap_cachepath(adata->delim, mdata->name, mbox, sizeof(mbox));
 
   if (strstr(mbox, "/../") || (strcmp(mbox, "..") == 0) || (strncmp(mbox, "../", 3) == 0))
     return NULL;
@@ -673,8 +673,8 @@ int imap_mxcmp(const char *mx1, const char *mx2)
   b1 = mutt_mem_malloc(strlen(mx1) + 1);
   b2 = mutt_mem_malloc(strlen(mx2) + 1);
 
-  imap_fix_path(NULL, mx1, b1, strlen(mx1) + 1);
-  imap_fix_path(NULL, mx2, b2, strlen(mx2) + 1);
+  imap_fix_path('\0', mx1, b1, strlen(mx1) + 1);
+  imap_fix_path('\0', mx2, b2, strlen(mx2) + 1);
 
   rc = mutt_str_strcmp(b1, b2);
   FREE(&b1);
@@ -772,11 +772,11 @@ void imap_error(const char *where, const char *msg)
 
 /**
  * imap_fix_path - Fix up the imap path
- * @param adata   Imap Account data
- * @param mailbox Mailbox path
- * @param path    Buffer for the result
- * @param plen    Length of buffer
- * @retval ptr Fixed-up path
+ * @param server_delim  Imap Server Delim
+ * @param mailbox       Mailbox path
+ * @param path          Buffer for the result
+ * @param plen          Length of buffer
+ * @retval ptr          Fixed-up path
  *
  * This is necessary because the rest of neomutt assumes a hierarchy delimiter of
  * '/', which is not necessarily true in IMAP.  Additionally, the filesystem
@@ -784,20 +784,17 @@ void imap_error(const char *where, const char *msg)
  * to "/".  IMAP servers are not required to do this.
  * Moreover, IMAP servers may dislike the path ending with the delimiter.
  */
-char *imap_fix_path(struct ImapAccountData *adata, const char *mailbox, char *path, size_t plen)
+char *imap_fix_path(char server_delim, const char *mailbox, char *path, size_t plen)
 {
   int i = 0;
-  char delim = '\0';
-
-  if (adata)
-    delim = adata->delim;
+  char delim = server_delim;
 
   while (mailbox && *mailbox && i < plen - 1)
   {
     if ((ImapDelimChars && strchr(ImapDelimChars, *mailbox)) || (delim && *mailbox == delim))
     {
       /* use connection delimiter if known. Otherwise use user delimiter */
-      if (!adata)
+      if (server_delim == '\0')
         delim = *mailbox;
 
       while (*mailbox && ((ImapDelimChars && strchr(ImapDelimChars, *mailbox)) ||
@@ -823,19 +820,19 @@ char *imap_fix_path(struct ImapAccountData *adata, const char *mailbox, char *pa
 
 /**
  * imap_cachepath - Generate a cache path for a mailbox
- * @param adata   Imap Account data
+ * @param delim   Imap server delimiter
  * @param mailbox Mailbox name
  * @param dest    Buffer to store cache path
  * @param dlen    Length of buffer
  */
-void imap_cachepath(struct ImapAccountData *adata, const char *mailbox, char *dest, size_t dlen)
+void imap_cachepath(char delim, const char *mailbox, char *dest, size_t dlen)
 {
   char *s = NULL;
   const char *p = mailbox;
 
   for (s = dest; p && *p && dlen; dlen--)
   {
-    if (*p == adata->delim)
+    if (*p == delim)
     {
       *s = '/';
       /* simple way to avoid collisions with UIDs */