src/server/config/acl.c

changeset 52
aced2245fb1c
parent 51
b28cf69f42e8
child 56
c6cf20b09043
--- a/src/server/config/acl.c	Thu Feb 28 20:00:05 2013 +0100
+++ b/src/server/config/acl.c	Fri Mar 01 21:15:52 2013 +0100
@@ -162,45 +162,7 @@
     sstr_t *accessmask = sstrsplit(s, sstr(","), &maskn);
     for(int i=0;i<maskn;i++) {
         sstr_t access = accessmask[i];
-        if(!sstrcmp(access, sstr("read"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_READ;
-        } else if(!sstrcmp(access, sstr("write"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_WRITE;
-        } else if(!sstrcmp(access, sstr("read_data"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_READ_DATA;
-        } else if(!sstrcmp(access, sstr("write_data"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_WRITE_DATA;
-        } else if(!sstrcmp(access, sstr("append"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_APPEND;
-        } else if(!sstrcmp(access, sstr("add_file"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_ADD_FILE;
-        } else if(!sstrcmp(access, sstr("add_subdirectory"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_ADD_SUBDIRECTORY;
-        } else if(!sstrcmp(access, sstr("read_xattr"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_READ_XATTR;
-        } else if(!sstrcmp(access, sstr("write_xattr"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_WRITE_XATTR;
-        } else if(!sstrcmp(access, sstr("execute"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_EXECUTE;
-        } else if(!sstrcmp(access, sstr("delete_child"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_DELETE_CHILD;
-        } else if(!sstrcmp(access, sstr("delete"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_DELETE;
-        } else if(!sstrcmp(access, sstr("read_attributes"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_READ_ATTRIBUTES;
-        } else if(!sstrcmp(access, sstr("write_attributes"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_WRITE_ATTRIBUTES;
-        } else if(!sstrcmp(access, sstr("list"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_LIST;
-        } else if(!sstrcmp(access, sstr("read_acl"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_READ_ACL;
-        } else if(!sstrcmp(access, sstr("write_acl"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_WRITE_ACL;
-        } else if(!sstrcmp(access, sstr("write_owner"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_WRITE_OWNER;
-        } else if(!sstrcmp(access, sstr("synchronize"))) {
-            ace->access_mask = ace->access_mask | ACLCFG_SYNCHRONIZE;
-        }
+        ace->access_mask = ace->access_mask | accstr2int(access);
     }
     free(accessmask);
     n++; // next token
@@ -255,3 +217,47 @@
     
     return 0;
 }
+
+uint32_t accstr2int(sstr_t access) {
+    uint32_t val = 0;
+    if(!sstrcmp(access, sstr("read"))) {
+        val = ACLCFG_READ;
+    } else if(!sstrcmp(access, sstr("write"))) {
+        val = ACLCFG_WRITE;
+    } else if(!sstrcmp(access, sstr("read_data"))) {
+        val = ACLCFG_READ_DATA;
+    } else if(!sstrcmp(access, sstr("write_data"))) {
+        val = ACLCFG_WRITE_DATA;
+    } else if(!sstrcmp(access, sstr("append"))) {
+        val = ACLCFG_APPEND;
+    } else if(!sstrcmp(access, sstr("add_file"))) {
+        val = ACLCFG_ADD_FILE;
+    } else if(!sstrcmp(access, sstr("add_subdirectory"))) {
+        val = ACLCFG_ADD_SUBDIRECTORY;
+    } else if(!sstrcmp(access, sstr("read_xattr"))) {
+        val = ACLCFG_READ_XATTR;
+    } else if(!sstrcmp(access, sstr("write_xattr"))) {
+        val = ACLCFG_WRITE_XATTR;
+    } else if(!sstrcmp(access, sstr("execute"))) {
+        val = ACLCFG_EXECUTE;
+    } else if(!sstrcmp(access, sstr("delete_child"))) {
+        val = ACLCFG_DELETE_CHILD;
+    } else if(!sstrcmp(access, sstr("delete"))) {
+        val = ACLCFG_DELETE;
+    } else if(!sstrcmp(access, sstr("read_attributes"))) {
+        val = ACLCFG_READ_ATTRIBUTES;
+    } else if(!sstrcmp(access, sstr("write_attributes"))) {
+        val = ACLCFG_WRITE_ATTRIBUTES;
+    } else if(!sstrcmp(access, sstr("list"))) {
+        val = ACLCFG_LIST;
+    } else if(!sstrcmp(access, sstr("read_acl"))) {
+        val = ACLCFG_READ_ACL;
+    } else if(!sstrcmp(access, sstr("write_acl"))) {
+        val = ACLCFG_WRITE_ACL;
+    } else if(!sstrcmp(access, sstr("write_owner"))) {
+        val = ACLCFG_WRITE_OWNER;
+    } else if(!sstrcmp(access, sstr("synchronize"))) {
+        val = ACLCFG_SYNCHRONIZE;
+    }
+    return val;
+}

mercurial