fix container find the previously created configuration

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>
This commit is contained in:
Daniel Lezcano 2009-11-17 22:57:46 +01:00 committed by Daniel Lezcano
parent a7856c5545
commit 96c210bbbe
2 changed files with 40 additions and 1 deletions

View File

@ -82,6 +82,7 @@ Options :\n\
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
static char **args; static char **args;
char *rcfile;
if (lxc_arguments_parse(&my_args, argc, argv)) if (lxc_arguments_parse(&my_args, argc, argv))
return -1; return -1;
@ -94,6 +95,22 @@ int main(int argc, char *argv[])
if (!args) if (!args)
return -1; 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); return lxc_start(my_args.name, args, my_args.rcfile);
} }

View File

@ -20,8 +20,11 @@
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#define _GNU_SOURCE
#include <stdio.h> #include <stdio.h>
#undef _GNU_SOURCE
#include <libgen.h> #include <libgen.h>
#include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <termios.h> #include <termios.h>
@ -42,6 +45,7 @@
#include <lxc/utils.h> #include <lxc/utils.h>
#include "arguments.h" #include "arguments.h"
#include "config.h"
lxc_log_define(lxc_start, lxc); lxc_log_define(lxc_start, lxc);
@ -127,6 +131,8 @@ int main(int argc, char *argv[])
'\0', '\0',
}; };
char *rcfile = NULL;
if (lxc_arguments_parse(&my_args, argc, argv)) if (lxc_arguments_parse(&my_args, argc, argv))
return err; return err;
@ -139,6 +145,22 @@ int main(int argc, char *argv[])
my_args.progname, my_args.quiet)) my_args.progname, my_args.quiet))
return err; 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) { if (my_args.daemonize) {
/* do not chdir as we want to open the log file, /* do not chdir as we want to open the log file,
@ -167,7 +189,7 @@ int main(int argc, char *argv[])
save_tty(&tios); save_tty(&tios);
err = lxc_start(my_args.name, args, my_args.rcfile); err = lxc_start(my_args.name, args, rcfile);
restore_tty(&tios); restore_tty(&tios);