r14041 - in /desktop/unstable/gdm/debian: changelog patches/61_config-parser-issues.patch patches/series

joss at users.alioth.debian.org joss at users.alioth.debian.org
Sat Jan 5 00:47:59 UTC 2008


Author: joss
Date: Sat Jan  5 00:47:59 2008
New Revision: 14041

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=14041
Log:
* 61_config-parser-issues.patch: upstream fix (r5604) for a bug in the 
  parser. Also include r5599 which is required as well.
  Closes: #458094.

Added:
    desktop/unstable/gdm/debian/patches/61_config-parser-issues.patch
Modified:
    desktop/unstable/gdm/debian/changelog
    desktop/unstable/gdm/debian/patches/series

Modified: desktop/unstable/gdm/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm/debian/changelog?rev=14041&op=diff
==============================================================================
--- desktop/unstable/gdm/debian/changelog (original)
+++ desktop/unstable/gdm/debian/changelog Sat Jan  5 00:47:59 2008
@@ -8,6 +8,11 @@
 
   [ Loic Minier ]
   * Don't use an aliased ls but hardcode /bin/ls; closes: #454097
+
+  [ Josselin Mouette ]
+  * 61_config-parser-issues.patch: upstream fix (r5604) for a bug in the 
+    parser. Also include r5599 which is required as well.
+    Closes: #458094.
 
  -- Josselin Mouette <joss at debian.org>  Wed, 19 Dec 2007 15:33:53 +0100
 

