From 1ef009621283305bb1cf4e59bf8ca198d1fb6fe6 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 28 Sep 2001 16:25:12 +0000
Subject: [PATCH] Created findstr() to search any file for patterns.

---
 src/sbbs3/sbbs.h  |  1 +
 src/sbbs3/str.cpp | 27 +++++++++++++++++++++------
 2 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index d204d68a63..6bd1b0bca2 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -744,6 +744,7 @@ extern "C" {
 	/* str.cpp */
 	DLLEXPORT char *	DLLCALL ascii_str(uchar* str);
 	DLLEXPORT ushort	DLLCALL crc16(char *str);
+	DLLEXPORT BOOL		DLLCALL findstr(scfg_t* cfg, char *insearch, char *fname);
 	DLLEXPORT BOOL		DLLCALL trashcan(scfg_t* cfg, char *insearch, char *name);
 	DLLEXPORT int		DLLCALL putsmsg(scfg_t* cfg, int usernumber, char *strin);
 
diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 4eb9865e11..7dad024daa 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -735,11 +735,11 @@ void sbbs_t::dirinfo(uint dirnum)
 		printfile(str,0);
 }
 
+
 /****************************************************************************/
-/* Searches the file <name>.can in the TEXT directory for matches			*/
-/* Returns 1 if found in list, 0 if not.									*/
+/* Pattern matching string search of 'insearch' in 'fname'.					*/
 /****************************************************************************/
-extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
+extern "C" BOOL DLLCALL findstr(scfg_t* cfg, char* insearch, char* fname)
 {
 	char*	p;
 	char	str[128];
@@ -749,9 +749,7 @@ extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
 	BOOL	found;
 	FILE*	stream;
 
-	sprintf(str,"%s%s.can",cfg->text_dir,name);
-
-	if((stream=fopen(str,"r"))==NULL)
+	if((stream=fopen(fname,"r"))==NULL)
 		return(FALSE); 
 
 	sprintf(search,"%.*s",sizeof(search)-1,insearch);
@@ -809,6 +807,23 @@ extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
 	return(found);
 }
 
+/****************************************************************************/
+/* Searches the file <name>.can in the TEXT directory for matches			*/
+/* Returns TRUE if found in list, FALSE if not.								*/
+/****************************************************************************/
+extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
+{
+	char fname[MAX_PATH+1];
+
+	sprintf(fname,"%s%s.can",cfg->text_dir,name);
+	return(findstr(cfg,insearch,fname));
+}
+
+/****************************************************************************/
+/* Searches the file <name>.can in the TEXT directory for matches			*/
+/* Returns TRUE if found in list, FALSE if not.								*/
+/* Displays bad<name>.can in text directory if found.						*/
+/****************************************************************************/
 bool sbbs_t::trashcan(char *insearch, char *name)
 {
 	char str[256];
-- 
GitLab