diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c index a1231050ba1ffd3079783c122d7aa7123666a46e..3afae543e53d54145a7d5ac25f6a02adcdc7c5ba 100644 --- a/src/sbbs3/js_system.c +++ b/src/sbbs3/js_system.c @@ -913,6 +913,7 @@ js_matchuserdata(JSContext *cx, uintN argc, jsval *arglist) int32 usernumber=0; int len; jsrefcount rc; + BOOL match_del=FALSE; BOOL match_next=FALSE; int argnum=2; @@ -936,6 +937,8 @@ js_matchuserdata(JSContext *cx, uintN argc, jsval *arglist) return(JS_TRUE); } + if(JSVAL_IS_BOOLEAN(argv[argnum])) + JS_ValueToBoolean(cx, argv[argnum], &match_del); if(JSVAL_IS_NUMBER(argv[argnum])) JS_ValueToInt32(cx, argv[argnum++], &usernumber); if(JSVAL_IS_BOOLEAN(argv[argnum])) @@ -948,7 +951,7 @@ js_matchuserdata(JSContext *cx, uintN argc, jsval *arglist) } rc=JS_SUSPENDREQUEST(cx); - JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(finduserstr(sys->cfg, usernumber, field, p, FALSE, match_next, NULL, NULL))); + JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(finduserstr(sys->cfg, usernumber, field, p, match_del, match_next, NULL, NULL))); JS_RESUMEREQUEST(cx, rc); return(JS_TRUE); } @@ -2140,8 +2143,9 @@ static jsSyncMethodSpec js_system_functions[] = { " or 0 if not found, matches well-known sysop aliases by default") ,310 }, - {"matchuserdata", js_matchuserdata, 2, JSTYPE_NUMBER, JSDOCSTR("field, data [,usernumber, match_next=<tt>false</tt>]") + {"matchuserdata", js_matchuserdata, 2, JSTYPE_NUMBER, JSDOCSTR("field, data [,match_del=<tt>false</tt>] [,usernumber, match_next=<tt>false</tt>]") ,JSDOCSTR("search user database for data in a specific field (see <tt>U_*</tt> in <tt>sbbsdefs.js</tt>), " + "if <i>match_del</i> is <tt>true</tt>, deleted user records are searched, " "returns first matching user record number, optional <i>usernumber</i> specifies user record to skip, " "or record at which to begin searching if optional <i>match_next</i> is <tt>true</tt>") ,310 @@ -2444,7 +2448,7 @@ static JSBool js_node_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict, node.extaux=val; break; } - putnodedat(sys->cfg,node_num,&node, /* closeit: */FALSE, sys->nodefile); + putnodedat(sys->cfg,node_num,&node, /* closeit: */FALSE, sys->nodefile); // TODO: publish via MQTT JS_RESUMEREQUEST(cx, rc); return(JS_TRUE);