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