diff options
-rw-r--r-- | common/gvfsutils.c | 6 | ||||
-rw-r--r-- | common/gvfsutils.h | 1 | ||||
-rw-r--r-- | daemon/gvfsdaemon.c | 3 | ||||
-rw-r--r-- | daemon/main.c | 6 |
4 files changed, 14 insertions, 2 deletions
diff --git a/common/gvfsutils.c b/common/gvfsutils.c index 8e175d8c..bf6ed508 100644 --- a/common/gvfsutils.c +++ b/common/gvfsutils.c @@ -136,3 +136,9 @@ gvfs_is_ipv6 (const char *host) return TRUE; } + +gchar * +gvfs_get_socket_dir (void) +{ + return g_build_filename (g_get_user_runtime_dir (), "gvfsd", NULL); +} diff --git a/common/gvfsutils.h b/common/gvfsutils.h index acaea9d2..091b44df 100644 --- a/common/gvfsutils.h +++ b/common/gvfsutils.h @@ -31,6 +31,7 @@ void gvfs_set_debug (gboolean debugging void gvfs_setup_debug_handler (void); gboolean gvfs_is_ipv6 (const char *host); +gchar * gvfs_get_socket_dir (void); G_END_DECLS diff --git a/daemon/gvfsdaemon.c b/daemon/gvfsdaemon.c index 8e4fb868..b29bba13 100644 --- a/daemon/gvfsdaemon.c +++ b/daemon/gvfsdaemon.c @@ -745,8 +745,7 @@ generate_address (gchar **address, gchar **socket_path) gvfs_randomize_string (tmp + 7, 8); tmp[15] = '\0'; - socket_dir = g_build_filename (g_get_user_runtime_dir (), "gvfsd", NULL); - g_mkdir (socket_dir, 0700); + socket_dir = gvfs_get_socket_dir (); *socket_path = g_build_filename (socket_dir, tmp, NULL); *address = g_strdup_printf ("unix:path=%s", *socket_path); diff --git a/daemon/main.c b/daemon/main.c index d145c5f8..ff1c522b 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -143,6 +143,7 @@ main (int argc, char *argv[]) guint name_owner_id; GBusNameOwnerFlags flags; GOptionContext *context; + gchar *socket_dir; const GOptionEntry options[] = { { "replace", 'r', 0, G_OPTION_ARG_NONE, &replace, N_("Replace old daemon."), NULL }, { "no-fuse", 0, 0, G_OPTION_ARG_NONE, &no_fuse, N_("Don’t start fuse."), NULL }, @@ -212,6 +213,11 @@ main (int argc, char *argv[]) if (daemon == NULL) return 1; + /* This is needed for gvfsd-admin to ensure correct ownership. */ + socket_dir = gvfs_get_socket_dir (); + g_mkdir (socket_dir, 0700); + g_free (socket_dir); + g_signal_connect (daemon, "shutdown", G_CALLBACK (daemon_shutdown), loop); |