Commit 9618063c by Michel Normand Committed by Daniel Lezcano

add long options step2

add the long options to lxc-start with a small change in lxc_start proto to avoid compilation warning Signed-off-by: 's avatarMichel Normand <normand@fr.ibm.com> Signed-off-by: 's avatarDaniel Lezcano <dlezcano@fr.ibm.com>
parent cda02a28
......@@ -72,7 +72,7 @@ extern int lxc_destroy(const char *name);
* @argv : an array of char * corresponding to the commande line
* Returns 0 on sucess, < 0 otherwise
*/
extern int lxc_start(const char *name, char *argv[]);
extern int lxc_start(const char *name, char *const argv[]);
/*
* Stop the container previously started with lxc_start, all
......
......@@ -36,63 +36,50 @@
#include <lxc/lxc.h>
#include <lxc/log.h>
#include "arguments.h"
lxc_log_define(lxc_start, lxc);
void usage(char *cmd)
{
fprintf(stderr, "%s <command>\n", basename(cmd));
fprintf(stderr, "\t -n <name> : name of the container\n");
fprintf(stderr, "\t[-o <logfile>] : path of the log file\n");
fprintf(stderr, "\t[-l <logpriority>]: log level priority\n");
fprintf(stderr, "\t[-q ] : be quiet\n");
_exit(1);
}
static const struct option my_longopts[] = {
LXC_COMMON_OPTIONS
};
static struct lxc_arguments my_args = {
.progname = "lxc-start",
.help = "\
--name=NAME -- COMMAND\n\
\n\
lxc-start start COMMAND in specified container NAME\n\
\n\
Options :\n\
-n, --name=NAME NAME for name of the container",
.options = my_longopts,
.parser = NULL,
.checker = NULL,
};
int main(int argc, char *argv[])
{
char *name = NULL;
const char *log_file = NULL, *log_priority = NULL;
char **args;
int opt, err = LXC_ERROR_INTERNAL, nbargs = 0;
int quiet = 0;
char *const *args;
int err;
struct termios tios;
char *default_args[] = {
char *const default_args[] = {
"/sbin/init",
'\0',
};
while ((opt = getopt(argc, argv, "n:o:l:")) != -1) {
switch (opt) {
case 'n':
name = optarg;
break;
case 'o':
log_file = optarg;
break;
case 'l':
log_priority = optarg;
break;
case 'q':
quiet = 1;
break;
}
nbargs++;
}
err = lxc_arguments_parse(&my_args, argc, argv);
if (err)
return 1;
if (!argv[optind] || !strlen(argv[optind]))
if (!my_args.argc)
args = default_args;
else {
args = &argv[optind];
argc -= nbargs;
}
if (!name)
usage(argv[0]);
else
args = my_args.argv;
if (lxc_log_init(log_file, log_priority, basename(argv[0]), quiet))
if (lxc_log_init(my_args.log_file, my_args.log_priority,
my_args.progname, my_args.quiet))
return 1;
if (tcgetattr(0, &tios)) {
......@@ -101,9 +88,9 @@ int main(int argc, char *argv[])
return 1;
}
err = lxc_start(name, args);
err = lxc_start(my_args.name, args);
if (err) {
ERROR("failed to start '%s'", name);
ERROR("failed to start '%s'", my_args.name);
err = 1;
}
......
......@@ -410,7 +410,7 @@ void lxc_abort(const char *name, struct lxc_handler *handler)
kill(handler->pid, SIGKILL);
}
int lxc_spawn(const char *name, struct lxc_handler *handler, char *argv[])
int lxc_spawn(const char *name, struct lxc_handler *handler, char *const argv[])
{
int sv[2];
int clone_flags;
......@@ -539,7 +539,7 @@ out_abort:
goto out_close;
}
int lxc_start(const char *name, char *argv[])
int lxc_start(const char *name, char *const argv[])
{
struct lxc_handler handler = { 0 };
int err = -LXC_ERROR_INTERNAL;
......
......@@ -32,7 +32,7 @@ struct lxc_handler {
extern int lxc_init(const char *name, struct lxc_handler *handler);
extern int lxc_spawn(const char *name, struct lxc_handler *handler,
char *argv[]);
char *const argv[]);
extern int lxc_poll(const char *name, struct lxc_handler *handler);
extern void lxc_abort(const char *name, struct lxc_handler *handler);
......
Markdown is supported
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