FreeBSD Bugzilla – Attachment 241529 Details for
Bug 270881
sysutils/accountsservice: update to 23.13.9
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch to update sysutils/accountsservice
accountsservice-23.13.9.diff (text/plain), 46.13 KB, created by
Olivier Duchateau
on 2023-04-16 14:48:50 UTC
(
hide
)
Description:
Patch to update sysutils/accountsservice
Filename:
MIME Type:
Creator:
Olivier Duchateau
Created:
2023-04-16 14:48:50 UTC
Size:
46.13 KB
patch
obsolete
>diff --git a/sysutils/accountsservice/Makefile b/sysutils/accountsservice/Makefile >index 719111dd5..70723e50f 100644 >--- a/sysutils/accountsservice/Makefile >+++ b/sysutils/accountsservice/Makefile >@@ -1,13 +1,9 @@ > PORTNAME= accountsservice >-PORTVERSION= 0.6.55 >-PORTREVISION= 4 >+PORTVERSION= 23.13.9 > CATEGORIES= sysutils devel >-MASTER_SITES= http://www.freedesktop.org/software/${PORTNAME}/ >+MASTER_SITES= https://www.freedesktop.org/software/${PORTNAME}/ > >-PATCH_SITES= https://gitlab.freedesktop.org/${PORTNAME}/${PORTNAME}/-/commit/ >-PATCHFILES+= ac9b14f1c1bb.patch:-p1 # https://gitlab.freedesktop.org/accountsservice/accountsservice/-/merge_requests/82 >- >-MAINTAINER= kwm@FreeBSD.org >+MAINTAINER= desktop@FreeBSD.org > COMMENT= D-Bus interface for user account query and manipulation > WWW= https://gitlab.freedesktop.org/accountsservice/accountsservice > >@@ -15,16 +11,16 @@ LICENSE= GPLv3+ > LICENSE_FILE= ${WRKSRC}/COPYING > > BUILD_DEPENDS= dbus>0:devel/dbus >-LIB_DEPENDS= libpolkit-gobject-1.so:sysutils/polkit >+LIB_DEPENDS= libpolkit-gobject-1.so:sysutils/polkit \ >+ libconsolekit.so:sysutils/consolekit2 > > USES= cpe gettext gnome localbase:ldflags meson pkgconfig tar:xz > CPE_VENDOR= freedesktop > USE_GNOME= glib20 intltool libxslt introspection:build > USE_LDCONFIG= yes >-MESON_ARGS= -Delogind=false \ >- -Dgdmconffile=${LOCALBASE}/etc/gdm/custom.conf \ >+MESON_ARGS= -Dgdmconffile=${LOCALBASE}/etc/gdm/custom.conf \ >+ -Dlightdmconffile=${LOCALBASE}/etc/lightdm/lightdm.conf \ > -Dlocalstatedir=/var \ >- -Dsystemd=false \ > -Dsystemdsystemunitdir=no > > .include <bsd.port.mk> >diff --git a/sysutils/accountsservice/distinfo b/sysutils/accountsservice/distinfo >index 85de866bd..6f00fc371 100644 >--- a/sysutils/accountsservice/distinfo >+++ b/sysutils/accountsservice/distinfo >@@ -1,5 +1,3 @@ >-TIMESTAMP = 1600462353 >-SHA256 (accountsservice-0.6.55.tar.xz) = ff2b2419a7e06bd9cb335ffe391c7409b49a0f0130b890bd54692a3986699c9b >-SIZE (accountsservice-0.6.55.tar.xz) = 97972 >-SHA256 (ac9b14f1c1bb.patch) = 2a369203c0f9d091ab1d6ff46c3b9ab88c345ed27e314f04a867ccc4b33e2be2 >-SIZE (ac9b14f1c1bb.patch) = 723 >+TIMESTAMP = 1681654345 >+SHA256 (accountsservice-23.13.9.tar.xz) = adda4cdeae24fa0992e7df3ffff9effa7090be3ac233a3edfdf69d5a9c9b924f >+SIZE (accountsservice-23.13.9.tar.xz) = 636064 >diff --git a/sysutils/accountsservice/files/patch-meson.build b/sysutils/accountsservice/files/patch-meson.build >index 13ecb2d1e..3bfd57ee7 100644 >--- a/sysutils/accountsservice/files/patch-meson.build >+++ b/sysutils/accountsservice/files/patch-meson.build >@@ -1,16 +1,40 @@ >---- meson.build.orig 2018-09-29 12:54:53 UTC >+--- meson.build.orig 2023-03-15 15:09:35 UTC > +++ meson.build >-@@ -82,8 +82,11 @@ if cc.has_header_symbol('utmpx.h', 'WTMPX_FILENAME', p >- elif cc.has_header_symbol('paths.h', '_PATH_WTMPX') >+@@ -60,6 +60,7 @@ check_headers = [ >+ 'paths.h', >+ 'shadow.h', >+ 'utmpx.h', >++ 'crypt.h', >+ ] >+ >+ foreach header: check_headers >+@@ -104,7 +105,6 @@ elif cc.has_header_symbol('paths.h', '_PATH_WTMPX') > config_h.set('PATH_WTMP', '_PATH_WTMPX') > else >-- assert(run_command('test', '-e', '/var/log/utx.log').returncode() == 0, 'Do not know which filename to watch for wtmp changes') >-- config_h.set_quoted('PATH_WTMP', '/var/log/utx.log') >-+ # Ugly hack for jails builders! >-+ _system = host_machine.system().to_lower() >-+ if _system.contains('freebsd') >-+ config_h.set_quoted('PATH_WTMP', '/var/log/utx.log') >-+ endif >+ path_wtmp = '/var/log/utx.log' >+- assert(run_command('test', '-e', path_wtmp, check: false).returncode() == 0, 'Do not know which filename to watch for wtmp changes') >+ config_h.set_quoted('PATH_WTMP', path_wtmp) >+ endif >+ >+@@ -213,11 +213,7 @@ config_h.set_quoted('PATH_GDM_CUSTOM', gdm_conf_file) >+ lightdm_conf_file = get_option('lightdmconffile') >+ config_h.set_quoted('PATH_LIGHTDM_CONF', lightdm_conf_file) >+ >+-if get_option('elogind') >+- logind_dep = dependency('libelogind', version: '>= 229.4') >+-else >+- logind_dep = dependency('libsystemd', version: '>= 186') >+-endif >++logind_dep = dependency('libconsolekit', version: '>= 1.2.0') >+ >+ subdir('data') >+ subdir('src') >+@@ -232,7 +228,7 @@ if get_option('gtk_doc') >+ subdir('doc/libaccountsservice') > endif > >- # compiler flags >+-subdir('tests') >++#subdir('tests') >+ >+ configure_file( >+ output: 'config.h', >diff --git a/sysutils/accountsservice/files/patch-meson__post__install.py b/sysutils/accountsservice/files/patch-meson__post__install.py >index e0d71f5e7..26da68052 100644 >--- a/sysutils/accountsservice/files/patch-meson__post__install.py >+++ b/sysutils/accountsservice/files/patch-meson__post__install.py >@@ -1,11 +1,13 @@ >---- meson_post_install.py.orig 2019-04-23 15:16:09 UTC >+--- meson_post_install.py.orig 2022-02-15 21:53:55 UTC > +++ meson_post_install.py >-@@ -9,8 +9,8 @@ localstatedir = os.path.normpath(destdir + os.sep + sy >+@@ -9,9 +9,9 @@ localstatedir = os.path.normpath(destdir + os.sep + sy > # FIXME: meson will not track the creation of these directories > # https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 > dst_dirs = [ >+- (os.path.join(localstatedir, 'lib'), 0o755), > - (os.path.join(localstatedir, 'lib', 'AccountsService', 'icons'), 0o775), > - (os.path.join(localstatedir, 'lib', 'AccountsService', 'users'), 0o700), >++ (os.path.join(localstatedir, 'db'), 0o755), > + (os.path.join(localstatedir, 'db', 'AccountsService', 'icons'), 0o775), > + (os.path.join(localstatedir, 'db', 'AccountsService', 'users'), 0o700), > ] >diff --git a/sysutils/accountsservice/files/patch-src_daemon.c b/sysutils/accountsservice/files/patch-src_daemon.c >index 3a7131000..687793d5e 100644 >--- a/sysutils/accountsservice/files/patch-src_daemon.c >+++ b/sysutils/accountsservice/files/patch-src_daemon.c >@@ -1,95 +1,111 @@ >---- src/daemon.c.orig 2018-09-26 13:20:49 UTC >+--- src/daemon.c.orig 2023-04-15 16:00:14 UTC > +++ src/daemon.c >-@@ -79,7 +79,11 @@ typedef struct { >- GHashTable *extension_ifaces; >+@@ -95,11 +95,18 @@ typedef struct >+ GHashTable *extension_ifaces; > } DaemonPrivate; > > +#ifdef HAVE_SHADOW_H >- typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *, struct spwd **shadow_entry); >+ typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, >+ GHashTable *, >+ GHashTable *, >+ gpointer *, >+ struct spwd **shadow_entry); > +#else >-+typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *); >++typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, >++ GHashTable *, >++ GHashTable *, >++ gpointer *); > +#endif > >- static void daemon_accounts_accounts_iface_init (AccountsAccountsIface *iface); >- >-@@ -154,17 +158,25 @@ remove_cache_files (const gchar *user_name) >+ typedef struct >+ { >+@@ -206,19 +213,28 @@ remove_cache_files (const gchar *user_name) > } > > static struct passwd * > +#ifdef HAVE_SHADOW_H > entry_generator_fgetpwent (Daemon *daemon, > GHashTable *users, >+ GHashTable *local_users, > gpointer *state, > struct spwd **spent) > +#else > +entry_generator_fgetpwent (Daemon *daemon, > + GHashTable *users, >++ GHashTable *local_users, > + gpointer *state) > +#endif > { > struct passwd *pwent; > > +#ifdef HAVE_SHADOW_H >- struct { >+ struct >+ { > struct spwd spbuf; >- char buf[1024]; >+ char buf[1024]; > } *shadow_entry_buffers; > +#endif > >- struct { >- FILE *fp; >-@@ -175,6 +187,7 @@ entry_generator_fgetpwent (Daemon *daemon, >- if (*state == NULL) { >- GHashTable *shadow_users = NULL; >+ struct >+ { >+@@ -236,6 +252,7 @@ entry_generator_fgetpwent (Daemon *daemon, >+ g_autofree char *shadow_path = NULL; >+ g_autofree char *passwd_path = NULL; > FILE *fp; > +#ifdef HAVE_SHADOW_H > struct spwd *shadow_entry; > >- fp = fopen (PATH_SHADOW, "r"); >-@@ -208,6 +221,7 @@ entry_generator_fgetpwent (Daemon *daemon, >+ shadow_path = g_build_filename (get_sysconfdir (), PATH_SHADOW, NULL); >+@@ -271,6 +288,7 @@ entry_generator_fgetpwent (Daemon *daemon, > g_clear_pointer (&shadow_users, g_hash_table_unref); > return NULL; > } > +#endif > >- fp = fopen (PATH_PASSWD, "r"); >- if (fp == NULL) { >-@@ -229,12 +243,17 @@ entry_generator_fgetpwent (Daemon *daemon, >+ passwd_path = g_build_filename (get_sysconfdir (), PATH_PASSWD, NULL); >+ fp = fopen (passwd_path, "r"); >+@@ -293,6 +311,7 @@ entry_generator_fgetpwent (Daemon *daemon, > if (g_hash_table_size (users) < MAX_LOCAL_USERS) { > pwent = fgetpwent (generator_state->fp); > if (pwent != NULL) { > +#ifdef HAVE_SHADOW_H >- shadow_entry_buffers = g_hash_table_lookup (generator_state->users, pwent->pw_name); >+ shadow_entry_buffers = g_hash_table_lookup (generator_state->shadow_users, pwent->pw_name); > > if (shadow_entry_buffers != NULL) { >- *spent = &shadow_entry_buffers->spbuf; >+@@ -305,6 +324,13 @@ entry_generator_fgetpwent (Daemon *daemon, >+ >+ return entry_generator_fgetpwent (daemon, users, local_users, state, spent); > } >- return pwent; > +#else >-+ if (!generator_state->users || g_hash_table_lookup (generator_state->users, pwent->pw_name)) >-+ return pwent; >++ /* Skip system users... */ >++ if (!user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell)) { >++ g_debug ("skipping user: %s", pwent->pw_name); >++ return entry_generator_fgetpwent (daemon, users, local_users, state); >++ } > +#endif >- } >- } > >-@@ -248,10 +267,16 @@ entry_generator_fgetpwent (Daemon *daemon, >+ return pwent; >+ } >+@@ -319,11 +345,18 @@ entry_generator_fgetpwent (Daemon *daemon, > } > > static struct passwd * > +#ifdef HAVE_SHADOW_H > entry_generator_cachedir (Daemon *daemon, > GHashTable *users, >+ GHashTable *local_users, > gpointer *state, > struct spwd **shadow_entry) > +#else > +entry_generator_cachedir (Daemon *daemon, > + GHashTable *users, >++ GHashTable *local_users, > + gpointer *state) > +#endif > { > struct passwd *pwent; >- g_autoptr(GError) error = NULL; >-@@ -293,7 +318,9 @@ entry_generator_cachedir (Daemon *daemon, >+ >+@@ -366,7 +399,9 @@ entry_generator_cachedir (Daemon *daemon, > errno = 0; > pwent = getpwnam (name); > if (pwent != NULL) { >@@ -99,24 +115,26 @@ > > return pwent; > } else if (errno == 0) { >-@@ -329,10 +356,16 @@ entry_generator_cachedir (Daemon *daemon, >+@@ -405,11 +440,18 @@ entry_generator_cachedir (Daemon *daemon, > } > > static struct passwd * > +#ifdef HAVE_SHADOW_H > entry_generator_requested_users (Daemon *daemon, > GHashTable *users, >+ GHashTable *local_users, > gpointer *state, > struct spwd **shadow_entry) > +#else > +entry_generator_requested_users (Daemon *daemon, > + GHashTable *users, >++ GHashTable *local_users, > + gpointer *state) > +#endif > { > DaemonPrivate *priv = daemon_get_instance_private (daemon); > struct passwd *pwent; >-@@ -360,7 +393,9 @@ entry_generator_requested_users (Daemon *daemon, >+@@ -437,7 +479,9 @@ entry_generator_requested_users (Daemon *daemon, > if (pwent == NULL) { > g_debug ("user '%s' requested previously but not present on system", name); > } else { >@@ -126,7 +144,7 @@ > > return pwent; > } >-@@ -383,19 +418,29 @@ load_entries (Daemon *daemon, >+@@ -461,14 +505,20 @@ load_entries (Daemon *daemon, > DaemonPrivate *priv = daemon_get_instance_private (daemon); > gpointer generator_state = NULL; > struct passwd *pwent; >@@ -140,23 +158,14 @@ > for (;;) { > +#ifdef HAVE_SHADOW_H > spent = NULL; >- pwent = entry_generator (daemon, users, &generator_state, &spent); >+ pwent = entry_generator (daemon, users, local_users, &generator_state, &spent); > +#else >-+ pwent = entry_generator (daemon, users, &generator_state); >++ pwent = entry_generator (daemon, users, local_users, &generator_state); > +#endif > if (pwent == NULL) > break; > >- /* Skip system users... */ >-+#ifdef HAVE_SHADOW_H >- if (!explicitly_requested && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, spent? spent->sp_pwdp : NULL)) { >-+#else >-+ if (!explicitly_requested && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, NULL)) { >-+#endif >- g_debug ("skipping user: %s", pwent->pw_name); >- continue; >- } >-@@ -417,7 +462,11 @@ load_entries (Daemon *daemon, >+@@ -489,7 +539,11 @@ load_entries (Daemon *daemon, > > /* freeze & update users not already in the new list */ > g_object_freeze_notify (G_OBJECT (user)); >@@ -168,7 +177,7 @@ > > g_hash_table_insert (users, g_strdup (user_get_user_name (user)), user); > g_debug ("loaded user: %s", user_get_user_name (user)); >-@@ -823,15 +872,24 @@ throw_error (GDBusMethodInvocation *context, >+@@ -952,15 +1006,24 @@ throw_error (GDBusMethodInvocation *context, > } > > static User * >@@ -193,7 +202,7 @@ > user_register (user); > > g_hash_table_insert (priv->users, >-@@ -860,9 +918,13 @@ daemon_local_find_user_by_id (Daemon *daemon, >+@@ -989,9 +1052,13 @@ daemon_local_find_user_by_id (Daemon *daemon, > user = g_hash_table_lookup (priv->users, pwent->pw_name); > > if (user == NULL) { >@@ -207,7 +216,7 @@ > > priv->explicitly_requested_users = g_list_append (priv->explicitly_requested_users, > g_strdup (pwent->pw_name)); >-@@ -888,9 +950,13 @@ daemon_local_find_user_by_name (Daemon *daemon, >+@@ -1017,9 +1084,13 @@ daemon_local_find_user_by_name (Daemon *daemon, > user = g_hash_table_lookup (priv->users, pwent->pw_name); > > if (user == NULL) { >@@ -221,7 +230,7 @@ > > priv->explicitly_requested_users = g_list_append (priv->explicitly_requested_users, > g_strdup (pwent->pw_name)); >-@@ -1095,10 +1161,12 @@ daemon_create_user_authorized_cb (Daemon >+@@ -1294,10 +1365,12 @@ daemon_create_user_authorized_cb (Daemon > > sys_log (context, "create user '%s'", cd->user_name); > >@@ -236,11 +245,11 @@ > + argv[4] = "-c"; > + argv[5] = cd->real_name; > if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) { >- if (EXTRA_ADMIN_GROUPS != NULL && EXTRA_ADMIN_GROUPS[0] != '\0') >- admin_groups = g_strconcat (ADMIN_GROUP, ",", >-@@ -1106,15 +1174,11 @@ daemon_create_user_authorized_cb (Daemon >- else >- admin_groups = g_strdup (ADMIN_GROUP); >+ g_auto (GStrv) admin_groups_array = NULL; >+ g_autoptr (GStrvBuilder) admin_groups_builder = g_strv_builder_new (); >+@@ -1318,14 +1391,10 @@ daemon_create_user_authorized_cb (Daemon >+ admin_groups_array = g_strv_builder_end (admin_groups_builder); >+ admin_groups = g_strjoinv (",", admin_groups_array); > > - argv[4] = "-G"; > - argv[5] = admin_groups; >@@ -249,25 +258,24 @@ > + argv[6] = "-G"; > + argv[7] = admin_groups; > argv[8] = NULL; >- } >- else if (cd->account_type == ACCOUNT_TYPE_STANDARD) { >+ } else if (cd->account_type == ACCOUNT_TYPE_STANDARD) { > - argv[4] = "--"; > - argv[5] = cd->user_name; > argv[6] = NULL; >- } >- else { >-@@ -1281,7 +1345,7 @@ daemon_delete_user_authorized_cb (Daemon >- DeleteUserData *ud = data; >- g_autoptr(GError) error = NULL; >+ } else { >+ throw_error (context, ERROR_FAILED, "Don't know how to add user of type %d", cd->account_type); >+@@ -1490,7 +1559,7 @@ daemon_delete_user_authorized_cb (Daemon >+ >+ g_autoptr (GError) error = NULL; > struct passwd *pwent; > - const gchar *argv[6]; > + const gchar *argv[5]; >+ const gchar *homedir; >+ gchar *resolved_homedir; > User *user; >- >- pwent = getpwuid (ud->uid); >-@@ -1307,19 +1371,16 @@ daemon_delete_user_authorized_cb (Daemon >- >- user_set_saved (user, FALSE); >+@@ -1527,18 +1596,15 @@ daemon_delete_user_authorized_cb (Daemon >+ } >+ free (resolved_homedir); > > - argv[0] = "/usr/sbin/userdel"; > + argv[0] = "/usr/sbin/pw"; >@@ -278,17 +286,16 @@ > - argv[3] = "--"; > - argv[4] = pwent->pw_name; > - argv[5] = NULL; >-+ argv[2] = pwent->pw_name; >-+ argv[3] = "-r"; >-+ argv[4] = NULL; >- } >- else { >+- } else { > - argv[1] = "-f"; > - argv[2] = "--"; > - argv[3] = pwent->pw_name; >-- argv[4] = NULL; >++ argv[2] = pwent->pw_name; >++ argv[3] = "-r"; >+ argv[4] = NULL; >++ } else { > + argv[2] = pwent->pw_name; > + argv[3] = NULL; > } > >- if (!spawn_with_login_uid (context, argv, &error)) { >+ if (!spawn_sync (argv, &error)) { >diff --git a/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user-manager.c b/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user-manager.c >index 9026883f2..85a5c6cc2 100644 >--- a/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user-manager.c >+++ b/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user-manager.c >@@ -1,18 +1,166 @@ >-Obtained from: >- https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/sysutils/accountsservice/patches/patch-src_libaccountsservice_act-user-manager_c >- >-$OpenBSD: patch-src_libaccountsservice_act-user-manager_c,v 1.2 2021/08/30 19:15:24 ajacoutot Exp $ >- >-REVERT: (breaks listing users in gdm and gnome-cc and unlocking screenshield) >-From c7fa612023a163e8b2352e1170c6df3fceb19b27 Mon Sep 17 00:00:00 2001 >-From: Ray Strode <rstrode@redhat.com> >-Date: Thu, 19 Jul 2018 13:14:09 -0400 >-Subject: [PATCH] lib: don't set loaded state until seat is fetched >- >-Index: src/libaccountsservice/act-user-manager.c >---- src/libaccountsservice/act-user-manager.c.orig >+--- src/libaccountsservice/act-user-manager.c.orig 2023-03-15 15:09:35 UTC > +++ src/libaccountsservice/act-user-manager.c >-@@ -2547,7 +2547,7 @@ maybe_set_is_loaded (ActUserManager *manager) >+@@ -40,7 +40,8 @@ >+ #include <glib-object.h> >+ #include <gio/gio.h> >+ #include <gio/gunixinputstream.h> >+-#include <systemd/sd-login.h> >++#include <libconsolekit.h> >++#include <sd-login.h> >+ >+ #include "act-user-manager.h" >+ #include "act-user-private.h" >+@@ -100,9 +101,6 @@ typedef struct >+ char *id; >+ char *session_id; >+ guint load_idle_id; >+- sd_login_monitor *session_monitor; >+- GInputStream *session_monitor_stream; >+- guint session_monitor_source_id; >+ } ActUserManagerSeat; >+ >+ typedef enum >+@@ -165,6 +163,8 @@ typedef struct >+ >+ ActUserManagerSeat seat; >+ >++ LibConsoleKit *ck; >++ >+ GSList *new_sessions; >+ GSList *new_users; /* (element-type ActUser) (owned) */ >+ GSList *new_users_inhibiting_load; /* (element-type ActUser) (unowned) */ >+@@ -271,9 +271,9 @@ activate_systemd_session_id (ActUserManager *manager, >+ } >+ >+ reply = g_dbus_connection_call_sync (connection, >+- "org.freedesktop.login1", >+- "/org/freedesktop/login1", >+- "org.freedesktop.login1.Manager", >++ "org.freedesktop.ConsoleKit", >++ "/org/freedesktop/ConsoleKit/Manager", >++ "org.freedesktop.ConsoleKit.Manager", >+ "ActivateSessionOnSeat", >+ g_variant_new ("(ss)", >+ seat_id, >+@@ -318,9 +318,7 @@ session_is_on_our_seat (ActUserManager *manager, >+ g_autofree gchar *session_seat = NULL; >+ >+ res = sd_session_get_seat (session_id, &session_seat); >+- if (res == -ENODATA) { >+- return FALSE; >+- } else if (res < 0) { >++ if (res < 0) { >+ g_debug ("failed to determine seat of session %s: %s", >+ session_id, >+ strerror (-res)); >+@@ -521,7 +519,7 @@ queue_load_seat_incrementally (ActUserManager *manager >+ static gboolean >+ _systemd_session_is_graphical (const char *session_id) >+ { >+- const gchar * const graphical_session_types[] = { "wayland", "x11", "mir", NULL }; >++ const gchar * const graphical_session_types[] = { "wayland", "x11", NULL }; >+ int saved_errno; >+ g_autofree gchar *type = NULL; >+ >+@@ -637,9 +635,7 @@ get_seat_id_for_current_session (ActUserManager *manag >+ >+ res = sd_session_get_seat (priv->seat.session_id, &seat_id); >+ >+- if (res == -ENODATA) { >+- seat_id = NULL; >+- } else if (res < 0) { >++ if (res < 0) { >+ g_warning ("Could not get current seat: %s", >+ strerror (-res)); >+ unload_seat (manager); >+@@ -1340,15 +1336,24 @@ get_x11_display_for_new_session (ActUserManagerNewSess >+ session_type, >+ new_session->id); >+ x11_display = NULL; >+- goto done; >++ //goto done; >+ } >+ >+- res = sd_session_get_display (new_session->id, >+- &x11_display); >+- if (res < 0) { >+- g_debug ("ActUserManager: Failed to get the x11 display of session '%s': %s", >+- new_session->id, >+- strerror (-res)); >++ ActUserManager *manager; >++ g_autoptr(GError) error = NULL; >++ >++ manager = ACT_USER_MANAGER (new_session->manager); >++ ActUserManagerPrivate *priv = act_user_manager_get_instance_private (manager); >++ if (!lib_consolekit_session_get_display (priv->ck, >++ new_session->id, >++ &x11_display, &error)) { >++ if (error != NULL) { >++ g_debug ("ActUserManager: Failed to get the x11 display of session '%s': %s", >++ new_session->id, error->message); >++ } else { >++ g_debug ("ActUserManager: Failed to get the x11 display of session '%s'", >++ new_session->id); >++ } >+ g_debug ("ActUserManager: Treating X11 display as blank"); >+ x11_display = strdup (""); >+ } else { >+@@ -1356,7 +1361,7 @@ get_x11_display_for_new_session (ActUserManagerNewSess >+ new_session->id, x11_display); >+ } >+ >+-done: >++//done: >+ new_session->x11_display = g_strdup (x11_display); >+ new_session->state++; >+ >+@@ -1627,10 +1632,6 @@ static gboolean >+ on_session_monitor_event (GPollableInputStream *stream, >+ ActUserManager *manager) >+ { >+- ActUserManagerPrivate *priv = act_user_manager_get_instance_private (manager); >+- >+- sd_login_monitor_flush (priv->seat.session_monitor); >+- reload_systemd_sessions (manager); >+ return TRUE; >+ } >+ >+@@ -1638,31 +1639,13 @@ static void >+ _monitor_for_systemd_session_changes (ActUserManager *manager) >+ { >+ ActUserManagerPrivate *priv = act_user_manager_get_instance_private (manager); >+- int res; >+- int fd; >+- GSource *source; >++ priv->ck = lib_consolekit_new (); >+ >+- res = sd_login_monitor_new ("session", &priv->seat.session_monitor); >+- >+- if (res < 0) { >+- g_warning ("Failed to monitor logind session changes: %s", >+- strerror (-res)); >++ if (priv->ck == NULL) { >++ g_warning ("Failed to connect to the ConsoleKit daemon"); >+ unload_seat (manager); >+ return; >+ } >+- >+- fd = sd_login_monitor_get_fd (priv->seat.session_monitor); >+- >+- priv->seat.session_monitor_stream = g_unix_input_stream_new (fd, FALSE); >+- source = g_pollable_input_stream_create_source (G_POLLABLE_INPUT_STREAM (priv->seat.session_monitor_stream), >+- NULL); >+- g_source_set_callback (source, >+- (GSourceFunc) >+- on_session_monitor_event, >+- manager, >+- NULL); >+- priv->seat.session_monitor_source_id = g_source_attach (source, NULL); >+- g_source_unref (source); >+ } >+ >+ static void >+@@ -2046,7 +2029,7 @@ maybe_set_is_loaded (ActUserManager *manager) > /* Don't set is_loaded yet unless the seat is already loaded enough > * or failed to load. > */ >@@ -21,4 +169,22 @@ Index: src/libaccountsservice/act-user-manager.c > g_debug ("ActUserManager: Seat loaded, so now setting loaded property"); > } else if (priv->seat.state == ACT_USER_MANAGER_SEAT_STATE_UNLOADED) { > g_debug ("ActUserManager: Seat wouldn't load, so giving up on it and setting loaded property"); >- >+@@ -2528,16 +2511,8 @@ act_user_manager_finalize (GObject *object) >+ g_source_remove (priv->seat.load_idle_id); >+ } >+ >+- if (priv->seat.session_monitor != NULL) { >+- sd_login_monitor_unref (priv->seat.session_monitor); >+- } >+- >+- if (priv->seat.session_monitor_stream != NULL) { >+- g_object_unref (priv->seat.session_monitor_stream); >+- } >+- >+- if (priv->seat.session_monitor_source_id != 0) { >+- g_source_remove (priv->seat.session_monitor_source_id); >++ if (priv->ck != NULL) { >++ g_object_unref (priv->ck); >+ } >+ >+ if (priv->accounts_proxy != NULL) { >diff --git a/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user.c b/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user.c >index f8b4dfae0..602409aca 100644 >--- a/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user.c >+++ b/sysutils/accountsservice/files/patch-src_libaccountsservice_act-user.c >@@ -1,11 +1,12 @@ >---- src/libaccountsservice/act-user.c.orig 2018-04-04 13:59:42 UTC >+--- src/libaccountsservice/act-user.c.orig 2022-01-28 20:47:34 UTC > +++ src/libaccountsservice/act-user.c >-@@ -26,8 +26,6 @@ >+@@ -26,7 +26,9 @@ > #include <sys/stat.h> > #include <unistd.h> > >--#include <crypt.h> >-- >++#ifdef HAVE_CRYPT_H >+ #include <crypt.h> >++#endif >+ > #include <glib.h> > #include <glib/gi18n.h> >- #include <gio/gio.h> >diff --git a/sysutils/accountsservice/files/patch-src_meson.build b/sysutils/accountsservice/files/patch-src_meson.build >index 9687666fe..6370fd7be 100644 >--- a/sysutils/accountsservice/files/patch-src_meson.build >+++ b/sysutils/accountsservice/files/patch-src_meson.build >@@ -1,9 +1,9 @@ >---- src/meson.build.orig 2018-09-29 12:54:53 UTC >+--- src/meson.build.orig 2022-01-28 20:47:34 UTC > +++ src/meson.build >-@@ -26,8 +26,8 @@ deps = [ >- cflags = [ >+@@ -28,8 +28,8 @@ cflags = [ > '-DLOCALSTATEDIR="@0@"'.format(act_localstatedir), > '-DDATADIR="@0@"'.format(act_datadir), >+ '-DSYSCONFDIR="@0@"'.format(act_sysconfdir), > - '-DICONDIR="@0@"'.format(join_paths(act_localstatedir, 'lib', 'AccountsService', 'icons')), > - '-DUSERDIR="@0@"'.format(join_paths(act_localstatedir, 'lib', 'AccountsService', 'users')), > + '-DICONDIR="@0@"'.format(join_paths(act_localstatedir, 'db', 'AccountsService', 'icons')), >diff --git a/sysutils/accountsservice/files/patch-src_user.c b/sysutils/accountsservice/files/patch-src_user.c >index 97de2d32f..baf5692cc 100644 >--- a/sysutils/accountsservice/files/patch-src_user.c >+++ b/sysutils/accountsservice/files/patch-src_user.c >@@ -1,6 +1,6 @@ >---- src/user.c.orig 2018-04-20 20:52:07 UTC >+--- src/user.c.orig 2023-03-15 15:09:35 UTC > +++ src/user.c >-@@ -138,9 +138,14 @@ user_reset_icon_file (User *user) >+@@ -407,9 +407,14 @@ user_update_from_template (User *user) > } > > void >@@ -15,7 +15,7 @@ > { > g_autofree gchar *real_name = NULL; > gboolean is_system_account; >-@@ -199,8 +204,10 @@ user_update_from_pwent (User *user, >+@@ -468,8 +473,10 @@ user_update_from_pwent (User *user, > accounts_user_set_shell (ACCOUNTS_USER (user), pwent->pw_shell); > > passwd = NULL; >@@ -26,7 +26,7 @@ > > if (passwd && passwd[0] == '!') { > locked = TRUE; >-@@ -218,6 +225,7 @@ user_update_from_pwent (User *user, >+@@ -485,6 +492,7 @@ user_update_from_pwent (User *user, > mode = PASSWORD_MODE_NONE; > } > >@@ -34,34 +34,34 @@ > if (spent) { > if (spent->sp_lstchg == 0) { > mode = PASSWORD_MODE_SET_AT_LOGIN; >-@@ -231,6 +239,9 @@ user_update_from_pwent (User *user, >+@@ -504,6 +512,9 @@ user_update_from_pwent (User *user, > user->days_after_expiration_until_lock = spent->sp_inact; > user->account_expiration_policy_known = TRUE; > } > +#else >-+ user->expiration_time = pwent->pw_expire; >++ user->user_expiration_time = g_date_time_new_from_unix_utc (pwent->pw_expire); > +#endif > > accounts_user_set_password_mode (ACCOUNTS_USER (user), mode); > is_system_account = !user_classify_is_human (accounts_user_get_uid (ACCOUNTS_USER (user)), >-@@ -813,11 +824,11 @@ user_change_real_name_authorized_cb (Daemon >- accounts_user_get_uid (ACCOUNTS_USER (user)), >- name); >+@@ -1193,11 +1204,11 @@ user_change_real_name_authorized_cb (Daemon >+ new_gecos = g_strdup (name); >+ } > > - argv[0] = "/usr/sbin/usermod"; > - argv[1] = "-c"; >-- argv[2] = name; >+- argv[2] = new_gecos; > - argv[3] = "--"; > - argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user)); > + argv[0] = "/usr/sbin/pw"; > + argv[1] = "usermod"; > + argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user)); > + argv[3] = "-c"; >-+ argv[4] = name; >++ argv[4] = new_gecos; > argv[5] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >-@@ -882,11 +893,11 @@ user_change_user_name_authorized_cb (Daemon >+ if (!spawn_sync (argv, &error)) { >+@@ -1267,11 +1278,11 @@ user_change_user_name_authorized_cb (Daemon > accounts_user_get_uid (ACCOUNTS_USER (user)), > name); > >@@ -77,17 +77,17 @@ > + argv[4] = name; > argv[5] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >-@@ -1183,7 +1194,7 @@ user_change_home_dir_authorized_cb (Daemon >- { >+ if (!spawn_sync (argv, &error)) { >+@@ -1910,7 +1921,7 @@ user_change_home_dir_authorized_cb (Daemon > gchar *home_dir = data; >- g_autoptr(GError) error = NULL; >+ >+ g_autoptr (GError) error = NULL; > - const gchar *argv[7]; >-+ const gchar *argv[6]; >++ const gchar *argv[8]; > > if (g_strcmp0 (accounts_user_get_home_directory (ACCOUNTS_USER (user)), home_dir) != 0) { > sys_log (context, >-@@ -1192,13 +1203,12 @@ user_change_home_dir_authorized_cb (Daemon >+@@ -1919,13 +1930,14 @@ user_change_home_dir_authorized_cb (Daemon > accounts_user_get_uid (ACCOUNTS_USER (user)), > home_dir); > >@@ -99,15 +99,17 @@ > - argv[5] = accounts_user_get_user_name (ACCOUNTS_USER (user)); > - argv[6] = NULL; > + argv[0] = "/usr/sbin/pw"; >-+ argv[1] = "-d"; >-+ argv[2] = home_dir; >-+ argv[3] = "-n"; >-+ argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-+ argv[5] = NULL; >- >- if (!spawn_with_login_uid (context, argv, &error)) { >++ argv[1] = "usermod"; >++ argv[2] = "-n"; >++ argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >++ argv[4] = "-d"; >++ argv[5] = home_dir; >++ argv[6] = "-m"; >++ argv[7] = NULL; >+ >+ if (!spawn_sync (argv, &error)) { > throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message); >-@@ -1249,11 +1259,11 @@ user_change_shell_authorized_cb (Daemon >+@@ -1977,11 +1989,11 @@ user_change_shell_authorized_cb (Daemon > accounts_user_get_uid (ACCOUNTS_USER (user)), > shell); > >@@ -123,33 +125,30 @@ > + argv[4] = shell; > argv[5] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >-@@ -1456,7 +1466,7 @@ user_change_locked_authorized_cb (Daemon >- { >- gboolean locked = GPOINTER_TO_INT (data); >- g_autoptr(GError) error = NULL; >-- const gchar *argv[5]; >-+ const gchar *argv[4]; >- >- if (accounts_user_get_locked (ACCOUNTS_USER (user)) != locked) { >- sys_log (context, >-@@ -1464,11 +1474,10 @@ user_change_locked_authorized_cb (Daemon >+ if (!spawn_sync (argv, &error)) { >+@@ -2201,9 +2213,9 @@ user_change_locked_authorized_cb (Daemon > locked ? "locking" : "unlocking", > accounts_user_get_user_name (ACCOUNTS_USER (user)), > accounts_user_get_uid (ACCOUNTS_USER (user))); > - argv[0] = "/usr/sbin/usermod"; > - argv[1] = locked ? "-L" : "-U"; > - argv[2] = "--"; >-- argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-- argv[4] = NULL; > + argv[0] = "/usr/sbin/pw"; > + argv[1] = locked ? "lock" : "unlock"; >-+ argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-+ argv[3] = NULL; >++ argv[2] = "-n"; >+ argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >+ argv[4] = NULL; >+ >+@@ -2281,7 +2293,7 @@ user_change_account_type_authorized_cb (Daemon >+ gsize n_extra_admin_groups_gids = 0; >+ gid_t admin_gid; >+ gint i; >+- const gchar *argv[6]; >++ const gchar *argv[7]; > >- if (!spawn_with_login_uid (context, argv, &error)) { >- throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message); >-@@ -1589,11 +1598,11 @@ user_change_account_type_authorized_cb (Daemon >+ if (((AccountType) accounts_user_get_account_type (ACCOUNTS_USER (user))) != account_type) { >+ sys_log (context, >+@@ -2328,11 +2340,11 @@ user_change_account_type_authorized_cb (Daemon > > g_free (groups); > >@@ -165,19 +164,19 @@ > + argv[4] = str->str; > argv[5] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >-@@ -1643,7 +1652,7 @@ user_change_password_mode_authorized_cb (Daemon >- { >+ if (!spawn_sync (argv, &error)) { >+@@ -2383,7 +2395,7 @@ user_change_password_mode_authorized_cb (Daemon > PasswordMode mode = GPOINTER_TO_INT (data); >- g_autoptr(GError) error = NULL; >+ >+ g_autoptr (GError) error = NULL; > - const gchar *argv[6]; > + const gchar *argv[5]; > > if (((PasswordMode) accounts_user_get_password_mode (ACCOUNTS_USER (user))) != mode) { > sys_log (context, >-@@ -1658,10 +1667,8 @@ user_change_password_mode_authorized_cb (Daemon >+@@ -2397,10 +2409,8 @@ user_change_password_mode_authorized_cb (Daemon >+ if (mode == PASSWORD_MODE_SET_AT_LOGIN || > mode == PASSWORD_MODE_NONE) { >- > argv[0] = "/usr/bin/passwd"; > - argv[1] = "-d"; > - argv[2] = "--"; >@@ -186,9 +185,9 @@ > + argv[1] = accounts_user_get_user_name (ACCOUNTS_USER (user)); > + argv[2] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >+ if (!spawn_sync (argv, &error)) { > throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message); >-@@ -1669,12 +1676,11 @@ user_change_password_mode_authorized_cb (Daemon >+@@ -2408,12 +2418,11 @@ user_change_password_mode_authorized_cb (Daemon > } > > if (mode == PASSWORD_MODE_SET_AT_LOGIN) { >@@ -203,46 +202,27 @@ > + argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); > + argv[4] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >+ if (!spawn_sync (argv, &error)) { > throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message); >-@@ -1690,11 +1696,10 @@ user_change_password_mode_authorized_cb (Daemon >+@@ -2428,9 +2437,9 @@ user_change_password_mode_authorized_cb (Daemon >+ */ > accounts_user_set_locked (ACCOUNTS_USER (user), FALSE); >- } >- else if (accounts_user_get_locked (ACCOUNTS_USER (user))) { >+ } else if (accounts_user_get_locked (ACCOUNTS_USER (user))) { > - argv[0] = "/usr/sbin/usermod"; > - argv[1] = "-U"; > - argv[2] = "--"; >-- argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-- argv[4] = NULL; > + argv[0] = "/usr/sbin/pw"; > + argv[1] = "unlock"; >-+ argv[2] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-+ argv[3] = NULL; >++ argv[2] = "-n"; >+ argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >+ argv[4] = NULL; > >- if (!spawn_with_login_uid (context, argv, &error)) { >- throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message); >-@@ -1759,7 +1764,7 @@ user_change_password_authorized_cb (Daemon >- { >- gchar **strings = data; >- g_autoptr(GError) error = NULL; >-- const gchar *argv[6]; >-+ const gchar *argv[5]; >+@@ -2505,7 +2514,7 @@ user_change_password_authorized_cb (Daemon >+ >+ g_autoptr (GError) error = NULL; >+ g_autoptr (GSubprocess) process = NULL; >+- const char *argv[] = { "/usr/sbin/chpasswd", "-e", NULL }; >++ const char *argv[] = { "/usr/bin/passwd", NULL }; > > sys_log (context, >- "set password and hint of user '%s' (%d)", >-@@ -1768,12 +1773,11 @@ user_change_password_authorized_cb (Daemon >- >- g_object_freeze_notify (G_OBJECT (user)); >- >-- argv[0] = "/usr/sbin/usermod"; >-+ argv[0] = "/usr/bin/chpass"; >- argv[1] = "-p"; >- argv[2] = strings[0]; >-- argv[3] = "--"; >-- argv[4] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-- argv[5] = NULL; >-+ argv[3] = accounts_user_get_user_name (ACCOUNTS_USER (user)); >-+ argv[4] = NULL; >- >- if (!spawn_with_login_uid (context, argv, &error)) { >- throw_error (context, ERROR_FAILED, "running '%s' failed: %s", argv[0], error->message); >+ "set password and hint of user '%s' (%" G_GUINT64_FORMAT ")", >diff --git a/sysutils/accountsservice/files/patch-src_user.h b/sysutils/accountsservice/files/patch-src_user.h >index fa8454f75..9f4c61894 100644 >--- a/sysutils/accountsservice/files/patch-src_user.h >+++ b/sysutils/accountsservice/files/patch-src_user.h >@@ -1,27 +1,17 @@ >---- src/user.h.orig 2016-09-06 17:31:50 UTC >+--- src/user.h.orig 2023-03-15 15:09:35 UTC > +++ src/user.h >-@@ -22,7 +22,9 @@ >+@@ -55,9 +55,14 @@ GType user_get_type (void) G_GNUC_CONST; >+ User * user_new (Daemon *daemon, >+ uid_t uid); > >- #include <sys/types.h> >- #include <pwd.h> > +#ifdef HAVE_SHADOW_H >- #include <shadow.h> >-+#endif >- >- #include <glib.h> >- #include <gio/gio.h> >-@@ -54,9 +56,14 @@ GType user_get_type (void) G_G >- User * user_new (Daemon *daemon, >- uid_t uid); >- >-+#ifdef HAVE_SHADOW_H >- void user_update_from_pwent (User *user, >- struct passwd *pwent, >- struct spwd *spent); >+ void user_update_from_pwent (User *user, >+ struct passwd *pwent, >+ struct spwd *spent); > +#else >-+void user_update_from_pwent (User *user, >-+ struct passwd *pwent); >++void user_update_from_pwent (User *user, >++ struct passwd *pwent); > +#endif >- void user_update_from_keyfile (User *user, >- GKeyFile *keyfile); >- void user_update_local_account_property (User *user, >+ void user_update_from_cache (User *user); >+ void user_update_local_account_property (User *user, >+ gboolean local); >diff --git a/sysutils/accountsservice/files/patch-src_wtmp-helper.h b/sysutils/accountsservice/files/patch-src_wtmp-helper.h >deleted file mode 100644 >index ab1425351..000000000 >--- a/sysutils/accountsservice/files/patch-src_wtmp-helper.h >+++ /dev/null >@@ -1,10 +0,0 @@ >---- src/wtmp-helper.h.orig 2016-09-06 19:48:50 UTC >-+++ src/wtmp-helper.h >-@@ -23,7 +23,6 @@ >- >- #include <glib.h> >- #include <pwd.h> >--#include <shadow.h> >- >- const gchar * wtmp_helper_get_path_for_monitor (void); >- void wtmp_helper_update_login_frequencies (GHashTable *users); >diff --git a/sysutils/accountsservice/pkg-plist b/sysutils/accountsservice/pkg-plist >index c9b64a57e..3bca97065 100644 >--- a/sysutils/accountsservice/pkg-plist >+++ b/sysutils/accountsservice/pkg-plist >@@ -1,4 +1,3 @@ >-etc/dbus-1/system.d/org.freedesktop.Accounts.conf > include/accountsservice-1.0/act/act-user-enum-types.h > include/accountsservice-1.0/act/act-user-manager.h > include/accountsservice-1.0/act/act-user.h >@@ -9,9 +8,12 @@ lib/libaccountsservice.so.0 > lib/libaccountsservice.so.0.0.0 > libdata/pkgconfig/accountsservice.pc > libexec/accounts-daemon >+%%DATADIR%%/user-templates/administrator >+%%DATADIR%%/user-templates/standard > share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml > share/dbus-1/interfaces/org.freedesktop.Accounts.xml > share/dbus-1/system-services/org.freedesktop.Accounts.service >+share/dbus-1/system.d/org.freedesktop.Accounts.conf > share/gir-1.0/AccountsService-1.0.gir > share/locale/af/LC_MESSAGES/accounts-service.mo > share/locale/ar/LC_MESSAGES/accounts-service.mo >@@ -88,6 +90,8 @@ share/locale/zh_CN/LC_MESSAGES/accounts-service.mo > share/locale/zh_HK/LC_MESSAGES/accounts-service.mo > share/locale/zh_TW/LC_MESSAGES/accounts-service.mo > share/polkit-1/actions/org.freedesktop.accounts.policy >+share/vala/vapi/accountsservice.deps >+share/vala/vapi/accountsservice.vapi > @dir(,,0775) /var/db/AccountsService/icons > @dir(,,0700) /var/db/AccountsService/users > @dir /var/db/AccountsService
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 270881
: 241529 |
244100
|
244103