From 30a2ed07bb18e5dd44c424738c785dfe7fee1add Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 26 Nov 2003 12:28:11 +0000
Subject: [PATCH] Changes required for proper socket library version display
 (system.socket_lib) in JSexec-win32.

---
 src/sbbs3/atcodes.cpp |  9 +++++++-
 src/sbbs3/ftpsrvr.c   |  5 +++-
 src/sbbs3/js_system.c |  4 ++--
 src/sbbs3/jsexec.c    |  6 +++--
 src/sbbs3/mailsrvr.c  |  4 +++-
 src/sbbs3/main.cpp    | 54 ++++++++++++++++++++++---------------------
 src/sbbs3/sbbs.h      |  6 +++--
 src/sbbs3/services.c  |  4 +++-
 src/sbbs3/ver.cpp     |  9 +++++---
 src/sbbs3/websrvr.c   |  4 +++-
 10 files changed, 65 insertions(+), 40 deletions(-)

diff --git a/src/sbbs3/atcodes.cpp b/src/sbbs3/atcodes.cpp
index d234ebbdd0..6a90afedfe 100644
--- a/src/sbbs3/atcodes.cpp
+++ b/src/sbbs3/atcodes.cpp
@@ -38,6 +38,13 @@
 #include "sbbs.h"
 #include "cmdshell.h"
 
+#if defined(_WINSOCKAPI_)
+	extern WSADATA WSAData;
+	#define SOCKLIB_DESC WSAData.szDescription
+#else
+	#define	SOCKLIB_DESC NULL
+#endif
+
 /****************************************************************************/
 /* Returns 0 if invalid @ code. Returns length of @ code if valid.          */
 /****************************************************************************/
@@ -157,7 +164,7 @@ char* sbbs_t::atcode(char* sp, char* str)
 	}
 
 	if(!strcmp(sp,"SOCKET_LIB")) 
-		return(socklib_version(str));
+		return(socklib_version(str,SOCKLIB_DESC));
 
 	if(!strcmp(sp,"MSG_LIB")) {
 		sprintf(str,"SMBLIB %s",smb_lib_ver());
diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 1120531ccc..4543bac64c 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -153,6 +153,8 @@ static int lprintf(int level, char *fmt, ...)
 #ifdef _WINSOCKAPI_
 
 static WSADATA WSAData;
+#define SOCKLIB_DESC WSAData.szDescription
+
 static BOOL WSAInitialized=FALSE;
 
 static BOOL winsock_startup(void)
@@ -172,6 +174,7 @@ static BOOL winsock_startup(void)
 #else /* No WINSOCK */
 
 #define winsock_startup()	(TRUE)
+#define SOCKLIB_DESC		NULL
 
 #endif
 
@@ -491,7 +494,7 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, JSObject** ftp)
 			break;
 
 		lprintf(LOG_DEBUG,"%04d JavaScript: Initializing System object",sock);
