aboutsummaryrefslogtreecommitdiff
path: root/qga
diff options
context:
space:
mode:
Diffstat (limited to 'qga')
-rw-r--r--qga/main.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/qga/main.c b/qga/main.c
index 3febf3b0fd..740f5f7303 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -29,6 +29,7 @@
#include "qapi/error.h"
#include "channel.h"
#include "qemu/bswap.h"
+#include "qemu/cutils.h"
#include "qemu/help_option.h"
#include "qemu/sockets.h"
#include "qemu/systemd.h"
@@ -968,7 +969,7 @@ static void config_load(GAConfig *config)
{
GError *gerr = NULL;
GKeyFile *keyfile;
- const char *conf = g_getenv("QGA_CONF") ?: QGA_CONF_DEFAULT;
+ g_autofree char *conf = g_strdup(g_getenv("QGA_CONF")) ?: get_relocated_path(QGA_CONF_DEFAULT);
/* read system config */
keyfile = g_key_file_new();
@@ -1027,7 +1028,7 @@ end:
if (gerr &&
!(gerr->domain == G_FILE_ERROR && gerr->code == G_FILE_ERROR_NOENT)) {
g_critical("error loading configuration from path: %s, %s",
- QGA_CONF_DEFAULT, gerr->message);
+ conf, gerr->message);
exit(EXIT_FAILURE);
}
g_clear_error(&gerr);
@@ -1141,7 +1142,7 @@ static void config_parse(GAConfig *config, int argc, char **argv)
#ifdef CONFIG_FSFREEZE
case 'F':
g_free(config->fsfreeze_hook);
- config->fsfreeze_hook = g_strdup(optarg ?: QGA_FSFREEZE_HOOK_DEFAULT);
+ config->fsfreeze_hook = optarg ? g_strdup(optarg) : get_relocated_path(QGA_FSFREEZE_HOOK_DEFAULT);
break;
#endif
case 't':
@@ -1463,6 +1464,7 @@ int main(int argc, char **argv)
config->log_level = G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL;
+ qemu_init_exec_dir(argv[0]);
qga_qmp_init_marshal(&ga_commands);
init_dfl_pathnames();