From: Thomas Roessler Date: Mon, 21 Aug 2000 19:25:24 +0000 (+0000) Subject: patch-bac.parsepath-2 X-Git-Tag: mutt-1-3-8-rel~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4f60f24e69acfda2512e84a8f325798efb1062c1;p=mutt patch-bac.parsepath-2 --- diff --git a/imap/browse.c b/imap/browse.c index 95ef83d6..cfd77c79 100644 --- a/imap/browse.c +++ b/imap/browse.c @@ -311,7 +311,7 @@ static int browse_add_list_result (IMAP_DATA* idata, const char* cmd, if (isparent) noselect = 1; /* prune current folder from output */ - if (isparent || strncmp (name, mx.mbox, strlen (name))) + if (isparent || mutt_strncmp (name, mx.mbox, strlen (name))) imap_add_folder (idata->delim, name, noselect, noinferiors, state, isparent); } @@ -348,8 +348,8 @@ static void imap_add_folder (char delim, char *folder, int noselect, if (isparent) strfcpy (relpath, "../", sizeof (relpath)); /* strip current folder from target, to render a relative path */ - else if (!strncmp (mx.mbox, folder, strlen (mx.mbox))) - strfcpy (relpath, folder + strlen (mx.mbox), sizeof (relpath)); + else if (!mutt_strncmp (mx.mbox, folder, mutt_strlen (mx.mbox))) + strfcpy (relpath, folder + mutt_strlen (mx.mbox), sizeof (relpath)); else strfcpy (relpath, folder, sizeof (relpath)); diff --git a/imap/imap.c b/imap/imap.c index e66878ca..2fbdad7e 100644 --- a/imap/imap.c +++ b/imap/imap.c @@ -1062,13 +1062,14 @@ int imap_mailbox_check (char* path, int new) connflags = M_IMAP_CONN_NONEW; if (!(idata = imap_conn_find (&(mx.account), connflags))) - goto fail; + { + FREE (&mx.mbox); + return -1; + } conn = idata->conn; imap_fix_path (idata, mx.mbox, buf, sizeof (buf)); - /* Update the path, if it fits */ - if (strlen (buf) < strlen (mx.mbox)) - strcpy (mx.mbox, buf); + FREE (&mx.mbox); imap_munge_mbox_name (mbox, sizeof(mbox), buf); strfcpy (mbox_unquoted, buf, sizeof (mbox_unquoted)); @@ -1092,7 +1093,7 @@ int imap_mailbox_check (char* path, int new) else /* Server does not support STATUS, and this is not the current mailbox. * There is no lightweight way to check recent arrivals */ - goto fail; + return -1; imap_cmd_start (idata, buf); @@ -1128,12 +1129,7 @@ int imap_mailbox_check (char* path, int new) } while (rc == IMAP_CMD_CONTINUE); - FREE (&mx.mbox); return msgcount; - - fail: - FREE (&mx.mbox); - return -1; } /* all this listing/browsing is a mess. I don't like that name is a pointer diff --git a/mutt_socket.c b/mutt_socket.c index 1379d2b7..fd3e2eb6 100644 --- a/mutt_socket.c +++ b/mutt_socket.c @@ -49,7 +49,7 @@ int mutt_socket_open (CONNECTION* conn) int mutt_socket_close (CONNECTION* conn) { - int rc; + int rc = -1; if (conn->fd < 0) dprint (1, (debugfile, "mutt_socket_close: Attempt to close closed connection.\n")); diff --git a/muttlib.c b/muttlib.c index 83c52970..9f1bcfd2 100644 --- a/muttlib.c +++ b/muttlib.c @@ -681,16 +681,22 @@ void mutt_pretty_mailbox (char *s) } *q = 0; - if (mutt_strncmp (s, Maildir, (len = mutt_strlen (Maildir))) == 0 && s[len] == '/') + if (mutt_strncmp (s, Maildir, (len = mutt_strlen (Maildir))) == 0) { + /* chop off delimiters after Maildir. '.' is a hack because IMAP can + * use arbitrary delimiters, but we may not have a connection. Could + * call an IMAP delimiter getting function here later, otherwise + * default to this. */ + if (s[len] != '/' && s[len] != '.') + len--; *s++ = '='; - strcpy (s, s + len); + memmove (s, s + len, mutt_strlen (s + len) + 1); } else if (mutt_strncmp (s, Homedir, (len = mutt_strlen (Homedir))) == 0 && s[len] == '/') { *s++ = '~'; - strcpy (s, s + len - 1); + memmove (s, s + len - 1, mutt_strlen (s + len - 1) + 1); } }