]> granicus.if.org Git - neomutt/commitdiff
POP: Support hcache updating, too.
authorRocco Rutte <pdmef@gmx.net>
Sun, 26 Apr 2009 19:09:53 +0000 (21:09 +0200)
committerRocco Rutte <pdmef@gmx.net>
Sun, 26 Apr 2009 19:09:53 +0000 (21:09 +0200)
This also allows us to use hcache to manage
"flagged" and "replied" message flags.

UPDATING
doc/manual.xml.head
pop.c

index 6f0f1994de85f9ae774e0e61da83595eea6ee6bb..0e34d4028ac2e3273a40967b37e24fc7653dc2c2 100644 (file)
--- a/UPDATING
+++ b/UPDATING
@@ -5,6 +5,8 @@ The keys used are:
   !: modified feature, -: deleted feature, +: new feature
 
 hg tip:
+  + the "flagged" and "replied" flags are enabled/supported for
+    POP when built with header caching
   + <set-flag> and <clear-flag> work in the pager, too
   + ~x pattern also matches against In-Reply-To
   + lower case patterns for string searches perform case-insensitive
index d65cf7e4c5bd7612b4c83c0bee736b27fdf739d6..13d46d3fee87fea340908efb096b67aa85c7bbf0 100644 (file)
@@ -6760,6 +6760,16 @@ controlled by the
 variable, which defaults to every 60 seconds.
 </para>
 
+<para>
+POP is read-only which doesn't allow for some features like editing
+messages or changing flags. However, using
+<xref linkend="header-caching"/> and <xref linkend="body-caching"/>
+Mutt simulates the new/old/read flags as well as flagged and replied.
+Mutt applies some logic on top of remote messages but cannot change
+the messages itself so that modifications of flags are lost when
+messages are downloaded from the POP server.
+</para>
+
 <anchor id="fetch-mail"/>
 <para>
 Another way to access your POP3 mail is the <literal>&lt;fetch-mail&gt;</literal> function
diff --git a/pop.c b/pop.c
index 674064535ef356cc5c42e4932e3f56b942550806..1768e614a7e77f19fc128723cc2d0b7083df9619 100644 (file)
--- a/pop.c
+++ b/pop.c
@@ -418,6 +418,11 @@ int pop_open_mailbox (CONTEXT *ctx)
   memset (ctx->rights, 0, sizeof (ctx->rights));
   mutt_bit_set (ctx->rights, M_ACL_SEEN);
   mutt_bit_set (ctx->rights, M_ACL_DELETE);
+#if USE_HCACHE
+  /* flags are managed using header cache, so it only makes sense to
+   * enable them in that case */
+  mutt_bit_set (ctx->rights, M_ACL_WRITE);
+#endif
 
   FOREVER
   {
@@ -666,6 +671,14 @@ int pop_sync_mailbox (CONTEXT *ctx, int *index_hint)
 #endif
        }
       }
+
+#if USE_HCACHE
+      if (ctx->hdrs[i]->changed)
+      {
+       mutt_hcache_store (hc, ctx->hdrs[i]->data, ctx->hdrs[i], 0, strlen);
+      }
+#endif
+
     }
 
 #if USE_HCACHE