]> git.pld-linux.org Git - packages/mutt.git/commitdiff
- trash folder
authorfilon <filon@sokrates.mimuw.edu.pl>
Tue, 12 Feb 2002 20:57:01 +0000 (20:57 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    mutt-cd.trash_folder.patch -> 1.1

mutt-cd.trash_folder.patch [new file with mode: 0644]

diff --git a/mutt-cd.trash_folder.patch b/mutt-cd.trash_folder.patch
new file mode 100644 (file)
index 0000000..4c1861a
--- /dev/null
@@ -0,0 +1,181 @@
+diff -pruN2 mutt-1.3.27.orig/commands.c mutt-1.3.27/commands.c
+--- mutt-1.3.27.orig/commands.c        Mon Dec  3 11:17:57 2001
++++ mutt-1.3.27/commands.c     Wed Jan 23 22:33:11 2002
+@@ -616,9 +616,13 @@ void _mutt_save_message (HEADER *h, CONT
+     mutt_parse_mime_message (Context, h);
+-  if (mutt_append_message (ctx, Context, h, cmflags, chflags) == 0 && delete)
++  if (mutt_append_message (ctx, Context, h, cmflags, chflags) == 0)
+   {
+-    mutt_set_flag (Context, h, M_DELETE, 1);
+-    if (option (OPTDELETEUNTAG))
+-      mutt_set_flag (Context, h, M_TAG, 0);
++    if (delete)
++    {
++      mutt_set_flag (Context, h, M_DELETE, 1);
++      if (option (OPTDELETEUNTAG))
++      mutt_set_flag (Context, h, M_TAG, 0);
++    }
++    mutt_set_flag (Context, h, M_APPENDED, 1);
+   }
+ }
+diff -pruN2 mutt-1.3.27.orig/flags.c mutt-1.3.27/flags.c
+--- mutt-1.3.27.orig/flags.c   Tue Jan 15 22:12:59 2002
++++ mutt-1.3.27/flags.c        Wed Jan 23 22:33:11 2002
+@@ -76,4 +76,15 @@ void _mutt_set_flag (CONTEXT *ctx, HEADE
+       break;
++    case M_APPENDED:
++      if (bf)
++      {
++      if (!h->appended)
++      {
++        h->appended = 1;
++        if (upd_ctx) ctx->appended++;
++      }
++      }
++      break;
++
+     case M_NEW:
+       if (bf)
+diff -pruN2 mutt-1.3.27.orig/globals.h mutt-1.3.27/globals.h
+--- mutt-1.3.27.orig/globals.h Thu Jan  3 21:56:46 2002
++++ mutt-1.3.27/globals.h      Wed Jan 23 22:33:11 2002
+@@ -110,4 +110,5 @@ WHERE char *Status;
+ WHERE char *Tempdir;
+ WHERE char *Tochars;
++WHERE char *TrashPath;
+ WHERE char *Username;
+ WHERE char *Visual;
+diff -pruN2 mutt-1.3.27.orig/init.h mutt-1.3.27/init.h
+--- mutt-1.3.27.orig/init.h    Mon Dec 10 11:09:03 2001
++++ mutt-1.3.27/init.h Wed Jan 23 22:33:11 2002
+@@ -2236,4 +2236,11 @@ struct option_t MuttVars[] = {
+   ** 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 -pruN2 mutt-1.3.27.orig/mutt.h mutt-1.3.27/mutt.h
+--- mutt-1.3.27.orig/mutt.h    Tue Jan 15 22:00:32 2002
++++ mutt-1.3.27/mutt.h Wed Jan 23 22:33:11 2002
+@@ -185,4 +185,5 @@ enum
+   M_UNDELETE,
+   M_DELETED,
++  M_APPENDED,
+   M_FLAG,
+   M_TAG,
+@@ -618,4 +619,5 @@ typedef struct 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;
+@@ -740,4 +742,5 @@ typedef struct
+   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 */
+diff -pruN2 mutt-1.3.27.orig/mx.c mutt-1.3.27/mx.c
+--- mutt-1.3.27.orig/mx.c      Tue Jan 15 22:09:53 2002
++++ mutt-1.3.27/mx.c   Wed Jan 23 22:33:11 2002
+@@ -816,4 +816,45 @@ static int sync_mailbox (CONTEXT *ctx, i
+ }
++/* 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)
+@@ -999,9 +1040,17 @@ int mx_close_mailbox (CONTEXT *ctx, int 
+     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;
++      }
+     }
+   }
+@@ -1174,6 +1223,10 @@ int mx_sync_mailbox (CONTEXT *ctx, int *
+     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)
+   {
+diff -pruN2 mutt-1.3.27.orig/postpone.c mutt-1.3.27/postpone.c
+--- mutt-1.3.27.orig/postpone.c        Mon Dec  3 11:17:57 2001
++++ mutt-1.3.27/postpone.c     Wed Jan 23 22:33:11 2002
+@@ -271,4 +271,7 @@ int mutt_get_postponed (CONTEXT *ctx, HE
+   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;
+diff -pruN mutt-1.3.27.orig/PATCHES mutt-1.3.27/PATCHES
+--- mutt-1.3.27.orig/PATCHES    Mon Nov 26 20:16:52 2001
++++ mutt-1.3.27/PATCHES Thu Dec  6 16:27:55 2001
+@@ -1,0 +1 @@
++patch-1.3.27.cd.trash_folder.1
This page took 0.030042 seconds and 4 git commands to generate.