From 9a67a92834f7577eae24335f9cc9c7915e3724ac Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 2 Dec 2000 01:58:08 +0000
Subject: [PATCH] Changed main() to return int (to make gcc happy). Intended
 body of main().

---
 xtrn/sbl/sbl.c | 1339 ++++++++++++++++++++++++------------------------
 1 file changed, 670 insertions(+), 669 deletions(-)

diff --git a/xtrn/sbl/sbl.c b/xtrn/sbl/sbl.c
index 59196ea3ba..14c1d4df99 100644
--- a/xtrn/sbl/sbl.c
+++ b/xtrn/sbl/sbl.c
@@ -730,7 +730,7 @@ int sortstr_cmp(sortstr_t *str1, sortstr_t *str2)
 return(stricmp(str1->str,str2->str));
 }
 
-void main(int argc, char **argv)
+int main(int argc, char **argv)
 {
 	char	str[512],name[128],*p,ch;
 	short	i,j,file,done,sort_by_str;
@@ -741,723 +741,724 @@ void main(int argc, char **argv)
 	sortstr_t *sortstr;
 	sortint_t *sortint;
 
-for(i=1;i<argc;i++)
-	if(argv[i][0]=='/')
-		switch(toupper(argv[i][1])) {
-			case 'M':
-				maint=1;
-				break; }
+	for(i=1;i<argc;i++)
+		if(argv[i][0]=='/')
+			switch(toupper(argv[i][1])) {
+				case 'M':
+					maint=1;
+					break; }
 
-p=getenv("SBBSNODE");
-if(p)
-	strcpy(node_dir,p);
-else {
-	printf("\nSBBSNODE environment variable must be set\n");
-	exit(0); }
-
-if(node_dir[strlen(node_dir)-1]!='\\')
-	strcat(node_dir,"\\");
-
-strcpy(str,"SBL.CFG");
-if((file=sopen(str,O_RDONLY,SH_DENYNO))==-1) {
-	printf("error opening %s\r\n",str);
-	exit(1); }
-if((stream=fdopen(file,"rb"))==NULL) {
-	printf("fdopen error with %s\r\n",str);
-	exit(1); }
-fgets(str,81,stream);
-del_days=atoi(str);
-fgets(str,81,stream);
-add_ml=atoi(str);
-fgets(str,81,stream);
-update_ml=atoi(str);
-fgets(str,81,stream);
-remove_ml=atoi(str);
-fgets(str,81,stream);
-verify_ml=atoi(str);
-fgets(str,81,stream);
-notify_user=atoi(str);
-fclose(stream);
-
-initdata();
-
-mnehigh=HIGH|LIGHTGRAY;
-mnelow=HIGH|YELLOW;
-if(maint)
-	user_misc=(ANSI|COLOR);
-
-if((file=sopen("SBL.DAB",O_RDWR|O_BINARY|O_CREAT,SH_DENYNO
-	,S_IWRITE|S_IREAD))==-1) {
-	bprintf("\r\n\7Error opening/creating SBL.DAB\r\n");
-	exit(1); }
-if((stream=fdopen(file,"w+b"))==NULL) {
-	bprintf("\r\n\7Error converting SBL.DAB file handle to stream\r\n");
-	exit(1); }
-setvbuf(stream,0L,_IOFBF,2048);
-
-if(del_days) {
-    now=time(NULL);
-	strcpy(str,"SBLPURGE.DAB");
-	if((file=nopen(str,O_RDWR|O_CREAT))==-1) {
-		printf("Error creating %s\r\n",str);
+	p=getenv("SBBSNODE");
+	if(p)
+		strcpy(node_dir,p);
+	else {
+		printf("\nSBBSNODE environment variable must be set\n");
+		exit(0); }
+
+	if(node_dir[strlen(node_dir)-1]!='\\')
+		strcat(node_dir,"\\");
+
+	strcpy(str,"SBL.CFG");
+	if((file=sopen(str,O_RDONLY,SH_DENYNO))==-1) {
+		printf("error opening %s\r\n",str);
 		exit(1); }
-	l=0;
-	read(file,&l,4);
-	if(now-l>(24L*60L*60L) || maint) {	 /* more than a day since update */
-		bputs("\r\n\1n\1hRunning daily maintenance for Synchronet BBS List...");
-		lseek(file,0L,SEEK_SET);
-		write(file,&now,4);
-		close(file);
-		fseek(stream,0L,SEEK_SET);
-		while(!feof(stream)) {
-			if(!fread(&bbs,sizeof(bbs_t),1,stream))
-				break;
-			if(bbs.name[0]) {
-				if((now-bbs.updated)/(24L*60L*60L)>(time_t)del_days
-					&& (now-bbs.created)/(24L*60L*60L)>(time_t)del_days
-					&& (now-bbs.verified)/(24L*60L*60L)>(time_t)del_days) {
-					lncntr=0;
-					bprintf("\r\n\1n\1hAuto-deleting \1m%s\r\n",bbs.name);
-					if(!(bbs.misc&FROM_SMB)) {
-						sprintf(str,"\1n\1hSBL: \1mYour BBS entry for \1y%s\1m\r\n"
-							"     was auto-deleted from the \1cSynchronet BBS "
-							"List\r\n",bbs.name);
-						i=usernumber(bbs.user);
-						if(i) putsmsg(i,str);
-					}
-					bbs.name[0]=0;
-					fseek(stream,-(long)(sizeof(bbs_t)),SEEK_CUR);
-					fwrite(&bbs,sizeof(bbs_t),1,stream); }
-				else if (!(bbs.misc&FROM_SMB)) { /* Warn user */
-					l=bbs.created;
-					if(l<bbs.updated)
-						l=bbs.updated;
-					if(l<bbs.verified)
-						l=bbs.verified;
-					if((now-l)/(24L*60L*60L)>=(time_t)(del_days/2)) {
-						bprintf("\r\n\1n\1hWarning \1y%s\r\n",bbs.user);
-						lncntr=0;
-						sprintf(str,"\1n\1hSBL: \1mPlease verify your BBS "
-							"entry for \1y%s\1m\r\n     "
-							"in the \1cSynchronet BBS List "
-							"\1mor it will be deleted in \1i\1r%u "
-							"\1n\1h\1mdays.\r\n"
-							,bbs.name
-							,del_days-((now-l)/(24L*60L*60L)));
-						i=usernumber(bbs.user);
-						if(i) putsmsg(i,str); } } } } }
-	else
-		close(file); }
-
-if(maint)
-	return;
-
-strcpy(list_fmt,DEF_LIST_FMT);
-while(1) {
-	aborted=0;
-	attr(LIGHTGRAY);
-	cls();
-	bprintf("\1n\1m\1hSynchronet \1wBBS List \1mv3.10 (XSDK v%s) "
-        "Developed 1994-2000 Rob Swindell\r\n\r\n"
-        ,xsdk_ver);
-
-#define SBL_INDENT "    "
-	sprintf(str,SBL_INDENT"~List all systems (condensed)\r\n"
-				SBL_INDENT"~Change list format\r\n"
-				SBL_INDENT"~Extended information on all systems\r\n"
-				SBL_INDENT"~Turn screen pause %s\r\n"
-				SBL_INDENT"~Find text in BBS entries\r\n"
-				SBL_INDENT"~Generate sorted list\r\n"
-				SBL_INDENT"~Display sorted list\r\n"
-				SBL_INDENT"~New entry scan\r\n"
-				SBL_INDENT"~Add a BBS entry\r\n"
-				SBL_INDENT"~Update a BBS entry\r\n"
-				SBL_INDENT"~Verify a BBS entry\r\n"
-				SBL_INDENT"~Remove a BBS entry\r\n"
-				SBL_INDENT"~Quit back to BBS\r\n"
-				,sbl_pause ? "OFF" : "ON");
-	mnemonics(str);
-	if(SYSOP)
-		mnemonics(SBL_INDENT"~* Undelete entries\r\n");
-
-	bputs("\r\n");
-
-	l=filelength(fileno(stream));
-	if(l>0)
-		bprintf(SBL_INDENT"\1n\1cThere are \1h%lu\1n\1c entries in the online BBS list "
-			"database.\r\n",l/(long)sizeof(bbs_t));
+	if((stream=fdopen(file,"rb"))==NULL) {
+		printf("fdopen error with %s\r\n",str);
+		exit(1); }
+	fgets(str,81,stream);
+	del_days=atoi(str);
+	fgets(str,81,stream);
+	add_ml=atoi(str);
+	fgets(str,81,stream);
+	update_ml=atoi(str);
+	fgets(str,81,stream);
+	remove_ml=atoi(str);
+	fgets(str,81,stream);
+	verify_ml=atoi(str);
+	fgets(str,81,stream);
+	notify_user=atoi(str);
+	fclose(stream);
+
+	initdata();
+
+	mnehigh=HIGH|LIGHTGRAY;
+	mnelow=HIGH|YELLOW;
+	if(maint)
+		user_misc=(ANSI|COLOR);
+
+	if((file=sopen("SBL.DAB",O_RDWR|O_BINARY|O_CREAT,SH_DENYNO
+		,S_IWRITE|S_IREAD))==-1) {
+		bprintf("\r\n\7Error opening/creating SBL.DAB\r\n");
+		exit(1); }
+	if((stream=fdopen(file,"w+b"))==NULL) {
+		bprintf("\r\n\7Error converting SBL.DAB file handle to stream\r\n");
+		exit(1); }
+	setvbuf(stream,0L,_IOFBF,2048);
 
 	if(del_days) {
-		bprintf(SBL_INDENT"\1n\1cEntries are auto-deleted \1h%u\1n\1c days after "
-			"last update or verification.\r\n",del_days);
-		bputs(SBL_INDENT"Users are encouraged to \1hV\1n\1cerify (vouch for) any listed "
-			"BBSs they call.\r\n"); }
-
-	nodesync(); 			/* Display any waiting messages */
-
-	bputs("\r\n"SBL_INDENT"\1y\1hWhich: \1w");
-	switch(getkeys("CLGDEFSNAURTQV!*",0)) {
-		case '!':
-			bprintf("\r\nsizeof(bbs_t)=%u\r\n",sizeof(bbs_t));
-			pause();
-			break;
-		case '*':
-			cls();
-			if(!SYSOP)
-				break;
-			fseek(stream,0L,SEEK_SET);
-			while(!feof(stream) && !aborted) {
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
-					break;
-				if(!bbs.name[0]) {
-					bbs.name[0]='?';
-					bbs.verified=time(NULL);
-					sprintf(bbs.userverified,"%.25s",user_name);
-					if(yesno(bbs.name)) {
-						bprintf("\1n\1gFirst char: \1h");
-						bbs.name[0]=getkey(0);
-						bprintf("%s\r\n",bbs.name);
-						fseek(stream,-(long)sizeof(bbs_t),SEEK_CUR);
-						fwrite(&bbs,sizeof(bbs_t),1,stream); } } }
-            break;
-		case 'L':
-			cls();
+		now=time(NULL);
+		strcpy(str,"SBLPURGE.DAB");
+		if((file=nopen(str,O_RDWR|O_CREAT))==-1) {
+			printf("Error creating %s\r\n",str);
+			exit(1); }
+		l=0;
+		read(file,&l,4);
+		if(now-l>(24L*60L*60L) || maint) {	 /* more than a day since update */
+			bputs("\r\n\1n\1hRunning daily maintenance for Synchronet BBS List...");
+			lseek(file,0L,SEEK_SET);
+			write(file,&now,4);
+			close(file);
 			fseek(stream,0L,SEEK_SET);
-			i=0;
-			while(!feof(stream) && !aborted) {
+			while(!feof(stream)) {
 				if(!fread(&bbs,sizeof(bbs_t),1,stream))
 					break;
-				if(!bbs.name[0])
-					continue;
-				i++;
-				if(!short_bbs_info(bbs))
-					break;
-				if(!sbl_pause)
-					lncntr=0; }
-			bprintf("\r\n\1n\1h%u systems listed.\r\n",i);
-			if(kbhit())
-				getch();
-			if(lncntr)
+				if(bbs.name[0]) {
+					if((now-bbs.updated)/(24L*60L*60L)>(time_t)del_days
+						&& (now-bbs.created)/(24L*60L*60L)>(time_t)del_days
+						&& (now-bbs.verified)/(24L*60L*60L)>(time_t)del_days) {
+						lncntr=0;
+						bprintf("\r\n\1n\1hAuto-deleting \1m%s\r\n",bbs.name);
+						if(!(bbs.misc&FROM_SMB)) {
+							sprintf(str,"\1n\1hSBL: \1mYour BBS entry for \1y%s\1m\r\n"
+								"     was auto-deleted from the \1cSynchronet BBS "
+								"List\r\n",bbs.name);
+							i=usernumber(bbs.user);
+							if(i) putsmsg(i,str);
+						}
+						bbs.name[0]=0;
+						fseek(stream,-(long)(sizeof(bbs_t)),SEEK_CUR);
+						fwrite(&bbs,sizeof(bbs_t),1,stream); }
+					else if (!(bbs.misc&FROM_SMB)) { /* Warn user */
+						l=bbs.created;
+						if(l<bbs.updated)
+							l=bbs.updated;
+						if(l<bbs.verified)
+							l=bbs.verified;
+						if((now-l)/(24L*60L*60L)>=(time_t)(del_days/2)) {
+							bprintf("\r\n\1n\1hWarning \1y%s\r\n",bbs.user);
+							lncntr=0;
+							sprintf(str,"\1n\1hSBL: \1mPlease verify your BBS "
+								"entry for \1y%s\1m\r\n     "
+								"in the \1cSynchronet BBS List "
+								"\1mor it will be deleted in \1i\1r%u "
+								"\1n\1h\1mdays.\r\n"
+								,bbs.name
+								,del_days-((now-l)/(24L*60L*60L)));
+							i=usernumber(bbs.user);
+							if(i) putsmsg(i,str); } } } } }
+		else
+			close(file); }
+
+	if(maint)
+		return;
+
+	strcpy(list_fmt,DEF_LIST_FMT);
+	while(1) {
+		aborted=0;
+		attr(LIGHTGRAY);
+		cls();
+		bprintf("\1n\1m\1hSynchronet \1wBBS List \1mv3.10 (XSDK v%s) "
+			"Developed 1994-2000 Rob Swindell\r\n\r\n"
+			,xsdk_ver);
+
+	#define SBL_INDENT "    "
+		sprintf(str,SBL_INDENT"~List all systems (condensed)\r\n"
+					SBL_INDENT"~Change list format\r\n"
+					SBL_INDENT"~Extended information on all systems\r\n"
+					SBL_INDENT"~Turn screen pause %s\r\n"
+					SBL_INDENT"~Find text in BBS entries\r\n"
+					SBL_INDENT"~Generate sorted list\r\n"
+					SBL_INDENT"~Display sorted list\r\n"
+					SBL_INDENT"~New entry scan\r\n"
+					SBL_INDENT"~Add a BBS entry\r\n"
+					SBL_INDENT"~Update a BBS entry\r\n"
+					SBL_INDENT"~Verify a BBS entry\r\n"
+					SBL_INDENT"~Remove a BBS entry\r\n"
+					SBL_INDENT"~Quit back to BBS\r\n"
+					,sbl_pause ? "OFF" : "ON");
+		mnemonics(str);
+		if(SYSOP)
+			mnemonics(SBL_INDENT"~* Undelete entries\r\n");
+
+		bputs("\r\n");
+
+		l=filelength(fileno(stream));
+		if(l>0)
+			bprintf(SBL_INDENT"\1n\1cThere are \1h%lu\1n\1c entries in the online BBS list "
+				"database.\r\n",l/(long)sizeof(bbs_t));
+
+		if(del_days) {
+			bprintf(SBL_INDENT"\1n\1cEntries are auto-deleted \1h%u\1n\1c days after "
+				"last update or verification.\r\n",del_days);
+			bputs(SBL_INDENT"Users are encouraged to \1hV\1n\1cerify (vouch for) any listed "
+				"BBSs they call.\r\n"); }
+
+		nodesync(); 			/* Display any waiting messages */
+
+		bputs("\r\n"SBL_INDENT"\1y\1hWhich: \1w");
+		switch(getkeys("CLGDEFSNAURTQV!*",0)) {
+			case '!':
+				bprintf("\r\nsizeof(bbs_t)=%u\r\n",sizeof(bbs_t));
 				pause();
-			break;
-		case 'C':
-			cls();
-			bputs("\1n\1c\1hList Format Specifier Definitions:\1n\r\n\r\n");
-			bputs("\1h\1w(\1mN\1w) \1n\1mName of System\r\n");
-			bputs("\1h\1w(\1mS\1w) \1n\1mSoftware Used\r\n");
-			bputs("\1h\1w(\1mP\1w) \1n\1mPhone Number\r\n");
-			bputs("\1h\1w(\1mB\1w) \1n\1mMaximum Connect Rate (in bps)\r\n");
-			bputs("\1h\1w(\1mM\1w) \1n\1mModem Type\r\n");
-			bputs("\1h\1w(\1mY\1w) \1n\1mSysop's Name\r\n");
-			bputs("\1h\1w(\1mT\1w) \1n\1mTotal Number of Nodes\r\n");
-			bputs("\1h\1w(\1mU\1w) \1n\1mTotal Number of Users\r\n");
-			bputs("\1h\1w(\1mH\1w) \1n\1mTotal Storage Capacity (in megabytes)\r\n");
-			bputs("\1h\1w(\1mL\1w) \1n\1mLocation (City, State)\r\n");
-			bputs("\1h\1w(\1mF\1w) \1n\1mDate System was First Online\r\n");
-			bputs("\1h\1w(\1mC\1w) \1n\1mDate Entry was Created\r\n");
-			bputs("\1h\1w(\1mV\1w) \1n\1mDate Entry was Last Verified\r\n");
-			bputs("\1h\1w(\1mD\1w) \1n\1mDate Entry was Last Updated\r\n");
-			bprintf("\r\n\1n\1gDefault Format: \1h%s",DEF_LIST_FMT);
-			bprintf("\r\n\1n\1gCurrent Format: \1h%s\r\n",list_fmt);
-			bprintf("\r\n\1y\1hNew Format: ");
-			if(getstr(tmp,10,K_UPPER|K_LINE)) {
-				if(!strchr(tmp,'P') || !strchr(tmp,'N')) {
-					bputs("\r\n\1h\1mP\1n\1mhone and \1hN\1n\1mame specifiers "
-						"must be present in format.\r\n\r\n");
-					pause(); }
-				else
-					strcpy(list_fmt,tmp); }
-			break;
-		case 'E':
-			fseek(stream,0L,SEEK_SET);
-			while(!feof(stream) && !aborted) {
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
-					break;
-				if(bbs.name[0] && !long_bbs_info(bbs))
-					break;
-				if(!sbl_pause)
-					lncntr=0; }
-            break;
-		case 'F':   /* Find text */
-			cls();
-			bputs("\1y\1hText to search for: ");
-			if(!getstr(name,25,K_UPPER|K_LINE))
 				break;
-			ch=yesno("\r\nDisplay extended information");
-
-			found=0;
-			bputs("\1n\1h\r\nSearching...\r\n\r\n");
-			fseek(stream,0L,SEEK_SET);
-			while(!feof(stream) && !aborted) {
-				if(!sbl_pause)
-					lncntr=0;
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
+			case '*':
+				cls();
+				if(!SYSOP)
 					break;
-				if(!bbs.name[0])
-					continue;
-				tmpbbs=bbs;
-				strupr(tmpbbs.name);
-				strupr(tmpbbs.user);
-				strupr(tmpbbs.software);
-				strupr(tmpbbs.userverified);
-				strupr(tmpbbs.userupdated);
-				strupr(tmpbbs.web_url);
-				if(strstr(tmpbbs.name,name)
-					|| strstr(tmpbbs.user,name)
-					|| strstr(tmpbbs.software,name)
-					|| strstr(tmpbbs.userverified,name)
-					|| strstr(tmpbbs.userupdated,name)
-					|| strstr(tmpbbs.web_url,name)
-					) {
-					found++;
-					if(ch && !long_bbs_info(bbs))
-						break;
-					if(!ch && !short_bbs_info(bbs))
-						break;
-					continue; }
-
-				for(i=0;i<tmpbbs.total_sysops;i++) {
-					strupr(tmpbbs.sysop[i]);
-					if(strstr(tmpbbs.sysop[i],name))
-						break; }
-				if(i<tmpbbs.total_sysops) {
-					found++;
-					if(ch && !long_bbs_info(bbs))
+				fseek(stream,0L,SEEK_SET);
+				while(!feof(stream) && !aborted) {
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!ch && !short_bbs_info(bbs))
-						break;
-					continue; }
-
-				for(i=0;i<tmpbbs.total_networks;i++) {
-					strupr(tmpbbs.network[i]);
-					strupr(tmpbbs.address[i]);
-					if(strstr(tmpbbs.network[i],name)
-						|| strstr(tmpbbs.address[i],name))
-						break; }
-				if(i<tmpbbs.total_networks) {
-					found++;
-					if(ch && !long_bbs_info(bbs))
-						break;
-					if(!ch && !short_bbs_info(bbs))
-						break;
-                    continue; }
-
-				for(i=0;i<tmpbbs.total_terminals;i++) {
-					strupr(tmpbbs.terminal[i]);
-					if(strstr(tmpbbs.terminal[i],name))
-						break; }
-				if(i<tmpbbs.total_terminals) {
-					found++;
-					if(ch && !long_bbs_info(bbs))
-						break;
-					if(!ch && !short_bbs_info(bbs))
-						break;
-                    continue; }
-
-				for(i=0;i<tmpbbs.total_numbers;i++) {
-					strupr(tmpbbs.number[i].modem.number);
-					strupr(tmpbbs.number[i].modem.desc);
-					strupr(tmpbbs.number[i].modem.location);
-					if(strstr(tmpbbs.number[i].modem.number,name)
-						|| strstr(tmpbbs.number[i].modem.desc,name)
-						|| strstr(tmpbbs.number[i].modem.location,name))
-						break; }
-				if(i<tmpbbs.total_numbers) {
-					found++;
-					if(ch && !long_bbs_info(bbs))
+					if(!bbs.name[0]) {
+						bbs.name[0]='?';
+						bbs.verified=time(NULL);
+						sprintf(bbs.userverified,"%.25s",user_name);
+						if(yesno(bbs.name)) {
+							bprintf("\1n\1gFirst char: \1h");
+							bbs.name[0]=getkey(0);
+							bprintf("%s\r\n",bbs.name);
+							fseek(stream,-(long)sizeof(bbs_t),SEEK_CUR);
+							fwrite(&bbs,sizeof(bbs_t),1,stream); } } }
+				break;
+			case 'L':
+				cls();
+				fseek(stream,0L,SEEK_SET);
+				i=0;
+				while(!feof(stream) && !aborted) {
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!ch && !short_bbs_info(bbs))
+					if(!bbs.name[0])
+						continue;
+					i++;
+					if(!short_bbs_info(bbs))
 						break;
-					continue; } }
-			if(!ch || !found) {
-				CRLF;
+					if(!sbl_pause)
+						lncntr=0; }
+				bprintf("\r\n\1n\1h%u systems listed.\r\n",i);
 				if(kbhit())
 					getch();
-				if(found)
-					bprintf("\1n\1h%u systems listed.\r\n",found);
-				pause(); }
-            break;
-		case 'G':   /* Generated sorted list */
-			cls();
-			if(!filelength(fileno(stream))) {
-                bprintf("No BBS list exists.\r\n");
-                pause();
-                break; }
-			bputs("\1n\1c\1hSort Options:\1n\r\n\r\n");
-			bputs("\1h\1w(\1mN\1w) \1n\1mName of System\r\n");
-			bputs("\1h\1w(\1mS\1w) \1n\1mSoftware Used\r\n");
-			bputs("\1h\1w(\1mP\1w) \1n\1mPhone Number\r\n");
-			bputs("\1h\1w(\1mB\1w) \1n\1mMaximum Connect Rate (in bps)\r\n");
-			bputs("\1h\1w(\1mM\1w) \1n\1mModem Type\r\n");
-			bputs("\1h\1w(\1mY\1w) \1n\1mSysop's Name\r\n");
-			bputs("\1h\1w(\1mT\1w) \1n\1mTotal Number of Nodes\r\n");
-			bputs("\1h\1w(\1mU\1w) \1n\1mTotal Number of Users\r\n");
-			bputs("\1h\1w(\1mH\1w) \1n\1mTotal Storage Capacity (in megabytes)\r\n");
-			bputs("\1h\1w(\1mL\1w) \1n\1mLocation (City, State)\r\n");
-			bputs("\1h\1w(\1mF\1w) \1n\1mDate System was First Online\r\n");
-			bputs("\1h\1w(\1mC\1w) \1n\1mDate Entry was Created\r\n");
-			bputs("\1h\1w(\1mV\1w) \1n\1mDate Entry was Last Verified\r\n");
-            bputs("\1h\1w(\1mD\1w) \1n\1mDate Entry was Last Updated\r\n");
-			bprintf("\r\n\1y\1hSort by (\1wQ\1y=Quit): \1w");
-			ch=getkeys("NSPBMYTUHLFCVDQ",0);
-			if(!ch || ch=='Q')
+				if(lncntr)
+					pause();
 				break;
-			cls();
-			bputs("\1n\1hSorting...     \1m");
-			fseek(stream,0L,SEEK_SET);
-			i=j=done=0;
-			sort_by_str=0;
-			sortstr=NULL;
-			sortint=NULL;
-			while(!feof(stream) && !done) {
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
-					break;
-				j++;
-				bprintf("\b\b\b\b%4u",j);
-				if(!bbs.name[0])	/* don't sort deleted entries */
-                    continue;
-				i++;
-				switch(ch) {
-					case 'N':
-						sprintf(str,"%.30s",bbs.name);
-						sort_by_str=1;
-						break;
-					case 'S':
-						sprintf(str,"%.30s",bbs.software);
-						sort_by_str=1;
-						break;
-					case 'P':
-						sprintf(str,"%.30s",bbs.number[0].modem.number);
-						sort_by_str=1;
-						break;
-					case 'M':
-						sprintf(str,"%.30s",bbs.number[0].modem.desc);
-						sort_by_str=1;
-						break;
-					case 'Y':
-						sprintf(str,"%.30s",bbs.sysop[0]);
-						sort_by_str=1;
-						break;
-					case 'L':
-						sprintf(str,"%.30s",bbs.number[0].modem.location);
-						sort_by_str=1;
-						break;
-					case 'B':
-						l=bbs.number[0].modem.max_rate;
-						break;
-					case 'T':
-						l=bbs.nodes;
-						break;
-					case 'U':
-						l=bbs.users;
-						break;
-					case 'H':
-						l=bbs.megs;
-						break;
-					case 'F':
-						l=bbs.birth;
+			case 'C':
+				cls();
+				bputs("\1n\1c\1hList Format Specifier Definitions:\1n\r\n\r\n");
+				bputs("\1h\1w(\1mN\1w) \1n\1mName of System\r\n");
+				bputs("\1h\1w(\1mS\1w) \1n\1mSoftware Used\r\n");
+				bputs("\1h\1w(\1mP\1w) \1n\1mPhone Number\r\n");
+				bputs("\1h\1w(\1mB\1w) \1n\1mMaximum Connect Rate (in bps)\r\n");
+				bputs("\1h\1w(\1mM\1w) \1n\1mModem Type\r\n");
+				bputs("\1h\1w(\1mY\1w) \1n\1mSysop's Name\r\n");
+				bputs("\1h\1w(\1mT\1w) \1n\1mTotal Number of Nodes\r\n");
+				bputs("\1h\1w(\1mU\1w) \1n\1mTotal Number of Users\r\n");
+				bputs("\1h\1w(\1mH\1w) \1n\1mTotal Storage Capacity (in megabytes)\r\n");
+				bputs("\1h\1w(\1mL\1w) \1n\1mLocation (City, State)\r\n");
+				bputs("\1h\1w(\1mF\1w) \1n\1mDate System was First Online\r\n");
+				bputs("\1h\1w(\1mC\1w) \1n\1mDate Entry was Created\r\n");
+				bputs("\1h\1w(\1mV\1w) \1n\1mDate Entry was Last Verified\r\n");
+				bputs("\1h\1w(\1mD\1w) \1n\1mDate Entry was Last Updated\r\n");
+				bprintf("\r\n\1n\1gDefault Format: \1h%s",DEF_LIST_FMT);
+				bprintf("\r\n\1n\1gCurrent Format: \1h%s\r\n",list_fmt);
+				bprintf("\r\n\1y\1hNew Format: ");
+				if(getstr(tmp,10,K_UPPER|K_LINE)) {
+					if(!strchr(tmp,'P') || !strchr(tmp,'N')) {
+						bputs("\r\n\1h\1mP\1n\1mhone and \1hN\1n\1mame specifiers "
+							"must be present in format.\r\n\r\n");
+						pause(); }
+					else
+						strcpy(list_fmt,tmp); }
+				break;
+			case 'E':
+				fseek(stream,0L,SEEK_SET);
+				while(!feof(stream) && !aborted) {
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					case 'C':
-						l=bbs.created;
+					if(bbs.name[0] && !long_bbs_info(bbs))
 						break;
-					case 'V':
-						l=bbs.verified;
+					if(!sbl_pause)
+						lncntr=0; }
+				break;
+			case 'F':   /* Find text */
+				cls();
+				bputs("\1y\1hText to search for: ");
+				if(!getstr(name,25,K_UPPER|K_LINE))
+					break;
+				ch=yesno("\r\nDisplay extended information");
+
+				found=0;
+				bputs("\1n\1h\r\nSearching...\r\n\r\n");
+				fseek(stream,0L,SEEK_SET);
+				while(!feof(stream) && !aborted) {
+					if(!sbl_pause)
+						lncntr=0;
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					case 'D':
-						l=bbs.updated;
-						break; }
-				if(sort_by_str) {
-					if((sortstr=(sortstr_t *)REALLOC(sortstr
-						,sizeof(sortstr_t)*i))==NULL) {
-						bprintf("\r\n\7Memory allocation error\r\n");
-						LFREE(sortstr);
-						done=1;
+					if(!bbs.name[0])
+						continue;
+					tmpbbs=bbs;
+					strupr(tmpbbs.name);
+					strupr(tmpbbs.user);
+					strupr(tmpbbs.software);
+					strupr(tmpbbs.userverified);
+					strupr(tmpbbs.userupdated);
+					strupr(tmpbbs.web_url);
+					if(strstr(tmpbbs.name,name)
+						|| strstr(tmpbbs.user,name)
+						|| strstr(tmpbbs.software,name)
+						|| strstr(tmpbbs.userverified,name)
+						|| strstr(tmpbbs.userupdated,name)
+						|| strstr(tmpbbs.web_url,name)
+						) {
+						found++;
+						if(ch && !long_bbs_info(bbs))
+							break;
+						if(!ch && !short_bbs_info(bbs))
+							break;
 						continue; }
-					strcpy(sortstr[i-1].str,str);
-					sortstr[i-1].offset=j-1; }
-				else {
-					if((sortint=(sortint_t *)REALLOC(sortint
-						,sizeof(sortint_t)*i))==NULL) {
-						bprintf("\r\n\7Memory allocation error\r\n");
-						LFREE(sortint);
-						done=1;
+
+					for(i=0;i<tmpbbs.total_sysops;i++) {
+						strupr(tmpbbs.sysop[i]);
+						if(strstr(tmpbbs.sysop[i],name))
+							break; }
+					if(i<tmpbbs.total_sysops) {
+						found++;
+						if(ch && !long_bbs_info(bbs))
+							break;
+						if(!ch && !short_bbs_info(bbs))
+							break;
 						continue; }
-					sortint[i-1].i=l;
-					sortint[i-1].offset=j-1; } }
 
-			if(done) {
-				pause();
-				break; }
+					for(i=0;i<tmpbbs.total_networks;i++) {
+						strupr(tmpbbs.network[i]);
+						strupr(tmpbbs.address[i]);
+						if(strstr(tmpbbs.network[i],name)
+							|| strstr(tmpbbs.address[i],name))
+							break; }
+					if(i<tmpbbs.total_networks) {
+						found++;
+						if(ch && !long_bbs_info(bbs))
+							break;
+						if(!ch && !short_bbs_info(bbs))
+							break;
+						continue; }
 
-			if(sort_by_str)
-				qsort((void *)sortstr,i,sizeof(sortstr[0])
-					,(int(*)(const void *, const void *))sortstr_cmp);
-			else
-				qsort((void *)sortint,i,sizeof(sortint[0])
-					,(int(*)(const void *, const void *))sortint_cmp);
+					for(i=0;i<tmpbbs.total_terminals;i++) {
+						strupr(tmpbbs.terminal[i]);
+						if(strstr(tmpbbs.terminal[i],name))
+							break; }
+					if(i<tmpbbs.total_terminals) {
+						found++;
+						if(ch && !long_bbs_info(bbs))
+							break;
+						if(!ch && !short_bbs_info(bbs))
+							break;
+						continue; }
+
+					for(i=0;i<tmpbbs.total_numbers;i++) {
+						strupr(tmpbbs.number[i].modem.number);
+						strupr(tmpbbs.number[i].modem.desc);
+						strupr(tmpbbs.number[i].modem.location);
+						if(strstr(tmpbbs.number[i].modem.number,name)
+							|| strstr(tmpbbs.number[i].modem.desc,name)
+							|| strstr(tmpbbs.number[i].modem.location,name))
+							break; }
+					if(i<tmpbbs.total_numbers) {
+						found++;
+						if(ch && !long_bbs_info(bbs))
+							break;
+						if(!ch && !short_bbs_info(bbs))
+							break;
+						continue; } }
+				if(!ch || !found) {
+					CRLF;
+					if(kbhit())
+						getch();
+					if(found)
+						bprintf("\1n\1h%u systems listed.\r\n",found);
+					pause(); }
+				break;
+			case 'G':   /* Generated sorted list */
+				cls();
+				if(!filelength(fileno(stream))) {
+					bprintf("No BBS list exists.\r\n");
+					pause();
+					break; }
+				bputs("\1n\1c\1hSort Options:\1n\r\n\r\n");
+				bputs("\1h\1w(\1mN\1w) \1n\1mName of System\r\n");
+				bputs("\1h\1w(\1mS\1w) \1n\1mSoftware Used\r\n");
+				bputs("\1h\1w(\1mP\1w) \1n\1mPhone Number\r\n");
+				bputs("\1h\1w(\1mB\1w) \1n\1mMaximum Connect Rate (in bps)\r\n");
+				bputs("\1h\1w(\1mM\1w) \1n\1mModem Type\r\n");
+				bputs("\1h\1w(\1mY\1w) \1n\1mSysop's Name\r\n");
+				bputs("\1h\1w(\1mT\1w) \1n\1mTotal Number of Nodes\r\n");
+				bputs("\1h\1w(\1mU\1w) \1n\1mTotal Number of Users\r\n");
+				bputs("\1h\1w(\1mH\1w) \1n\1mTotal Storage Capacity (in megabytes)\r\n");
+				bputs("\1h\1w(\1mL\1w) \1n\1mLocation (City, State)\r\n");
+				bputs("\1h\1w(\1mF\1w) \1n\1mDate System was First Online\r\n");
+				bputs("\1h\1w(\1mC\1w) \1n\1mDate Entry was Created\r\n");
+				bputs("\1h\1w(\1mV\1w) \1n\1mDate Entry was Last Verified\r\n");
+				bputs("\1h\1w(\1mD\1w) \1n\1mDate Entry was Last Updated\r\n");
+				bprintf("\r\n\1y\1hSort by (\1wQ\1y=Quit): \1w");
+				ch=getkeys("NSPBMYTUHLFCVDQ",0);
+				if(!ch || ch=='Q')
+					break;
+				cls();
+				bputs("\1n\1hSorting...     \1m");
+				fseek(stream,0L,SEEK_SET);
+				i=j=done=0;
+				sort_by_str=0;
+				sortstr=NULL;
+				sortint=NULL;
+				while(!feof(stream) && !done) {
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
+						break;
+					j++;
+					bprintf("\b\b\b\b%4u",j);
+					if(!bbs.name[0])	/* don't sort deleted entries */
+						continue;
+					i++;
+					switch(ch) {
+						case 'N':
+							sprintf(str,"%.30s",bbs.name);
+							sort_by_str=1;
+							break;
+						case 'S':
+							sprintf(str,"%.30s",bbs.software);
+							sort_by_str=1;
+							break;
+						case 'P':
+							sprintf(str,"%.30s",bbs.number[0].modem.number);
+							sort_by_str=1;
+							break;
+						case 'M':
+							sprintf(str,"%.30s",bbs.number[0].modem.desc);
+							sort_by_str=1;
+							break;
+						case 'Y':
+							sprintf(str,"%.30s",bbs.sysop[0]);
+							sort_by_str=1;
+							break;
+						case 'L':
+							sprintf(str,"%.30s",bbs.number[0].modem.location);
+							sort_by_str=1;
+							break;
+						case 'B':
+							l=bbs.number[0].modem.max_rate;
+							break;
+						case 'T':
+							l=bbs.nodes;
+							break;
+						case 'U':
+							l=bbs.users;
+							break;
+						case 'H':
+							l=bbs.megs;
+							break;
+						case 'F':
+							l=bbs.birth;
+							break;
+						case 'C':
+							l=bbs.created;
+							break;
+						case 'V':
+							l=bbs.verified;
+							break;
+						case 'D':
+							l=bbs.updated;
+							break; }
+					if(sort_by_str) {
+						if((sortstr=(sortstr_t *)REALLOC(sortstr
+							,sizeof(sortstr_t)*i))==NULL) {
+							bprintf("\r\n\7Memory allocation error\r\n");
+							LFREE(sortstr);
+							done=1;
+							continue; }
+						strcpy(sortstr[i-1].str,str);
+						sortstr[i-1].offset=j-1; }
+					else {
+						if((sortint=(sortint_t *)REALLOC(sortint
+							,sizeof(sortint_t)*i))==NULL) {
+							bprintf("\r\n\7Memory allocation error\r\n");
+							LFREE(sortint);
+							done=1;
+							continue; }
+						sortint[i-1].i=l;
+						sortint[i-1].offset=j-1; } }
+
+				if(done) {
+					pause();
+					break; }
 
-			bprintf("\r\n\r\n\1h\1gCreating index...");
-			sprintf(str,"SORT_%03d.NDX",node_num);
-			if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))==-1) {
-				bprintf("\r\n\7Error creating %s\r\n",str);
+				if(sort_by_str)
+					qsort((void *)sortstr,i,sizeof(sortstr[0])
+						,(int(*)(const void *, const void *))sortstr_cmp);
+				else
+					qsort((void *)sortint,i,sizeof(sortint[0])
+						,(int(*)(const void *, const void *))sortint_cmp);
+
+				bprintf("\r\n\r\n\1h\1gCreating index...");
+				sprintf(str,"SORT_%03d.NDX",node_num);
+				if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))==-1) {
+					bprintf("\r\n\7Error creating %s\r\n",str);
+					if(sort_by_str)
+						LFREE(sortstr);
+					else
+						LFREE(sortint);
+					pause();
+					break; }
+				for(j=0;j<i;j++)
+					if(sort_by_str)
+						write(file,&sortstr[j].offset,2);
+					else
+						write(file,&sortint[j].offset,2);
+				close(file);
 				if(sort_by_str)
 					LFREE(sortstr);
 				else
 					LFREE(sortint);
