diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 690628ad9defcdf35c0f026c16f4629a377a42d0..301ae114108ddb531e141ae3bed8021904e8ce35 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -745,6 +745,7 @@ extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
 	char	str[128];
 	char	search[81];
 	int		c;
+	int		i;
 	BOOL	found;
 	FILE*	stream;
 
@@ -786,12 +787,20 @@ extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
 					found=!found; 
 			}
 
-			else if(p[c]=='^') {
+			else if(p[c]=='^' || p[c]=='*') {
 				p[c]=0;
 				if(!strncmp(p,search,c))
 					found=!found; 
 			}
 
+			else if(p[0]=='*') {
+				i=strlen(search);
+				if(i<c)
+					continue;
+				if(!strncmp(p+1,search+(i-c),c))
+					found=!found; 
+			}
+
 			else if(!strcmp(p,search))
 				found=!found; 
 		}