--- GConf-1.0.9/gconf/gconf-internals.c.locallock 2003-10-15 14:47:31.000000000 +0200 +++ GConf-1.0.9/gconf/gconf-internals.c 2003-10-28 15:40:15.000000000 +0100 @@ -2957,10 +2957,53 @@ } } +enum { UNKNOWN, LOCAL, NORMAL }; + + +static gboolean +gconf_use_local_locks (void) +{ + static int local_locks = UNKNOWN; + + if (local_locks == UNKNOWN) + { + const char *l = + g_getenv ("GCONF_GLOBAL_LOCKS"); + + if (l && atoi (l) == 1) + local_locks = NORMAL; + else + local_locks = LOCAL; + } + + return local_locks == LOCAL; +} + char* gconf_get_daemon_dir (void) { - return g_strconcat (g_get_home_dir (), "/.gconfd", NULL); + if (gconf_use_local_locks ()) + { + char *s; + char *subdir; + char *tmpdir; + + subdir = g_strconcat ("gconfd-", g_get_user_name (), NULL); + + if (g_getenv ("GCONF_TMPDIR")) { + tmpdir = g_getenv ("GCONF_TMPDIR"); + } else { + tmpdir = g_get_tmp_dir (); + } + + s = g_strconcat (tmpdir,"/", subdir, NULL); + + g_free (subdir); + + return s; + } + else + return g_strconcat (g_get_home_dir (), "/.gconfd", NULL); } char*