108 |
108 |
109 int parse_ace(ACLFile *f, sstr_t line) { |
109 int parse_ace(ACLFile *f, sstr_t line) { |
110 ACLConfig *cur = f->cur; |
110 ACLConfig *cur = f->cur; |
111 UcxAllocator *mp = f->parser.mp; |
111 UcxAllocator *mp = f->parser.mp; |
112 |
112 |
113 size_t tkn = 0; |
113 ssize_t tkn = 0; |
114 sstr_t *tk = sstrsplit(line, sstr(":"), &tkn); |
114 sstr_t *tk = sstrsplit(line, sstr(":"), &tkn); |
115 if(!tk || tkn < 3) { |
115 if(!tk || tkn < 3) { |
116 fprintf(stderr, "parse_ace: to few tokens\n"); |
116 fprintf(stderr, "parse_ace: to few tokens\n"); |
117 return 1; |
117 return 1; |
118 } |
118 } |
159 fprintf(stderr, "parse_ace: ace incomplete\n"); |
159 fprintf(stderr, "parse_ace: ace incomplete\n"); |
160 return 1; |
160 return 1; |
161 } |
161 } |
162 s = tk[n]; |
162 s = tk[n]; |
163 |
163 |
164 size_t maskn = 0; |
164 ssize_t maskn = 0; |
165 sstr_t *accessmask = sstrsplit(s, sstr(","), &maskn); |
165 sstr_t *accessmask = sstrsplit(s, sstr(","), &maskn); |
166 for(int i=0;i<maskn;i++) { |
166 for(int i=0;i<maskn;i++) { |
167 sstr_t access = accessmask[i]; |
167 sstr_t access = accessmask[i]; |
168 ace->access_mask = ace->access_mask | accstr2int(access); |
168 ace->access_mask = ace->access_mask | accstr2int(access); |
169 } |
169 } |
193 ace->type = ACLCFG_TYPE_ALARM; |
193 ace->type = ACLCFG_TYPE_ALARM; |
194 complete = 1; |
194 complete = 1; |
195 break; |
195 break; |
196 } else { |
196 } else { |
197 // set flags |
197 // set flags |
198 size_t fln = 0; |
198 ssize_t fln = 0; |
199 sstr_t *flags = sstrsplit(s, sstr(","), &fln); |
199 sstr_t *flags = sstrsplit(s, sstr(","), &fln); |
200 for(int i=0;i<fln;i++) { |
200 for(int i=0;i<fln;i++) { |
201 sstr_t flag = flags[i]; |
201 sstr_t flag = flags[i]; |
202 if(!sstrcmp(flag, sstr("successful_access_flag"))) { |
202 if(!sstrcmp(flag, sstr("successful_access_flag"))) { |
203 ace->flags = ace->flags | ACLCFG_SUCCESSFUL_ACCESS_FLAG; |
203 ace->flags = ace->flags | ACLCFG_SUCCESSFUL_ACCESS_FLAG; |