Skip to content
Snippets Groups Projects
Commit 112c9d96 authored by Daniel Salzman's avatar Daniel Salzman
Browse files

utils: unify and refactor error processing

parent 737af008
Branches
Tags
No related merge requests found
......@@ -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,
......
......@@ -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.
......
......@@ -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);
}
......@@ -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;
}
......@@ -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;
}
......@@ -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, &params.limit, 0, INT_MAX) != KNOT_EOK) {
print_help();
return EXIT_FAILURE;
goto failure;
}
break;
case 's':
if (str_to_u32(optarg, &params.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;
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment