diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index 5a69fc20598b4b909383be62e414c4f60a56f07d..aee54995c61cd76a7a32383289c6e8ca5175ebe1 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -2966,6 +2966,21 @@ js_mkdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); } +static JSBool +js_mkpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + char* p; + + if(JSVAL_IS_VOID(argv[0])) + return(JS_TRUE); + + if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) + return(JS_FALSE); + + *rval = BOOLEAN_TO_JSVAL(mkpath(p)==0); + return(JS_TRUE); +} + static JSBool js_rmdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { @@ -3345,6 +3360,10 @@ static jsSyncMethodSpec js_global_functions[] = { ,JSDOCSTR("make a directory") ,310 }, + {"mkpath", js_mkpath, 1, JSTYPE_BOOLEAN, JSDOCSTR("path/directory") + ,JSDOCSTR("make a path to a directory (creating all necessary sub-directories)") + ,315 + }, {"rmdir", js_rmdir, 1, JSTYPE_BOOLEAN, JSDOCSTR("path/directory") ,JSDOCSTR("remove a directory") ,310