SystemAgent/src/drivers/user_config_driver.c

56 lines
1.3 KiB
C
Raw Normal View History

2021-03-21 16:01:12 +00:00
#include <stdlib.h>
2021-03-14 15:47:28 +00:00
#include "utils/user_log_util.h"
2021-03-14 08:24:55 +00:00
#include "drivers/user_config_driver.h"
2021-03-21 16:01:12 +00:00
int user_config_init(user_config_t *config, char *config_file) {
2021-03-14 15:47:28 +00:00
USER_LOG(USER_LOG_INFO, "Config init.");
2021-03-21 16:01:12 +00:00
config->libconfig_cfg = malloc(sizeof(config_t));
if(config->libconfig_cfg == NULL) return -1;
config_init(config->libconfig_cfg);
2021-03-14 08:24:55 +00:00
2021-03-21 16:01:12 +00:00
if(!config_read_file(config->libconfig_cfg, config_file)) {
2021-03-14 15:47:28 +00:00
USER_LOG(USER_LOG_ERROR, "Failed to read config file %s.", config_file);
2021-03-21 16:01:12 +00:00
return -2;
}
return 0;
}
char *user_config_lookup_string(user_config_t *config, char *path) {
const char *value;
// This string is auto-freeed by libconfig.
if(config_lookup_string(config->libconfig_cfg, path, &value) == 0) {
return NULL;
}
return (char *)value;
}
int user_config_lookup_int(user_config_t *config, char *path, int *value) {
if(config_lookup_int(config->libconfig_cfg, path, value) == 0) {
return -1;
}
return 0;
}
int user_config_lookup_float(user_config_t *config, char *path, float *value) {
if(config_lookup_float(config->libconfig_cfg, path, value) == 0) {
return -1;
2021-03-14 08:24:55 +00:00
}
2021-03-21 16:01:12 +00:00
return 0;
2021-03-14 08:24:55 +00:00
}
2021-03-21 16:01:12 +00:00
int user_config_deinit(user_config_t *config) {
config_destroy(config->libconfig_cfg);
if(config->libconfig_cfg) {
free(config->libconfig_cfg);
}
return 0;
}