Skip to content

Commit

Permalink
lxc_init: move main() down
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner authored and stgraber committed Mar 26, 2020
1 parent a8565bb commit 1ef2b5f
Showing 1 changed file with 93 additions and 96 deletions.
189 changes: 93 additions & 96 deletions src/lxc/cmd/lxc_init.c
Expand Up @@ -70,9 +70,6 @@ struct arguments {
int argc;
};

static int arguments_parse(struct arguments *my_args, int argc,
char *const argv[]);

static struct arguments my_args = {
.options = long_options,
.shortopts = short_options
Expand Down Expand Up @@ -191,6 +188,99 @@ static void remove_self(void)
return;
}

__noreturn static void print_usage_exit(const struct option longopts[])

{
fprintf(stderr, "Usage: lxc-init [-n|--name=NAME] [-h|--help] [--usage] [--version]\n\
[-q|--quiet] [-P|--lxcpath=LXCPATH]\n");
exit(EXIT_SUCCESS);
}

__noreturn static void print_version_exit(void)
{
printf("%s\n", LXC_VERSION);
exit(EXIT_SUCCESS);
}

static void print_help(void)
{
fprintf(stderr, "\
Usage: lxc-init --name=NAME -- COMMAND\n\
\n\
lxc-init start a COMMAND as PID 2 inside a container\n\
\n\
Options :\n\
-n, --name=NAME NAME of the container\n\
-q, --quiet Don't produce any output\n\
-P, --lxcpath=PATH Use specified container path\n\
-?, --help Give this help list\n\
--usage Give a short usage message\n\
--version Print the version number\n\
\n\
Mandatory or optional arguments to long options are also mandatory or optional\n\
for any corresponding short options.\n\
\n\
See the lxc-init man page for further information.\n\n");
}

static int arguments_parse(struct arguments *args, int argc,
char *const argv[])
{
for (;;) {
int c;
int index = 0;

c = getopt_long(argc, argv, args->shortopts, args->options, &index);
if (c == -1)
break;
switch (c) {
case 'n':
args->name = optarg;
break;
case 'o':
break;
case 'l':
break;
case 'q':
args->quiet = true;
break;
case 'P':
remove_trailing_slashes(optarg);
args->lxcpath = optarg;
break;
case OPT_USAGE:
print_usage_exit(args->options);
case OPT_VERSION:
print_version_exit();
case '?':
print_help();
exit(EXIT_FAILURE);
case 'h':
print_help();
exit(EXIT_SUCCESS);
}
}

/*
* Reclaim the remaining command arguments
*/
args->argv = &argv[optind];
args->argc = argc - optind;

/* If no lxcpath was given, use default */
if (!args->lxcpath)
args->lxcpath = lxc_global_config_value("lxc.lxcpath");

/* Check the command options */
if (!args->name) {
if (!args->quiet)
fprintf(stderr, "lxc-init: missing container name, use --name option\n");
return -1;
}

return 0;
}

int main(int argc, char *argv[])
{
int i, logfd, ret;
Expand Down Expand Up @@ -426,96 +516,3 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
exit(exit_with);
}

__noreturn static void print_usage_exit(const struct option longopts[])

{
fprintf(stderr, "Usage: lxc-init [-n|--name=NAME] [-h|--help] [--usage] [--version]\n\
[-q|--quiet] [-P|--lxcpath=LXCPATH]\n");
exit(EXIT_SUCCESS);
}

__noreturn static void print_version_exit(void)
{
printf("%s\n", LXC_VERSION);
exit(EXIT_SUCCESS);
}

static void print_help(void)
{
fprintf(stderr, "\
Usage: lxc-init --name=NAME -- COMMAND\n\
\n\
lxc-init start a COMMAND as PID 2 inside a container\n\
\n\
Options :\n\
-n, --name=NAME NAME of the container\n\
-q, --quiet Don't produce any output\n\
-P, --lxcpath=PATH Use specified container path\n\
-?, --help Give this help list\n\
--usage Give a short usage message\n\
--version Print the version number\n\
\n\
Mandatory or optional arguments to long options are also mandatory or optional\n\
for any corresponding short options.\n\
\n\
See the lxc-init man page for further information.\n\n");
}

static int arguments_parse(struct arguments *args, int argc,
char *const argv[])
{
for (;;) {
int c;
int index = 0;

c = getopt_long(argc, argv, args->shortopts, args->options, &index);
if (c == -1)
break;
switch (c) {
case 'n':
args->name = optarg;
break;
case 'o':
break;
case 'l':
break;
case 'q':
args->quiet = true;
break;
case 'P':
remove_trailing_slashes(optarg);
args->lxcpath = optarg;
break;
case OPT_USAGE:
print_usage_exit(args->options);
case OPT_VERSION:
print_version_exit();
case '?':
print_help();
exit(EXIT_FAILURE);
case 'h':
print_help();
exit(EXIT_SUCCESS);
}
}

/*
* Reclaim the remaining command arguments
*/
args->argv = &argv[optind];
args->argc = argc - optind;

/* If no lxcpath was given, use default */
if (!args->lxcpath)
args->lxcpath = lxc_global_config_value("lxc.lxcpath");

/* Check the command options */
if (!args->name) {
if (!args->quiet)
fprintf(stderr, "lxc-init: missing container name, use --name option\n");
return -1;
}

return 0;
}

0 comments on commit 1ef2b5f

Please sign in to comment.