}
static GList *
-load_sessions (const gchar *sessions_dir)
+load_sessions_dir (GList *sessions, const gchar *sessions_dir)
{
GDir *directory;
- GList *sessions = NULL;
GError *error = NULL;
directory = g_dir_open (sessions_dir, 0, &error);
g_warning ("Failed to open sessions directory: %s", error->message);
g_clear_error (&error);
if (!directory)
- return NULL;
+ return sessions;
while (TRUE)
{
return sessions;
}
+static GList *
+load_sessions (const gchar *sessions_dir)
+{
+ GList *sessions = NULL;
+ gchar **dirs;
+ int i;
+
+ dirs = g_strsplit (sessions_dir, ":", -1);
+ for (i = 0; dirs[i]; i++)
+ sessions = load_sessions_dir (sessions, dirs[i]);
+ g_strfreev (dirs);
+
+ return sessions;
+}
+
static void
update_sessions (void)
{
GKeyFile *config_key_file = NULL;
gchar *config_path = NULL;
- gchar *xsessions_dir;
+ gchar *sessions_dir;
gchar *remote_sessions_dir;
gchar *mir_sessions_dir;
gboolean result;
if (have_sessions)
return;
- xsessions_dir = g_strdup (XSESSIONS_DIR);
+ sessions_dir = g_strdup (SESSIONS_DIR);
remote_sessions_dir = g_strdup (REMOTE_SESSIONS_DIR);
/* Use session directory from configuration */
{
gchar *value;
- value = g_key_file_get_string (config_key_file, "LightDM", "xsessions-directory", NULL);
+ value = g_key_file_get_string (config_key_file, "LightDM", "sessions-directory", NULL);
if (value)
{
- g_free (xsessions_dir);
- xsessions_dir = value;
+ g_free (sessions_dir);
+ sessions_dir = value;
}
value = g_key_file_get_string (config_key_file, "LightDM", "remote-sessions-directory", NULL);
g_key_file_free (config_key_file);
g_free (config_path);
- local_sessions = load_sessions (xsessions_dir);
+ local_sessions = load_sessions (sessions_dir);
remote_sessions = load_sessions (remote_sessions_dir);
- g_free (xsessions_dir);
+ g_free (sessions_dir);
g_free (remote_sessions_dir);
have_sessions = TRUE;