diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index 6b44d91af901d2cddb02964438a131fed5eef3a3..d268ef6dc5000ab64994065c3c0718890e83dbd5 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -380,6 +380,20 @@ js_prompt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); } +static JSBool +js_chdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + char* p; + + if((p=JS_GetStringBytes(JS_ValueToString(cx, argv[0])))==NULL) { + *rval = INT_TO_JSVAL(-1); + return(JS_TRUE); + } + + *rval = BOOLEAN_TO_JSVAL(chdir(p)==0); + return(JS_TRUE); +} + static jsSyncMethodSpec js_global_functions[] = { {"log", js_log, 1}, {"read", js_read, 1}, @@ -391,6 +405,7 @@ static jsSyncMethodSpec js_global_functions[] = { {"alert", js_alert, 1}, {"prompt", js_prompt, 1}, {"confirm", js_confirm, 1}, + {"chdir", js_chdir, 1}, {0} };