From: Cedric Le Goater Date: Thu, 14 Jan 2010 06:43:18 +0000 (+0100) Subject: lxc: add --define to start X-Git-Tag: lxc-0.6.5~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33ba4ad795db91deccc5b79dcb3d6b035ff7d642;p=thirdparty%2Flxc.git lxc: add --define to start Signed-off-by: Cedric Le Goater Signed-off-by: Daniel Lezcano --- diff --git a/doc/lxc-start.sgml.in b/doc/lxc-start.sgml.in index 827b58999..5bb34cdb3 100644 --- a/doc/lxc-start.sgml.in +++ b/doc/lxc-start.sgml.in @@ -49,7 +49,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA lxc-start -n name -f - config_file command + config_file -s KEY=VAL + command @@ -105,6 +106,19 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + + + + + Assign value VAL to configuration + variable KEY. This overrides any + assignment done in config_file. + + + + diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c index 9cde900aa..7a9c13c98 100644 --- a/src/lxc/lxc_start.c +++ b/src/lxc/lxc_start.c @@ -50,11 +50,14 @@ lxc_log_define(lxc_start_ui, lxc_start); +static struct lxc_list defines; + static int my_parser(struct lxc_arguments* args, int c, char* arg) { switch (c) { case 'd': args->daemonize = 1; break; case 'f': args->rcfile = arg; break; + case 's': return lxc_config_define_add(&defines, arg); } return 0; } @@ -62,6 +65,7 @@ static int my_parser(struct lxc_arguments* args, int c, char* arg) static const struct option my_longopts[] = { {"daemon", no_argument, 0, 'd'}, {"rcfile", required_argument, 0, 'f'}, + {"define", required_argument, 0, 's'}, LXC_COMMON_OPTIONS }; @@ -75,7 +79,8 @@ lxc-start start COMMAND in specified container NAME\n\ Options :\n\ -n, --name=NAME NAME for name of the container\n\ -d, --daemon daemonize the container\n\ - -f, --rcfile=FILE Load configuration file FILE\n", + -f, --rcfile=FILE Load configuration file FILE\n\ + -s, --define KEY=VAL Assign VAL to configuration variable KEY\n", .options = my_longopts, .parser = my_parser, .checker = NULL, @@ -135,6 +140,8 @@ int main(int argc, char *argv[]) char *rcfile = NULL; struct lxc_conf *conf; + lxc_list_init(&defines); + if (lxc_arguments_parse(&my_args, argc, argv)) return err; @@ -174,6 +181,9 @@ int main(int argc, char *argv[]) return err; } + if (lxc_config_define_load(&defines, conf)) + return err; + if (!rcfile && !strcmp("/sbin/init", args[0])) { ERROR("no configuration file for '/sbin/init' (may crash the host)"); return err;