Skip to content
Snippets Groups Projects
Commit 5e46cb0f authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Additional/optional 'mode' argument to global prompt() method

Defaults to K_EDIT.
parent 0d4a162c
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #1052 passed
...@@ -1109,11 +1109,12 @@ static JSBool ...@@ -1109,11 +1109,12 @@ static JSBool
js_prompt(JSContext *cx, uintN argc, jsval *arglist) js_prompt(JSContext *cx, uintN argc, jsval *arglist)
{ {
jsval *argv=JS_ARGV(cx, arglist); jsval *argv=JS_ARGV(cx, arglist);
char instr[81]; char instr[128] = "";
JSString * str; JSString * str;
sbbs_t* sbbs; sbbs_t* sbbs;
jsrefcount rc; jsrefcount rc;
char* prompt=NULL; char* prompt=NULL;
int32 mode = K_EDIT;
size_t result; size_t result;
JS_SET_RVAL(cx, arglist, JSVAL_VOID); JS_SET_RVAL(cx, arglist, JSVAL_VOID);
...@@ -1121,16 +1122,22 @@ js_prompt(JSContext *cx, uintN argc, jsval *arglist) ...@@ -1121,16 +1122,22 @@ js_prompt(JSContext *cx, uintN argc, jsval *arglist)
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE); return(JS_FALSE);
if(argc) { uintN argn = 0;
JSVALUE_TO_MSTRING(cx, argv[0], prompt, NULL); if(argc > argn && JSVAL_IS_STRING(argv[argn])) {
JSVALUE_TO_MSTRING(cx, argv[argn], prompt, NULL);
if(prompt==NULL) if(prompt==NULL)
return(JS_FALSE); return(JS_FALSE);
argn++;
}
if(argc > argn && JSVAL_IS_STRING(argv[argn])) {
JSVALUE_TO_STRBUF(cx, argv[argn], instr, sizeof(instr), NULL);
argn++;
}
if(argc > argn && JSVAL_IS_NUMBER(argv[argn])) {
if(!JS_ValueToInt32(cx,argv[argn], &mode))
return JS_FALSE;
argn++;
} }
if(argc>1) {
JSVALUE_TO_STRBUF(cx, argv[1], instr, sizeof(instr), NULL);
} else
instr[0]=0;
rc=JS_SUSPENDREQUEST(cx); rc=JS_SUSPENDREQUEST(cx);
if(prompt != NULL) { if(prompt != NULL) {
...@@ -1138,7 +1145,7 @@ js_prompt(JSContext *cx, uintN argc, jsval *arglist) ...@@ -1138,7 +1145,7 @@ js_prompt(JSContext *cx, uintN argc, jsval *arglist)
free(prompt); free(prompt);
} }
result = sbbs->getstr(instr,sizeof(instr)-1,K_EDIT); result = sbbs->getstr(instr, sizeof(instr)-1, mode);
sbbs->attr(LIGHTGRAY); sbbs->attr(LIGHTGRAY);
if(!result) { if(!result) {
JS_SET_RVAL(cx, arglist, JSVAL_NULL); JS_SET_RVAL(cx, arglist, JSVAL_NULL);
...@@ -1191,8 +1198,8 @@ static jsSyncMethodSpec js_global_functions[] = { ...@@ -1191,8 +1198,8 @@ static jsSyncMethodSpec js_global_functions[] = {
,JSDOCSTR("print an alert message (ala client-side JS)") ,JSDOCSTR("print an alert message (ala client-side JS)")
,310 ,310
}, },
{"prompt", js_prompt, 1, JSTYPE_STRING, JSDOCSTR("[value]") {"prompt", js_prompt, 1, JSTYPE_STRING, JSDOCSTR("[text] [,value] [,mode=K_EDIT]")
,JSDOCSTR("displays a prompt (<i>value</i>) and returns a string of user input (ala clent-side JS)") ,JSDOCSTR("displays a prompt (<i>text</i>) and returns a string of user input (ala client-side JS)")
,310 ,310
}, },
{"confirm", js_confirm, 1, JSTYPE_BOOLEAN, JSDOCSTR("value") {"confirm", js_confirm, 1, JSTYPE_BOOLEAN, JSDOCSTR("value")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment