]> git.llucax.com Git - software/mutt-debian.git/blobdiff - debian/patches/features/trash-folder
584138-mx_update_context-segfault.patch: fix a segfault due to holes in IMAP headers...
[software/mutt-debian.git] / debian / patches / features / trash-folder
index b0b915846ec3d2045a407ec4f0cb0043380e1a4f..632541cf9ae54e3d1caed5c748149962f8972c28 100644 (file)
@@ -48,7 +48,7 @@ To sum up, it's more integrated and transparent to the user.
 == END PATCH
 --- a/commands.c
 +++ b/commands.c
 == END PATCH
 --- a/commands.c
 +++ b/commands.c
-@@ -693,6 +693,7 @@
+@@ -717,6 +717,7 @@
      if (option (OPTDELETEUNTAG))
        mutt_set_flag (Context, h, M_TAG, 0);
    }
      if (option (OPTDELETEUNTAG))
        mutt_set_flag (Context, h, M_TAG, 0);
    }
@@ -93,7 +93,7 @@ To sum up, it's more integrated and transparent to the user.
        if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN))
 --- a/globals.h
 +++ b/globals.h
        if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN))
 --- a/globals.h
 +++ b/globals.h
-@@ -138,6 +138,7 @@
+@@ -139,6 +139,7 @@
  WHERE char *Status;
  WHERE char *Tempdir;
  WHERE char *Tochars;
  WHERE char *Status;
  WHERE char *Tempdir;
  WHERE char *Tochars;
@@ -103,7 +103,7 @@ To sum up, it's more integrated and transparent to the user.
  WHERE char *XtermTitle;
 --- a/imap/message.c
 +++ b/imap/message.c
  WHERE char *XtermTitle;
 --- a/imap/message.c
 +++ b/imap/message.c
-@@ -859,6 +859,7 @@
+@@ -876,6 +876,7 @@
          if (ctx->hdrs[n]->tagged)
          {
            mutt_set_flag (ctx, ctx->hdrs[n], M_DELETE, 1);
          if (ctx->hdrs[n]->tagged)
          {
            mutt_set_flag (ctx, ctx->hdrs[n], M_DELETE, 1);
@@ -111,7 +111,7 @@ To sum up, it's more integrated and transparent to the user.
            if (option (OPTDELETEUNTAG))
              mutt_set_flag (ctx, ctx->hdrs[n], M_TAG, 0);
          }
            if (option (OPTDELETEUNTAG))
              mutt_set_flag (ctx, ctx->hdrs[n], M_TAG, 0);
          }
-@@ -866,6 +867,7 @@
+@@ -883,6 +884,7 @@
      else
      {
        mutt_set_flag (ctx, h, M_DELETE, 1);
      else
      {
        mutt_set_flag (ctx, h, M_DELETE, 1);
@@ -121,7 +121,7 @@ To sum up, it's more integrated and transparent to the user.
      }
 --- a/init.h
 +++ b/init.h
      }
 --- a/init.h
 +++ b/init.h
-@@ -3138,6 +3138,16 @@
+@@ -3195,6 +3195,16 @@
    ** by \fIyou\fP.  The sixth character is used to indicate when a mail
    ** was sent to a mailing-list you subscribe to.
    */
    ** by \fIyou\fP.  The sixth character is used to indicate when a mail
    ** was sent to a mailing-list you subscribe to.
    */
@@ -140,7 +140,7 @@ To sum up, it's more integrated and transparent to the user.
    /*
 --- a/mutt.h
 +++ b/mutt.h
    /*
 --- a/mutt.h
 +++ b/mutt.h
-@@ -181,6 +181,7 @@
+@@ -187,6 +187,7 @@
    M_DELETE,
    M_UNDELETE,
    M_DELETED,
    M_DELETE,
    M_UNDELETE,
    M_DELETED,
@@ -148,7 +148,7 @@ To sum up, it's more integrated and transparent to the user.
    M_FLAG,
    M_TAG,
    M_UNTAG,
    M_FLAG,
    M_TAG,
    M_UNTAG,
-@@ -693,6 +694,7 @@
+@@ -707,6 +708,7 @@
    unsigned int mime : 1;              /* has a MIME-Version header? */
    unsigned int flagged : 1;           /* marked important? */
    unsigned int tagged : 1;
    unsigned int mime : 1;              /* has a MIME-Version header? */
    unsigned int flagged : 1;           /* marked important? */
    unsigned int tagged : 1;
@@ -156,7 +156,7 @@ To sum up, it's more integrated and transparent to the user.
    unsigned int deleted : 1;
    unsigned int changed : 1;
    unsigned int attach_del : 1;                /* has an attachment marked for deletion */
    unsigned int deleted : 1;
    unsigned int changed : 1;
    unsigned int attach_del : 1;                /* has an attachment marked for deletion */
