Hi, Joshua N Pritikin!

Sometime (on Wednesday, May 19 at 19:06) I've received something...
>Hi!
>
>First of all, thanks for developing such a great piece of software!
>
>I am interested in seeing all the mail headers and then pruning them
>down.  However, this doesn't seem to work:
>
>  unignore *
>  ignore X-Filter In-Reply-To Autoforwarded X-UID 
>
>After 'unignore *', mutt seems to forget about the ignores.  Am I
>doing something wrong?

    You're right. It's bug in "[un]ignore" code. Due to this bug You
cannot use any [un]ignore commands on hook's.
    This was fixed by me and is part of our NNTP patch. Look to
attachment! :-)

    WBR, Andrej.
diff -udpr mutt-0.96.1.orig/init.c mutt-0.96.1.news/init.c
--- mutt-0.96.1.orig/init.c     Thu Jan  7 21:01:20 1999
+++ mutt-0.96.1.news/init.c     Wed Mar 10 17:28:29 1999
@@ -286,6 +286,8 @@ int mutt_extract_token (BUFFER *dest, BU
   return 0;
 }
 
+static short _NeedToErase = 0;
+
 void mutt_add_to_list (LIST **list, BUFFER *inp)
 {
   LIST *t, *last = NULL;
@@ -296,6 +298,8 @@ void mutt_add_to_list (LIST **list, BUFF
   {
     mutt_extract_token (&buf, inp, 0);
 
+    if (_NeedToErase && mutt_strcmp ("*", buf.data) == 0)
+      continue;
     /* check to make sure the item is not already on this list */
     for (last = *list; last; last = last->next)
     {
@@ -368,14 +372,26 @@ static void remove_from_list (LIST **l, 
 
 static int parse_unignore (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)
 {
+  char *p = s->dptr;
+
+  /*
+   * since `*' cannot be placed on UnIgnore (it will be abort all Ignore),
+   * it just need to delete all Ignore.
+   */
+  _NeedToErase++;
   mutt_add_to_list (&UnIgnore, s);
+  s->dptr = p;
   remove_from_list (&Ignore, s);
+  _NeedToErase = 0;
   return 0;
 }
 
 static int parse_ignore (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)
 {
+  char *p = s->dptr;
+
   mutt_add_to_list (&Ignore, s);
+  s->dptr = p;
   remove_from_list (&UnIgnore, s);
   return 0;
 }

Reply via email to