From: Art Cancro Date: Thu, 20 Mar 2014 16:16:03 +0000 (-0400) Subject: Global warming is a socialist communist scam. X-Git-Tag: v9.01~122^2~7 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=656bb731b5f834e6fac3453cbb9ee5e6c4b970f3 Global warming is a socialist communist scam. --- diff --git a/citadel/modules/nntp/serv_nntp.c b/citadel/modules/nntp/serv_nntp.c index a14dae68f..3473b49e3 100644 --- a/citadel/modules/nntp/serv_nntp.c +++ b/citadel/modules/nntp/serv_nntp.c @@ -960,6 +960,22 @@ void nntp_last_next(const char *cmd) { } +// +// back end for the XOVER command , called for each message number +// +void nntp_xover_backend(long msgnum, void *userdata) { + + struct listgroup_range *lr = (struct listgroup_range *)userdata; + + // check range if supplied + if (msgnum < lr->lo) return; + if ((lr->hi != 0) && (msgnum > lr->hi)) return; + + cprintf("FIXME %ld FIXME\r\n", msgnum); // FIXME need to actually show the overview data +} + + +// // // XOVER is used by some clients, even if we don't offer it // @@ -968,33 +984,34 @@ void nntp_xover(const char *cmd) { citnntp *nntpstate = (citnntp *) CC->session_specific_data; char range[256]; - long lowest = (-1) ; - long highest = (-1) ; + struct listgroup_range lr; extract_token(range, cmd, 1, ' ', sizeof range); - lowest = atol(range); - if (lowest <= 0) { - lowest = nntpstate->current_article_number; - highest = nntpstate->current_article_number; + lr.lo = atol(range); + if (lr.lo <= 0) { + lr.lo = nntpstate->current_article_number; + lr.hi = nntpstate->current_article_number; } else { char *dash = strchr(range, '-'); if (dash != NULL) { ++dash; - highest = atol(dash); - if (highest == 0) { - highest = LONG_MAX; + lr.hi = atol(dash); + if (lr.hi == 0) { + lr.hi = LONG_MAX; } - if (highest < lowest) { - highest = lowest; + if (lr.hi < lr.lo) { + lr.hi = lr.lo; } } else { - highest = lowest; + lr.hi = lr.lo; } } - cprintf("500 not implemented yet FIXME lowest=%ld highest=%ld\r\n", lowest, highest); + cprintf("224 Overview information follows\r\n"); + CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL, NULL, nntp_xover_backend, &lr); + cprintf(".\r\n"); }