From 2d69af29073aa3dc2dc5b79afcecaa703b81125a Mon Sep 17 00:00:00 2001 From: Erik Skultety Date: Mon, 4 Mar 2019 12:47:08 +0100 Subject: [PATCH] util: command: Introduce virCommandAddEnvXDG helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some modules/libraries within QEMU could make use of the XDG_ vars when writing their data to the disk. Define the most common XDG variables and point them to the specific driver's libDir, i.e. XDG_CACHE_HOME -> /var/lib/libvirt//.cache XDG_DATA_HOME -> /var/lib/libvirt//.local/share XDG_CONFIG_HOME -> /var/lib/libvirt//.config Signed-off-by: Erik Skultety Reviewed-by: Daniel P. Berrangé --- src/libvirt_private.syms | 1 + src/util/vircommand.c | 21 +++++++++++++++++++++ src/util/vircommand.h | 2 ++ 3 files changed, 24 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 9582b72262..8eab842c7d 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1635,6 +1635,7 @@ virCommandAddEnvPassAllowSUID; virCommandAddEnvPassBlockSUID; virCommandAddEnvPassCommon; virCommandAddEnvString; +virCommandAddEnvXDG; virCommandAllowCap; virCommandClearCaps; virCommandDaemonize; diff --git a/src/util/vircommand.c b/src/util/vircommand.c index 84a65a2f6d..15e2f0ef1e 100644 --- a/src/util/vircommand.c +++ b/src/util/vircommand.c @@ -1483,6 +1483,27 @@ virCommandAddEnvPassCommon(virCommandPtr cmd) virCommandAddEnvPassBlockSUID(cmd, "TMPDIR", NULL); } + +void +virCommandAddEnvXDG(virCommandPtr cmd, const char *baseDir) +{ + if (!cmd || cmd->has_error) + return; + + if (VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 3) < 0) { + cmd->has_error = ENOMEM; + return; + } + + virCommandAddEnvFormat(cmd, "XDG_DATA_HOME=%s/%s", + baseDir, ".local/share"); + virCommandAddEnvFormat(cmd, "XDG_CACHE_HOME=%s/%s", + baseDir, ".cache"); + virCommandAddEnvFormat(cmd, "XDG_CONFIG_HOME=%s/%s", + baseDir, ".config"); +} + + /** * virCommandAddArg: * @cmd: the command to modify diff --git a/src/util/vircommand.h b/src/util/vircommand.h index 99849051f8..efdc5dd00d 100644 --- a/src/util/vircommand.h +++ b/src/util/vircommand.h @@ -122,6 +122,8 @@ void virCommandAddEnvPassAllowSUID(virCommandPtr cmd, void virCommandAddEnvPassCommon(virCommandPtr cmd); +void virCommandAddEnvXDG(virCommandPtr cmd, const char *baseDir); + void virCommandAddArg(virCommandPtr cmd, const char *val) ATTRIBUTE_NONNULL(2);