I've updated the patch so it write changes upon mailbox close.
It will not update if dontwrite is 1, but ignore now readonly.

Cheers,
-- 
Julien Danjou
.''`.  Debian Developer
: :' : http://julien.danjou.info
`. `'  http://people.debian.org/~acid
  `-   9A0D 5FD9 EB42 22F6 8974  C95C A462 B51E C2FE E5CD
Index: mutt-1.5.20/curs_main.c
===================================================================
--- mutt-1.5.20.orig/curs_main.c        2009-10-02 12:15:46.000000000 +0200
+++ mutt-1.5.20/curs_main.c     2009-10-02 12:15:47.000000000 +0200
@@ -819,7 +819,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("delete message(s)"));
 
        CHECK_ATTACH;
@@ -987,7 +986,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
 
        if (mutt_pattern_func (M_UNDELETE, _("Undelete messages matching: ")) 
== 0)
@@ -1020,7 +1018,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        {
          int oldvcount = Context->vcount;
          int oldcount  = Context->msgcount;
@@ -1273,7 +1270,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("link threads"));
 
         if ((Sort & SORT_MASK) != SORT_THREADS)
@@ -1541,7 +1537,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_WRITE, _("flag message"));
 
         if (tag)
@@ -1578,7 +1573,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_SEEN, _("toggle new"));
 
        if (tag)
@@ -1833,7 +1827,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("delete message"));
 
        if (tag)
@@ -1877,7 +1870,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("delete message(s)"));
 
        rc = mutt_thread_set_flag (CURHDR, M_DELETE, 1,
@@ -1917,7 +1909,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ATTACH;
        CHECK_ACL(M_ACL_INSERT, _("edit message"));
 
@@ -2049,7 +2040,6 @@
 
        CHECK_MSGCOUNT;
        CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_SEEN, _("mark message(s) as read"));
 
        rc = mutt_thread_set_flag (CURHDR, M_READ, 1,
@@ -2139,7 +2129,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("undelete message"));
 
        if (tag)
@@ -2168,7 +2157,6 @@
 
        CHECK_MSGCOUNT;
         CHECK_VISIBLE;
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
 
        rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0,
Index: mutt-1.5.20/flags.c
===================================================================
--- mutt-1.5.20.orig/flags.c    2009-10-02 12:15:47.000000000 +0200
+++ mutt-1.5.20/flags.c 2009-10-02 12:15:47.000000000 +0200
@@ -33,9 +33,6 @@
   int flagged = ctx->flagged;
   int update = 0;
 
-  if (ctx->readonly && flag != M_TAG)
-    return; /* don't modify anything if we are read-only */
-
   switch (flag)
   {
     case M_DELETE:
Index: mutt-1.5.20/pager.c
===================================================================
--- mutt-1.5.20.orig/pager.c    2009-10-02 12:15:46.000000000 +0200
+++ mutt-1.5.20/pager.c 2009-10-02 12:15:47.000000000 +0200
@@ -2319,7 +2319,6 @@
       case OP_PURGE_MESSAGE:
       case OP_DELETE:
        CHECK_MODE(IsHeader (extra));
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("delete message"));
 
        mutt_set_flag (Context, extra->hdr, M_DELETE, 1);
@@ -2352,7 +2351,6 @@
       case OP_DELETE_THREAD:
       case OP_DELETE_SUBTHREAD:
        CHECK_MODE(IsHeader (extra));
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("delete message(s)"));
 
        r = mutt_thread_set_flag (extra->hdr, M_DELETE, 1,
@@ -2472,7 +2470,6 @@
 
       case OP_FLAG_MESSAGE:
        CHECK_MODE(IsHeader (extra));
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_WRITE, "flag message");
 
        mutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged);
@@ -2628,7 +2625,6 @@
 
       case OP_TOGGLE_NEW:
        CHECK_MODE(IsHeader (extra));
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_SEEN, _("toggle new"));
 
        if (extra->hdr->read || extra->hdr->old)
@@ -2647,7 +2643,6 @@
 
       case OP_UNDELETE:
        CHECK_MODE(IsHeader (extra));
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("undelete message"));
 
        mutt_set_flag (Context, extra->hdr, M_DELETE, 0);
@@ -2663,7 +2658,6 @@
       case OP_UNDELETE_THREAD:
       case OP_UNDELETE_SUBTHREAD:
        CHECK_MODE(IsHeader (extra));
-       CHECK_READONLY;
        CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
 
        r = mutt_thread_set_flag (extra->hdr, M_DELETE, 0,
Index: mutt-1.5.20/mx.c
===================================================================
--- mutt-1.5.20.orig/mx.c       2009-10-02 12:15:49.000000000 +0200
+++ mutt-1.5.20/mx.c    2009-10-02 12:15:52.000000000 +0200
@@ -864,7 +864,7 @@
 
   ctx->closing = 1;
 
-  if (ctx->readonly || ctx->dontwrite)
+  if (ctx->dontwrite)
   {
     /* mailbox is readonly or we don't want to write */
     mx_fastclose_mailbox (ctx);

Attachment: signature.asc
Description: Digital signature

Reply via email to