+ if (whichflags[strlen(whichflags)-1]==')') {
+ whichflags[strlen(whichflags)-1]=0;
+ }
+ striplt(whichflags);
+
+ /* A client might twiddle more than one bit at a time.
+ * Note that we check for the flag names without the leading
+ * backslash because imap_parameterize() strips them out.
+ */
+ num_flags = num_tokens(whichflags, ' ');
+ for (j=0; j<num_flags; ++j) {
+ extract_token(flag, whichflags, j, ' ', sizeof flag);
+
+ if ((!strcasecmp(flag, "\\Deleted"))
+ || (!strcasecmp(flag, "Deleted"))) {
+ if (CtdlDoIHavePermissionToDeleteMessagesFromThisRoom()) {
+ bits_to_twiddle |= IMAP_DELETED;
+ }
+ }
+ if ((!strcasecmp(flag, "\\Seen"))
+ || (!strcasecmp(flag, "Seen"))) {
+ bits_to_twiddle |= IMAP_SEEN;
+ }
+ if ((!strcasecmp(flag, "\\Answered"))
+ || (!strcasecmp(flag, "\\Answered"))) {
+ bits_to_twiddle |= IMAP_ANSWERED;
+ }