X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=nntp%2Fnewsrc.c;h=e58c9dc2807e13ee1d20bbf7b9ba64751fe914f3;hb=29bf564686b0b8b34e98838087fa382ba811f8fc;hp=ef9537e34ebf1fce79347e8d5091af3450e1c18d;hpb=ca1036a5694287e6ccf6d95af9e33a7e1d5a75fd;p=apps%2Fmadmutt.git diff --git a/nntp/newsrc.c b/nntp/newsrc.c index ef9537e..e58c9dc 100644 --- a/nntp/newsrc.c +++ b/nntp/newsrc.c @@ -337,6 +337,8 @@ NNTP_SERVER *mutt_select_newsserver (char *server) NNTP_SERVER *serv; CONNECTION *conn; + memset (&acct, 0, sizeof (ACCOUNT)); + if (!server || !*server) { mutt_error _("No newsserver defined!"); @@ -1065,26 +1067,50 @@ NNTP_DATA *mutt_newsgroup_uncatchup (NNTP_SERVER * news, char *group) } /* this routine gives the first newsgroup with new messages */ -void nntp_buffy (char *s) -{ +void nntp_buffy (char* dst, size_t dstlen) { LIST *list; + int count = 0; + /* forward to current group */ for (list = CurrentNewsSrv->list; list; list = list->next) { NNTP_DATA *data = (NNTP_DATA *) list->data; + if (data && data->subscribed && data->unread && + Context && Context->magic == M_NNTP && + str_cmp (data->group, ((NNTP_DATA *) Context->data)->group) == 0) { + list = list->next; + break; + } + } + + *dst = '\0'; - if (data && data->subscribed && data->unread) { - if (Context && Context->magic == M_NNTP && - !str_cmp (data->group, ((NNTP_DATA *) Context->data)->group)) { - unsigned int i, unread = 0; + while (count < 2) { - for (i = 0; i < Context->msgcount; i++) - if (!Context->hdrs[i]->read && !Context->hdrs[i]->deleted) - unread++; - if (!unread) - continue; + if (!list) + list = CurrentNewsSrv->list; + + for (; list; list = list->next) { + NNTP_DATA *data = (NNTP_DATA *) list->data; + + if (data && data->subscribed && data->unread) { + if (Context && Context->magic == M_NNTP && + !str_cmp (data->group, ((NNTP_DATA *) Context->data)->group)) { + unsigned int i, unread = 0; + + for (i = 0; i < Context->msgcount; i++) + if (!Context->hdrs[i]->read && !Context->hdrs[i]->deleted) + unread++; + if (!unread) + continue; + } + strncpy (dst, data->group, dstlen); + break; } - strcpy (s, data->group); - break; } + /* done if found */ + if (dst && *dst) + return; + count++; } + *dst = '\0'; }