From: Serge Hallyn Date: Mon, 7 Apr 2014 16:56:20 +0000 (-0500) Subject: lxc_*.c: don't exit with -1 X-Git-Tag: lxc-1.1.0.alpha1~157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13bc2fd2370f8e3778d81f58ac8dda5746550a4f;p=thirdparty%2Flxc.git lxc_*.c: don't exit with -1 In this patch I tried to stick with each file's coding style, however I think we should probably change that. Every main() should always not return and only exit; they should always return EXIT_SUCCESS or EXIT_FAILURE with the only exceptions being cases where we are returning a child's exit status (lxc_execute, lxc_attach, lxc_init). Signed-off-by: Serge Hallyn Acked-by: Stéphane Graber --- diff --git a/doc/lxc-stop.sgml.in b/doc/lxc-stop.sgml.in index dc002c551..bc5e6a8ee 100644 --- a/doc/lxc-stop.sgml.in +++ b/doc/lxc-stop.sgml.in @@ -162,6 +162,41 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Exit value + + + + + 0 + + + The container was successfully stopped. + + + + + + 1 + + + An error occurred while stopping the container. + + + + + + 2 + + + The specified container exists but was not running. + + + + + + + Diagnostic diff --git a/src/lxc/lxc_attach.c b/src/lxc/lxc_attach.c index 3fbcb82a2..3757ff96b 100644 --- a/src/lxc/lxc_attach.c +++ b/src/lxc/lxc_attach.c @@ -195,11 +195,11 @@ int main(int argc, char *argv[]) ret = lxc_caps_init(); if (ret) - return ret; + return 1; ret = lxc_arguments_parse(&my_args, argc, argv); if (ret) - return ret; + return 1; if (!my_args.log_file) my_args.log_file = "none"; @@ -207,7 +207,7 @@ int main(int argc, char *argv[]) ret = lxc_log_init(my_args.name, my_args.log_file, my_args.log_priority, my_args.progname, my_args.quiet, my_args.lxcpath[0]); if (ret) - return ret; + return 1; lxc_log_options_no_override(); if (remount_sys_proc) @@ -229,14 +229,14 @@ int main(int argc, char *argv[]) } if (ret < 0) - return -1; + return 1; ret = lxc_wait_for_pid_status(pid); if (ret < 0) - return -1; + return 1; if (WIFEXITED(ret)) return WEXITSTATUS(ret); - return -1; + return 1; } diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index a3cd2b7e5..f150c4318 100644 --- a/src/lxc/lxc_cgroup.c +++ b/src/lxc/lxc_cgroup.c @@ -68,32 +68,32 @@ int main(int argc, char *argv[]) struct lxc_container *c; if (lxc_arguments_parse(&my_args, argc, argv)) - return -1; + return 1; if (!my_args.log_file) my_args.log_file = "none"; if (lxc_log_init(my_args.name, my_args.log_file, my_args.log_priority, my_args.progname, my_args.quiet, my_args.lxcpath[0])) - return -1; + return 1; lxc_log_options_no_override(); state_object = my_args.argv[0]; c = lxc_container_new(my_args.name, my_args.lxcpath[0]); if (!c) - return -1; + return 1; if (!c->may_control(c)) { ERROR("Insufficent privileges to control %s:%s", my_args.lxcpath[0], my_args.name); lxc_container_put(c); - return -1; + return 1; } if (!c->is_running(c)) { ERROR("'%s:%s' is not running", my_args.lxcpath[0], my_args.name); lxc_container_put(c); - return -1; + return 1; } if ((my_args.argc) > 1) { @@ -102,7 +102,7 @@ int main(int argc, char *argv[]) ERROR("failed to assign '%s' value to '%s' for '%s'", value, state_object, my_args.name); lxc_container_put(c); - return -1; + return 1; } } else { int len = 4096; @@ -112,7 +112,7 @@ int main(int argc, char *argv[]) ERROR("failed to retrieve value of '%s' for '%s:%s'", state_object, my_args.lxcpath[0], my_args.name); lxc_container_put(c); - return -1; + return 1; } printf("%*s", ret, buffer); } diff --git a/src/lxc/lxc_clone.c b/src/lxc/lxc_clone.c index 05579b84b..df1b5efef 100644 --- a/src/lxc/lxc_clone.c +++ b/src/lxc/lxc_clone.c @@ -176,7 +176,7 @@ int main(int argc, char *argv[]) if (!c1->may_control(c1)) { fprintf(stderr, "Insufficent privileges to control %s\n", orig); lxc_container_put(c1); - return -1; + return 1; } if (!c1->is_defined(c1)) { diff --git a/src/lxc/lxc_config.c b/src/lxc/lxc_config.c index dc8827cdb..0658beb8d 100644 --- a/src/lxc/lxc_config.c +++ b/src/lxc/lxc_config.c @@ -70,5 +70,5 @@ int main(int argc, char *argv[]) } } printf("Unknown configuration item: %s\n", argv[1]); - exit(-1); + exit(1); } diff --git a/src/lxc/lxc_console.c b/src/lxc/lxc_console.c index 0fd08e879..b22322b1e 100644 --- a/src/lxc/lxc_console.c +++ b/src/lxc/lxc_console.c @@ -115,7 +115,7 @@ int main(int argc, char *argv[]) if (!c->may_control(c)) { fprintf(stderr, "Insufficent privileges to control %s\n", my_args.name); lxc_container_put(c); - return -1; + exit(EXIT_FAILURE); } if (!c->is_running(c)) { diff --git a/src/lxc/lxc_destroy.c b/src/lxc/lxc_destroy.c index d8bca345b..955fc23f7 100644 --- a/src/lxc/lxc_destroy.c +++ b/src/lxc/lxc_destroy.c @@ -83,7 +83,7 @@ int main(int argc, char *argv[]) if (!c->may_control(c)) { fprintf(stderr, "Insufficent privileges to control %s\n", my_args.name); lxc_container_put(c); - return -1; + exit(1); } if (!c->is_defined(c)) { @@ -108,5 +108,5 @@ int main(int argc, char *argv[]) } lxc_container_put(c); - return 0; + exit(0); } diff --git a/src/lxc/lxc_execute.c b/src/lxc/lxc_execute.c index 2ba4aeb68..df25df3f8 100644 --- a/src/lxc/lxc_execute.c +++ b/src/lxc/lxc_execute.c @@ -91,18 +91,19 @@ int main(int argc, char *argv[]) { char *rcfile; struct lxc_conf *conf; + int ret; lxc_list_init(&defines); if (lxc_caps_init()) - return -1; + return 1; if (lxc_arguments_parse(&my_args, argc, argv)) - return -1; + return 1; if (lxc_log_init(my_args.name, my_args.log_file, my_args.log_priority, my_args.progname, my_args.quiet, my_args.lxcpath[0])) - return -1; + return 1; lxc_log_options_no_override(); /* rcfile is specified in the cli option */ @@ -114,7 +115,7 @@ int main(int argc, char *argv[]) rc = asprintf(&rcfile, "%s/%s/config", my_args.lxcpath[0], my_args.name); if (rc == -1) { SYSERROR("failed to allocate memory"); - return -1; + return 1; } /* container configuration does not exist */ @@ -127,16 +128,19 @@ int main(int argc, char *argv[]) conf = lxc_conf_init(); if (!conf) { ERROR("failed to initialize configuration"); - return -1; + return 1; } if (rcfile && lxc_config_read(rcfile, conf)) { ERROR("failed to read configuration file"); - return -1; + return 1; } if (lxc_config_define_load(&defines, conf)) - return -1; + return 1; - return lxc_execute(my_args.name, my_args.argv, my_args.quiet, conf, my_args.lxcpath[0]); + ret = lxc_execute(my_args.name, my_args.argv, my_args.quiet, conf, my_args.lxcpath[0]); + if (ret < 0) + return 1; + return ret; } diff --git a/src/lxc/lxc_freeze.c b/src/lxc/lxc_freeze.c index fa64963e2..0744c82ea 100644 --- a/src/lxc/lxc_freeze.c +++ b/src/lxc/lxc_freeze.c @@ -77,7 +77,7 @@ int main(int argc, char *argv[]) if (!c->may_control(c)) { ERROR("Insufficent privileges to control %s:%s", my_args.lxcpath[0], my_args.name); lxc_container_put(c); - return -1; + exit(1); } if (!c->freeze(c)) { @@ -88,5 +88,5 @@ int main(int argc, char *argv[]) lxc_container_put(c); - return 0; + exit(0); } diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c index 91ed08df0..b5596a036 100644 --- a/src/lxc/lxc_init.c +++ b/src/lxc/lxc_init.c @@ -260,5 +260,7 @@ int main(int argc, char *argv[]) } } out: - return err; + if (err < 0) + exit(EXIT_FAILURE); + exit(err); } diff --git a/src/lxc/lxc_monitor.c b/src/lxc/lxc_monitor.c index 7e2299ab2..85993fc2f 100644 --- a/src/lxc/lxc_monitor.c +++ b/src/lxc/lxc_monitor.c @@ -78,14 +78,14 @@ int main(int argc, char *argv[]) int len, rc, i, nfds = -1; if (lxc_arguments_parse(&my_args, argc, argv)) - return -1; + return 1; if (!my_args.log_file) my_args.log_file = "none"; if (lxc_log_init(my_args.name, my_args.log_file, my_args.log_priority, my_args.progname, my_args.quiet, my_args.lxcpath[0])) - return -1; + return 1; lxc_log_options_no_override(); if (quit_monitord) { @@ -114,19 +114,19 @@ int main(int argc, char *argv[]) regexp = malloc(len + 3); if (!regexp) { ERROR("failed to allocate memory"); - return -1; + return 1; } rc = snprintf(regexp, len, "^%s$", my_args.name); if (rc < 0 || rc >= len) { ERROR("Name too long"); free(regexp); - return -1; + return 1; } if (regcomp(&preg, regexp, REG_NOSUB|REG_EXTENDED)) { ERROR("failed to compile the regex '%s'", my_args.name); free(regexp); - return -1; + return 1; } free(regexp); @@ -144,7 +144,7 @@ int main(int argc, char *argv[]) fd = lxc_monitor_open(my_args.lxcpath[i]); if (fd < 0) { regfree(&preg); - return -1; + return 1; } FD_SET(fd, &rfds); if (fd > nfds) @@ -160,7 +160,7 @@ int main(int argc, char *argv[]) if (lxc_monitor_read_fdset(&rfds, nfds, &msg, -1) < 0) { regfree(&preg); - return -1; + return 1; } msg.name[sizeof(msg.name)-1] = '\0'; diff --git a/src/lxc/lxc_monitord.c b/src/lxc/lxc_monitord.c index 6328bf845..c317cbe78 100644 --- a/src/lxc/lxc_monitord.c +++ b/src/lxc/lxc_monitord.c @@ -378,7 +378,7 @@ int main(int argc, char *argv[]) sigdelset(&mask, SIGTERM) || sigprocmask(SIG_BLOCK, &mask, NULL)) { SYSERROR("failed to set signal mask"); - return -1; + return 1; } signal(SIGILL, lxc_monitord_sig_handler); @@ -428,5 +428,7 @@ int main(int argc, char *argv[]) ret = EXIT_SUCCESS; NOTICE("monitor exiting"); out: - return ret; + if (ret == 0) + return 0; + return 1; } diff --git a/src/lxc/lxc_snapshot.c b/src/lxc/lxc_snapshot.c index eba9c307d..1f8fdaf11 100644 --- a/src/lxc/lxc_snapshot.c +++ b/src/lxc/lxc_snapshot.c @@ -179,7 +179,7 @@ int main(int argc, char *argv[]) if (my_args.argc > 1) { ERROR("Too many arguments"); - return -1; + exit(1); } if (my_args.argc == 1) newname = my_args.argv[0]; @@ -205,7 +205,7 @@ int main(int argc, char *argv[]) if (!c->may_control(c)) { fprintf(stderr, "Insufficent privileges to control %s\n", my_args.name); lxc_container_put(c); - return -1; + exit(1); } switch(action) { @@ -225,5 +225,7 @@ int main(int argc, char *argv[]) lxc_container_put(c); - exit(ret); + if (ret == 0) + exit(EXIT_SUCCESS); + exit(EXIT_FAILURE); } diff --git a/src/lxc/lxc_stop.c b/src/lxc/lxc_stop.c index 78a1da2fa..cb2fee089 100644 --- a/src/lxc/lxc_stop.c +++ b/src/lxc/lxc_stop.c @@ -236,5 +236,7 @@ int main(int argc, char *argv[]) out: lxc_container_put(c); + if (ret < 0) + return 1; return ret; } diff --git a/src/lxc/lxc_unfreeze.c b/src/lxc/lxc_unfreeze.c index 737198030..6a40ed74d 100644 --- a/src/lxc/lxc_unfreeze.c +++ b/src/lxc/lxc_unfreeze.c @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) if (!c->may_control(c)) { ERROR("Insufficent privileges to control %s:%s", my_args.lxcpath[0], my_args.name); lxc_container_put(c); - return -1; + exit(1); } if (!c->unfreeze(c)) { @@ -86,5 +86,5 @@ int main(int argc, char *argv[]) lxc_container_put(c); - return 0; + exit(0); } diff --git a/src/lxc/lxc_unshare.c b/src/lxc/lxc_unshare.c index a591d0aa7..fc6f9db13 100644 --- a/src/lxc/lxc_unshare.c +++ b/src/lxc/lxc_unshare.c @@ -211,7 +211,7 @@ int main(int argc, char *argv[]) ret = lxc_caps_init(); if (ret) - return ret; + return 1; ret = lxc_fill_namespace_flags(namespaces, &flags); if (ret) @@ -235,7 +235,7 @@ int main(int argc, char *argv[]) pid = lxc_clone(do_start, &start_arg, flags); if (pid < 0) { ERROR("failed to clone"); - return -1; + return 1; } if (my_iflist) { @@ -250,7 +250,7 @@ int main(int argc, char *argv[]) if (waitpid(pid, &status, 0) < 0) { ERROR("failed to wait for '%d'", pid); - return -1; + return 1; } return lxc_error_set_and_log(pid, status); diff --git a/src/lxc/lxc_usernsexec.c b/src/lxc/lxc_usernsexec.c index f5b7fe06a..732a74a82 100644 --- a/src/lxc/lxc_usernsexec.c +++ b/src/lxc/lxc_usernsexec.c @@ -364,7 +364,7 @@ int main(int argc, char *argv[]) if ((ret = waitpid(pid, &status, __WALL)) < 0) { printf("waitpid() returns %d, errno %d\n", ret, errno); - exit(ret); + exit(1); } exit(WEXITSTATUS(status)); diff --git a/src/lxc/lxc_wait.c b/src/lxc/lxc_wait.c index e1010e290..897d0ea3d 100644 --- a/src/lxc/lxc_wait.c +++ b/src/lxc/lxc_wait.c @@ -84,29 +84,29 @@ int main(int argc, char *argv[]) struct lxc_container *c; if (lxc_arguments_parse(&my_args, argc, argv)) - return -1; + return 1; if (!my_args.log_file) my_args.log_file = "none"; if (lxc_log_init(my_args.name, my_args.log_file, my_args.log_priority, my_args.progname, my_args.quiet, my_args.lxcpath[0])) - return -1; + return 1; lxc_log_options_no_override(); c = lxc_container_new(my_args.name, my_args.lxcpath[0]); if (!c) - return -1; + return 1; if (!c->may_control(c)) { fprintf(stderr, "Insufficent privileges to control %s\n", c->name); lxc_container_put(c); - return -1; + return 1; } if (!c->wait(c, my_args.states, my_args.timeout)) { lxc_container_put(c); - return -1; + return 1; } return 0; }