diff options
author | Lukasz Zalewski <lukas@dcs.qmul.ac.uk> | 2007-06-04 04:45:30 +0000 |
---|---|---|
committer | Brian Cameron <bcameron@src.gnome.org> | 2007-06-04 04:45:30 +0000 |
commit | 5fddaac11dccb6b863027f42a2430f71d670942c (patch) | |
tree | 1ae1d0c4b7931a856f1e51ec2d31ce2f24db2e15 | |
parent | 0b7cf9104b4d76477c41b5082a9f8a38a365e2f0 (diff) | |
download | gdm-5fddaac11dccb6b863027f42a2430f71d670942c.tar.gz |
Changed the way CustomCommandX are handled. Fixes bug #442355 Code cleanup
2007-06-04 Lukasz Zalewski <lukas@dcs.qmul.ac.uk>
* gui/greeter/greeter_item.c: (greeter_item_is_visible):
Changed the way CustomCommandX are handled. Fixes bug #442355
* gui/greeter/greeter_parser.c: (parse_stock):
Code cleanup regarding CustomCommands.
* gui/greeter/greeter.c:
* gui/gdmlogin.c:
* daemon/gdm.c:
More code cleanup regarding CustomCommands
svn path=/trunk/; revision=4955
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | daemon/gdm.c | 6 | ||||
-rw-r--r-- | gui/gdmlogin.c | 36 | ||||
-rw-r--r-- | gui/greeter/greeter.c | 26 | ||||
-rw-r--r-- | gui/greeter/greeter_item.c | 14 | ||||
-rw-r--r-- | gui/greeter/greeter_parser.c | 46 |
6 files changed, 74 insertions, 65 deletions
@@ -1,3 +1,14 @@ +2007-06-04 Lukasz Zalewski <lukas@dcs.qmul.ac.uk> + + * gui/greeter/greeter_item.c: (greeter_item_is_visible): + Changed the way CustomCommandX are handled. Fixes bug #442355 + * gui/greeter/greeter_parser.c: (parse_stock): + Code cleanup regarding CustomCommands. + * gui/greeter/greeter.c: + * gui/gdmlogin.c: + * daemon/gdm.c: + More code cleanup regarding CustomCommands + 2007-06-04 Brian Cameron <brian.cameron@sun.com> * gui/gdmlogin.c: Set invisible character to '*' if the diff --git a/daemon/gdm.c b/daemon/gdm.c index 5ff2498a..f15f1b92 100644 --- a/daemon/gdm.c +++ b/daemon/gdm.c @@ -3704,6 +3704,7 @@ sup_handle_query_logout_action (GdmConnection *conn, GString *reply; const gchar *sep = " "; int i; + gchar *key_string = NULL; disp = gdm_connection_get_display (conn); @@ -3749,7 +3750,6 @@ sup_handle_query_logout_action (GdmConnection *conn, if (is_action_available (disp, GDM_SUP_LOGOUT_ACTION_CUSTOM_CMD_TEMPLATE)) { for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar *key_string = NULL; key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); if (! ve_string_empty (gdm_daemon_config_get_value_string (key_string))) { @@ -3786,6 +3786,7 @@ sup_handle_query_custom_cmd_labels (GdmConnection *conn, const gchar *sep = " "; gboolean sysmenu; int i; + gchar *key_string = NULL; disp = gdm_connection_get_display (conn); sysmenu = gdm_daemon_config_get_value_bool_per_display (GDM_KEY_SYSTEM_MENU, disp->name); @@ -3803,7 +3804,6 @@ sup_handle_query_custom_cmd_labels (GdmConnection *conn, reply = g_string_new ("OK"); for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar *key_string = NULL; key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); if (sysmenu && disp->attached && ! ve_string_empty (gdm_daemon_config_get_value_string (key_string))) { @@ -3916,6 +3916,7 @@ sup_handle_query_custom_cmd_no_restart_status (GdmConnection *conn, gboolean sysmenu; unsigned long no_restart_status_flag = 0; /* we can store up-to 32 commands this way */ int i; + gchar *key_string = NULL; disp = gdm_connection_get_display (conn); sysmenu = gdm_daemon_config_get_value_bool_per_display (GDM_KEY_SYSTEM_MENU, disp->name); @@ -3933,7 +3934,6 @@ sup_handle_query_custom_cmd_no_restart_status (GdmConnection *conn, reply = g_string_new ("OK "); for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar *key_string = NULL; key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); if (sysmenu && disp->attached && ! ve_string_empty (gdm_daemon_config_get_value_string (key_string))) { diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c index 05bc745c..570f4416 100644 --- a/gui/gdmlogin.c +++ b/gui/gdmlogin.c @@ -2198,6 +2198,7 @@ gdm_login_gui_init (void) gboolean have_logo = FALSE; GtkWidget *thememenu; const gchar *theme_name; + gchar *key_string = NULL; theme_name = g_getenv ("GDM_GTK_THEME"); if (ve_string_empty (theme_name)) @@ -2340,8 +2341,7 @@ gdm_login_gui_init (void) } if (is_action_available ("CUSTOM_CMD")) { - for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar * key_string = NULL; + for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); if (gdm_working_command_exists (gdm_config_get_string (key_string))) { gint * cmd_index = g_new0(gint, 1); @@ -2881,7 +2881,8 @@ static void gdm_read_config (void) { gint i; - + gchar *key_string = NULL; + /* Read config data in bulk */ gdmcomm_comm_bulk_start (); @@ -2918,23 +2919,25 @@ gdm_read_config (void) gdm_config_get_string (GDM_KEY_SYSTEM_COMMANDS_IN_MENU); /* String keys for custom commands */ - for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar * key_string = NULL; + for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); gdm_config_get_string (key_string); + g_free (key_string); key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_LABEL_TEMPLATE, i); gdm_config_get_string (key_string); + g_free (key_string); key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_LR_LABEL_TEMPLATE, i); gdm_config_get_string (key_string); - + g_free (key_string); + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TEXT_TEMPLATE, i); gdm_config_get_string (key_string); - + g_free (key_string); + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TOOLTIP_TEMPLATE, i); gdm_config_get_string (key_string); - g_free (key_string); } @@ -2989,6 +2992,7 @@ gdm_reread_config (int sig, gpointer data) gboolean resize = FALSE; gboolean custom_changed = FALSE; gint i; + gchar *key_string = NULL; /* Read config data in bulk */ gdmcomm_comm_bulk_start (); @@ -3067,28 +3071,30 @@ gdm_reread_config (int sig, gpointer data) } /* Keys for custom commands */ - for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar *key_string = NULL; + for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); if(gdm_config_reload_string (key_string)) custom_changed = TRUE; - + g_free (key_string); + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_LABEL_TEMPLATE, i); if(gdm_config_reload_string (key_string)) custom_changed = TRUE; - + g_free (key_string); + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_LR_LABEL_TEMPLATE, i); if(gdm_config_reload_string (key_string)) custom_changed = TRUE; - + g_free (key_string); + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TEXT_TEMPLATE, i); if(gdm_config_reload_string (key_string)) custom_changed = TRUE; - + g_free (key_string); + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_TOOLTIP_TEMPLATE, i); if(gdm_config_reload_string (key_string)) custom_changed = TRUE; - g_free (key_string); } diff --git a/gui/greeter/greeter.c b/gui/greeter/greeter.c index 47c26722..89164183 100644 --- a/gui/greeter/greeter.c +++ b/gui/greeter/greeter.c @@ -859,6 +859,7 @@ static void gdm_read_config (void) { gint i; + gchar *key_string = NULL; /* Read config data in bulk */ gdmcomm_comm_bulk_start (); @@ -921,23 +922,25 @@ gdm_read_config (void) gdm_config_get_bool (GDM_KEY_BROWSER); /* Keys for custom commands */ - for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar * key_string = NULL; + for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); gdm_config_get_string (key_string); - + g_free (key_string); + key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_LABEL_TEMPLATE, i); gdm_config_get_string (key_string); + g_free (key_string); key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_LR_LABEL_TEMPLATE, i); gdm_config_get_string (key_string); + g_free (key_string); key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEXT_TEMPLATE, i); gdm_config_get_string (key_string); - + g_free (key_string); + key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TOOLTIP_TEMPLATE, i); gdm_config_get_string (key_string); - g_free (key_string); } @@ -953,7 +956,8 @@ greeter_reread_config (int sig, gpointer data) { gint i; gboolean custom_changed = FALSE; - + gchar *key_string = NULL; + /* Read config data in bulk */ gdmcomm_comm_bulk_start (); @@ -1015,28 +1019,30 @@ greeter_reread_config (int sig, gpointer data) _exit (DISPLAY_RESTARTGREETER); } - for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar *key_string = NULL; + for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); if (gdm_config_reload_string (key_string)) custom_changed = TRUE; + g_free (key_string); key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_LABEL_TEMPLATE, i); if (gdm_config_reload_string (key_string)) custom_changed = TRUE; + g_free (key_string); key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_LR_LABEL_TEMPLATE, i); if (gdm_config_reload_string (key_string)) custom_changed = TRUE; + g_free (key_string); key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEXT_TEMPLATE, i); if (gdm_config_reload_string (key_string)) custom_changed = TRUE; + g_free (key_string); key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TOOLTIP_TEMPLATE, i); if (gdm_config_reload_string (key_string)) custom_changed = TRUE; - g_free (key_string); } @@ -1232,6 +1238,7 @@ main (int argc, char *argv[]) guint sid; int r; gint i; + gchar *key_string = NULL; if (g_getenv ("DOING_GDM_DEVELOPMENT") != NULL) DOING_GDM_DEVELOPMENT = TRUE; @@ -1372,7 +1379,6 @@ main (int argc, char *argv[]) GdmCustomCmdsFound = g_new0 (gboolean, GDM_CUSTOM_COMMAND_MAX); for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar * key_string = NULL; /* For each possible custom command */ key_string = g_strdup_printf("%s%d=", GDM_KEY_CUSTOM_CMD_TEMPLATE, i); GdmCustomCmdsFound[i] = gdm_working_command_exists (gdm_config_get_string (key_string)); diff --git a/gui/greeter/greeter_item.c b/gui/greeter/greeter_item.c index b6838114..ba029892 100644 --- a/gui/greeter/greeter_item.c +++ b/gui/greeter/greeter_item.c @@ -227,15 +227,11 @@ greeter_item_is_visible (GreeterItemInfo *info) strcmp (info->show_type, "suspend") == 0)) return FALSE; - for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar * key_string = g_strdup_printf ("custom_cmd%d", i); - if (( ! sysmenu || ! GdmCustomCmdsFound[i]) && - (info->show_type != NULL && - strcmp (info->show_type, key_string) == 0)) { - g_free (key_string); - return FALSE; - } - g_free (key_string); + if (info->show_type != NULL && + sscanf (info->show_type, "custom_cmd%d", &i) == 1 && + i >= 0 && i < GDM_CUSTOM_COMMAND_MAX && + (! sysmenu || ! GdmCustomCmdsFound[i])) { + return FALSE; } if (( ! gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE) || diff --git a/gui/greeter/greeter_parser.c b/gui/greeter/greeter_parser.c index 2a131fc0..82c86825 100644 --- a/gui/greeter/greeter_parser.c +++ b/gui/greeter/greeter_parser.c @@ -317,7 +317,9 @@ parse_stock (xmlNodePtr node, GError **error) { xmlChar *prop; - + int i = -1; + gchar * key_string = NULL; + prop = xmlGetProp (node,(const xmlChar *) "type"); if (prop) { @@ -415,34 +417,22 @@ parse_stock (xmlNodePtr node, g_free (*translated_text); *translated_text = g_strdup (_("_Start Again")); } - else + else if (sscanf ((char *) prop, "custom_cmd%d", &i) == 1 && + i >= 0 && i < GDM_CUSTOM_COMMAND_MAX) { - gboolean is_error = TRUE; - register int i = 0; - for (; i < GDM_CUSTOM_COMMAND_MAX; i++) { - gchar * key_string = NULL; - key_string = g_strdup_printf ("custom_cmd%d", i); - if (g_ascii_strcasecmp ((char *) prop, key_string) == 0) { - g_free (*translated_text); - g_free (key_string); - key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_LABEL_TEMPLATE, i); - *translated_text = g_strdup(gdm_config_get_string (key_string)); - g_free (key_string); - is_error = FALSE; - break; - } - g_free (key_string); - } - - if (is_error) - { - g_set_error (error, - GREETER_PARSER_ERROR, - GREETER_PARSER_ERROR_BAD_SPEC, - "Bad stock label type"); - xmlFree (prop); - return FALSE; - } + key_string = g_strdup_printf ("%s%d=", GDM_KEY_CUSTOM_CMD_LABEL_TEMPLATE, i); + g_free (*translated_text); + *translated_text = g_strdup(gdm_config_get_string (key_string)); + g_free (key_string); + } + else + { + g_set_error (error, + GREETER_PARSER_ERROR, + GREETER_PARSER_ERROR_BAD_SPEC, + "Bad stock label type"); + xmlFree (prop); + return FALSE; } /* This is the very very very best "translation" */ |