65 |
65 |
66 int keyfile_parse(void *p, ConfigLine *begin, ConfigLine *end, sstr_t line) { |
66 int keyfile_parse(void *p, ConfigLine *begin, ConfigLine *end, sstr_t line) { |
67 KeyfileConfig *conf = p; |
67 KeyfileConfig *conf = p; |
68 UcxAllocator *mp = conf->parser.mp; |
68 UcxAllocator *mp = conf->parser.mp; |
69 |
69 |
70 size_t tkn = 0; |
70 ssize_t tkn = 0; |
71 sstr_t *tk = sstrsplit(line, sstrn(";", 1), &tkn); |
71 sstr_t *tk = sstrsplit(line, sstrn(";", 1), &tkn); |
72 |
72 |
73 if(tkn < 2) { |
73 if(tkn < 2) { |
74 return 1; |
74 return 1; |
75 } |
75 } |
113 entry->hashdata = sstrdup_a(mp, hash_data); |
113 entry->hashdata = sstrdup_a(mp, hash_data); |
114 |
114 |
115 // get groups |
115 // get groups |
116 if(tkn == 3) { |
116 if(tkn == 3) { |
117 sstr_t groups_str = sstrtrim(tk[2]); |
117 sstr_t groups_str = sstrtrim(tk[2]); |
118 size_t ngroups = 0; |
118 ssize_t ngroups = 0; |
119 sstr_t *groups = sstrsplit(groups_str, sstrn(",", 1), &ngroups); |
119 sstr_t *groups = sstrsplit(groups_str, sstrn(",", 1), &ngroups); |
120 entry->groups = mp->calloc(mp->pool, ngroups, sizeof(sstr_t)); |
120 entry->groups = mp->calloc(mp->pool, ngroups, sizeof(sstr_t)); |
121 entry->numgroups = ngroups; |
121 entry->numgroups = ngroups; |
122 for(int i=0;i<ngroups;i++) { |
122 for(int i=0;i<ngroups;i++) { |
123 entry->groups[i] = sstrdup_a(mp, sstrtrim(groups[i])); |
123 entry->groups[i] = sstrdup_a(mp, sstrtrim(groups[i])); |