+				bputs("\r\n\r\n\1n\1hDone.\r\n");
 				pause();
-				break; }
-			for(j=0;j<i;j++)
-				if(sort_by_str)
-					write(file,&sortstr[j].offset,2);
-				else
-					write(file,&sortint[j].offset,2);
-			close(file);
-			if(sort_by_str)
-				LFREE(sortstr);
-			else
-				LFREE(sortint);
-			bputs("\r\n\r\n\1n\1hDone.\r\n");
-			pause();
-			break;
-		case 'D':
-			cls();
-			sprintf(str,"SORT_%03d.NDX",node_num);
-			if((file=nopen(str,O_RDONLY))==-1) {
-				bputs("\1n\1r\1hSorted list not generated.\r\n");
-				pause(); }
-			ch=yesno("Display extended information");
-			cls();
-			while(!eof(file) && !aborted) {
-				if(read(file,&i,2)!=2)
-					break;
-				fseek(stream,(long)i*sizeof(bbs_t),SEEK_SET);
-				if(!sbl_pause)
-					lncntr=0;
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
-					break;
-				if(!bbs.name[0])
-                    continue;
-				if(ch && !long_bbs_info(bbs))
-					break;
-				if(!ch && !short_bbs_info(bbs))
-					break; }
-			close(file);
-			if(kbhit())
-				getch();
-			if(lncntr)
-                pause();
-			break;
-		case 'N':   /* New (updated) entry scan */
-			cls();
-			bputs("\1y\1hLast update (MM/DD/YY): ");
-			if(!getstr(str,8,K_UPPER|K_LINE))
 				break;
