X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=buffy.c;h=c955ab9d73d420b69b76aac74f42c1892d78be36;hp=ca84ce99261b2ddab76846c1700f9f0da9ae1f33;hb=afc6ec8843e341b9661df5888050ec36536734d0;hpb=0eea44816346f6a9e9d52c1e1f363dd00dde56b6 diff --git a/buffy.c b/buffy.c index ca84ce9..c955ab9 100644 --- a/buffy.c +++ b/buffy.c @@ -174,25 +174,12 @@ void mutt_update_mailbox (BUFFY * b) int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err) { - BUFFY **tmp,*tmp1,*last; + BUFFY **tmp,*tmp1; char buf[_POSIX_PATH_MAX]; - int dup = 0; #ifdef BUFFY_SIZE struct stat sb; #endif /* BUFFY_SIZE */ - /* - * FIXME - * to get rid of correcting the ->prev pointers in sidebar.c, - * correct them right here - */ - - /* - * FIXME - * if we really want to make the sort order of the sidebar - * configurable, this has to go right here - */ - while (MoreArgs (s)) { mutt_extract_token (path, s, 0); @@ -216,19 +203,12 @@ int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *e if(!*buf) continue; /* simple check to avoid duplicates */ - dup = 0; - for (tmp = &Incoming; *tmp && dup == 0; tmp = &((*tmp)->next)) + for (tmp = &Incoming; *tmp; tmp = &((*tmp)->next)) { - if (mutt_strcmp (buf, (*tmp)->path) == 0) { - dup = 1; - break; - } + if (mutt_strcmp (buf, (*tmp)->path) == 0) + break; } - if (dup == 1) - continue; - tmp = &Incoming; - if(data == M_UNMAILBOXES) { if(*tmp) @@ -241,32 +221,16 @@ int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *e continue; } - /* loop over list while it's sorted */ - tmp1 = NULL; - last = NULL; - for (tmp = &Incoming; *tmp ; tmp = &((*tmp)->next)) { - /* - * FIXME - * change this to get whatever sorting order - */ - if (mutt_strcmp (buf, (*tmp)->path) < 0) { - tmp1 = (*tmp); - break; - } - last = (*tmp); + if (!*tmp) + { + *tmp = (BUFFY *) safe_calloc (1, sizeof (BUFFY)); + (*tmp)->path = safe_strdup (buf); + (*tmp)->next = NULL; + /* it is tempting to set magic right here */ + (*tmp)->magic = 0; + } - /* we want: last -> tmp -> tmp1 */ - *tmp = (BUFFY *) safe_calloc (1, sizeof (BUFFY)); - (*tmp)->path = safe_strdup (buf); - (*tmp)->magic = 0; - - /* correct pointers */ - (*tmp)->next = tmp1; - if (last) - last->next = (*tmp); - - /* left as-is */ (*tmp)->new = 0; (*tmp)->notified = 1; (*tmp)->newly_created = 0; @@ -310,9 +274,10 @@ int mutt_buffy_check (int force) DIR *dirp; char path[_POSIX_PATH_MAX]; struct stat contex_sb; - time_t now, last1, last2; + time_t now, last1; CONTEXT *ctx; #ifdef USE_IMAP + time_t last2; /* update postponed count as well, on force */ if (force != 0) mutt_update_num_postponed (); @@ -569,7 +534,7 @@ int mutt_buffy_check (int force) tmp->size = (long) sb.st_size; /* update the size */ #endif - if (!tmp->new) + if (tmp->new <= 0) tmp->notified = 0; else if (!tmp->notified) BuffyNotify++; @@ -599,7 +564,7 @@ int mutt_buffy_list (void) for (tmp = Incoming; tmp; tmp = tmp->next) { /* Is there new mail in this mailbox? */ - if (!tmp->new || (have_unnotified && tmp->notified)) + if (tmp->new <= 0 || (have_unnotified && tmp->notified)) continue; strfcpy (path, tmp->path, sizeof (path)); @@ -669,7 +634,7 @@ void mutt_buffy (char *s, size_t slen) case 1: - while (tmp && !tmp->new) + while (tmp && tmp->new <= 0) tmp = tmp->next; if (!tmp) { @@ -688,7 +653,7 @@ void mutt_buffy (char *s, size_t slen) { if (mutt_strcmp (s, tmp->path) == 0) count++; - else if (count && tmp->new) + else if (count && tmp->new > 0) break; tmp = tmp->next; if (!tmp)