From 06edd2fce1add9e60d3eb2bd4b6e004ae98dd91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org> Date: Tue, 4 Jun 2013 12:55:19 +0200 Subject: [PATCH] Refactor main() to use goto exit; and set return code to 0 on proper --help Change-Id: Ib10e0b882757c1fa3981dea20f29bf7179e4a2a5 --- src/knot/ctl/knotc_main.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/knot/ctl/knotc_main.c b/src/knot/ctl/knotc_main.c index a85081cfa1..84af1bc3f7 100644 --- a/src/knot/ctl/knotc_main.c +++ b/src/knot/ctl/knotc_main.c @@ -402,7 +402,7 @@ static int tsig_parse_file(knot_tsig_key_t *k, const char *f) int main(int argc, char **argv) { /* Parse command line arguments */ - int c = 0, li = 0; + int c = 0, li = 0, rc = 0; unsigned flags = F_NULL; char *config_fn = NULL; char *default_config = conf_find_default(); @@ -478,30 +478,26 @@ int main(int argc, char **argv) config_fn = strdup(optarg); break; case 'V': + rc = 0; printf("%s, version %s\n", "Knot DNS", PACKAGE_VERSION); - log_close(); - free(config_fn); - free(default_config); - return 0; + goto exit; case 'h': case '?': + rc = 0; + help(argc, argv); + goto exit; default: + rc = 1; help(argc, argv); - log_close(); - free(config_fn); - free(default_config); - return 1; + goto exit; } } /* Check if there's at least one remaining non-option. */ if (argc - optind < 1) { + rc = 1; help(argc, argv); - knot_tsig_key_free(&r_key); - log_close(); - free(config_fn); - free(default_config); - return 1; + goto exit; } /* Find requested command. */ @@ -516,11 +512,8 @@ int main(int argc, char **argv) /* Command not found. */ if (!cmd->name) { log_server_error("Invalid command: '%s'\n", argv[optind]); - knot_tsig_key_free(&r_key); - log_close(); - free(config_fn); - free(default_config); - return 1; + rc = 1; + goto exit; } /* Open config, allow if not exists. */ @@ -566,8 +559,9 @@ int main(int argc, char **argv) } /* Execute command. */ - int rc = cmd->cb(argc - optind - 1, argv + optind + 1, flags); + rc = cmd->cb(argc - optind - 1, argv + optind + 1, flags); +exit: /* Finish */ knot_tsig_key_free(&r_key); log_close(); -- GitLab