+ if (!lightdm_greeter_connect_sync (greeter))
+ return EXIT_FAILURE;
+
+ notify_status ("GREETER CONNECTED-TO-DAEMON");
+
+ if (g_key_file_get_boolean (config, "test-greeter-config", "crash-xserver", NULL))
+ {
+ const gchar *name = "SIGSEGV";
+ notify_status ("GREETER CRASH-XSERVER");
+ xcb_intern_atom (connection, FALSE, strlen (name), name);
+ xcb_flush (connection);
+ }
+
+ /* Automatically log in as requested user */
+ if (lightdm_greeter_get_select_user_hint (greeter))
+ {
+ notify_status ("GREETER AUTHENTICATE-SELECTED USERNAME=%s", lightdm_greeter_get_select_user_hint (greeter));
+ lightdm_greeter_authenticate (greeter, lightdm_greeter_get_select_user_hint (greeter));
+ }
+ else
+ {
+ gchar *login_lock;
+ FILE *f;
+
+ login_lock = g_build_filename (g_getenv ("LIGHTDM_TEST_HOME_DIR"), ".greeter-logged-in", NULL);
+ f = fopen (login_lock, "r");
+ if (f == NULL)
+ {
+ if (g_key_file_get_boolean (config, "test-greeter-config", "login-guest", NULL))
+ {
+ notify_status ("GREETER AUTHENTICATE-GUEST");
+ lightdm_greeter_authenticate_as_guest (greeter);
+ }
+ else if (g_key_file_get_boolean (config, "test-greeter-config", "prompt-username", NULL))
+ {
+ notify_status ("GREETER AUTHENTICATE");
+ lightdm_greeter_authenticate (greeter, NULL);
+ }
+ else
+ {
+ gchar *username;
+
+ username = g_key_file_get_string (config, "test-greeter-config", "username", NULL);
+ if (username)
+ {
+ notify_status ("GREETER AUTHENTICATE USERNAME=%s", username);
+ lightdm_greeter_authenticate (greeter, username);
+ g_free (username);
+ }
+ }
+
+ /* Write lock to stop repeatedly logging in */
+ f = fopen (login_lock, "w");
+ fclose (f);
+ }
+ else
+ {
+ g_debug ("Not logging in, lock file detected %s", login_lock);
+ fclose (f);
+ }
+ }