From f6570391fe328ee450d7f1d0f9e87d21af2be614 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 11 Jan 2016 05:23:29 +0000 Subject: [PATCH] Add file_area.alt_paths array containing the (zero-based) alt paths. --- src/sbbs3/js_file_area.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/sbbs3/js_file_area.c b/src/sbbs3/js_file_area.c index 0761695157..8f13756c33 100644 --- a/src/sbbs3/js_file_area.c +++ b/src/sbbs3/js_file_area.c @@ -44,10 +44,10 @@ static char* file_area_prop_desc[] = { "minimum amount of available disk space (in kilobytes) required for user uploads to be allowed" ,"file area settings (bitfield) - see <tt>FM_*</tt> in <tt>sbbsdefs.js</tt> for details" + ,"array of alternative file paths. NOTE: this array is zero-based, but alt path fields are one-based." ,NULL }; - static char* lib_prop_desc[] = { "index into lib_list array (or -1 if not in array) <i>(introduced in v3.12)</i>" ,"unique number for this library" @@ -110,6 +110,7 @@ JSBool DLLCALL js_file_area_resolve(JSContext* cx, JSObject* areaobj, jsid id) JSObject* alldirs; JSObject* libobj; JSObject* dirobj; + JSObject* alt_list; JSObject* lib_list; JSObject* dir_list; JSString* js_str; @@ -151,6 +152,27 @@ JSBool DLLCALL js_file_area_resolve(JSContext* cx, JSObject* areaobj, jsid id) return(JS_TRUE); } + if(name==NULL || strcmp(name, "alt_paths")==0) { + if(name) + free(name); + /* file_area.alt_paths[] */ + if((alt_list=JS_NewArrayObject(cx, 0, NULL))==NULL) + return JS_FALSE; + + val=OBJECT_TO_JSVAL(alt_list); + if(!JS_SetProperty(cx, areaobj, "alt_paths", &val)) + return JS_FALSE; + + for (l=0; l<p->cfg->altpaths; l++) { + if((js_str=JS_NewStringCopyZ(cx, p->cfg->altpath[l]))==NULL) + return JS_FALSE; + val=STRING_TO_JSVAL(js_str); + + if(!JS_SetElement(cx, alt_list, l, &val)) + return JS_FALSE; + } + } + #ifdef BUILD_JSDOCS js_CreateArrayOfStrings(cx, areaobj, "_property_desc_list", file_area_prop_desc, JSPROP_READONLY); #endif -- GitLab