diff --git a/src/knot/catalog/catalog_db.c b/src/knot/catalog/catalog_db.c index 8d1e1912c8f50453828d6d59a220ab828b8489de..b483f4d09467859c1894a0b22a83b3ea77cebf28 100644 --- a/src/knot/catalog/catalog_db.c +++ b/src/knot/catalog/catalog_db.c @@ -157,7 +157,7 @@ void catalog_commit_cleanup(catalog_t *cat) } } -int catalog_deinit(catalog_t *cat) +void catalog_deinit(catalog_t *cat) { assert(cat->rw_txn == NULL); if (cat->ro_txn != NULL) { @@ -169,7 +169,6 @@ int catalog_deinit(catalog_t *cat) free(cat->old_ro_txn); } knot_lmdb_deinit(&cat->db); - return KNOT_EOK; } int catalog_add(catalog_t *cat, const knot_dname_t *member, diff --git a/src/knot/catalog/catalog_db.h b/src/knot/catalog/catalog_db.h index 5f68088145ee93eee9201640c0e0fabf888f9dbf..69da1e4cf5a48f87bbe2948d9a327ba2846cd305 100644 --- a/src/knot/catalog/catalog_db.h +++ b/src/knot/catalog/catalog_db.h @@ -101,10 +101,8 @@ void catalog_commit_cleanup(catalog_t *cat); * \brief Close the catalog and de-init the structure. * * \param cat Catalog to be closed. - * - * \return KNOT_E* */ -int catalog_deinit(catalog_t *cat); +void catalog_deinit(catalog_t *cat); /*! * \brief Add a member zone to the catalog database. diff --git a/src/utils/common/util_conf.c b/src/utils/common/util_conf.c index 601bb14a8446475cd2fb74043be30c7852dfc7de..5a706538ab5fc15e33f505feed86320c694a06f4 100644 --- a/src/utils/common/util_conf.c +++ b/src/utils/common/util_conf.c @@ -33,6 +33,7 @@ int util_conf_init_confdb(const char *confdb) { if (util_conf_initialized()) { ERR("Configuration already initialized.\n"); + util_conf_deinit(); return KNOT_ESEMCHECK; } @@ -125,5 +126,5 @@ void util_update_privileges(void) void util_conf_deinit(void) { - conf_free(conf()); + conf_update(NULL, CONF_UPD_FNONE); } diff --git a/src/utils/kcatalogprint/main.c b/src/utils/kcatalogprint/main.c index fbd84478f16dd503b9d5f4ae93ef9e31bc53994c..e25ce5aace619b4d56502e3f1aad3494999c9631 100644 --- a/src/utils/kcatalogprint/main.c +++ b/src/utils/kcatalogprint/main.c @@ -93,28 +93,28 @@ int main(int argc, char *argv[]) switch (opt) { case 'c': if (util_conf_init_file(optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'C': if (util_conf_init_confdb(optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'D': if (util_conf_init_justdb("catalog-db", optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'h': print_help(); - return EXIT_SUCCESS; + goto success; case 'V': print_version(PROGRAM_NAME); - return EXIT_SUCCESS; + goto success; default: print_help(); - return EXIT_FAILURE; + goto failure; } } @@ -122,13 +122,13 @@ int main(int argc, char *argv[]) if (argc - optind > 0) { fprintf(stderr, "Warning: obsolete parameter specified\n"); if (util_conf_init_justdb("catalog-db", argv[optind]) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } optind++; } if (util_conf_init_default() != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } catalog_t c = { { 0 } }; @@ -137,9 +137,12 @@ int main(int argc, char *argv[]) catalog_init(&c, db, 0); // mapsize grows automatically free(db); catalog_print(&c); - if (catalog_deinit(&c) != KNOT_EOK) { - return EXIT_FAILURE; - } + catalog_deinit(&c); +success: + util_conf_deinit(); return EXIT_SUCCESS; +failure: + util_conf_deinit(); + return EXIT_FAILURE; } diff --git a/src/utils/keymgr/main.c b/src/utils/keymgr/main.c index 5b67231b00f9bc7acb6e121908132ebc3a4e7678..0aede86b312a61047cedee0c5f228351d9ca6057 100644 --- a/src/utils/keymgr/main.c +++ b/src/utils/keymgr/main.c @@ -316,17 +316,17 @@ int main(int argc, char *argv[]) switch (opt) { case 'c': if (util_conf_init_file(optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'C': if (util_conf_init_confdb(optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'D': if (util_conf_init_justdb("kasp-db", optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 't': @@ -336,8 +336,9 @@ int main(int argc, char *argv[]) ret = keymgr_generate_tsig(optarg, (argc > optind ? argv[optind] : "hmac-sha256"), parm); if (ret != KNOT_EOK) { ERROR("failed to generate TSIG (%s)\n", knot_strerror(ret)); + goto failure; } - return (ret == KNOT_EOK ? EXIT_SUCCESS : EXIT_FAILURE); + goto success; case 'l': just_list = true; break; @@ -352,18 +353,18 @@ int main(int argc, char *argv[]) break; case 'h': print_help(); - return EXIT_SUCCESS; + goto success; case 'V': print_version(PROGRAM_NAME); - return EXIT_SUCCESS; + goto success; default: print_help(); - return EXIT_FAILURE; + goto failure; } } if (util_conf_init_default() != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } util_update_privileges(); @@ -379,9 +380,15 @@ int main(int argc, char *argv[]) } else { ret = key_command(argc, argv, optind, &kaspdb, &list_params); } - knot_lmdb_deinit(&kaspdb); - util_conf_deinit(); + if (ret != KNOT_EOK) { + goto failure; + } - return (ret == KNOT_EOK ? EXIT_SUCCESS : EXIT_FAILURE); +success: + util_conf_deinit(); + return EXIT_SUCCESS; +failure: + util_conf_deinit(); + return EXIT_FAILURE; } diff --git a/src/utils/kjournalprint/main.c b/src/utils/kjournalprint/main.c index f6c942df66d46c3dfef4c477db8aaf095bbc2875..1d55fa0cc59c2d7a8f12ad5ee1a481b1fe477b24 100644 --- a/src/utils/kjournalprint/main.c +++ b/src/utils/kjournalprint/main.c @@ -334,29 +334,29 @@ int main(int argc, char *argv[]) switch (opt) { case 'c': if (util_conf_init_file(optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'C': if (util_conf_init_confdb(optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'D': if (util_conf_init_justdb("journal-db", optarg) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } break; case 'l': if (str_to_int(optarg, ¶ms.limit, 0, INT_MAX) != KNOT_EOK) { print_help(); - return EXIT_FAILURE; + goto failure; } break; case 's': if (str_to_u32(optarg, ¶ms.serial) != KNOT_EOK) { print_help(); - return EXIT_FAILURE; + goto failure; } params.from_serial = true; break; @@ -378,13 +378,13 @@ int main(int argc, char *argv[]) break; case 'h': print_help(); - return EXIT_SUCCESS; + goto success; case 'V': print_version(PROGRAM_NAME); - return EXIT_SUCCESS; + goto success; default: print_help(); - return EXIT_FAILURE; + goto failure; } } @@ -392,13 +392,13 @@ int main(int argc, char *argv[]) if ((justlist && (argc - optind > 0)) || (!justlist && (argc - optind > 1))) { fprintf(stderr, "Warning: obsolete parameter specified\n"); if (util_conf_init_justdb("journal-db", argv[optind]) != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } optind++; } if (util_conf_init_default() != KNOT_EOK) { - return EXIT_FAILURE; + goto failure; } char *db = conf_db(conf(), C_JOURNAL_DB); @@ -411,22 +411,22 @@ int main(int argc, char *argv[]) printf("No zones in journal DB\n"); // FALLTHROUGH case KNOT_EOK: - return EXIT_SUCCESS; + goto success; case KNOT_ENODB: fprintf(stderr, "The journal DB does not exist\n"); - return EXIT_FAILURE; + goto failure; case KNOT_EMALF: fprintf(stderr, "The journal DB is broken\n"); - return EXIT_FAILURE; + goto failure; default: fprintf(stderr, "Failed to load zone list (%s)\n", knot_strerror(ret)); - return EXIT_FAILURE; + goto failure; } } else { if (argc - optind != 1) { print_help(); free(db); - return EXIT_FAILURE; + goto failure; } knot_dname_t *name = knot_dname_from_str_alloc(argv[optind]); knot_dname_to_lower(name); @@ -444,17 +444,22 @@ int main(int argc, char *argv[]) break; case KNOT_ENODB: fprintf(stderr, "The journal DB does not exist\n"); - return EXIT_FAILURE; + goto failure; case KNOT_EOUTOFZONE: fprintf(stderr, "The specified journal DB does not contain the specified zone\n"); - return EXIT_FAILURE; + goto failure; case KNOT_EOK: break; default: fprintf(stderr, "Failed to load changesets (%s)\n", knot_strerror(ret)); - return EXIT_FAILURE; + goto failure; } } +success: + util_conf_deinit(); return EXIT_SUCCESS; +failure: + util_conf_deinit(); + return EXIT_FAILURE; }