mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-13 15:47:07 +00:00
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 <serge.hallyn@ubuntu.com> Acked-by: Stéphane Graber <stgraber@ubuntu.com>
This commit is contained in:
parent
8dac6e74c4
commit
13bc2fd237
@ -162,6 +162,41 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Exit value</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>0</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The container was successfully stopped.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>1</term>
|
||||
<listitem>
|
||||
<para>
|
||||
An error occurred while stopping the container.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>2</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The specified container exists but was not running.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<title>Diagnostic</title>
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)) {
|
||||
|
@ -70,5 +70,5 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
printf("Unknown configuration item: %s\n", argv[1]);
|
||||
exit(-1);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -260,5 +260,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
out:
|
||||
return err;
|
||||
if (err < 0)
|
||||
exit(EXIT_FAILURE);
|
||||
exit(err);
|
||||
}
|
||||
|
@ -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';
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -236,5 +236,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
out:
|
||||
lxc_container_put(c);
|
||||
if (ret < 0)
|
||||
return 1;
|
||||
return ret;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user