/**
- * virCommandToString:
+ * virCommandToStringFull:
* @cmd: the command to convert
* @linebreaks: true to break line after each env var or option
+ * @stripCommandPath: strip the path leading to the binary of @cmd
*
* Call after adding all arguments and environment settings, but
* before Run/RunAsync, to return a string representation of the
* Caller is responsible for freeing the resulting string.
*/
char *
-virCommandToString(virCommandPtr cmd, bool linebreaks)
+virCommandToStringFull(virCommandPtr cmd,
+ bool linebreaks,
+ bool stripCommandPath)
{
size_t i;
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
bool prevopt = false;
+ const char *command = cmd->args[0];
+ g_autofree char *basename = NULL;
/* Cannot assume virCommandRun will be called; so report the error
* now. If virCommandRun is called, it will report the same error. */
if (linebreaks)
virBufferAddLit(&buf, "\\\n");
}
- virBufferEscapeShell(&buf, cmd->args[0]);
+
+ if (stripCommandPath)
+ command = basename = g_path_get_basename(command);
+
+ virBufferEscapeShell(&buf, command);
for (i = 1; i < cmd->nargs; i++) {
virBufferAddChar(&buf, ' ');
if (linebreaks) {
}
+char *
+virCommandToString(virCommandPtr cmd,
+ bool linebreaks)
+{
+ return virCommandToStringFull(cmd, linebreaks, false);
+}
+
+
int
virCommandGetArgList(virCommandPtr cmd,
char ***args,
int logfd);
char *virCommandToString(virCommandPtr cmd, bool linebreaks) G_GNUC_WARN_UNUSED_RESULT;
+char *virCommandToStringFull(virCommandPtr cmd,
+ bool linebreaks,
+ bool stripCommandPath);
+
int virCommandGetArgList(virCommandPtr cmd, char ***args, size_t *nargs);
int virCommandExec(virCommandPtr cmd, gid_t *groups, int ngroups) G_GNUC_WARN_UNUSED_RESULT;