gnome-control-center r8509 - trunk/capplets/display



Author: jensg
Date: Tue Feb 19 20:01:13 2008
New Revision: 8509
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8509&view=rev

Log:
2008-02-19  Jens Granseuer  <jensgr gmx net>

	* main.c: (create_dialog), (save_to_gconf): escape strange hostnames
	that we want to use as GConf keys (see bug #517259 for a similar issue
	in gnome-settings-daemon)


Modified:
   trunk/capplets/display/ChangeLog
   trunk/capplets/display/main.c

Modified: trunk/capplets/display/main.c
==============================================================================
--- trunk/capplets/display/main.c	(original)
+++ trunk/capplets/display/main.c	Tue Feb 19 20:01:13 2008
@@ -588,6 +588,7 @@
   char *resolution;
   char *str;
   char hostname[HOST_NAME_MAX + 1];
+  char *host_escaped;
 
   dialog = gtk_dialog_new_with_buttons (_("Screen Resolution Preferences"),
 					NULL,
@@ -630,7 +631,10 @@
       /* If we previously set the resolution specifically for this hostname, default
 	 to it on */
       client = gconf_client_get_default ();
-      key = g_strconcat ("/desktop/gnome/screen/", hostname,  "/0/resolution",NULL);
+
+      host_escaped = gconf_escape_key (hostname, -1);
+      key = g_strconcat ("/desktop/gnome/screen/", host_escaped, "/0/resolution", NULL);
+      g_free (host_escaped);
       resolution = gconf_client_get_string (client, key, NULL);
       g_free (key);
       g_object_unref (client);
@@ -757,15 +761,14 @@
 {
   GConfClient *client;
   gboolean res;
-#ifdef HOST_NAME_MAX
   char hostname[HOST_NAME_MAX + 1];
-#else
-  char hostname[256];
-#endif
-  char *path, *key, *str;
+  char *path, *key, *str, *host_escaped;
   int i;
 
-  gethostname (hostname, sizeof (hostname));
+  if (gethostname (hostname, sizeof (hostname)) != 0)
+    return;
+
+  host_escaped = gconf_escape_key (hostname, -1);
 
   client = gconf_client_get_default ();
 
@@ -774,11 +777,11 @@
       for (i = 0; i < info->n_screens; i++)
 	{
 	  key = g_strdup_printf ("/desktop/gnome/screen/%s/%d/resolution",
-				 hostname, i);
+				 host_escaped, i);
 	  gconf_client_unset (client, key, NULL);
 	  g_free (key);
 	  key = g_strdup_printf ("/desktop/gnome/screen/%s/%d/rate",
-				 hostname, i);
+				 host_escaped, i);
 	  gconf_client_unset (client, key, NULL);
 	  g_free (key);
 	}
@@ -787,13 +790,15 @@
   if (save_computer)
     {
       path = g_strconcat ("/desktop/gnome/screen/",
-			  hostname,
+			  host_escaped,
 			  "/",
 			  NULL);
     }
   else
     path = g_strdup ("/desktop/gnome/screen/default/");
 
+  g_free (host_escaped);
+
   for (i = 0; i < info->n_screens; i++)
     {
       struct ScreenInfo *screen_info = &info->screens[i];



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]