+ /* keep the requested page within bounds */
+ if (BBS->requested_page < 0) BBS->requested_page = 0;
+ if (BBS->requested_page >= BBS->num_pages) BBS->requested_page = BBS->num_pages - 1;
+
+ start_index = BBS->requested_page * Stat->maxmsgs;
+ if (start_index < 0) start_index = 0;
+ end_index = start_index + Stat->maxmsgs - 1;
+
+ for (seq = 0; seq < 3; ++seq) { /* cheap & sleazy way of rendering the page numbers twice */
+
+ if ( (seq == 1) && (Stat->nummsgs > 0)) {
+ /* display the selected range of messages */
+
+ for (i=start_index; (i<=end_index && i<BBS->num_msgs); ++i) {
+ if (
+ (BBS->msgs[i] > BBS->lastseen)
+ && ( (i == 0) || (BBS->msgs[i-1] <= BBS->lastseen) )
+ ) {
+ /* new messages start here */
+ do_template("start_of_new_msgs");
+ if (!go_to_the_very_end) {
+ StrBufAppendPrintf(WC->trailing_javascript, "location.href=\"#newmsgs\";\n");
+ }
+ }
+ if (BBS->msgs[i] > 0L) {
+ read_message(WC->WBuf, HKEY("view_message"), BBS->msgs[i], NULL, &Mime, NULL);
+ }
+ if (
+ (i == (BBS->num_msgs - 1))
+ && (BBS->msgs[i] <= BBS->lastseen)
+ ) {
+ /* no new messages */
+ do_template("no_new_msgs");
+ if (!go_to_the_very_end) {
+ StrBufAppendPrintf(WC->trailing_javascript, "location.href=\"#nonewmsgs\";\n");
+ }
+ }
+ }
+ }