diff -uNr src/bbd.c /usr/local/bbdmz/bb/src/bbd.c
--- src/bbd.c	Tue Jan 30 06:22:20 2001
+++ /usr/local/bbdmz/bb/src/bbd.c	Sun Feb 25 00:29:09 2001
@@ -17,6 +17,8 @@
  *
  *	1.	Input for the display monitor
  *	2.	Request to send a page to the admin
+ *
+ * 02/23/2001 - Patch to allow logging to Mysql database
  */
 
 
@@ -31,6 +33,9 @@
 #endif
 #include <utime.h>	/* SMM NEW */
 #include <dirent.h>
+#ifdef USESQL
+#include <mysql.h>
+#endif
 
 char bbprog[] = "bbd";
 
@@ -100,6 +105,14 @@
 jmp_buf env;
 #endif
 
+#ifdef USESQL		/* begin sql logging vars */
+char *db_user,
+     *db_passwd,
+     *db_host,
+     *db_database,
+     *db_table;     
+#endif			/* end sql logging vars */
+
 void do_bb();
 void bblog();
 
@@ -610,7 +623,7 @@
 
 int main(argc, argv)
 int argc;
-char *argv[];
+char *argv[]; 
 {
  	int status, sockfd, newsockfd, child, port, len, ttllen;
         struct sockaddr_in serv_addr, cli_addr;
@@ -853,6 +866,34 @@
 	if( periodmins == NULL )
 		periodmins = "minutes";
 
+#ifdef USESQL
+	db_user=(char *)getenv("DBUSER");
+	if (!db_user) {
+		fprintf(stderr,"%s bbd DBUSER is not set in the environment! Make sure you're running bbd from runbb.sh!\n",gettimestr());
+		exit(1);
+	}
+	db_passwd=(char *)getenv("DBPASSWD");
+	if (!db_passwd) {
+		fprintf(stderr,"%s bbd DBPASSWD is not set in the environment! Make sure you're running bbd from runbb.sh!\n",gettimestr());
+		exit(1);
+	}
+	db_host=(char *)getenv("DBHOST");
+	if (!db_host) {
+		fprintf(stderr,"%s bbd DBHOST is not set in the environment! Make sure you're running bbd from runbb.sh!\n",gettimestr());
+		exit(1);
+	}
+	db_database=(char *)getenv("DBDATABASE");
+	if (!db_database) {
+		fprintf(stderr,"%s bbd DBDATABASE is not set in the environment! Make sure you're running bbd from runbb.sh!\n",gettimestr());
+		exit(1);
+	}
+	db_table=(char *)getenv("DBTABLE");
+	if (!db_table) {
+		fprintf(stderr,"%s bbd DBTABLE is not set in the environment! Make sure you're running bbd from runbb.sh!\n",gettimestr());
+		exit(1);
+	}
+#endif			/* end sql */
+
 	port = PORT;
 
 #if DEBUG
@@ -1017,7 +1058,11 @@
 				/* The connection hung but partial data came in */
 				/* Continue on but skip over recv() call */
 				dorecv = 0;
+#ifdef SIGSETJMP		/* Added this because trying to understand code with not proper {} matchine was difficult :/ dmz-02/2000 */
+			}
+#else
 			}
+#endif
 			while ( dorecv && ((len = recv(newsockfd, linebuf, MAXLINE - 1, 0)) > 0) && (ttllen != -1)) {
 				alarm(5);	/* SMM */
 				linebuf[len]='\0';		/* FOR ANDREY */
@@ -1753,6 +1798,7 @@
 		if ( savelog && savestatuslog && !strcmp(savestatuslog,"TRUE") ) {
 			save_histlog(filename,timenowbuf,msg,dur,sentby);
 		}
+		save_sqllog(filename,timenowbuf,msg,newcolor);
 	}
 	else bbd_die("BB LOGGING DIRECTORY UNDEFINED\n");
 
@@ -1760,6 +1806,93 @@
 	debug("DONE IN bblog()\n");
 #endif
 }
+
+#ifdef USESQL		/* begin sql */
+/* * 
+   * LOG TO A SQL DATABASE
+   * CURRENTLY ONLY MYSQL IS SUPPORTED
+   * NEXT VERSION WILL BE A POOL OF PERSISTANT CONNECTIONS
+   * v0.001 dmz@dmzs.com 02/23/2001
+ **
+ * 0 - Error
+ * 1 - Successful 
+ */
+int save_sqllog(logdirname,timenowbuf,logdata,status)
+char *logdirname;
+char *timenowbuf;
+char *logdata;
+char *status;
+{
+     MYSQL mysql, *db_sock;	
+     char qbuf[MAXLINE];
+     char *fname,*svc,workfname[MAXLINE],*workptr;
+
+#if SQLDEBUG
+	debug("CONNECTING TO DATABASE...\n");
+#endif
+	if (!(db_sock = mysql_connect(&mysql,db_host,db_user,db_passwd))) {
+		fprintf(stderr,"%s ERROR connecting to database host: %s\n",gettimestr(),db_host);
+		return(0);
+	}
+	if (mysql_select_db(db_sock,db_database) < 0)
+	{
+		mysql_close(db_sock);
+		fprintf(stderr,"%s ERROR connecting to database: %s\n",gettimestr(),db_database);
+		return(0);
+	}
+#if SQLDEBUG
+	debug("DATABASE CONNECTED OK...\n");
+#endif
+
+	fname = (char *) strrchr(logdirname,'/');
+        if( fname ) {                                
+                fname++;
+                if( !*fname ) {
+                        fprintf(stderr,"%s bbd Invalid log file directory name: %s\n",gettimestr(),logdirname);
+                        fflush(stderr);
+                        return(0);
+                }
+                strcpy(workfname,fname);
+        }
+        else {
+                strcpy(workfname,logdirname);
+        }
+        svc = (char *) strchr(workfname,'.');
+        if( !svc ) {
+                fprintf(stderr,"%s bbd Invalid log file directory name: %s\n",gettimestr(),logdirname);
+                fflush(stderr);
+                return(0);
+        }
+        *svc = '\0';
+        svc++;
+        if( !*svc ) {
+                fprintf(stderr,"%s bbd Invalid log file directory name: %s\n",gettimestr(),logdirname);
+                fflush(stderr);
+                return(0);
+        }
+
+        while( (workptr=(char *)strchr(workfname,',')) != NULL ) {
+                *workptr = '.';
+                workptr++;
+        }
+
+	sprintf(qbuf,"INSERT INTO %s (hostname,service,status,log) values ('%s','%s','%s','%s')",db_table,workfname,svc,status,logdata);
+
+	if (mysql_query(db_sock,qbuf) != 0)
+	{
+		mysql_close(db_sock);
+                fprintf(stderr,"%s bbd Invalid SQL Query: %s\n",gettimestr(),qbuf);
+                fflush(stderr);
+                return(0);
+	}
+
+	mysql_close(db_sock);
+#if SQLDEBUG
+	debug("DONE IN sqllog()\n");
+#endif
+	return(1);
+}
+#endif			/* end sql */
 
 /*
  * PUT AN ERROR INTO THE LOGFILE AND stderr AND DIE
