Andreas Krennmair:
[apps/madmutt.git] / buffy.c
diff --git a/buffy.c b/buffy.c
index 4234a4e..757d583 100644 (file)
--- a/buffy.c
+++ b/buffy.c
  *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  */
 
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include "mutt.h"
 #include "buffy.h"
 #include "mailbox.h"
@@ -400,6 +404,7 @@ int mutt_buffy_check (int force)
        }
        tmp->msgcount = 0;
        tmp->msg_unread = 0;
+       tmp->msg_tagged = 0;
        while ((de = readdir (dirp)) != NULL)
        {
          char *p;
@@ -407,13 +412,21 @@ int mutt_buffy_check (int force)
              (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T')))
          {
            /* one new and undeleted message is enough */
-           BuffyCount++;
-           tmp->has_new = tmp->new = 1;
-        tmp->msgcount++;
-               tmp->msg_unread++;
+            if (tmp->new != 1)
+           {
+               BuffyCount++;
+              tmp->has_new = tmp->new = 1;
+           }
+           tmp->msgcount++;
+           tmp->msg_unread++;
          }
        }
        closedir (dirp);
+#if 1
+  /* I commented this out because it led to an infite "New mail in ..." loop,
+   * and when looking at the code, the check seems to be overly eager.
+   *   -- ak
+   */
        snprintf (path, sizeof (path), "%s/cur", tmp->path);
        if ((dirp = opendir (path)) == NULL)
        {
@@ -428,11 +441,17 @@ int mutt_buffy_check (int force)
          {
            /* one new and undeleted message is enough */
            BuffyCount++;
+#if 0
+            /* we're checking for read and not new mail; 
+             * seems like copy'n'paste error
+             */
            tmp->has_new = tmp->new = 1;
-        tmp->msgcount++;
+#endif
+            tmp->msgcount++;
          }
        }
        closedir (dirp);
+#endif
        break;
 
       case M_MH:
@@ -508,7 +527,7 @@ int mutt_buffy_list (void)
   pos = 0;
   first = 1;
   buffylist[0] = 0;
-  pos += strlen (strncat (buffylist, _("New mail in "), sizeof (buffylist) - 1 - pos));
+  pos += strlen (strncat (buffylist, _("New mail in "), sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
   for (tmp = Incoming; tmp; tmp = tmp->next)
   {
     /* Is there new mail in this mailbox? */
@@ -522,21 +541,21 @@ int mutt_buffy_list (void)
       break;
     
     if (!first)
-      pos += strlen (strncat(buffylist + pos, ", ", sizeof(buffylist)-1-pos));
+      pos += strlen (strncat(buffylist + pos, ", ", sizeof(buffylist)-1-pos)); /* __STRNCAT_CHECKED__ */
 
     /* Prepend an asterisk to mailboxes not already notified */
     if (!tmp->notified)
     {
-      /* pos += strlen (strncat(buffylist + pos, "*", sizeof(buffylist)-1-pos)); */
+      /* pos += strlen (strncat(buffylist + pos, "*", sizeof(buffylist)-1-pos));  __STRNCAT_CHECKED__ */
       tmp->notified = 1;
       BuffyNotify--;
     }
-    pos += strlen (strncat(buffylist + pos, path, sizeof(buffylist)-1-pos));
+    pos += strlen (strncat(buffylist + pos, path, sizeof(buffylist)-1-pos)); /* __STRNCAT_CHECKED__ */
     first = 0;
   }
   if (!first && tmp)
   {
-    strncat (buffylist + pos, ", ...", sizeof (buffylist) - 1 - pos);
+    strncat (buffylist + pos, ", ...", sizeof (buffylist) - 1 - pos); /* __STRNCAT_CHECKED__ */
   }
   if (!first)
   {