+++ /dev/null
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/PATCHES mutt-1.5.10/PATCHES
---- mutt-1.5.10.orig/PATCHES 2005-10-07 09:29:54.000000000 +0200
-+++ mutt-1.5.10/PATCHES 2005-10-07 09:30:06.000000000 +0200
-@@ -1,2 +1,3 @@
- vvv.quote
-+patch-1.3.27.cd.trash_folder.1
- rr.compressed
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/commands.c mutt-1.5.10/commands.c
---- mutt-1.5.10.orig/commands.c 2005-08-02 09:08:00.000000000 +0200
-+++ mutt-1.5.10/commands.c 2005-10-07 09:32:06.000000000 +0200
-@@ -690,6 +690,7 @@
- if (option (OPTDELETEUNTAG))
- mutt_set_flag (Context, h, M_TAG, 0);
- }
-+ mutt_set_flag (Context, h, M_APPENDED, 1);
-
- return 0;
- }
-Only in mutt-1.5.10/doc: manual-1.html
-Only in mutt-1.5.10/doc: manual-2.html
-Only in mutt-1.5.10/doc: manual-3.html
-Only in mutt-1.5.10/doc: manual-4.html
-Only in mutt-1.5.10/doc: manual-5.html
-Only in mutt-1.5.10/doc: manual-6.html
-Only in mutt-1.5.10/doc: manual-7.html
-Only in mutt-1.5.10/doc: manual.html
-Only in mutt-1.5.10/doc: manual.txt
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/flags.c mutt-1.5.10/flags.c
---- mutt-1.5.10.orig/flags.c 2005-02-03 19:47:52.000000000 +0100
-+++ mutt-1.5.10/flags.c 2005-10-07 09:30:06.000000000 +0200
-@@ -91,6 +91,17 @@
- }
- break;
-
-+ case M_APPENDED:
-+ if (bf)
-+ {
-+ if (!h->appended)
-+ {
-+ h->appended = 1;
-+ if (upd_ctx) ctx->appended++;
-+ }
-+ }
-+ break;
-+
- case M_NEW:
-
- #ifdef USE_IMAP
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/globals.h mutt-1.5.10/globals.h
---- mutt-1.5.10.orig/globals.h 2005-10-07 09:29:54.000000000 +0200
-+++ mutt-1.5.10/globals.h 2005-10-07 09:30:06.000000000 +0200
-@@ -130,6 +130,7 @@
- WHERE char *Status;
- WHERE char *Tempdir;
- WHERE char *Tochars;
-+WHERE char *TrashPath;
- WHERE char *Username;
- WHERE char *Visual;
-
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/init.h mutt-1.5.10/init.h
---- mutt-1.5.10.orig/init.h 2005-10-07 09:29:54.000000000 +0200
-+++ mutt-1.5.10/init.h 2005-10-07 09:30:06.000000000 +0200
-@@ -2774,6 +2774,13 @@
- ** by \fIyou\fP. The sixth character is used to indicate when a mail
- ** was sent to a mailing-list you subscribe to (default: L).
- */
-+ { "trash", DT_PATH, R_NONE, UL &TrashPath, 0 },
-+ /*
-+ ** .pp
-+ ** If set, this variable specifies the path of the trash folder where the
-+ ** mails marked for deletion will be moved, instead of being irremediably
-+ ** purged.
-+ */
- #ifdef USE_SOCKET
- { "tunnel", DT_STR, R_NONE, UL &Tunnel, UL 0 },
- /*
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/mutt.h mutt-1.5.10/mutt.h
---- mutt-1.5.10.orig/mutt.h 2005-10-07 09:29:54.000000000 +0200
-+++ mutt-1.5.10/mutt.h 2005-10-07 09:30:06.000000000 +0200
-@@ -207,6 +207,7 @@
- M_DELETE,
- M_UNDELETE,
- M_DELETED,
-+ M_APPENDED,
- M_FLAG,
- M_TAG,
- M_UNTAG,
-@@ -702,6 +703,7 @@
- unsigned int mime : 1; /* has a Mime-Version header? */
- unsigned int flagged : 1; /* marked important? */
- unsigned int tagged : 1;
-+ unsigned int appended : 1; /* has been saved */
- unsigned int deleted : 1;
- unsigned int changed : 1;
- unsigned int attach_del : 1; /* has an attachment marked for deletion */
-@@ -830,6 +832,7 @@
- int new; /* how many new messages? */
- int unread; /* how many unread messages? */
- int deleted; /* how many deleted messages */
-+ int appended; /* how many saved messages? */
- int flagged; /* how many flagged messages */
- int msgnotreadyet; /* which msg "new" in pager, -1 if none */
- #if defined USE_POP || defined USE_IMAP
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/mx.c mutt-1.5.10/mx.c
---- mutt-1.5.10.orig/mx.c 2005-10-07 09:29:54.000000000 +0200
-+++ mutt-1.5.10/mx.c 2005-10-07 09:30:06.000000000 +0200
-@@ -850,6 +850,47 @@
- return rc;
- }
-
-+/* move deleted mails to the trash folder */
-+static int trash_append (CONTEXT *ctx)
-+{
-+ CONTEXT *ctx_trash;
-+ int i;
-+ struct stat st, stc;
-+
-+ if (!TrashPath || !ctx->deleted)
-+ return 0;
-+
-+ if (!mutt_save_confirm (TrashPath, &st))
-+ {
-+ mutt_error _("message(s) not deleted");
-+ return -1;
-+ }
-+
-+ if (lstat (ctx->path, &stc) == 0 && stc.st_ino == st.st_ino
-+ && stc.st_dev == st.st_dev && stc.st_rdev == st.st_rdev)
-+ return 0; /* we are in the trash folder: simple sync */
-+
-+ if ((ctx_trash = mx_open_mailbox (TrashPath, M_APPEND, NULL)) != NULL)
-+ {
-+ for (i = 0 ; i < ctx->msgcount ; i++)
-+ if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->appended
-+ && mutt_append_message (ctx_trash, ctx, ctx->hdrs[i], 0, 0) == -1)
-+ {
-+ mx_close_mailbox (ctx_trash, NULL);
-+ return -1;
-+ }
-+
-+ mx_close_mailbox (ctx_trash, NULL);
-+ }
-+ else
-+ {
-+ mutt_error _("Can't open trash folder");
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
- /* save changes and close mailbox */
- int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
- {
-@@ -1032,11 +1073,19 @@
-
- if (ctx->changed || ctx->deleted)
- {
-- if ((check = sync_mailbox (ctx, index_hint)) != 0)
-+ int trsh = 0;
-+
-+ if ((!ctx->deleted || (trsh = trash_append (ctx)) == 0)
-+ && (check = sync_mailbox (ctx, index_hint)) != 0)
- {
- ctx->closing = 0;
- return check;
- }
-+ if (trsh != 0)
-+ {
-+ ctx->closing = 0;
-+ return -1;
-+ }
- }
- }
-
-@@ -1214,8 +1263,12 @@
- if (ctx->magic == M_IMAP)
- rc = imap_sync_mailbox (ctx, purge, index_hint);
- else
--#endif
-+#endif /* enter this block unconditionally if IMAP is not used */
-+ {
-+ if (trash_append (ctx) == -1)
-+ return -1;
- rc = sync_mailbox (ctx, index_hint);
-+ }
- if (rc == 0)
- {
- #ifdef USE_IMAP
-diff -dur -x '*~' -x '*.orig' mutt-1.5.10.orig/postpone.c mutt-1.5.10/postpone.c
---- mutt-1.5.10.orig/postpone.c 2005-02-03 19:47:53.000000000 +0100
-+++ mutt-1.5.10/postpone.c 2005-10-07 09:30:06.000000000 +0200
-@@ -279,6 +279,9 @@
- /* finished with this message, so delete it. */
- mutt_set_flag (PostContext, h, M_DELETE, 1);
-
-+ /* and consider it saved, so that it won't be moved to the trash folder */
-+ mutt_set_flag (PostContext, h, M_APPENDED, 1);
-+
- /* update the count for the status display */
- PostCount = PostContext->msgcount - PostContext->deleted;
-