diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index a5aaf9ccb047940079efc4fca19b96c861b12fa6..094d44f464fb629911c5609a9d8681e708d9a8a1 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -7,10 +7,12 @@ #include "utils.h" char * make_filename(const char *output_dir, const char *filename, int ueid); +int get_config_from_file(const char *filename, config_t *config); int main(int argc, char**argv) { int rc = EXIT_SUCCESS; int option; + const char* conf_file = NULL; while ((option = getopt(argc, argv, options)) != -1) { switch (option) { case 'c': @@ -42,26 +44,17 @@ int main(int argc, char**argv) { _display_usage(); return EXIT_FAILURE; } else if (parse_data) { + int ret; int ue_nb = 0; - config_t cfg; config_setting_t *root_setting = NULL; config_setting_t *ue_setting = NULL; config_setting_t *all_plmn_setting = NULL; char user[10]; - config_init(&cfg); - if (conf_file != NULL) { - /* Read the file. If there is an error, report it and exit. */ - if (!config_read_file(&cfg, conf_file)) { - fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), - config_error_line(&cfg), config_error_text(&cfg)); - config_destroy(&cfg); - return (EXIT_FAILURE); - } - } else { - config_destroy(&cfg); - perror("ERROR\t: config_read failed"); - exit(EXIT_FAILURE); - } + config_t cfg; + ret = get_config_from_file(conf_file, &cfg); + if (ret == EXIT_FAILURE) { + exit(1); + } root_setting = config_root_setting(&cfg); ue_nb = config_setting_length(root_setting) - 1; all_plmn_setting = config_setting_get_member(root_setting, PLMN); @@ -112,6 +105,26 @@ int main(int argc, char**argv) { } +int get_config_from_file(const char *filename, config_t *config) { + config_init(config); + if (filename == NULL) { + // XXX write error message ? + exit(EXIT_FAILURE); + } + + /* Read the file. If there is an error, report it and exit. */ + if (!config_read_file(config, filename)) { + fprintf(stderr, "Cant read config file '%s': %s\n", filename, + config_error_text(config)); + if ( config_error_type(config) == CONFIG_ERR_PARSE ) { + fprintf(stderr, "This is line %d\n", config_error_line(config)); + } + config_destroy(config); + return (EXIT_FAILURE); + } + return EXIT_SUCCESS; +} + void gen_usim_data(int user_id) { usim_data_t usim_data = { }; memset(&usim_data, 0, sizeof(usim_data_t)); diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index 06c0027c78aacd910f7b39aac07cc95a02104a9b..44cb65c9b93bbd3e7fc560d455198449392a63b8 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -98,7 +98,6 @@ const char options[]="c:o:h"; unsigned char parse_data=FALSE; unsigned char print_data=FALSE; unsigned char output=FALSE; -const char* conf_file = NULL; const char* output_dir = NULL; const char* imsi=NULL;