diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp index efbb1542b8ee209a8b1c7318c8ebe3953f2364cd..a6c709b61b65122c73be3de2bf4c1efa5c0d6588 100644 --- a/src/sbbs3/js_bbs.cpp +++ b/src/sbbs3/js_bbs.cpp @@ -1549,6 +1549,14 @@ js_replace_text(JSContext *cx, uintN argc, jsval *arglist) if(JSVAL_IS_NUMBER(argv[0])) { if(!JS_ValueToECMAUint32(cx,argv[0],&i)) return JS_FALSE; + } else { + JSString* js_str = JS_ValueToString(cx, argv[0]); + if(js_str == NULL) + return JS_FALSE; + char* id = nullptr; + JSSTRING_TO_MSTRING(cx, js_str, id, NULL); + i = sbbs->get_text_num(id) + 1; + free(id); } if(i < 1 || i > TOTAL_TEXT) return(JS_TRUE); @@ -1584,11 +1592,22 @@ js_revert_text(JSContext *cx, uintN argc, jsval *arglist) if((sbbs=js_GetPrivate(cx, JS_THIS_OBJECT(cx, arglist)))==NULL) return(JS_FALSE); - if(argc && JSVAL_IS_NUMBER(argv[0])) { + if(!js_argc(cx, argc, 1)) + return(JS_FALSE); + + if(JSVAL_IS_NUMBER(argv[0])) { if(!JS_ValueToECMAUint32(cx,argv[0],&i)) return JS_FALSE; + i--; + } else { + JSString* js_str = JS_ValueToString(cx, argv[0]); + if(js_str == NULL) + return JS_FALSE; + char* id = nullptr; + JSSTRING_TO_MSTRING(cx, js_str, id, NULL); + i = sbbs->get_text_num(id); + free(id); } - i--; if(i>=TOTAL_TEXT) { for(i=0;i<TOTAL_TEXT;i++) { @@ -1624,7 +1643,7 @@ js_load_text(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist, JSVAL_VOID); - if(!js_argc(cx, argc, 1)) + if(!js_argc(cx, argc, 1)) return(JS_FALSE); if((js_str=JS_ValueToString(cx, argv[0]))==NULL) { @@ -4615,13 +4634,13 @@ static jsSyncMethodSpec js_bbs_functions[] = { ) ,310 }, - {"replace_text", js_replace_text, 2, JSTYPE_BOOLEAN, JSDOCSTR("index_number, text") + {"replace_text", js_replace_text, 2, JSTYPE_BOOLEAN, JSDOCSTR("<i>number</i> index or <i>string</i> id, text") ,JSDOCSTR("Replace specified <tt>text.dat</tt> or <tt>text.ini</tt> string in memory") ,310 }, - {"revert_text", js_revert_text, 1, JSTYPE_BOOLEAN, JSDOCSTR("[<i>number</i> index=<i>all</i>]") + {"revert_text", js_revert_text, 1, JSTYPE_BOOLEAN, JSDOCSTR("[<i>number</i> index or <i>string</i> id]") ,JSDOCSTR("Revert specified text string to original <tt>text.dat</tt> or <tt>text.ini</tt> string; " - "if <i>index</i> unspecified, reverts all text lines") + "if <i>index</i> and <i>id</i> are unspecified, reverts all text lines") ,310 }, {"load_text", js_load_text, 1, JSTYPE_BOOLEAN, JSDOCSTR("base_filename")