From: Lennart Poettering Date: Fri, 25 Nov 2016 00:00:31 +0000 (+0100) Subject: nspawn: accept --ephemeral --template= as alternative for --ephemeral --directory= X-Git-Tag: v233~368^2~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8cd328d82e800fc6e2fe810500eea025ffbd93c1;p=thirdparty%2Fsystemd.git nspawn: accept --ephemeral --template= as alternative for --ephemeral --directory= As suggested in PR #3667. This PR simply ensures that --template= can be used as alternative to --directory= when --ephemeral is used, following the logic that for ephemeral options the source directory is actually a template. This does not deprecate usage of --directory= with --ephemeral, as I am not convinced the old logic wouldn't make sense. Fixes: #3667 --- diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 7749a460eba..624c4f6a40d 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1133,6 +1133,16 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } + if (arg_ephemeral && arg_template && !arg_directory) { + /* User asked for ephemeral execution but specified --template= instead of --directory=. Semantically + * such an invocation makes some sense, see https://github.com/systemd/systemd/issues/3667. Let's + * accept this here, and silently make "--ephemeral --template=" equivalent to "--ephemeral + * --directory=". */ + + arg_directory = arg_template; + arg_template = NULL; + } + if (arg_template && !(arg_directory || arg_machine)) { log_error("--template= needs --directory= or --machine=."); return -EINVAL;