Browse Source

sync_mailbox() did not update the msg struct when flags were changed,
causing the expunge command to fail

remove bogus strfcpy() line

Michael Elkins 23 năm trước cách đây
mục cha
commit
2f2b123d71
2 tập tin đã thay đổi với 10 bổ sung1 xóa
  1. 0 1
      maildir.c
  2. 10 0
      sync.c

+ 0 - 1
maildir.c

@@ -278,7 +278,6 @@ maildir_open (const char *path, int flags)
 	    /* determine the UID for this message.  The basename (sans
 	     * flags) is used as the key in the db
 	     */
-	    strfcpy (buf, p->file, sizeof (buf));
 	    key.dptr = p->file;
 	    s = strchr (key.dptr, ':');
 	    key.dsize = s ? (size_t) (s - key.dptr) : strlen (key.dptr);

+ 10 - 0
sync.c

@@ -220,7 +220,17 @@ sync_mailbox (mailbox_t * mbox, imap_t * imap, int flags,
 		      (cur->flags & D_DELETED) ? "T" : "");
 
 	    if (rename (path, newpath))
+	    {
 		perror ("rename");
+		return -1;
+	    }
+	    else
+	    {
+		    /* update the filename in the msg struct */
+		    p=strrchr(newpath,'/');
+		    free(cur->file);
+		    cur->file=strdup(p+1);
+	    }
 	}
     }