summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2010-07-17 12:42:44 -0400
committerRyan Lortie <desrt@desrt.ca>2010-07-17 12:42:44 -0400
commitd03bd6b443a6b98430eed983cb1996bebb302d9e (patch)
treead040268acec58c8bd123931bffa17158d259157 /service
parentbece1f7488e07c2d3f2c9b978ef0065a3ab1413f (diff)
downloaddconf-d03bd6b443a6b98430eed983cb1996bebb302d9e.tar.gz
on NFS create a temp dir for the shm file
dconf should be vaguely NFS-safe now
Diffstat (limited to 'service')
-rw-r--r--service/dconf-writer.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/service/dconf-writer.c b/service/dconf-writer.c
index 7f7ff7f..03a2975 100644
--- a/service/dconf-writer.c
+++ b/service/dconf-writer.c
@@ -3,6 +3,7 @@
#include "dconf-shmdir.h"
#include "dconf-rebuilder.h"
+#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
@@ -119,7 +120,6 @@ void
dconf_writer_init (void)
{
const gchar *config_dir = g_get_user_config_dir ();
- const gchar *cache_dir = g_get_user_cache_dir ();
dconf_writer_db_dir = g_build_filename (config_dir, "dconf", NULL);
@@ -163,10 +163,12 @@ dconf_writer_init (void)
if (dconf_writer_shm_dir == NULL)
{
- dconf_writer_shm_dir = g_build_filename (cache_dir, "dconf", NULL);
+ const gchar *tmpdir = g_get_tmp_dir ();
+ gchar *shmdir;
- if (g_mkdir_with_parents (dconf_writer_shm_dir, 0700))
- g_error ("Can not create directory '%s': %s",
- dconf_writer_shm_dir, g_strerror (errno));
+ shmdir = g_build_filename (tmpdir, "dconf.XXXXXX", NULL);
+
+ if ((dconf_writer_shm_dir = mkdtemp (shmdir)) == NULL)
+ g_error ("Can not create reasonable shm directory");
}
}