Skip to content

Commit 31f9fe6

Browse files
Deomid Ryabkovcesantabot
authored andcommitted
Clean up config validation API
CL: none PUBLISHED_FROM=c19078c0ce069e3866ae0eb7360ddc9686b83914
1 parent 64f0544 commit 31f9fe6

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

fw/include/mgos_sys_config.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,10 @@ void mgos_config_reset(int level);
8686
*/
8787
typedef bool (*mgos_config_validator_fn)(const struct mgos_config *cfg,
8888
char **msg);
89-
void mgos_register_config_validator(mgos_config_validator_fn fn);
89+
void mgos_sys_config_register_validator(mgos_config_validator_fn fn);
90+
91+
/* Run validators on the specified config. */
92+
bool mgos_config_validate(const struct mgos_config *cfg, char **msg);
9093

9194
void device_get_mac_address(uint8_t mac[6]);
9295

fw/src/mgos_sys_config.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,21 @@ bool load_config_defaults(struct mgos_config *cfg) {
109109
return true;
110110
}
111111

112+
bool mgos_config_validate(const struct mgos_config *cfg, char **msg) {
113+
*msg = NULL;
114+
for (int i = 0; i < s_num_validators; i++) {
115+
if (!s_validators[i](cfg, msg)) return false;
116+
}
117+
return true;
118+
}
119+
112120
bool save_cfg(const struct mgos_config *cfg, char **msg) {
113121
bool result = false;
114122
struct mgos_config *defaults = calloc(1, sizeof(*defaults));
115123
char *ptr = NULL;
116124
if (defaults == NULL) goto clean;
117125
if (msg == NULL) msg = &ptr;
118-
*msg = NULL;
119-
int i;
120-
for (i = 0; i < s_num_validators; i++) {
121-
if (!s_validators[i](cfg, msg)) goto clean;
122-
}
126+
if (!mgos_config_validate(cfg, msg)) goto clean;
123127
if (!load_config_defaults(defaults)) {
124128
*msg = strdup("failed to load defaults");
125129
goto clean;
@@ -299,7 +303,7 @@ enum mgos_init_result mgos_sys_config_init(void) {
299303
return MGOS_INIT_OK;
300304
}
301305

302-
void mgos_register_config_validator(mgos_config_validator_fn fn) {
306+
void mgos_sys_config_register_validator(mgos_config_validator_fn fn) {
303307
s_validators = (mgos_config_validator_fn *) realloc(
304308
s_validators, (s_num_validators + 1) * sizeof(*s_validators));
305309
if (s_validators == NULL) return;

0 commit comments

Comments
 (0)