Index: accountsservice-0.6.21/src/daemon.c =================================================================== --- accountsservice-0.6.21.orig/src/daemon.c 2012-10-30 03:07:18.313725900 -0300 +++ accountsservice-0.6.21/src/daemon.c 2012-10-30 03:08:12.385727144 -0300 @@ -47,6 +47,7 @@ #define PATH_PASSWD "/etc/passwd" #define PATH_SHADOW "/etc/shadow" +#define PATH_CONFIG "/etc/accountsservice.conf" #define PATH_NOLOGIN "/sbin/nologin" #define PATH_FALSE "/bin/false" #define PATH_GDM_CUSTOM "/etc/gdm/custom.conf" @@ -573,7 +574,10 @@ { gint i; GFile *file; - GError *error; + gchar *value; + GKeyFile *config; + gchar **config_excludes; + GError *error = NULL; daemon->priv = DAEMON_GET_PRIVATE (daemon); @@ -589,6 +593,29 @@ GUINT_TO_POINTER (TRUE)); } + /* load config file */ + + config = g_key_file_new (); + g_key_file_load_from_file (config, PATH_CONFIG, G_KEY_FILE_NONE, &error); + + if (error && !g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { + g_message ("Failed to load configuration from %s: %s", PATH_CONFIG, error->message); + } + g_clear_error (&error); + + value = g_key_file_get_string (config, "Users", "hidden-users", NULL); + + if (value) { + config_excludes = g_strsplit (value, " ", -1); + for (i = 0; config_excludes[i] != NULL; i++) { + g_hash_table_insert (daemon->priv->exclusions, + g_strdup (config_excludes[i]), + GUINT_TO_POINTER (TRUE)); + } + g_strfreev (config_excludes); + g_free (value); + } + daemon->priv->users = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,