diff options
-rw-r--r-- | src/lxc/lxc_execute.c | 17 | ||||
-rw-r--r-- | src/lxc/lxc_start.c | 24 |
2 files changed, 40 insertions, 1 deletions
diff --git a/src/lxc/lxc_execute.c b/src/lxc/lxc_execute.c index 5821350..efc03eb 100644 --- a/src/lxc/lxc_execute.c +++ b/src/lxc/lxc_execute.c @@ -82,6 +82,7 @@ Options :\n\ int main(int argc, char *argv[]) { static char **args; + char *rcfile; if (lxc_arguments_parse(&my_args, argc, argv)) return -1; @@ -94,6 +95,22 @@ int main(int argc, char *argv[]) if (!args) return -1; + /* rcfile is specified in the cli option */ + if (my_args.rcfile) + rcfile = (char *)my_args.rcfile; + else { + if (!asprintf(&rcfile, LXCPATH "/%s", my_args.name)) { + SYSERROR("failed to allocate memory"); + return -1; + } + + /* container configuration does not exist */ + if (access(rcfile, F_OK)) { + free(rcfile); + rcfile = NULL; + } + } + return lxc_start(my_args.name, args, my_args.rcfile); } diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c index de78290..9e14b8f 100644 --- a/src/lxc/lxc_start.c +++ b/src/lxc/lxc_start.c @@ -20,8 +20,11 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#define _GNU_SOURCE #include <stdio.h> +#undef _GNU_SOURCE #include <libgen.h> +#include <stdlib.h> #include <unistd.h> #include <string.h> #include <termios.h> @@ -42,6 +45,7 @@ #include <lxc/utils.h> #include "arguments.h" +#include "config.h" lxc_log_define(lxc_start, lxc); @@ -127,6 +131,8 @@ int main(int argc, char *argv[]) '\0', }; + char *rcfile = NULL; + if (lxc_arguments_parse(&my_args, argc, argv)) return err; @@ -139,6 +145,22 @@ int main(int argc, char *argv[]) my_args.progname, my_args.quiet)) return err; + /* rcfile is specified in the cli option */ + if (my_args.rcfile) + rcfile = (char *)my_args.rcfile; + else { + if (!asprintf(&rcfile, LXCPATH "/%s", my_args.name)) { + SYSERROR("failed to allocate memory"); + return err; + } + + /* container configuration does not exist */ + if (access(rcfile, F_OK)) { + free(rcfile); + rcfile = NULL; + } + } + if (my_args.daemonize) { /* do not chdir as we want to open the log file, @@ -167,7 +189,7 @@ int main(int argc, char *argv[]) save_tty(&tios); - err = lxc_start(my_args.name, args, my_args.rcfile); + err = lxc_start(my_args.name, args, rcfile); restore_tty(&tios); |