summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorWilliam Jon McCann <mccann@jhu.edu>2007-04-16 18:04:17 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2007-04-16 18:04:17 +0000
commit495faa41d19bacf1a7a6af633eecfd7e715a7954 (patch)
tree917639c50c8732a16daee27ed4cf495d0d79af67 /common
parented62ae807b516b8906a714afde5fde6bf09ad0cc (diff)
downloadgdm-495faa41d19bacf1a7a6af633eecfd7e715a7954.tar.gz
Return FALSE if no default is given in the key and key doesn't exist in
2007-04-16 William Jon McCann <mccann@jhu.edu> * common/gdm-common-config.c: (gdm_common_config_parse_key_string), (gdm_common_config_get_int), (gdm_common_config_get_translated_string), (gdm_common_config_get_string), (gdm_common_config_get_boolean): * common/gdm-common-config.h: Return FALSE if no default is given in the key and key doesn't exist in the file. * daemon/gdm-daemon-config.c: (gdm_daemon_config_get_value_int_per_display), (gdm_daemon_config_get_value_bool_per_display), (gdm_daemon_config_get_value_string_per_display), (gdm_daemon_config_key_to_string_per_display), (gdm_daemon_config_key_to_string), (gdm_daemon_config_to_string): * daemon/gdm-daemon-config.h: Fix handling of per display keys. * daemon/gdm-xdmcp-manager.c: (gdm_xdmcp_manager_set_willing_script), (gdm_xdmcp_manager_set_property), (gdm_xdmcp_manager_get_property): Fix missing property. * daemon/gdm.c: (gdm_start_first_unborn_local), (gdm_final_cleanup), (custom_cmd_no_restart), (gdm_cleanup_children), (mainloop_sig_callback), (main), (gdm_handle_message), (handle_flexi_server), (sup_handle_auth_local), (sup_handle_attached_servers), (sup_handle_get_server_details), (sup_handle_flexi_xserver), (sup_handle_flexi_xnest), (sup_handle_get_config), (sup_handle_query_logout_action), (sup_handle_query_custom_cmd_labels), (sup_handle_all_servers), (sup_handle_get_server_list), (sup_handle_get_custom_config_file), (sup_handle_greeterpids), (sup_handle_query_custom_cmd_no_restart_status), (sup_handle_set_logout_action), (sup_handle_set_safe_logout_action), (sup_handle_query_vt), (sup_handle_set_vt), (gdm_handle_user_message): Break up the monolithic gdm_handle_user_message function so it can be read more easily. * daemon/slave.c: (check_for_interruption): * daemon/verify-pam.c: (gdm_verify_user), (gdm_verify_setup_user): Update for changed daemon_config arguments. svn path=/trunk/; revision=4838
Diffstat (limited to 'common')
-rw-r--r--common/gdm-common-config.c138
-rw-r--r--common/gdm-common-config.h5
2 files changed, 66 insertions, 77 deletions
diff --git a/common/gdm-common-config.c b/common/gdm-common-config.c
index e4b10bc4..2bcc034a 100644
--- a/common/gdm-common-config.c
+++ b/common/gdm-common-config.c
@@ -47,12 +47,16 @@ gdm_common_config_parse_key_string (const char *keystring,
char *tmp2;
gboolean ret;
+ g_return_val_if_fail (keystring != NULL, FALSE);
+
ret = FALSE;
g = k = v = l = NULL;
split1 = split2 = NULL;
+ g_debug ("Attempting to parse key string: %s", keystring);
+
split1 = g_strsplit (keystring, "/", 2);
- if (split1 == NULL) {
+ if (split1 == NULL || split1 [0] == NULL || split1 [1] == NULL) {
goto out;
}
@@ -192,11 +196,14 @@ gdm_common_config_get_int (GKeyFile *config,
int *value,
GError **error)
{
- char *group;
- char *key;
- char *default_value;
- int val;
- GError *local_error;
+ char *group;
+ char *key;
+ char *default_value;
+ int val;
+ GError *local_error;
+ gboolean ret;
+
+ ret = FALSE;
group = key = default_value = NULL;
if (! gdm_common_config_parse_key_string (keystring, &group, &key, NULL, &default_value))
@@ -210,11 +217,15 @@ gdm_common_config_get_int (GKeyFile *config,
if (local_error != NULL) {
/* use the default */
if (default_value != NULL) {
+ ret = TRUE;
+ g_error_free (local_error);
val = atoi (default_value);
} else {
val = 0;
+ g_propagate_error (error, local_error);
}
- g_propagate_error (error, local_error);
+ } else {
+ ret = TRUE;
}
*value = val;
@@ -223,7 +234,7 @@ gdm_common_config_get_int (GKeyFile *config,
g_free (group);
g_free (default_value);
- return TRUE;
+ return ret;
}
gboolean
@@ -238,6 +249,9 @@ gdm_common_config_get_translated_string (GKeyFile *config,
char *val;
const char * const *langs;
int i;
+ gboolean ret;
+
+ ret = FALSE;
val = NULL;
@@ -263,7 +277,12 @@ gdm_common_config_get_translated_string (GKeyFile *config,
if (val == NULL) {
/* use the default */
- val = g_strdup (default_value);
+ if (default_value != NULL) {
+ val = g_strdup (default_value);
+ ret = TRUE;
+ }
+ } else {
+ ret = TRUE;
}
*value = val;
@@ -272,7 +291,7 @@ gdm_common_config_get_translated_string (GKeyFile *config,
g_free (group);
g_free (default_value);
- return TRUE;
+ return ret;
}
gboolean
@@ -281,11 +300,14 @@ gdm_common_config_get_string (GKeyFile *config,
char **value,
GError **error)
{
- char *group;
- char *key;
- char *default_value;
- char *val;
- GError *local_error;
+ char *group;
+ char *key;
+ char *default_value;
+ char *val;
+ GError *local_error;
+ gboolean ret;
+
+ ret = FALSE;
group = key = default_value = NULL;
if (! gdm_common_config_parse_key_string (keystring, &group, &key, NULL, &default_value)) {
@@ -304,52 +326,15 @@ gdm_common_config_get_string (GKeyFile *config,
&local_error);
if (local_error != NULL) {
/* use the default */
- val = g_strdup (default_value);
- g_propagate_error (error, local_error);
- }
-
- *value = val;
-
- g_free (key);
- g_free (group);
- g_free (default_value);
-
- return TRUE;
-}
-
-gboolean
-gdm_common_config_get_string_list (GKeyFile *config,
- const char *keystring,
- char ***value,
- gsize *length,
- GError **error)
-{
- char *group;
- char *key;
- char *default_value;
- char **val;
- GError *local_error;
-
- group = key = default_value = NULL;
- if (! gdm_common_config_parse_key_string (keystring, &group, &key, NULL, &default_value)) {
- g_set_error (error,
- G_KEY_FILE_ERROR,
- G_KEY_FILE_ERROR_PARSE,
- "Unable to parse key: %s",
- keystring);
- return FALSE;
- }
-
- local_error = NULL;
- val = g_key_file_get_string_list (config,
- group,
- key,
- length,
- &local_error);
- if (local_error != NULL) {
- /* use the default */
- val = g_strsplit (default_value, ";", -1);
- g_propagate_error (error, local_error);
+ if (default_value != NULL) {
+ val = g_strdup (default_value);
+ ret = TRUE;
+ g_error_free (local_error);
+ } else {
+ g_propagate_error (error, local_error);
+ }
+ } else {
+ ret = TRUE;
}
*value = val;
@@ -358,7 +343,7 @@ gdm_common_config_get_string_list (GKeyFile *config,
g_free (group);
g_free (default_value);
- return TRUE;
+ return ret;
}
gboolean
@@ -372,6 +357,9 @@ gdm_common_config_get_boolean (GKeyFile *config,
char *default_value;
gboolean val;
GError *local_error;
+ gboolean ret;
+
+ ret = FALSE;
group = key = default_value = NULL;
if (! gdm_common_config_parse_key_string (keystring, &group, &key, NULL, &default_value))
@@ -384,17 +372,23 @@ gdm_common_config_get_boolean (GKeyFile *config,
&local_error);
if (local_error != NULL) {
/* use the default */
- if (default_value != NULL &&
- (default_value[0] == 'T' ||
- default_value[0] == 't' ||
- default_value[0] == 'Y' ||
- default_value[0] == 'y' ||
- atoi (default_value) != 0)) {
- val = TRUE;
+ if (default_value != NULL) {
+ if ((default_value[0] == 'T' ||
+ default_value[0] == 't' ||
+ default_value[0] == 'Y' ||
+ default_value[0] == 'y' ||
+ atoi (default_value) != 0)) {
+ val = TRUE;
+ } else {
+ val = FALSE;
+ }
+ ret = TRUE;
+ g_error_free (local_error);
} else {
- val = FALSE;
+ g_propagate_error (error, local_error);
}
- g_propagate_error (error, local_error);
+ } else {
+ ret = TRUE;
}
*value = val;
@@ -403,7 +397,7 @@ gdm_common_config_get_boolean (GKeyFile *config,
g_free (group);
g_free (default_value);
- return TRUE;
+ return ret;
}
void
diff --git a/common/gdm-common-config.h b/common/gdm-common-config.h
index 9e541814..b03ed46e 100644
--- a/common/gdm-common-config.h
+++ b/common/gdm-common-config.h
@@ -42,11 +42,6 @@ gboolean gdm_common_config_get_translated_string (GKeyFile *config,
const char *keystring,
char **value,
GError **error);
-gboolean gdm_common_config_get_string_list (GKeyFile *config,
- const char *keystring,
- char ***value,
- gsize *length,
- GError **error);
gboolean gdm_common_config_get_int (GKeyFile *config,
const char *keystring,
int *value,