File accountsservice-933083-load-root-setting.patch of Package accountsservice.739

diff -Npur accountsservice-0.6.35/src/daemon.c accountsservice-0.6.35-new/src/daemon.c
--- accountsservice-0.6.35/src/daemon.c	2015-06-04 11:19:20.000000000 +0800
+++ accountsservice-0.6.35-new/src/daemon.c	2015-06-04 11:40:28.000000000 +0800
@@ -404,7 +404,8 @@ entry_generator_cachedir (GHashTable *us
 static void
 load_entries (Daemon             *daemon,
               GHashTable         *users,
-              EntryGeneratorFunc  entry_generator)
+              EntryGeneratorFunc  entry_generator,
+              gboolean force_load)
 {
         gpointer generator_state = NULL;
         struct passwd *pwent;
@@ -418,7 +419,7 @@ load_entries (Daemon             *daemon
                         break;
 
                 /* Skip system users... */
-                if (!user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, NULL)) {
+                if (!force_load && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, NULL)) {
                         g_debug ("skipping user: %s", pwent->pw_name);
                         continue;
                 }
@@ -476,7 +477,7 @@ reload_users (Daemon *daemon)
          */
 
         /* Load the local users into our hash table */
-        load_entries (daemon, users, entry_generator_fgetpwent);
+        load_entries (daemon, users, entry_generator_fgetpwent, FALSE);
         local = g_hash_table_new (g_str_hash, g_str_equal);
         g_hash_table_iter_init (&iter, users);
         while (g_hash_table_iter_next (&iter, &name, NULL))
@@ -484,9 +485,9 @@ reload_users (Daemon *daemon)
 
         /* Now add/update users from other sources, possibly non-local */
 #ifdef HAVE_UTMPX_H
-        load_entries (daemon, users, entry_generator_wtmp);
+        load_entries (daemon, users, entry_generator_wtmp, FALSE);
 #endif
-        load_entries (daemon, users, entry_generator_cachedir);
+        load_entries (daemon, users, entry_generator_cachedir, TRUE);
 
         /* Mark which users are local, which are not */
         g_hash_table_iter_init (&iter, users);
openSUSE Build Service is sponsored by