From 70329aa2f3033eb1a3b98d9484cb93790280c288 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Mon, 17 Sep 2001 00:55:14 +0000
Subject: [PATCH] Calculates and displays number of sub-boards scanned for new
 messages.

---
 src/sbbs3/scansubs.cpp | 67 ++++++++++++++++++++++++++++--------------
 1 file changed, 45 insertions(+), 22 deletions(-)

diff --git a/src/sbbs3/scansubs.cpp b/src/sbbs3/scansubs.cpp
index 8acc334ff1..7053c7e956 100644
--- a/src/sbbs3/scansubs.cpp
+++ b/src/sbbs3/scansubs.cpp
@@ -45,6 +45,7 @@ void sbbs_t::scansubs(long mode)
 	char	ch,str[256];
 	char 	tmp[512];
 	uint	i=0,found=0;
+	ulong	subs_scanned=0;
 
 	mnemonics(text[SubGroupOrAll]);
 	ch=(char)getkeys("SGA\r",0);
@@ -58,12 +59,15 @@ void sbbs_t::scansubs(long mode)
 			if(!getstr(str,40,K_LINE|K_UPPER))
 				return;
 			if(i) { 			/* if titles only */
-				if(ch=='S')
+				if(ch=='S') {
 					found=searchsub(usrsub[curgrp][cursub[curgrp]],str);
-				else if(ch=='G')
-					for(i=0;i<usrsubs[curgrp] && !msgabort();i++)
+					subs_scanned++;
+				} else if(ch=='G')
+					for(i=0;i<usrsubs[curgrp] && !msgabort();i++) {
 						found=searchsub(usrsub[curgrp][i],str);
-				sprintf(tmp,"Searched messages for '%s'",str);
+						subs_scanned++;
+					}
+				sprintf(tmp,"Searched %lu sub-boards for '%s'",subs_scanned,str);
 				logline(nulstr,tmp);
 				if(!found)
 					CRLF;
@@ -82,22 +86,27 @@ void sbbs_t::scansubs(long mode)
 		if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
 			menu("msgscan"); }
 		i=scanposts(usrsub[curgrp][cursub[curgrp]],mode,str);
+		subs_scanned++;
 		bputs(text[MessageScan]);
 		if(i) bputs(text[MessageScanAborted]);
-		else bputs(text[MessageScanComplete]);
+		else bprintf(text[MessageScanComplete],subs_scanned);
 		return; }
 	if(ch=='G') {
 		if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
 			menu("msgscan"); }
-		for(i=0;i<usrsubs[curgrp] && !msgabort();i++)
+		for(i=0;i<usrsubs[curgrp] && !msgabort();i++) {
 			if(((mode&SCAN_NEW &&
 				(sub_cfg[usrsub[curgrp][i]]&SUB_CFG_NSCAN
 					|| cfg.sub[usrsub[curgrp][i]]->misc&SUB_FORCED))
 				|| (mode&SCAN_TOYOU && sub_cfg[usrsub[curgrp][i]]&SUB_CFG_SSCAN)
-				|| mode&SCAN_FIND)
-				&& scanposts(usrsub[curgrp][i],mode,str)) break;
+				|| mode&SCAN_FIND)) {
+				if(scanposts(usrsub[curgrp][i],mode,str)) 
+					break;
+				subs_scanned++;
+			}
+		}
 		bputs(text[MessageScan]);
-		if(i==usrsubs[curgrp]) bputs(text[MessageScanComplete]);
+		if(i==usrsubs[curgrp]) bprintf(text[MessageScanComplete],subs_scanned);
 			else bputs(text[MessageScanAborted]);
 		return; }
 
@@ -112,6 +121,7 @@ void sbbs_t::scanallsubs(long mode)
 	char	str[256];
 	char 	tmp[512];
 	uint	i,j,found=0;
+	ulong	subs_scanned=0;
 
 	if(/* action==NODE_MAIN && */ mode&(SCAN_FIND|SCAN_TOYOU)) {
 		i=yesno(text[DisplayTitlesOnlyQ]);
@@ -121,45 +131,58 @@ void sbbs_t::scanallsubs(long mode)
 				return;
 			if(i) { 			/* if titles only */
 				for(i=0;i<usrgrps;i++) {
-					for(j=0;j<usrsubs[i] && !msgabort();j++)
+					for(j=0;j<usrsubs[i] && !msgabort();j++) {
 						found=searchsub(usrsub[i][j],str);
+						subs_scanned++;
+					}
 					if(j<usrsubs[i])
-						break; }
+						break; 
+				}
 				if(!found)
 					CRLF;
-				sprintf(tmp,"Searched messages for '%s'",str);
+				sprintf(tmp,"Searched %lu sub-boards for '%s'",subs_scanned,str);
 				logline(nulstr,tmp);
 				return; } }
 		else if(mode&SCAN_TOYOU && i) {
 			for(i=0;i<usrgrps;i++) {
-				for(j=0;j<usrsubs[i] && !msgabort();j++)
+				for(j=0;j<usrsubs[i] && !msgabort();j++) 
 					found=searchsub_toyou(usrsub[i][j]);
 				if(j<usrsubs[i])
-					break; }
+					break; 
+			}
 			if(!found)
 				CRLF;
-			return; } }
+			return; 
+		} 
+	}
 
 	if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
 		menu("msgscan"); }
 	for(i=0;i<usrgrps;i++) {
-		for(j=0;j<usrsubs[i] && !msgabort();j++)
+		for(j=0;j<usrsubs[i] && !msgabort();j++) {
 			if(((mode&SCAN_NEW && sub_cfg[usrsub[i][j]]&SUB_CFG_NSCAN)
 				|| cfg.sub[usrsub[i][j]]->misc&SUB_FORCED
 				|| mode&SCAN_FIND
-				|| (mode&SCAN_TOYOU && sub_cfg[usrsub[i][j]]&SUB_CFG_SSCAN))
-				&& scanposts(usrsub[i][j],mode,str)) break;
+				|| (mode&SCAN_TOYOU && sub_cfg[usrsub[i][j]]&SUB_CFG_SSCAN))) {
+				if(scanposts(usrsub[i][j],mode,str)) 
+					break;
+				subs_scanned++;
+				}
+		}
 		if(j<usrsubs[i])
-			break; }
+			break; 
+	}
 	bputs(text[MessageScan]);
 	if(i<usrgrps) {
 		bputs(text[MessageScanAborted]);
-		return; }
-	bputs(text[MessageScanComplete]);
+		return; 
+	}
+	bprintf(text[MessageScanComplete],subs_scanned);
 	if(mode&SCAN_NEW && !(mode&(SCAN_BACK|SCAN_TOYOU))
 		&& useron.misc&ANFSCAN && !(useron.rest&FLAG('T'))) {
 		xfer_cmds++;
-		scanalldirs(FL_ULTIME); }
+		scanalldirs(FL_ULTIME); 
+	}
 }
 
 void sbbs_t::new_scan_ptr_cfg()
-- 
GitLab