Write user-dirs.dirs under app's XDG_CONFIG_HOME

Creating the custom user-dirs.dirs under ~/.config won't work since
later the config directory gets set via XDG_CONFIG_HOME. Pass in the
app's data directory so that the the custom config directory can be
used.

https://bugs.freedesktop.org/show_bug.cgi?id=91164
This commit is contained in:
Dan Nicholson
2015-06-29 16:15:21 -07:00
committed by Alexander Larsson
parent 163b582a72
commit ecf8ecf088
4 changed files with 9 additions and 6 deletions

View File

@@ -155,7 +155,7 @@ xdg_app_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
xdg_app_context_allow_host_fs (app_context);
xdg_app_run_add_environment_args (argv_array, NULL, app_id,
app_context);
app_context, NULL);
g_ptr_array_add (argv_array, g_strdup ("-a"));
g_ptr_array_add (argv_array, g_file_get_path (app_files));

View File

@@ -301,7 +301,7 @@ xdg_app_builtin_run (int argc, char **argv, GCancellable *cancellable, GError **
g_ptr_array_add (argv_array, g_strdup ("-r"));
xdg_app_run_add_environment_args (argv_array, dbus_proxy_argv,
app, app_context);
app, app_context, app_id_dir);
g_ptr_array_add (argv_array, g_strdup ("-b"));
g_ptr_array_add (argv_array, g_strdup_printf ("/run/host/fonts=%s", SYSTEM_FONTS_DIR));

View File

@@ -1066,7 +1066,8 @@ void
xdg_app_run_add_environment_args (GPtrArray *argv_array,
GPtrArray *dbus_proxy_argv,
const char *app_id,
XdgAppContext *context)
XdgAppContext *context,
GFile *app_id_dir)
{
GHashTableIter iter;
gpointer key;
@@ -1198,7 +1199,7 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array,
g_warning ("Unexpected filesystem arg %s\n", filesystem);
}
if (xdg_dirs_conf != NULL)
if (xdg_dirs_conf != NULL && app_id_dir != NULL)
{
g_autofree char *tmp_path = NULL;
g_autofree char *path = NULL;
@@ -1210,7 +1211,8 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array,
close (fd);
if (g_file_set_contents (tmp_path, xdg_dirs_conf->str, xdg_dirs_conf->len, NULL))
{
path = g_build_filename (g_get_home_dir (), ".config/user-dirs.dirs", NULL);
path = g_build_filename (gs_file_get_path_cached (app_id_dir),
"config/user-dirs.dirs", NULL);
g_ptr_array_add (argv_array, g_strdup ("-M"));
g_ptr_array_add (argv_array, g_strdup_printf ("%s=%s", path, tmp_path));
}

View File

@@ -53,7 +53,8 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppContext, xdg_app_context_free)
void xdg_app_run_add_environment_args (GPtrArray *argv_array,
GPtrArray *dbus_proxy_argv,
const char *app_id,
XdgAppContext *context);
XdgAppContext *context,
GFile *app_id_dir);
char ** xdg_app_run_get_minimal_env (gboolean devel);
char ** xdg_app_run_apply_env_default (char **envp);
char ** xdg_app_run_apply_env_appid (char **envp,