From c9e2c1fbbc5c573e4ad6b08cafdde036e2b717fb Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on ChromeOS)" <rob@synchro.net>
Date: Sat, 11 Mar 2023 14:08:12 -0800
Subject: [PATCH] bbs.logoff() now returns a boolean: false if log-off was
 denied

Previously, there was no good way for the caller to determine if the\
user opted (when prompted) to actually log-off or not.
---
 src/sbbs3/js_bbs.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp
index 0d87a18b26..55d72acd9b 100644
--- a/src/sbbs3/js_bbs.cpp
+++ b/src/sbbs3/js_bbs.cpp
@@ -1940,7 +1940,7 @@ js_logoff(JSContext *cx, uintN argc, jsval *arglist)
 	if((sbbs=js_GetPrivate(cx, JS_THIS_OBJECT(cx, arglist)))==NULL)
 		return(JS_FALSE);
 
-	JS_SET_RVAL(cx, arglist, JSVAL_VOID);
+	JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
 
 	if(argc)
 		JS_ValueToBoolean(cx,argv[0],&prompt);
@@ -1953,6 +1953,7 @@ js_logoff(JSContext *cx, uintN argc, jsval *arglist)
 		sbbs->menu("logoff");
 		sbbs->sync();
 		sbbs->hangup();
+		JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
 	}
 	JS_RESUMEREQUEST(cx, rc);
 
@@ -4406,8 +4407,8 @@ static jsSyncMethodSpec js_bbs_functions[] = {
 	,JSDOCSTR("interactive logon procedure")
 	,310
 	},
-	{"logoff",			js_logoff,			1,	JSTYPE_VOID,	JSDOCSTR("[prompt=<i>true</i>]")
-	,JSDOCSTR("interactive logoff procedure, pass <i>false</i> for <i>prompt</i> argument to avoid yes/no prompt")
+	{"logoff",			js_logoff,			1,	JSTYPE_BOOLEAN,	JSDOCSTR("[prompt=<i>true</i>]")
+	,JSDOCSTR("interactive logoff procedure, pass <i>false</i> for <i>prompt</i> argument to avoid yes/no prompt, returns <i>false</i> if denied logoff")
 	,315
 	},
 	{"logout",			js_logout,			0,	JSTYPE_VOID,	JSDOCSTR("")
-- 
GitLab