summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Zalewski <lukas@dcs.qmul.ac.uk>2007-06-04 04:45:30 +0000
committerBrian Cameron <bcameron@src.gnome.org>2007-06-04 04:45:30 +0000
commit5fddaac11dccb6b863027f42a2430f71d670942c (patch)
tree1ae1d0c4b7931a856f1e51ec2d31ce2f24db2e15
parent0b7cf9104b4d76477c41b5082a9f8a38a365e2f0 (diff)
downloadgdm-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--ChangeLog11
-rw-r--r--daemon/gdm.c6
-rw-r--r--gui/gdmlogin.c36
-rw-r--r--gui/greeter/greeter.c26
-rw-r--r--gui/greeter/greeter_item.c14
-rw-r--r--gui/greeter/greeter_parser.c46
6 files changed, 74 insertions, 65 deletions
diff --git a/ChangeLog b/ChangeLog
index 84b5cc4a..1519b2c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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" */