]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
fix container find the previously created configuration
authorDaniel Lezcano <daniel.lezcano@free.fr>
Tue, 17 Nov 2009 21:57:46 +0000 (22:57 +0100)
committerDaniel Lezcano <dlezcano@fr.ibm.com>
Tue, 17 Nov 2009 21:57:46 +0000 (22:57 +0100)
The command specifies a configuration file => use it
The command does not specify a configuration but the container
was created before, use the configuration.
The command does not specify a configuration and the container
was not created before, use default.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/lxc_execute.c
src/lxc/lxc_start.c

index 58213503f3b1d80cd106c17e0db9b163e3304c85..efc03ebfa3770f69ea5e560d502ed5dc26094c17 100644 (file)
@@ -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);
 }
 
index de78290ff3f4985e8c626bc4bc2664ed1c3bfb97..9e14b8fc76dced41ff86aba268ce8426104ebcde 100644 (file)
  * 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);