From fc56bcbd57669bc9a5b3a53eb87c51ad9d724d7e Mon Sep 17 00:00:00 2001 From: Brendan Cully Date: Mon, 8 Aug 2005 00:31:57 +0000 Subject: [PATCH] If imap_check_subscribed is set, mailbox or unmailbox folders in response to subscribe/unsubscribe commands in the browser. --- imap/imap.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/imap/imap.c b/imap/imap.c index 4e7ad5b1..d0e849de 100644 --- a/imap/imap.c +++ b/imap/imap.c @@ -1378,6 +1378,8 @@ int imap_subscribe (char *path, int subscribe) IMAP_DATA *idata; char buf[LONG_STRING]; char mbox[LONG_STRING]; + char errstr[STRING]; + BUFFER err, token; IMAP_MBOX mx; if (!mx_is_imap (path) || imap_parse_path (path, &mx)) @@ -1385,22 +1387,32 @@ int imap_subscribe (char *path, int subscribe) mutt_error (_("Bad mailbox name")); return -1; } - - if (!(idata = imap_conn_find (&(mx.account), 0))) goto fail; conn = idata->conn; imap_fix_path (idata, mx.mbox, buf, sizeof (buf)); + + if (option (OPTIMAPCHECKSUBSCRIBED)) + { + memset (&token, 0, sizeof (token)); + err.data = errstr; + err.dsize = sizeof (errstr); + snprintf (mbox, sizeof (mbox), "%smailboxes \"%s\"", + subscribe ? "" : "un", path); + if (mutt_parse_rc_line (mbox, &token, &err)) + dprint (1, (debugfile, "Error adding subscribed mailbox: %s\n", errstr)); + FREE (&token.data); + } + if (subscribe) mutt_message (_("Subscribing to %s..."), buf); else mutt_message (_("Unsubscribing to %s..."), buf); imap_munge_mbox_name (mbox, sizeof(mbox), buf); - snprintf (buf, sizeof (buf), "%s %s", subscribe ? "SUBSCRIBE" : - "UNSUBSCRIBE", mbox); + snprintf (buf, sizeof (buf), "%sSUBSCRIBE %s", subscribe ? "" : "UN", mbox); if (imap_exec (idata, buf, 0) < 0) goto fail; -- 2.40.0