static int config_from_file(struct ini_cfgobj *cfgctx) { struct ini_cfgfile *fctx = NULL; char **errors = NULL; int ret; ret = ini_config_file_open(IPACONFFILE, 0, &fctx); if (ret) { fprintf(stderr, _("Failed to open config file %s\n"), IPACONFFILE); return ret; } ret = ini_config_parse(fctx, INI_STOP_ON_ANY, INI_MS_MERGE | INI_MV1S_ALLOW | INI_MV2S_ALLOW, INI_PARSE_NOWRAP, cfgctx); if (ret) { fprintf(stderr, _("Failed to parse config file %s\n"), IPACONFFILE); if (ini_config_error_count(cfgctx)) { ini_config_get_errors(cfgctx, &errors); if (errors) { ini_config_print_errors(stderr, errors); ini_config_free_errors(errors); } } ini_config_file_destroy(fctx); return ret; } ini_config_file_destroy(fctx); return 0; }
static int gp_config_from_file(const char *config_file, struct gp_ini_context *ctx, struct ini_cfgobj *ini_config, const uint32_t collision_flags) { struct ini_cfgfile *file_ctx = NULL; int ret; ret = ini_config_file_open(config_file, 0, /* metadata_flags, FIXME */ &file_ctx); if (ret) { GPDEBUG("Failed to open config file: %d (%s)\n", ret, gp_strerror(ret)); ini_config_destroy(ini_config); return ret; } ret = ini_config_parse(file_ctx, INI_STOP_ON_ANY, /* error_level */ collision_flags, INI_PARSE_NOWRAP, /* parse_flags */ ini_config); if (ret) { char **errors = NULL; /* we had a parsing failure */ GPDEBUG("Failed to parse config file: %d (%s)\n", ret, gp_strerror(ret)); if (ini_config_error_count(ini_config)) { ini_config_get_errors(ini_config, &errors); if (errors) { ini_config_print_errors(stderr, errors); ini_config_free_errors(errors); } } ini_config_file_destroy(file_ctx); ini_config_destroy(ini_config); return ret; } ini_config_file_destroy(file_ctx); return 0; }