From 5ec7399e0c589ca2358ae24f3dee4955b13fb3f3 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Debian Linux)" <rob@synchro.net>
Date: Sun, 12 Jan 2025 16:31:58 -0800
Subject: [PATCH] Add Archive.supported_formats (array of strings)

Helpful for scripts that want to know what file types (extensions) are
supported by the Archive class object.

Still need to work out the JSDOC support for this. Similar to the
Socket class object properties, this will have no documentation/description.
---
 src/sbbs3/js_archive.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/js_archive.c b/src/sbbs3/js_archive.c
index d371cc2dfe..f425a0c5ab 100644
--- a/src/sbbs3/js_archive.c
+++ b/src/sbbs3/js_archive.c
@@ -705,11 +705,21 @@ JSClass js_archive_class = {
 
 JSObject* js_CreateArchiveClass(JSContext* cx, JSObject* parent)
 {
-	return JS_InitClass(cx, parent, NULL
+	JSObject* obj = JS_InitClass(cx, parent, NULL
 		,&js_archive_class
 		,js_archive_constructor
 		,1		/* number of constructor args */
 		,NULL	/* props, set in constructor */
 		,NULL	/* funcs, set in constructor */
 		,NULL, NULL);
+	if(obj != NULL) {
+		jsval val;
+		if(JS_GetProperty(cx, parent, js_archive_class.name, &val) && !JSVAL_NULL_OR_VOID(val)) {
+			JSObject* constructor;
+			JS_ValueToObject(cx, val, &constructor);
+			js_CreateArrayOfStrings(cx, constructor, "supported_formats", supported_archive_formats
+				,JSPROP_PERMANENT|JSPROP_ENUMERATE|JSPROP_READONLY);
+		}
+	}
+	return obj;
 }
-- 
GitLab