summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/gvfsutils.c6
-rw-r--r--common/gvfsutils.h1
-rw-r--r--daemon/gvfsdaemon.c3
-rw-r--r--daemon/main.c6
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);