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))
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;