util: replace qemu_get_local_state_pathname()

Simplify the function to only return the directory path. Callers are
adjusted to use the GLib function to build paths, g_build_filename().

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20220420132624.2439741-39-marcandre.lureau@redhat.com>
This commit is contained in:
Marc-André Lureau 2022-04-20 17:26:21 +04:00
parent 1b34d08f0b
commit 1fbf2665e6
6 changed files with 18 additions and 21 deletions

View File

@ -556,16 +556,13 @@ void qemu_set_cloexec(int fd);
void fips_set_state(bool requested); void fips_set_state(bool requested);
bool fips_get_state(void); bool fips_get_state(void);
/* Return a dynamically allocated pathname denoting a file or directory that is /* Return a dynamically allocated directory path that is appropriate for storing
* appropriate for storing local state. * local state.
*
* @relative_pathname need not start with a directory separator; one will be
* added automatically.
* *
* The caller is responsible for releasing the value returned with g_free() * The caller is responsible for releasing the value returned with g_free()
* after use. * after use.
*/ */
char *qemu_get_local_state_pathname(const char *relative_pathname); char *qemu_get_local_state_dir(void);
/* Find program directory, and save it for later usage with /* Find program directory, and save it for later usage with
* qemu_get_exec_dir(). * qemu_get_exec_dir().

View File

@ -129,12 +129,12 @@ static void stop_agent(GAState *s, bool requested);
static void static void
init_dfl_pathnames(void) init_dfl_pathnames(void)
{ {
g_autofree char *state = qemu_get_local_state_dir();
g_assert(dfl_pathnames.state_dir == NULL); g_assert(dfl_pathnames.state_dir == NULL);
g_assert(dfl_pathnames.pidfile == NULL); g_assert(dfl_pathnames.pidfile == NULL);
dfl_pathnames.state_dir = qemu_get_local_state_pathname( dfl_pathnames.state_dir = g_build_filename(state, QGA_STATE_RELATIVE_DIR, NULL);
QGA_STATE_RELATIVE_DIR); dfl_pathnames.pidfile = g_build_filename(state, QGA_STATE_RELATIVE_DIR, "qemu-ga.pid", NULL);
dfl_pathnames.pidfile = qemu_get_local_state_pathname(
QGA_STATE_RELATIVE_DIR G_DIR_SEPARATOR_S "qemu-ga.pid");
} }
static void quit_handler(int sig) static void quit_handler(int sig)

View File

@ -77,8 +77,10 @@ static int gid = -1;
static void compute_default_paths(void) static void compute_default_paths(void)
{ {
socket_path = qemu_get_local_state_pathname("run/qemu-pr-helper.sock"); g_autofree char *state = qemu_get_local_state_dir();
pidfile = qemu_get_local_state_pathname("run/qemu-pr-helper.pid");
socket_path = g_build_filename(state, "run", "qemu-pr-helper.sock", NULL);
pidfile = g_build_filename(state, "run", "qemu-pr-helper.pid", NULL);
} }
static void usage(const char *name) static void usage(const char *name)

View File

@ -901,10 +901,12 @@ static bool fv_socket_lock(struct fuse_session *se)
{ {
g_autofree gchar *sk_name = NULL; g_autofree gchar *sk_name = NULL;
g_autofree gchar *pidfile = NULL; g_autofree gchar *pidfile = NULL;
g_autofree gchar *state = NULL;
g_autofree gchar *dir = NULL; g_autofree gchar *dir = NULL;
Error *local_err = NULL; Error *local_err = NULL;
dir = qemu_get_local_state_pathname("run/virtiofsd"); state = qemu_get_local_state_dir();
dir = g_build_filename(state, "run", "virtiofsd", NULL);
if (g_mkdir_with_parents(dir, S_IRWXU) < 0) { if (g_mkdir_with_parents(dir, S_IRWXU) < 0) {
fuse_log(FUSE_LOG_ERR, "%s: Failed to create directory %s: %s\n", fuse_log(FUSE_LOG_ERR, "%s: Failed to create directory %s: %s\n",

View File

@ -297,12 +297,9 @@ int qemu_pipe(int pipefd[2])
} }
char * char *
qemu_get_local_state_pathname(const char *relative_pathname) qemu_get_local_state_dir(void)
{ {
g_autofree char *dir = g_strdup_printf("%s/%s", return get_relocated_path(CONFIG_QEMU_LOCALSTATEDIR);
CONFIG_QEMU_LOCALSTATEDIR,
relative_pathname);
return get_relocated_path(dir);
} }
void qemu_set_tty_echo(int fd, bool echo) void qemu_set_tty_echo(int fd, bool echo)

View File

@ -235,7 +235,7 @@ int qemu_get_thread_id(void)
} }
char * char *
qemu_get_local_state_pathname(const char *relative_pathname) qemu_get_local_state_dir(void)
{ {
HRESULT result; HRESULT result;
char base_path[MAX_PATH+1] = ""; char base_path[MAX_PATH+1] = "";
@ -247,8 +247,7 @@ qemu_get_local_state_pathname(const char *relative_pathname)
g_critical("CSIDL_COMMON_APPDATA unavailable: %ld", (long)result); g_critical("CSIDL_COMMON_APPDATA unavailable: %ld", (long)result);
abort(); abort();
} }
return g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", base_path, return g_strdup(base_path);
relative_pathname);
} }
void qemu_set_tty_echo(int fd, bool echo) void qemu_set_tty_echo(int fd, bool echo)