X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=buffy.c;h=7c8555a3791bc26666950d8720aebe5971976899;hp=9824b6bee198c344ba9e56ac364da05163b949b1;hb=480b58036b7e8d75980ce2b7ef2d2e59acd13178;hpb=9a1805afc94b21d8766e6e67ef57f92aaf966e84 diff --git a/buffy.c b/buffy.c index 9824b6b..7c8555a 100644 --- a/buffy.c +++ b/buffy.c @@ -178,7 +178,7 @@ int buffy_lookup (const char* path) { if (list_empty(Incoming) || !path || !*path) return (-1); for (i = 0; i < Incoming->length; i++) { - if (safe_strcmp (((BUFFY*) Incoming->data[i])->path, path) == 0) + if (str_eq (((BUFFY*) Incoming->data[i])->path, path) ) return (i); } return (-1); @@ -198,7 +198,7 @@ int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data, mutt_extract_token (path, s, 0); strfcpy (buf, path->data, sizeof (buf)); - if (data == M_UNMAILBOXES && safe_strcmp (buf, "*") == 0) { + if (data == M_UNMAILBOXES && str_eq (buf, "*") == 0) { list_del (&Incoming, buffy_free); return 0; } @@ -330,8 +330,8 @@ int buffy_check (int force) /* check to see if the folder is the currently selected folder * before polling */ if (!Context || !Context->path || (local ? (sb.st_dev != contex_sb.st_dev || - sb.st_ino != contex_sb.st_ino) : - safe_strcmp (tmp->path, Context->path))) { + sb.st_ino != contex_sb.st_ino) : + !str_eq (tmp->path, Context->path))) { switch (tmp->magic) { case M_MBOX: case M_MMDF: @@ -570,7 +570,7 @@ int buffy_notify (void) */ void buffy_next (char *s, size_t slen) { - int i = 0, c = 0; + int i = 0, c = 0, l = 0; if (list_empty(Incoming)) return; @@ -581,14 +581,20 @@ void buffy_next (char *s, size_t slen) return; } - i = buffy_lookup (s); - c = i == Incoming->length-1 ? 0 : i+1; - while (((BUFFY*) Incoming->data[c])->new <= 0) { - c = (c+1) % Incoming->length; - if (c == i) - break; /* tried all once */ + /* + * If buffy_lookup returns the index, + * or -1 if not found (-1..Incoming->length-1); + * plus one --> (0..Incoming->length). + * Modulo mapps it into the correct range. + */ + i = 1 + buffy_lookup (s); + for (l=0; l < Incoming->length; l++) { + c = (l+i) % Incoming->length; + if ((!Context || !Context->path || !str_eq (((BUFFY*) Incoming->data[c])->path, Context->path)) && + ((BUFFY*) Incoming->data[c])->new > 0) + break; } - if (c == i) { + if (l >= Incoming->length) { *s = '\0'; /* something went wrong since we're here when buffy_check * reported new mail */