101 flib_schemelist_destroy(result); |
101 flib_schemelist_destroy(result); |
102 return NULL; |
102 return NULL; |
103 } |
103 } |
104 |
104 |
105 flib_schemelist *flib_schemelist_from_ini(flib_cfg_meta *meta, const char *filename) { |
105 flib_schemelist *flib_schemelist_from_ini(flib_cfg_meta *meta, const char *filename) { |
|
106 if(log_badargs_if2(meta==NULL, filename==NULL)) { |
|
107 return NULL; |
|
108 } |
|
109 |
106 flib_schemelist *list = NULL; |
110 flib_schemelist *list = NULL; |
107 if(!meta || !filename) { |
|
108 flib_log_e("null parameter in flib_schemelist_from_ini"); |
|
109 return NULL; |
|
110 } |
|
111 flib_ini *ini = flib_ini_load(filename); |
111 flib_ini *ini = flib_ini_load(filename); |
112 if(!ini || flib_ini_enter_section(ini, "schemes")) { |
112 if(!ini || flib_ini_enter_section(ini, "schemes")) { |
113 flib_log_e("Missing file or missing section \"schemes\" in file %s.", filename); |
113 flib_log_e("Missing file or missing section \"schemes\" in file %s.", filename); |
114 return fromIniHandleError(list, ini); |
114 return fromIniHandleError(list, ini); |
115 } |
115 } |
162 return error; |
162 return error; |
163 } |
163 } |
164 |
164 |
165 int flib_schemelist_to_ini(const char *filename, const flib_schemelist *schemes) { |
165 int flib_schemelist_to_ini(const char *filename, const flib_schemelist *schemes) { |
166 int result = -1; |
166 int result = -1; |
167 if(!filename || !schemes) { |
167 if(!log_badargs_if2(filename==NULL, schemes==NULL)) { |
168 flib_log_e("null parameter in flib_schemelist_to_ini"); |
|
169 } else { |
|
170 flib_ini *ini = flib_ini_create(NULL); |
168 flib_ini *ini = flib_ini_create(NULL); |
171 if(ini && !flib_ini_create_section(ini, "schemes")) { |
169 if(ini && !flib_ini_create_section(ini, "schemes")) { |
172 bool error = false; |
170 bool error = false; |
173 error |= flib_ini_set_int(ini, "size", schemes->schemeCount); |
171 error |= flib_ini_set_int(ini, "size", schemes->schemeCount); |
174 for(int i=0; i<schemes->schemeCount && !error; i++) { |
172 for(int i=0; i<schemes->schemeCount && !error; i++) { |
200 flib_schemelist_destroy(list); |
198 flib_schemelist_destroy(list); |
201 } |
199 } |
202 } |
200 } |
203 |
201 |
204 flib_cfg *flib_schemelist_find(flib_schemelist *list, const char *name) { |
202 flib_cfg *flib_schemelist_find(flib_schemelist *list, const char *name) { |
205 if(list && name) { |
203 if(!log_badargs_if2(list==NULL, name==NULL)) { |
206 for(int i=0; i<list->schemeCount; i++) { |
204 for(int i=0; i<list->schemeCount; i++) { |
207 if(!strcmp(name, list->schemes[i]->name)) { |
205 if(!strcmp(name, list->schemes[i]->name)) { |
208 return list->schemes[i]; |
206 return list->schemes[i]; |
209 } |
207 } |
210 } |
208 } |
214 |
212 |
215 GENERATE_STATIC_LIST_INSERT(insertScheme, flib_cfg*) |
213 GENERATE_STATIC_LIST_INSERT(insertScheme, flib_cfg*) |
216 GENERATE_STATIC_LIST_DELETE(deleteScheme, flib_cfg*) |
214 GENERATE_STATIC_LIST_DELETE(deleteScheme, flib_cfg*) |
217 |
215 |
218 int flib_schemelist_insert(flib_schemelist *list, flib_cfg *cfg, int pos) { |
216 int flib_schemelist_insert(flib_schemelist *list, flib_cfg *cfg, int pos) { |
219 if(!list) { |
217 if(!log_badargs_if2(list==NULL, cfg==NULL) |
220 flib_log_e("Invalid parameter in flib_schemelist_insert"); |
218 && !insertScheme(&list->schemes, &list->schemeCount, cfg, pos)) { |
221 } else if(!insertScheme(&list->schemes, &list->schemeCount, cfg, pos)) { |
|
222 flib_cfg_retain(cfg); |
219 flib_cfg_retain(cfg); |
223 return 0; |
220 return 0; |
224 } |
221 } |
225 return -1; |
222 return -1; |
226 } |
223 } |
227 |
224 |
228 int flib_schemelist_delete(flib_schemelist *list, int pos) { |
225 int flib_schemelist_delete(flib_schemelist *list, int pos) { |
229 if(!list) { |
226 if(!log_badargs_if(list==NULL)) { |
230 flib_log_e("Invalid parameter in flib_schemelist_delete"); |
|
231 } else { |
|
232 flib_cfg *elem = list->schemes[pos]; |
227 flib_cfg *elem = list->schemes[pos]; |
233 if(!deleteScheme(&list->schemes, &list->schemeCount, pos)) { |
228 if(!deleteScheme(&list->schemes, &list->schemeCount, pos)) { |
234 flib_cfg_release(elem); |
229 flib_cfg_release(elem); |
235 return 0; |
230 return 0; |
236 } |
231 } |