diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-08-25 20:26:51 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-08-25 20:28:31 +0200 |
commit | c1521918b48f45a316f0bd034976809ae0ce4dd8 (patch) | |
tree | c847127580fcdf4079b8e382df7a8679c0c068be /src/nspawn/nspawn.c | |
parent | 33c1c9745ccc478c8eda72f8bae76945487076ae (diff) |
nspawn: make sure --template= and --machine= my be combined
Fixes #1018.
Based on a patch from Seth Jennings.
Diffstat (limited to 'src/nspawn/nspawn.c')
-rw-r--r-- | src/nspawn/nspawn.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index e8a023d023..837947ee28 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -559,9 +559,9 @@ static int parse_argv(int argc, char *argv[]) { break; case 'M': - if (isempty(optarg)) { + if (isempty(optarg)) arg_machine = mfree(arg_machine); - } else { + else { if (!machine_name_is_valid(optarg)) { log_error("Invalid machine name: %s", optarg); return -EINVAL; @@ -4002,6 +4002,17 @@ static int on_orderly_shutdown(sd_event_source *s, const struct signalfd_siginfo static int determine_names(void) { int r; + if (arg_template && !arg_directory && arg_machine) { + + /* If --template= was specified then we should not + * search for a machine, but instead create a new one + * in /var/lib/machine. */ + + arg_directory = strjoin("/var/lib/machines/", arg_machine, NULL); + if (!arg_directory) + return log_oom(); + } + if (!arg_image && !arg_directory) { if (arg_machine) { _cleanup_(image_unrefp) Image *i = NULL; |