Rocco Rutte:
[apps/madmutt.git] / imap / imap.c
index 0aa906b..76d9f8b 100644 (file)
@@ -905,7 +905,7 @@ int imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd,
   if (mutt_bit_isset (idata->rights, ACL_WRITE))
     imap_add_keywords (flags, hdr, idata->flags, sizeof (flags));
 
-  mutt_remove_trailing_ws (flags);
+  str_skip_trailws (flags);
 
   /* UW-IMAP is OK with null flags, Cyrus isn't. The only solution is to
    * explicitly revoke all system flags (if we have permission) */
@@ -916,7 +916,7 @@ int imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd,
     imap_set_flag (idata, ACL_WRITE, 1, "\\Answered ", flags, sizeof (flags));
     imap_set_flag (idata, ACL_DELETE, 1, "\\Deleted ", flags, sizeof (flags));
 
-    mutt_remove_trailing_ws (flags);
+    str_skip_trailws (flags);
 
     mutt_buffer_addstr (cmd, " -FLAGS.SILENT (");
   } else
@@ -1017,7 +1017,7 @@ int imap_sync_mailbox (CONTEXT * ctx, int expunge, int *index_hint)
       /* if the message has been rethreaded or attachments have been deleted
        * we delete the message and reupload it.
        * This works better if we're expunging, of course. */
-      if (ctx->hdrs[n]->refs_changed || ctx->hdrs[n]->irt_changed ||
+      if ((ctx->hdrs[n]->env && (ctx->hdrs[n]->env->refs_changed || ctx->hdrs[n]->env->irt_changed)) ||
           ctx->hdrs[n]->attach_del) {
         debug_print (3, ("Attachments to be deleted, falling back to _mutt_save_message\n"));
         if (!appendctx)
@@ -1046,7 +1046,7 @@ int imap_sync_mailbox (CONTEXT * ctx, int expunge, int *index_hint)
     idata->reopen |= IMAP_EXPUNGE_EXPECTED;
     if (imap_exec (idata, "EXPUNGE", 0) != 0) {
       imap_error (_("imap_sync_mailbox: EXPUNGE failed"), idata->cmd.buf);
-      rc = -1;
+      rc = imap_reconnect (ctx);
       goto out;
     }
   }
@@ -1176,7 +1176,7 @@ int imap_mailbox_check (char *path, int new)
    * command on a mailbox that you have selected 
    */
 
-  if (safe_strcmp (mbox_unquoted, idata->mailbox) == 0
+  if (mutt_strcmp (mbox_unquoted, idata->mailbox) == 0
       || (ascii_strcasecmp (mbox_unquoted, "INBOX") == 0
           && safe_strcasecmp (mbox_unquoted, idata->mailbox) == 0)) {
     strfcpy (buf, "NOOP", sizeof (buf));
@@ -1203,8 +1203,8 @@ int imap_mailbox_check (char *path, int new)
       /* The mailbox name may or may not be quoted here. We could try to 
        * munge the server response and compare with quoted (or vise versa)
        * but it is probably more efficient to just strncmp against both. */
-      if (safe_strncmp (mbox_unquoted, s, safe_strlen (mbox_unquoted)) == 0
-          || safe_strncmp (mbox, s, safe_strlen (mbox)) == 0) {
+      if (safe_strncmp (mbox_unquoted, s, mutt_strlen (mbox_unquoted)) == 0
+          || safe_strncmp (mbox, s, mutt_strlen (mbox)) == 0) {
         s = imap_next_word (s);
         s = imap_next_word (s);
         if (isdigit ((unsigned char) *s)) {
@@ -1392,14 +1392,14 @@ int imap_complete (char *dest, size_t dlen, char *path)
       /* if the folder isn't selectable, append delimiter to force browse
        * to enter it on second tab. */
       if (noselect) {
-        clen = safe_strlen (list_word);
+        clen = mutt_strlen (list_word);
         list_word[clen++] = delim;
         list_word[clen] = '\0';
       }
       /* copy in first word */
       if (!completions) {
         strfcpy (completion, list_word, sizeof (completion));
-        matchlen = safe_strlen (completion);
+        matchlen = mutt_strlen (completion);
         completions++;
         continue;
       }