-			l=dstrtounix(str);
-			ch=yesno("\r\nDisplay extended information");
-			found=0;
-			bputs("\1n\1h\r\nSearching...\r\n\r\n");
-			fseek(stream,0L,SEEK_SET);
-			while(!feof(stream) && !aborted) {
-				if(!sbl_pause)
-					lncntr=0;
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
-					break;
-				if(!bbs.name[0])
-					continue;
-				if(bbs.updated>=l || bbs.created>=l) {
+			case 'D':
+				cls();
+				sprintf(str,"SORT_%03d.NDX",node_num);
+				if((file=nopen(str,O_RDONLY))==-1) {
+					bputs("\1n\1r\1hSorted list not generated.\r\n");
+					pause(); }
+				ch=yesno("Display extended information");
+				cls();
+				while(!eof(file) && !aborted) {
+					if(read(file,&i,2)!=2)
+						break;
+					fseek(stream,(long)i*sizeof(bbs_t),SEEK_SET);
+					if(!sbl_pause)
+						lncntr=0;
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
+						break;
+					if(!bbs.name[0])
+						continue;
 					if(ch && !long_bbs_info(bbs))
 						break;
 					if(!ch && !short_bbs_info(bbs))
+						break; }
+				close(file);
+				if(kbhit())
+					getch();
+				if(lncntr)
+					pause();
+				break;
+			case 'N':   /* New (updated) entry scan */
+				cls();
+				bputs("\1y\1hLast update (MM/DD/YY): ");
+				if(!getstr(str,8,K_UPPER|K_LINE))
+					break;
+				l=dstrtounix(str);
+				ch=yesno("\r\nDisplay extended information");
+				found=0;
+				bputs("\1n\1h\r\nSearching...\r\n\r\n");
+				fseek(stream,0L,SEEK_SET);
+				while(!feof(stream) && !aborted) {
+					if(!sbl_pause)
+						lncntr=0;
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					found++;
-					continue; } }
-			if(!ch || !found) {
-				CRLF;
-				pause(); }
-            break;
-		case 'A':
-			cls();
-			if((uint)user_level<add_ml) {
-				bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
-				pause();
-				break; }
-			bputs("\1g\1hAdding a BBS entry:\1n\r\n\r\n");
-			bputs("\1n\1gHit ENTER for unknown data items.\r\n\r\n");
-			memset(&bbs,0,sizeof(bbs_t));
-			if(!get_bbs_info(&bbs))
+					if(!bbs.name[0])
+						continue;
+					if(bbs.updated>=l || bbs.created>=l) {
+						if(ch && !long_bbs_info(bbs))
+							break;
+						if(!ch && !short_bbs_info(bbs))
+							break;
+						found++;
+						continue; } }
+				if(!ch || !found) {
+					CRLF;
+					pause(); }
 				break;
