IMAP enhancements, by priority:
[ -- socket -- ]
+
* Smarter connection code. Mutt should handle dropped connections/routing
problems gracefully. It should be able to transparently reconnect. This
is facilitated by the next item.
PRIORITY: [***]
[ -- browsing -- ]
-* Investigate a new way of displaying folders with subfolders and messages.
- Possibly we could use a tree-view in the browser, w/ expand, collapse.
- For low-bandwidth lines we could defer getting subfolder lists until the
- folder is expanded.
- Current thought is that <ENTER> will select a mailbox if it doesn't have
- subfolders or enter the folder if it does. If it has messages and subfolders,
- we'll use a new key to select it as a mailbox.
- We should maybe add a new imap_format string for IMAP browsing, without all
+
+* We should maybe add a new imap_format string for IMAP browsing, without all
the stat variables but with tags like how many messages are in the folders,
how many subfolders, that weird \Marked tag, etc.
PRIORITY: [** ]
-* See if we can't add more info to the IMAP browser than just name (without
- incurring too much overhead). eg which folders contain new mail, size,
- number of messages.
-
- PRIORITY: [** ]
-
[ -- speed -- ]
+
* Persistent caching of data. I think the nicest way to do this is to store
local copies like IMAP does, with an invisible control message at the top,
and extra invisible headers in the message (for UID/dirty bits). This does
PRIORITY: [* ]
[ -- new features -- ]
-* Implement the received folder on IMAP, now that COPY is done
-
- PRIORITY: [** ]
* Commands for creating/deleting folders on the server, since users may not
otherwise be able to do this on IMAP servers.
PRIORITY: [** ]
-* Implement READ-ONLY support, and the x (quit without saving changes)
- command.
+* Implement the x (quit without saving changes) command.
PRIORITY: [** ]
-* Create a logout command, so users can reconnect with different account
- information without quitting mutt. Note: Tommi Komulainen's
- multiple-account code makes this unnecessary - just use an account of
- the form {username@host}
-
- PRIORITY: [* ]
-
Brendan Cully <brendan@kublai.com>
-Updated: 19991227
+Updated: 20000704
return r;
}
-static int imap_user_match (const IMAP_MBOX *m1, const IMAP_MBOX *m2)
+/* imap_account_match: compare account info (host/port/user) */
+static int imap_account_match (const IMAP_MBOX *m1, const IMAP_MBOX *m2)
{
const char *user = ImapUser ? ImapUser : NONULL (Username);
+ if (mutt_strcasecmp (m1->host, m2->host))
+ return 0;
+ if (m1->port != m2->port)
+ return 0;
+
if (m1->flags & m2->flags & M_IMAP_USER)
return (!strcmp (m1->user, m2->user));
if (m1->flags & M_IMAP_USER)
conn = Connections;
while (conn)
{
- if (!mutt_strcasecmp (mx->host, conn->mx.host) && (mx->port == conn->mx.port) && imap_user_match (mx, &conn->mx))
+ if (imap_account_match (mx, &conn->mx))
return conn;
conn = conn->next;
}
sin.sin_family = AF_INET;
if ((he = gethostbyname (conn->mx.host)) == NULL)
{
- mutt_perror (conn->mx.host);
- return (-1);
+ mutt_error (_("Could not find the host \"%s\""), conn->mx.host);
+
+ return -1;
}
memcpy (&sin.sin_addr, he->h_addr_list[0], he->h_length);