Currently the shell config file parameter must be a list
giving the shell path and args. Allow it to be a plain
string argument as well.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
tools/virt-login-shell.c | 5 +++++
tools/virt-login-shell.conf | 12 ++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/tools/virt-login-shell.c b/tools/virt-login-shell.c
index 1ca58ee..ed89ecf 100644
--- a/tools/virt-login-shell.c
+++ b/tools/virt-login-shell.c
@@ -121,6 +121,8 @@ static int virLoginShellGetShellArgv(virConfPtr conf,
goto error;
}
}
+ } else if (p->type == VIR_CONF_STRING) {
+ len = 1; /* /path/to/shell */
} else {
virReportSystemError(EINVAL, "%s",
_("shell must be a list of strings"));
@@ -141,6 +143,9 @@ static int virLoginShellGetShellArgv(virConfPtr conf,
if (VIR_STRDUP(shargv[i++], pp->str) < 0)
goto error;
}
+ } else if (p->type == VIR_CONF_STRING) {
+ if (VIR_STRDUP(shargv[i++], p->str) < 0)
+ goto error;
}
shargv[i] = NULL;
diff --git a/tools/virt-login-shell.conf b/tools/virt-login-shell.conf
index 67ca1cc..e29d222 100644
--- a/tools/virt-login-shell.conf
+++ b/tools/virt-login-shell.conf
@@ -5,11 +5,15 @@
# By default, virt-login-shell will connect you to a container running
# with the /bin/sh program. Modify the shell variable if you want your
# users to run a different shell or a setup container when joining a
-# container. Shell commands must be a list of commands/options separated by
-# comma and delimited by square brackets. Defaults to: /bin/sh -l.
-# Modify and uncomment the following to modify the login shell.
+# container.
#
-# shell = [ "/bin/bash" ]
+# This can either be just the path to a shell binary:
+#
+# shell = "/bin/bash"
+#
+# Or can be the path and extra arguments
+#
+# shell = [ "/bin/bash", "--posix" ]
#
# Note there is no need to pass a '--login' / '-l' argument since
# virt-login-shell will always request a login shell
--
2.5.5