diff -r b28cf69f42e8 -r aced2245fb1c src/server/config/acl.c --- 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;iaccess_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; +}