-			bputs("\1n\1h\r\nSearching for duplicates...");
-			fseek(stream,0L,SEEK_SET);
-			i=0;
-			dots(0);
-			while(!feof(stream) && !i) {
-				dots(1);
-				if(!fread(&tmpbbs,sizeof(bbs_t),1,stream))
+			case 'A':
+				cls();
+				if((uint)user_level<add_ml) {
+					bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+					pause();
+					break; }
+				bputs("\1g\1hAdding a BBS entry:\1n\r\n\r\n");
+				bputs("\1n\1gHit ENTER for unknown data items.\r\n\r\n");
+				memset(&bbs,0,sizeof(bbs_t));
+				if(!get_bbs_info(&bbs))
 					break;
-				if(!stricmp(tmpbbs.name,bbs.name)) i=1; }
-			if(i) {
-				bprintf("\7\1n\1h\1r\1i\r\n\r\n%s \1n\1h\1ralready exists!"
-					"\r\n\r\n"
-					,bbs.name);
-				pause();
-				break; }
+				bputs("\1n\1h\r\nSearching for duplicates...");
+				fseek(stream,0L,SEEK_SET);
+				i=0;
+				dots(0);
+				while(!feof(stream) && !i) {
+					dots(1);
+					if(!fread(&tmpbbs,sizeof(bbs_t),1,stream))
+						break;
+					if(!stricmp(tmpbbs.name,bbs.name)) i=1; }
+				if(i) {
+					bprintf("\7\1n\1h\1r\1i\r\n\r\n%s \1n\1h\1ralready exists!"
+						"\r\n\r\n"
+						,bbs.name);
+					pause();
+					break; }
 