Added: desktop/unstable/gdm/debian/patches/61_config-parser-issues.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm/debian/patches/61_config-parser-issues.patch?rev=14041&op=file
==============================================================================
--- desktop/unstable/gdm/debian/patches/61_config-parser-issues.patch (added)
+++ desktop/unstable/gdm/debian/patches/61_config-parser-issues.patch Sat Jan  5 00:47:59 2008
@@ -1,0 +1,365 @@
+Debian #458094
+Upstream commits r5599 and r5604
+
+Index: gdm-2.20.2/daemon/gdm-daemon-config.c
+===================================================================
+--- gdm-2.20.2.orig/daemon/gdm-daemon-config.c	2007-11-27 00:12:29.000000000 +0100
++++ gdm-2.20.2/daemon/gdm-daemon-config.c	2008-01-05 01:48:05.276052179 +0100
+@@ -1067,12 +1067,11 @@ gdm_daemon_config_get_xservers (void)
+  */
+ static void
+ gdm_daemon_config_load_xserver (GdmConfig  *config,
+-				const char *key,
++				const char *group,
+ 				const char *name)
+ {
+ 	GdmXserver     *svr;
+ 	int             n;
+-	char           *group;
+ 	gboolean        res;
+ 	GdmConfigValue *value;
+ 
+@@ -1084,8 +1083,6 @@ gdm_daemon_config_load_xserver (GdmConfi
+ 	svr = g_new0 (GdmXserver, 1);
+ 	svr->id = g_strdup (name);
+ 
+-	group = g_strdup_printf ("server-%s", name);
+-
+ 	/* string */
+ 	res = gdm_config_get_value (config, group, "name", &value);
+ 	if (res) {
+@@ -1141,8 +1138,6 @@ gdm_daemon_config_load_xserver (GdmConfi
+ 	}
+ 
+ 	xservers = g_slist_append (xservers, svr);
+-
+-	g_free (group);
+ }
+ 
+ static void
+@@ -1187,78 +1182,42 @@ gdm_daemon_config_ensure_one_xserver (Gd
+ static void
+ load_xservers_group (GdmConfig *config)
+ {
+-	char     **keys;
+-	gsize      len;
+-	int        i;
+-
+-	keys = gdm_config_get_keys_for_group (config,
+-		GDM_CONFIG_GROUP_SERVERS, &len, NULL);
+-
+-	/* now construct entries for these groups */
+-	for (i = 0; i < len; i++) {
+-		GdmConfigEntry   entry;
+-		GdmConfigValue  *value;
+-		const char      *display_value;
+-		const char      *name;
+-		char           **value_list;
+-		char            *new_group;
+-		int              j;
+-		gboolean         res;
+-
+-	        entry.group         = GDM_CONFIG_GROUP_SERVERS;
+-		entry.key           = keys[i];
+-		entry.type          = GDM_CONFIG_VALUE_STRING;
+-		entry.default_value = NULL;
+-		entry.id            = GDM_CONFIG_INVALID_ID;
++	GPtrArray  *server_groups;
++	char      **vname_array;
++	char       *xserver_group;
++	int         i, j;
++
++	server_groups = gdm_config_get_server_groups (config);
++
++	for (i=0; i < server_groups->len; i++) {
++		xserver_group = g_ptr_array_index (server_groups, i);
++		gdm_debug ("Processing server group <%s>", xserver_group);
++
++		if (g_str_has_prefix (xserver_group, "server-")) {
++			char * xserver_name;
++
++			for (j = 0; j < G_N_ELEMENTS (gdm_daemon_server_config_entries); j++) {
++				GdmConfigEntry *srv_entry;
++				if (gdm_daemon_server_config_entries[j].key == NULL) {
++					continue;
++				}
++				srv_entry = gdm_config_entry_copy (&gdm_daemon_server_config_entries[j]);
++				g_free (srv_entry->group);
++				srv_entry->group = g_strdup (xserver_group);
++				gdm_config_process_entry (config, srv_entry, NULL);
++				gdm_config_entry_free (srv_entry);
++			}
+ 
+-		gdm_config_add_entry (config, &entry);
+-		gdm_config_process_entry (config, &entry, NULL);
++			/* Strip "server-" prefix from name */
++			xserver_name = xserver_group + strlen ("server-");
+ 
+-		res = gdm_config_get_value (config, entry.group, entry.key,
+-			&value);
+-		if (! res) {
+-			continue;
++			/* Now we can add this server */
++			if (xserver_name != NULL)
++				gdm_daemon_config_load_xserver (config, xserver_group, xserver_name);
+ 		}
+-
+-		display_value = gdm_config_value_get_string (value);
+-		value_list = g_strsplit (display_value, " ", -1);
+-		if (value_list == NULL || value_list[0] == '\0') {
+-			gdm_config_value_free (value);
+-			g_strfreev (value_list);
+-			continue;
+-		}
+-		
+-		name = value_list[0];
+-
+-		/* Skip servers marked as inactive */
+-		if (name == NULL || name[0] == '\0' ||
+-		    g_ascii_strcasecmp (name, "inactive") == 0) {
+-			gdm_config_value_free (value);
+-			g_strfreev (value_list);
+-			continue;
+-		}
+-
+-		new_group = g_strdup_printf ("server-%s", name);
+-		for (j = 0; j < G_N_ELEMENTS (gdm_daemon_server_config_entries); j++) {
+-			GdmConfigEntry *srv_entry;
+-			if (gdm_daemon_server_config_entries[j].key == NULL) {
+-				continue;
+-			}
+-			srv_entry = gdm_config_entry_copy (&gdm_daemon_server_config_entries[j]);
+-			g_free (srv_entry->group);
+-			srv_entry->group = g_strdup (new_group);
+-			gdm_config_process_entry (config, srv_entry, NULL);
+-			gdm_config_entry_free (srv_entry);
+-		}
+-		g_free (new_group);
+-
+-		/* Now we can add this server */
+-		gdm_daemon_config_load_xserver (config, entry.key, name);
+-                gdm_config_value_free (value);
+-		g_strfreev (value_list);
+         }
+ 
+-	g_strfreev (keys);
++	g_ptr_array_free (server_groups, TRUE);
+ }
+ 
+ static void
+@@ -1471,16 +1430,36 @@ gdm_daemon_config_load_displays (GdmConf
+ 	keys = gdm_config_get_keys_for_group (config,
+ 		GDM_CONFIG_GROUP_SERVERS, &len, NULL);
+ 
+-        /* now construct entries for these groups */
+-        for (i = 0; i < len; i++) {
++	for (i = 0; i < len; i++) {
++		GdmConfigEntry   entry;
++		GdmConfigValue  *value;
++		const char      *display_value;
++		const char      *name;
++		char           **value_list;
++		char            *new_group;
++		int              j;
++		gboolean         res;
++
++		entry.group         = GDM_CONFIG_GROUP_SERVERS;
++		entry.key           = keys[i];
++		entry.type          = GDM_CONFIG_VALUE_STRING;
++		entry.default_value = NULL;
++		entry.id            = GDM_CONFIG_INVALID_ID;
++
++		gdm_config_add_entry (config, &entry);
++		gdm_config_process_entry (config, &entry, NULL);
++	}
++
++	/* Now construct entries for these groups */
++	for (i = 0; i < len; i++) {
++		char           **value_list;
+ 		GString         *command     = NULL;
+-		GdmDisplay     *disp;
+-		GdmConfigValue *value;
++		GdmDisplay      *disp;
++		GdmConfigValue  *value;
+ 		const char      *name        = NULL;
+ 		const char      *device_name = NULL;
+-		char           **value_list;
+-		int             keynum;
+-		gboolean        res;
++		int              keynum;
++		gboolean         res;
+ 
+ 		name   = keys[i];
+ 
+@@ -1490,14 +1469,19 @@ gdm_daemon_config_load_displays (GdmConf
+ 
+ 		keynum = atoi (name);
+ 
+-                res = gdm_config_get_value (config, GDM_CONFIG_GROUP_SERVERS,
++		res = gdm_config_get_value (config, GDM_CONFIG_GROUP_SERVERS,
+ 			keys[i], &value);
+ 		if (! res) {
+ 			continue;
+ 		}
+ 
+-                display_value = gdm_config_value_get_string (value);
+-		value_list    = g_strsplit (display_value, " ", -1);
++		display_value = gdm_config_value_get_string (value);
++
++		/* Skip displays marked as inactive */
++		if (g_ascii_strcasecmp (display_value, "inactive") == 0)
++			continue;
++
++		value_list = g_strsplit (display_value, " ", -1);
+ 
+ 		if (value_list == NULL || value_list[0] == '\0') {
+ 			gdm_config_value_free (value);
+@@ -1524,7 +1508,7 @@ gdm_daemon_config_load_displays (GdmConf
+ 				g_string_append (command, " ");
+ 			}
+ 			j++;
+-                }
++		}
+ 
+ 		gdm_debug ("Loading display for key '%d'", keynum);
+ 
+@@ -1786,6 +1770,20 @@ validate_xdmcp (GdmConfig          *conf
+ 	return TRUE;
+ }
+ 
++/* Cause debug to affect logging as soon as the config value is read */
++static gboolean
++validate_debug (GdmConfig          *config,
++		GdmConfigSourceType source,
++		GdmConfigValue     *value)
++{
++	gboolean debugval;
++
++	debugval = gdm_config_value_get_bool (value);
++	gdm_log_set_debug (debugval);
++
++	return TRUE;
++}
++
+ static gboolean
+ validate_at_least_int (GdmConfig          *config,
+ 		       GdmConfigSourceType source,
+@@ -1814,6 +1812,9 @@ validate_cb (GdmConfig          *config,
+ 	res = TRUE;
+ 
+         switch (id) {
++        case GDM_ID_DEBUG:
++		res = validate_debug (config, source, value);
++		break;
+         case GDM_ID_PATH:
+ 		res = validate_path (config, source, value);
+ 		break;
+Index: gdm-2.20.2/common/gdm-config.c
+===================================================================
+--- gdm-2.20.2.orig/common/gdm-config.c	2007-11-27 00:11:14.000000000 +0100
++++ gdm-2.20.2/common/gdm-config.c	2008-01-05 01:48:05.276052179 +0100
+@@ -286,7 +286,7 @@ gdm_config_value_compare (const GdmConfi
+ 			int   res;
+ 
+ 			str_a = gdm_config_value_to_string (value_a);
+-			str_b = gdm_config_value_to_string (value_a);
++			str_b = gdm_config_value_to_string (value_b);
+ 			res = safe_strcmp (str_a, str_b);
+ 			g_free (str_a);
+ 			g_free (str_b);
+@@ -615,6 +615,71 @@ gdm_config_free (GdmConfig *config)
+ 	g_slice_free (GdmConfig, config);
+ }
+ 
++static void
++add_server_group_once (GPtrArray *server_groups, char *group)
++{
++	int i;
++
++	for (i=0; i < server_groups->len; i++) {
++		if (strcmp (g_ptr_array_index (server_groups, i), group) == 0) {
++			g_debug ("server group %s already exists, skipping",
++				group);
++			return;
++		}
++	}
++	g_ptr_array_add (server_groups, g_strdup (group));
++}
++
++GPtrArray *
++gdm_config_get_server_groups (GdmConfig *config)
++{
++	GPtrArray       *server_groups;
++	GError          *error;
++	char           **groups;
++	gsize            len;
++	int              i;
++	
++	server_groups = g_ptr_array_new ();
++
++	if (config->mandatory_key_file != NULL) {
++		groups = g_key_file_get_groups (config->mandatory_key_file, &len);
++
++		for (i = 0; i < len; i++)
++		{
++			if (g_str_has_prefix (groups[i], "server-")) {
++				add_server_group_once (server_groups, groups[i]);
++			}
++		}
++		g_strfreev (groups);
++	}
++
++	if (config->default_key_file != NULL) {
++		groups = g_key_file_get_groups (config->default_key_file, &len);
++
++		for (i = 0; i < len; i++)
++		{
++			if (g_str_has_prefix (groups[i], "server-")) {
++				add_server_group_once (server_groups, groups[i]);
++			}
++		}
++		g_strfreev (groups);
++	}
++
++	if (config->custom_key_file != NULL) {
++		groups = g_key_file_get_groups (config->custom_key_file, &len);
++
++		for (i = 0; i < len; i++)
++		{
++			if (g_str_has_prefix (groups[i], "server-")) {
++				add_server_group_once (server_groups, groups[i]);
++			}
++		}
++		g_strfreev (groups);
++	}
++
++	return server_groups;
++}
++
+ const GdmConfigEntry *
+ gdm_config_lookup_entry (GdmConfig  *config,
+ 			 const char *group,
+Index: gdm-2.20.2/common/gdm-config.h
+===================================================================
+--- gdm-2.20.2.orig/common/gdm-config.h	2007-11-27 00:11:14.000000000 +0100
++++ gdm-2.20.2/common/gdm-config.h	2008-01-05 01:48:05.280052407 +0100
+@@ -126,6 +126,7 @@ char **                gdm_config_get_ke
+ 							  const gchar     *group_name,
+ 							  gsize           *length,
+ 							  GError         **error);
++GPtrArray *            gdm_config_get_server_groups      (GdmConfig       *config);
+ 
+ gboolean               gdm_config_peek_value             (GdmConfig             *config,
+ 							  const char            *group,
+Index: gdm-2.20.2/daemon/gdm.c
+===================================================================
+--- gdm-2.20.2.orig/daemon/gdm.c	2007-11-27 00:12:29.000000000 +0100
++++ gdm-2.20.2/daemon/gdm.c	2008-01-05 01:48:05.280052407 +0100
+@@ -1575,7 +1575,6 @@ main (int argc, char *argv[])
+ 	gdm_log_init ();
+ 	/* Parse configuration file */
+ 	gdm_daemon_config_parse (config_file, no_console);
+-	gdm_log_set_debug (gdm_daemon_config_get_bool_for_id (GDM_ID_DEBUG));
+ 
+ 	/* XDM compliant error message */
+ 	if G_UNLIKELY (getuid () != 0) {

Modified: desktop/unstable/gdm/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm/debian/patches/series?rev=14041&op=diff
==============================================================================
--- desktop/unstable/gdm/debian/patches/series (original)
+++ desktop/unstable/gdm/debian/patches/series Sat Jan  5 00:47:59 2008
@@ -9,6 +9,7 @@
 50_close-fds.patch
 55_use-theme-gtkrc.patch
 56_xnest-wrapper.patch
+61_config-parser-issues.patch
 62_reference-manual-docbook-entity-reference.patch
 #66_socket-in-var-run-for-fhs.patch
 70_mandatory-relibtoolize.patch




More information about the pkg-gnome-commits mailing list