From 1a33f36519401b566989fb86f096b97725ecda61 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 12 Jun 2003 09:10:16 +0000
Subject: [PATCH] If no user specified (e.g. for offline events), all areas
 included in arrays. Fixed is_operator property (was always true). Created
 is_download_free() function which checks all the various criteria that can
 make a download free for a particular user from a particular file area, with
 support for per-directory exemption ARS (finally).

---
 src/sbbs3/js_file_area.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/sbbs3/js_file_area.c b/src/sbbs3/js_file_area.c
index c322d87a20..969f85b6cb 100644
--- a/src/sbbs3/js_file_area.c
+++ b/src/sbbs3/js_file_area.c
@@ -128,10 +128,10 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
 		return(NULL);
 
 	for(l=0;l<cfg->total_libs;l++) {
-
+#if 0
 		if(user==NULL && (*cfg->lib[l]->ar)!=AR_NULL)
 			continue;
-
+#endif
 		if(user!=NULL && !chk_ar(cfg,cfg->lib[l]->ar,user))
 			continue;
 
@@ -176,10 +176,10 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
 		for(d=0;d<cfg->total_dirs;d++) {
 			if(cfg->dir[d]->lib!=l)
 				continue;
-
+#if 0
 			if(user==NULL && (*cfg->dir[d]->ar)!=AR_NULL)
 				continue;
-
+#endif
 			if(user!=NULL && !chk_ar(cfg,cfg->dir[d]->ar,user))
 				continue;
 
@@ -288,14 +288,17 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
 			if(!JS_SetProperty(cx, dirobj, "can_download", &val))
 				return(NULL);
 
-			if(user==NULL || chk_ar(cfg,cfg->dir[d]->ex_ar,user))
+			if(is_download_free(cfg,d,user))
 				val=BOOLEAN_TO_JSVAL(JS_TRUE);
 			else
 				val=BOOLEAN_TO_JSVAL(JS_FALSE);
 			if(!JS_SetProperty(cx, dirobj, "is_exempt", &val))
 				return(NULL);
 
-			if(user==NULL || chk_ar(cfg,cfg->dir[d]->op_ar,user))
+			if(user!=NULL 
+				&& (user->level>=SYSOP_LEVEL 
+					|| (cfg->dir[d]->op_ar[0]!=0 
+						&& chk_ar(cfg,cfg->dir[d]->op_ar,user))))
 				val=BOOLEAN_TO_JSVAL(JS_TRUE);
 			else
 				val=BOOLEAN_TO_JSVAL(JS_FALSE);
-- 
GitLab