]> git.llucax.com Git - software/mutt-debian.git/blobdiff - imap/browse.c
Move Mutt with NNTP support to mutt-nntp package
[software/mutt-debian.git] / imap / browse.c
index 750a65dacc1ba0f7f7fd1bbdcb03302541b1f575..8b60bc782aafbffbe914cb51f0d31721f7fc8a57 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 1996-9 Brandon Long <blong@fiction.net>
- * Copyright (C) 1999-2007 Brendan Cully <brendan@kublai.com>
+ * Copyright (C) 1999-2008 Brendan Cully <brendan@kublai.com>
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -72,11 +72,13 @@ int imap_browse (char* path, struct browser_state* state)
   if (mx.mbox && mx.mbox[0] != '\0')
   {
     int rc;
+    char *ptr;
     imap_fix_path (idata, mx.mbox, mbox, sizeof (mbox));
-    imap_munge_mbox_name (buf, sizeof (buf), mbox);
-    imap_unquote_string(buf); /* As kludgy as it gets */
+    ptr = safe_strdup (mbox);
+    imap_utf7_encode (&ptr);
     mbox[sizeof (mbox) - 1] = '\0';
-    strncpy (mbox, buf, sizeof (mbox) - 1);
+    strncpy (mbox, ptr, sizeof (mbox) - 1);
+    FREE (&ptr);
     n = mutt_strlen (mbox);
 
     dprint (3, (debugfile, "imap_browse: mbox: %s\n", mbox));
@@ -228,7 +230,7 @@ int imap_mailbox_state (const char* path, struct mailbox_state* state)
     return -1;
   }
 
-  if (!imap_mxcmp(mx.mbox, idata->mailbox))
+  if (idata->ctx && !imap_mxcmp(mx.mbox, idata->mailbox))
   {
     state->new = idata->ctx->new;
     state->messages = idata->ctx->msgcount;
@@ -239,6 +241,8 @@ int imap_mailbox_state (const char* path, struct mailbox_state* state)
     state->messages = status->messages;
   }
 
+  FREE (&mx.mbox);
+
   return 0;
 }
 
@@ -329,7 +333,9 @@ int imap_mailbox_rename(const char* mailbox)
     goto fail;
   }
 
-  if (imap_rename_mailbox (idata, &mx, newname) < 0) {
+  imap_fix_path (idata, newname, buf, sizeof (buf));
+
+  if (imap_rename_mailbox (idata, &mx, buf) < 0) {
     mutt_error (_("Rename failed: %s"), imap_get_qualifier (idata->buf));
     mutt_sleep (1);
     goto fail;