-@@ -864,6 +866,7 @@
+@@ -879,6 +881,7 @@
    int new;                    /* how many new messages? */
    int unread;                 /* how many unread messages? */
    int deleted;                        /* how many deleted messages */
    int new;                    /* how many new messages? */
    int unread;                 /* how many unread messages? */
    int deleted;                        /* how many deleted messages */
@@ -166,7 +166,7 @@ To sum up, it's more integrated and transparent to the user.
  
 --- a/muttlib.c
 +++ b/muttlib.c
  
 --- a/muttlib.c
 +++ b/muttlib.c
-@@ -1445,7 +1445,9 @@
+@@ -1515,7 +1515,9 @@
  
    if (magic > 0 && !mx_access (s, W_OK))
    {
  
    if (magic > 0 && !mx_access (s, W_OK))
    {
@@ -179,7 +179,7 @@ To sum up, it's more integrated and transparent to the user.
        if ((rc = mutt_yesorno (tmp, M_YES)) == M_NO)
 --- a/mx.c
 +++ b/mx.c
        if ((rc = mutt_yesorno (tmp, M_YES)) == M_NO)
 --- a/mx.c
 +++ b/mx.c
-@@ -803,6 +803,53 @@
+@@ -776,6 +776,53 @@
    return rc;
  }
  
    return rc;
  }
  
@@ -233,7 +233,7 @@ To sum up, it's more integrated and transparent to the user.
  /* save changes and close mailbox */
  int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
  {
  /* save changes and close mailbox */
  int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
  {
-@@ -938,6 +985,7 @@
+@@ -912,6 +959,7 @@
          if (mutt_append_message (&f, ctx, ctx->hdrs[i], 0, CH_UPDATE_LEN) == 0)
          {
            mutt_set_flag (ctx, ctx->hdrs[i], M_DELETE, 1);
          if (mutt_append_message (&f, ctx, ctx->hdrs[i], 0, CH_UPDATE_LEN) == 0)
          {
            mutt_set_flag (ctx, ctx->hdrs[i], M_DELETE, 1);
@@ -241,12 +241,12 @@ To sum up, it's more integrated and transparent to the user.
          }
          else
          {
          }
          else
          {
-@@ -959,6 +1007,14 @@
+@@ -936,6 +984,14 @@
      return 0;
    }
    
 +  /* copy mails to the trash before expunging */
      return 0;
    }
    
 +  /* copy mails to the trash before expunging */
-+  if (purge && ctx->deleted)
++  if (purge && ctx->deleted && mutt_strcmp(ctx->path, TrashPath))
 +    if (trash_append (ctx) != 0)
 +    {
 +      ctx->closing = 0;
 +    if (trash_append (ctx) != 0)
 +    {
 +      ctx->closing = 0;
@@ -256,22 +256,22 @@ To sum up, it's more integrated and transparent to the user.
  #ifdef USE_IMAP
    /* allow IMAP to preserve the deleted flag across sessions */
    if (ctx->magic == M_IMAP)
  #ifdef USE_IMAP
    /* allow IMAP to preserve the deleted flag across sessions */
    if (ctx->magic == M_IMAP)
-@@ -1154,6 +1210,12 @@
+@@ -1133,6 +1189,12 @@
    msgcount = ctx->msgcount;
    deleted = ctx->deleted;
  
    msgcount = ctx->msgcount;
    deleted = ctx->deleted;
  
-+  if (purge && ctx->deleted)
++  if (purge && ctx->deleted && mutt_strcmp(ctx->path, TrashPath))
 +  {
 +    if (trash_append (ctx) == -1)
 +      return -1;
 +  {
 +    if (trash_append (ctx) == -1)
 +      return -1;
-+  } 
++  }
 +
  #ifdef USE_IMAP
    if (ctx->magic == M_IMAP)
      rc = imap_sync_mailbox (ctx, purge, index_hint);
 --- a/postpone.c
 +++ b/postpone.c
 +
  #ifdef USE_IMAP
    if (ctx->magic == M_IMAP)
      rc = imap_sync_mailbox (ctx, purge, index_hint);
 --- a/postpone.c
 +++ b/postpone.c
-@@ -276,6 +276,9 @@
+@@ -277,6 +277,9 @@
    /* finished with this message, so delete it. */
    mutt_set_flag (PostContext, h, M_DELETE, 1);
  
    /* finished with this message, so delete it. */
    mutt_set_flag (PostContext, h, M_DELETE, 1);