-			bputs("\1n\1h\r\nSaving...");
-			fseek(stream,0L,SEEK_SET);
-			dots(0);
-			while(!feof(stream)) {
-				dots(1);
-				if(!fread(&ch,1,1,stream))
-					break;
-				if(!ch) {			/* first byte is null */
-					fseek(stream,-1L,SEEK_CUR);
+				bputs("\1n\1h\r\nSaving...");
+				fseek(stream,0L,SEEK_SET);
+				dots(0);
+				while(!feof(stream)) {
+					dots(1);
+					if(!fread(&ch,1,1,stream))
+						break;
+					if(!ch) {			/* first byte is null */
+						fseek(stream,-1L,SEEK_CUR);
+						break; }
+					fseek(stream,(long)sizeof(bbs_t)-1L,SEEK_CUR); }
+				bbs.created=time(NULL);
+				fwrite(&bbs,sizeof(bbs_t),1,stream);
+				if(notify_user && notify_user!=user_number) {
+					sprintf(str,"\1n\1hSBL: \1y%s \1madded \1c%s\1m "
+						"to the BBS List\r\n",user_name,bbs.name);
+					putsmsg(notify_user,str); }
+				break;
+			case 'R':       /* Remove an entry */
+				cls();
+				if((uint)user_level<remove_ml) {
+					bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+					pause();
 					break; }
-				fseek(stream,(long)sizeof(bbs_t)-1L,SEEK_CUR); }
-			bbs.created=time(NULL);
-			fwrite(&bbs,sizeof(bbs_t),1,stream);
-			if(notify_user && notify_user!=user_number) {
-				sprintf(str,"\1n\1hSBL: \1y%s \1madded \1c%s\1m "
-					"to the BBS List\r\n",user_name,bbs.name);
-				putsmsg(notify_user,str); }
-			break;
-		case 'R':       /* Remove an entry */
-			cls();
-			if((uint)user_level<remove_ml) {
-				bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+				bprintf("\1y\1hRemove which system: ");
+				if(!getstr(name,25,K_LINE|K_UPPER))
+					break;
+				bputs("\1n\1h\r\nSearching...");
+				fseek(stream,0L,SEEK_SET);
+				found=0;
+				dots(0);
+				while(!feof(stream) && !aborted) {
+					dots(1);
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
+						break;
+					if(!stricmp(bbs.name,name) || partname(bbs.name,name)) {
+						found=1;
+						for(i=0;i<bbs.total_sysops && i<MAX_SYSOPS;i++)
+							if(!stricmp(bbs.sysop[i],user_name))
+								break;
+						if(SYSOP || !stricmp(bbs.user,user_name)
+							|| i<bbs.total_sysops) {
+							fseek(stream,-(long)(sizeof(bbs_t)),SEEK_CUR);
+							strcpy(tmp,bbs.name);
+							bbs.name[0]=0;
+							bbs.updated=time(NULL);
+							fwrite(&bbs,sizeof(bbs_t),1,stream);
+							bprintf("\r\n\r\n\1m%s\1c deleted."
+								,tmp);
+							if(notify_user && notify_user!=user_number) {
+								sprintf(str,"\1n\1hSBL: \1y%s \1mremoved \1c%s\1m "
+									"from the BBS List\r\n",user_name,tmp);
+								putsmsg(notify_user,str); } }
+						else
+							bprintf("\r\n\r\n\1rYou did not create \1m%s\1n."
+								,bbs.name);
+						break; } }
+				if(!found)
+					bprintf("\r\n\r\n\1m%s\1c not found.",name);
+				CRLF;
+				CRLF;
 				pause();
-                break; }
-			bprintf("\1y\1hRemove which system: ");
-			if(!getstr(name,25,K_LINE|K_UPPER))
 				break;
-			bputs("\1n\1h\r\nSearching...");
-			fseek(stream,0L,SEEK_SET);
-			found=0;
-			dots(0);
-			while(!feof(stream) && !aborted) {
-				dots(1);
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
+			case 'T':
+				sbl_pause=!sbl_pause;
+				break;
+			case 'V':       /* Verify an entry */
+				cls();
+				if((uint)user_level<verify_ml) {
+					bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+					pause();
+					break; }
+				bprintf("\1y\1hVerify which system: ");
+				if(!getstr(name,25,K_LINE|K_UPPER))
 					break;
-				if(!stricmp(bbs.name,name) || partname(bbs.name,name)) {
-					found=1;
-					for(i=0;i<bbs.total_sysops && i<MAX_SYSOPS;i++)
-						if(!stricmp(bbs.sysop[i],user_name))
-							break;
-					if(SYSOP || !stricmp(bbs.user,user_name)
-						|| i<bbs.total_sysops) {
+				bputs("\1n\1h\r\nSearching...");
+				fseek(stream,0L,SEEK_SET);
+				found=0;
+				dots(0);
+				while(!feof(stream) && !aborted) {
+					dots(1);
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
+						break;
+					if(!stricmp(bbs.name,name) || partname(bbs.name,name)) {
+						found=1;
+						bbs.verified=time(NULL);
+						sprintf(bbs.userverified,"%.25s",user_name);
 						fseek(stream,-(long)(sizeof(bbs_t)),SEEK_CUR);
-						strcpy(tmp,bbs.name);
-						bbs.name[0]=0;
-						bbs.updated=time(NULL);
 						fwrite(&bbs,sizeof(bbs_t),1,stream);
-						bprintf("\r\n\r\n\1m%s\1c deleted."
-							,tmp);
-						if(notify_user && notify_user!=user_number) {
-							sprintf(str,"\1n\1hSBL: \1y%s \1mremoved \1c%s\1m "
-								"from the BBS List\r\n",user_name,tmp);
-							putsmsg(notify_user,str); } }
-					else
-						bprintf("\r\n\r\n\1rYou did not create \1m%s\1n."
+						bprintf("\r\n\r\n\1m%s\1c verified. \1r\1h\1iThank you!"
 							,bbs.name);
-					break; } }
-			if(!found)
-				bprintf("\r\n\r\n\1m%s\1c not found.",name);
-			CRLF;
-			CRLF;
-			pause();
-            break;
-		case 'T':
-			sbl_pause=!sbl_pause;
-			break;
-		case 'V':       /* Verify an entry */
-			cls();
-			if((uint)user_level<verify_ml) {
-				bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+						sprintf(str,"\1n\1hSBL: \1y%s \1mverified \1c%s\1m "
+							"in the BBS List\r\n",user_name,bbs.name);
+						if(notify_user && notify_user!=user_number)
+							putsmsg(notify_user,str);
+						if(stricmp(bbs.user,user_name)) {
+							i=usernumber(bbs.user);
+							if(i && i!=(int)user_number) putsmsg(i,str); }
+						break; } }
+				if(!found)
+					bprintf("\r\n\r\n\1m%s\1c not found.",name);
+				CRLF;
+				CRLF;
 				pause();
-                break; }
-			bprintf("\1y\1hVerify which system: ");
-			if(!getstr(name,25,K_LINE|K_UPPER))
 				break;
-			bputs("\1n\1h\r\nSearching...");
-			fseek(stream,0L,SEEK_SET);
-			found=0;
-			dots(0);
-			while(!feof(stream) && !aborted) {
-				dots(1);
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
+			case 'U':       /* Update an entry */
+				cls();
+				if((uint)user_level<update_ml) {
+					bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+					pause();
+					break; }
+				bprintf("\1y\1hUpdate which system: ");
+				if(!getstr(name,25,K_LINE|K_UPPER))
 					break;
-				if(!stricmp(bbs.name,name) || partname(bbs.name,name)) {
-					found=1;
-					bbs.verified=time(NULL);
-					sprintf(bbs.userverified,"%.25s",user_name);
-					fseek(stream,-(long)(sizeof(bbs_t)),SEEK_CUR);
-					fwrite(&bbs,sizeof(bbs_t),1,stream);
-					bprintf("\r\n\r\n\1m%s\1c verified. \1r\1h\1iThank you!"
-						,bbs.name);
-					sprintf(str,"\1n\1hSBL: \1y%s \1mverified \1c%s\1m "
-						"in the BBS List\r\n",user_name,bbs.name);
-					if(notify_user && notify_user!=user_number)
-						putsmsg(notify_user,str);
-					if(stricmp(bbs.user,user_name)) {
-						i=usernumber(bbs.user);
-						if(i && i!=(int)user_number) putsmsg(i,str); }
-					break; } }
-			if(!found)
-				bprintf("\r\n\r\n\1m%s\1c not found.",name);
-			CRLF;
-			CRLF;
-			pause();
-            break;
-		case 'U':       /* Update an entry */
-			cls();
-			if((uint)user_level<update_ml) {
-				bprintf("\1h\1rYou have insufficient access.\r\n\r\n");
+				bputs("\1n\1h\r\nSearching...");
+				fseek(stream,0L,SEEK_SET);
+				found=0;
+				dots(0);
+				while(!feof(stream) && !aborted) {
+					dots(1);
+					l=ftell(stream);
+					if(!fread(&bbs,sizeof(bbs_t),1,stream))
+						break;
+					if(!stricmp(bbs.name,name) || partname(bbs.name,name)) {
+						found=1;
+						break; } }
+				if(found) {
+					for(i=0;i<bbs.total_sysops && i<MAX_SYSOPS;i++)
+						if(!bbs.sysop[i][0] || !stricmp(bbs.sysop[i],user_name))
+							break;
+					if(SYSOP || !stricmp(bbs.user,user_name)
+						|| i<bbs.total_sysops) {
+						CRLF;
+						CRLF;
+						if(get_bbs_info(&bbs)) {
+							bbs.misc&=~FROM_SMB;
+							bbs.updated=time(NULL);
+							sprintf(bbs.userupdated,"%.25s",user_name);
+							fseek(stream,l,SEEK_SET);
+							fwrite(&bbs,sizeof(bbs_t),1,stream);
+							bprintf("\r\n\1h\1m%s\1c updated.",bbs.name);
+							if(notify_user && notify_user!=user_number) {
+								sprintf(str,"\1n\1hSBL: \1y%s \1mupdated \1c%s\1m "
+									"in the BBS List\r\n",user_name,bbs.name);
+								putsmsg(notify_user,str); } } }
+					else
+						bprintf("\r\n\r\n\1h\1rYou did not create \1m%s\1n."
+						   ,bbs.name); }
+				else
+					bprintf("\r\n\r\n\1h\1m%s\1c not found.",name);
+				CRLF;
+				CRLF;
 				pause();
-                break; }
-			bprintf("\1y\1hUpdate which system: ");
-			if(!getstr(name,25,K_LINE|K_UPPER))
 				break;
-			bputs("\1n\1h\r\nSearching...");
-			fseek(stream,0L,SEEK_SET);
-			found=0;
-			dots(0);
-			while(!feof(stream) && !aborted) {
-				dots(1);
-				l=ftell(stream);
-				if(!fread(&bbs,sizeof(bbs_t),1,stream))
-					break;
-				if(!stricmp(bbs.name,name) || partname(bbs.name,name)) {
-					found=1;
-					break; } }
-			if(found) {
-				for(i=0;i<bbs.total_sysops && i<MAX_SYSOPS;i++)
-					if(!bbs.sysop[i][0] || !stricmp(bbs.sysop[i],user_name))
-						break;
-				if(SYSOP || !stricmp(bbs.user,user_name)
-					|| i<bbs.total_sysops) {
-					CRLF;
-					CRLF;
-					if(get_bbs_info(&bbs)) {
-						bbs.misc&=~FROM_SMB;
-						bbs.updated=time(NULL);
-						sprintf(bbs.userupdated,"%.25s",user_name);
-						fseek(stream,l,SEEK_SET);
-						fwrite(&bbs,sizeof(bbs_t),1,stream);
-						bprintf("\r\n\1h\1m%s\1c updated.",bbs.name);
-						if(notify_user && notify_user!=user_number) {
-							sprintf(str,"\1n\1hSBL: \1y%s \1mupdated \1c%s\1m "
-								"in the BBS List\r\n",user_name,bbs.name);
-							putsmsg(notify_user,str); } } }
-                else
-					bprintf("\r\n\r\n\1h\1rYou did not create \1m%s\1n."
-					   ,bbs.name); }
-			else
-				bprintf("\r\n\r\n\1h\1m%s\1c not found.",name);
-			CRLF;
-			CRLF;
-			pause();
-            break;
-		case 'Q':
-			return; } }
+			case 'Q':
+				return(0); } }
+	return(-1);
 }
 
 /* End of SBL.C */
-- 
GitLab