-		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name)==NULL) 
+		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL) 
 			break;
 
 		if((*ftp=JS_DefineObject(js_cx, js_glob, "ftp", NULL
diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c
index 2825519a72..dd61617c5f 100644
--- a/src/sbbs3/js_system.c
+++ b/src/sbbs3/js_system.c
@@ -1587,7 +1587,7 @@ static JSClass js_node_class = {
 };
 
 JSObject* DLLCALL js_CreateSystemObject(JSContext* cx, JSObject* parent
-										,scfg_t* cfg, time_t uptime, char* host_name)
+										,scfg_t* cfg, time_t uptime, char* host_name, char* socklib_desc)
 {
 	char		str[256];
 	uint		i;
@@ -1671,7 +1671,7 @@ JSObject* DLLCALL js_CreateSystemObject(JSContext* cx, JSObject* parent
 	if(!JS_SetProperty(cx, sysobj, "platform", &val))
 		return(NULL);
 
-	if((js_str=JS_NewStringCopyZ(cx, socklib_version(str)))==NULL)
+	if((js_str=JS_NewStringCopyZ(cx, socklib_version(str, socklib_desc)))==NULL)
 		return(NULL);
 	val = STRING_TO_JSVAL(js_str);
 	if(!JS_SetProperty(cx, sysobj, "socket_lib", &val))
diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index f32c052d2b..69ed19df9a 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -138,6 +138,7 @@ int lprintf(int level, char *fmt, ...)
 #if defined(_WINSOCKAPI_)
 
 WSADATA WSAData;
+#define SOCKLIB_DESC WSAData.szDescription
 static BOOL WSAInitialized=FALSE;
 
 static BOOL winsock_startup(void)
@@ -156,7 +157,8 @@ static BOOL winsock_startup(void)
 
 #else /* No WINSOCK */
 
-#define winsock_startup()	(TRUE)	
+#define winsock_startup()	(TRUE)
+#define SOCKLIB_DESC NULL
 
 #endif
 
@@ -502,7 +504,7 @@ static BOOL js_init(char** environ)
 		return(FALSE);
 
 	/* System Object */
-	if(js_CreateSystemObject(js_cx, js_glob, &scfg, time(NULL), host_name)==NULL)
+	if(js_CreateSystemObject(js_cx, js_glob, &scfg, time(NULL), host_name, SOCKLIB_DESC)==NULL)
 		return(FALSE);
 
 	/* Socket Class */
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index b984567adc..1a46ae7bac 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -125,6 +125,7 @@ static int lprintf(int level, char *fmt, ...)
 #ifdef _WINSOCKAPI_
 
 static WSADATA WSAData;
+#define SOCKLIB_DESC WSAData.szDescription
 static BOOL WSAInitialized=FALSE;
 
 static BOOL winsock_startup(void)
@@ -144,6 +145,7 @@ static BOOL winsock_startup(void)
 #else /* No WINSOCK */
 
 #define winsock_startup()	(TRUE)
+#define SOCKLIB_DESC NULL
 
 #endif
 
@@ -1437,7 +1439,7 @@ js_mailproc(SOCKET sock, client_t* client, user_t* user
 			break;
 
 		/* System Object */
-		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name)==NULL)
+		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL)
 			break;
 
 		/* Socket Class */
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index dfad93b339..86a79dddb0 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -233,6 +233,33 @@ u_long resolve_ip(char *addr)
 
 } /* extern "C" */
 
+#ifdef _WINSOCKAPI_
+
+WSADATA WSAData;
+#define SOCKLIB_DESC WSAData.szDescription
+static BOOL WSAInitialized=FALSE;
+
+static BOOL winsock_startup(void)
+{
+	int		status;             /* Status Code */
+
+    if((status = WSAStartup(MAKEWORD(1,1), &WSAData))==0) {
+		lprintf(LOG_INFO,"%s %s",WSAData.szDescription, WSAData.szSystemStatus);
+		WSAInitialized=TRUE;
+		return(TRUE);
+	}
+
+    lprintf(LOG_ERR,"!WinSock startup ERROR %d", status);
+	return(FALSE);
+}
+
+#else /* No WINSOCK */
+
+#define winsock_startup()	(TRUE)
+#define SOCKLIB_DESC NULL
+
+#endif
+
 #ifdef JAVASCRIPT
 
 static js_server_props_t js_server_props;
@@ -863,7 +890,7 @@ bool sbbs_t::js_init()
 #endif
 
 		/* System Object */
-		if(js_CreateSystemObject(js_cx, js_glob, &cfg, uptime, startup->host_name)==NULL)
+		if(js_CreateSystemObject(js_cx, js_glob, &cfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL)
 			break;
 
 		/* Internal JS Object */
@@ -960,31 +987,6 @@ void sbbs_t::js_create_user_objects(void)
 
 #endif	/* JAVASCRIPT */
 
-#ifdef _WINSOCKAPI_
-
-WSADATA WSAData;
-static BOOL WSAInitialized=FALSE;
-
-static BOOL winsock_startup(void)
-{
-	int		status;             /* Status Code */
-
-    if((status = WSAStartup(MAKEWORD(1,1), &WSAData))==0) {
-		lprintf(LOG_INFO,"%s %s",WSAData.szDescription, WSAData.szSystemStatus);
-		WSAInitialized=TRUE;
-		return(TRUE);
-	}
-
-    lprintf(LOG_ERR,"!WinSock startup ERROR %d", status);
-	return(FALSE);
-}
-
-#else /* No WINSOCK */
-
-#define winsock_startup()	(TRUE)	
-
-#endif
-
 static BYTE* telnet_interpret(sbbs_t* sbbs, BYTE* inbuf, int inlen,
   									BYTE* outbuf, int& outlen)
 {
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 80b5b5f666..0d3c2735a2 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -931,7 +931,9 @@ extern "C" {
 
 	/* js_system.c */
 	DLLEXPORT JSObject* DLLCALL js_CreateSystemObject(JSContext* cx, JSObject* parent
-													,scfg_t* cfg, time_t uptime, char* host_name);
+													,scfg_t* cfg, time_t uptime
+													,char* host_name
+													,char* socklib_desc);
 
 	/* js_client.c */
 	DLLEXPORT JSObject* DLLCALL js_CreateClientObject(JSContext* cx, JSObject* parent
@@ -1010,7 +1012,7 @@ BOOL 	md(char *path);
 	char *	readtext(long *line, FILE *stream);
 
 	/* ver.cpp */
-	char*	socklib_version(char* str);
+	char*	socklib_version(char* str, char* winsock_ver);
 	
 	/* sortdir.cpp */
 	int		fnamecmp_a(char **str1, char **str2);	 /* for use with resort() */
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index d5e0f1530a..209e78b34b 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -160,6 +160,7 @@ static int lprintf(int level, char *fmt, ...)
 #ifdef _WINSOCKAPI_
 
 static WSADATA WSAData;
+#define SOCKLIB_DESC WSAData.szDescription
 static BOOL WSAInitialized=FALSE;
 
 static BOOL winsock_startup(void)
@@ -179,6 +180,7 @@ static BOOL winsock_startup(void)
 #else /* No WINSOCK */
 
 #define winsock_startup()	(TRUE)
+#define SOCKLIB_DESC NULL
 
 #endif
 
@@ -811,7 +813,7 @@ js_initcx(JSRuntime* js_runtime, SOCKET sock, service_client_t* service_client,
 		if(!js_CreateUserObjects(js_cx, js_glob, &scfg, NULL, NULL, NULL)) 
 			break;
 
-		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name)==NULL) 
+		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL) 
 			break;
 #if 0		
 		char		ver[256];
diff --git a/src/sbbs3/ver.cpp b/src/sbbs3/ver.cpp
index bc55ffeec2..5e5e396e3e 100644
--- a/src/sbbs3/ver.cpp
+++ b/src/sbbs3/ver.cpp
@@ -41,17 +41,20 @@ extern "C" const char* beta_version = " alpha"; /* Space if non-beta, " beta" ot
 
 #if defined(_WINSOCKAPI_)
 	extern WSADATA WSAData;
+	#define SOCKLIB_DESC WSAData.szDescription
+#else
+	#define	SOCKLIB_DESC NULL
 #endif
 
 #if defined(__unix__)
 	#include <sys/utsname.h>	/* uname() */
 #endif
 
-char* socklib_version(char* str)
+char* socklib_version(char* str, char* winsock_ver)
 {
 #if defined(_WINSOCKAPI_)
 
-	strcpy(str,WSAData.szDescription);
+	strcpy(str,winsock_ver);
 
 #elif defined(__GLIBC__)
 
@@ -101,7 +104,7 @@ void sbbs_t::ver()
 	}
 #endif
 
-	center(socklib_version(str));
+	center(socklib_version(str,SOCKLIB_DESC));
 	CRLF;
 
 	center(os_version(str));
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index f9edadc294..0f95babd7c 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -287,6 +287,7 @@ static int lprintf(int level, char *fmt, ...)
 #ifdef _WINSOCKAPI_
 
 static WSADATA WSAData;
+#define SOCKLIB_DESC WSAData.szDescription
 static BOOL WSAInitialized=FALSE;
 
 static BOOL winsock_startup(void)
@@ -306,6 +307,7 @@ static BOOL winsock_startup(void)
 #else /* No WINSOCK */
 
 #define winsock_startup()	(TRUE)
+#define SOCKLIB_DESC NULL
 
 #endif
 
@@ -2090,7 +2092,7 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, http_session_t *sess
 			break;
 
 		lprintf(LOG_INFO,"%04d JavaScript: Initializing System object",sock);
-		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name)==NULL) 
+		if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL) 
 			break;
 
 #if 0
-- 
GitLab