diff -Nru accountsservice-0.6.42/aclocal.m4 accountsservice-0.6.45/aclocal.m4 --- accountsservice-0.6.42/aclocal.m4 2016-06-09 14:17:23.000000000 +0000 +++ accountsservice-0.6.45/aclocal.m4 2017-03-27 18:32:57.000000000 +0000 @@ -834,8 +834,8 @@ ]) # nls.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, -dnl Inc. +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software +dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -866,63 +866,32 @@ AC_SUBST([USE_NLS]) ]) -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl -dnl Copyright © 2004 Scott James Remnant . -dnl Copyright © 2012-2015 Dan Nicholson -dnl -dnl This program is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU General Public License as published by -dnl the Free Software Foundation; either version 2 of the License, or -dnl (at your option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -dnl General Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License -dnl along with this program; if not, write to the Free Software -dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -dnl 02111-1307, USA. -dnl -dnl As a special exception to the GNU General Public License, if you -dnl distribute this file as part of a program that contains a -dnl configuration script generated by Autoconf, you may include it under -dnl the same distribution terms that you use for the rest of that -dnl program. - -dnl PKG_PREREQ(MIN-VERSION) -dnl ----------------------- -dnl Since: 0.29 -dnl -dnl Verify that the version of the pkg-config macros are at least -dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's -dnl installed version of pkg-config, this checks the developer's version -dnl of pkg.m4 when generating configure. -dnl -dnl To ensure that this macro is defined, also add: -dnl m4_ifndef([PKG_PREREQ], -dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) -dnl -dnl See the "Since" comment for each macro you use to see what version -dnl of the macros you require. -m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) -m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, - [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) -])dnl PKG_PREREQ - -dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) -dnl ---------------------------------- -dnl Since: 0.16 -dnl -dnl Search for the pkg-config tool and set the PKG_CONFIG variable to -dnl first found in the path. Checks that the version of pkg-config found -dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is -dnl used since that's the first version where most current features of -dnl pkg-config existed. +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) @@ -944,19 +913,18 @@ PKG_CONFIG="" fi fi[]dnl -])dnl PKG_PROG_PKG_CONFIG +])# PKG_PROG_PKG_CONFIG -dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------------------------------- -dnl Since: 0.18 -dnl -dnl Check to see whether a particular set of modules exists. Similar to -dnl PKG_CHECK_MODULES(), but does not set variables or print errors. -dnl -dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurence in configure.ac, so if the first place -dnl it's called might be skipped (such as if it is within an "if", you -dnl have to call PKG_CHECK_EXISTS manually +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ @@ -966,10 +934,8 @@ $3])dnl fi]) -dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -dnl --------------------------------------------- -dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting -dnl pkg_failed based on the result. +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" @@ -981,11 +947,10 @@ else pkg_failed=untried fi[]dnl -])dnl _PKG_CONFIG +])# _PKG_CONFIG -dnl _PKG_SHORT_ERRORS_SUPPORTED -dnl --------------------------- -dnl Internal check to see if pkg-config supports short errors. +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -993,17 +958,19 @@ else _pkg_short_errors_supported=no fi[]dnl -])dnl _PKG_SHORT_ERRORS_SUPPORTED +])# _PKG_SHORT_ERRORS_SUPPORTED -dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl -------------------------------------------------------------- -dnl Since: 0.4.0 -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES might not happen, you should be sure to include an -dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl @@ -1057,40 +1024,15 @@ AC_MSG_RESULT([yes]) $3 fi[]dnl -])dnl PKG_CHECK_MODULES - - -dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl --------------------------------------------------------------------- -dnl Since: 0.29 -dnl -dnl Checks for existence of MODULES and gathers its build flags with -dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags -dnl and VARIABLE-PREFIX_LIBS from --libs. -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to -dnl include an explicit call to PKG_PROG_PKG_CONFIG in your -dnl configure.ac. -AC_DEFUN([PKG_CHECK_MODULES_STATIC], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -_save_PKG_CONFIG=$PKG_CONFIG -PKG_CONFIG="$PKG_CONFIG --static" -PKG_CHECK_MODULES($@) -PKG_CONFIG=$_save_PKG_CONFIG[]dnl -])dnl PKG_CHECK_MODULES_STATIC - +])# PKG_CHECK_MODULES -dnl PKG_INSTALLDIR([DIRECTORY]) -dnl ------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable pkgconfigdir as the location where a module -dnl should install pkg-config .pc files. By default the directory is -dnl $libdir/pkgconfig, but the default can be changed by passing -dnl DIRECTORY. The user can override through the --with-pkgconfigdir -dnl parameter. +# PKG_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable pkgconfigdir as the location where a module +# should install pkg-config .pc files. By default the directory is +# $libdir/pkgconfig, but the default can be changed by passing +# DIRECTORY. The user can override through the --with-pkgconfigdir +# parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -1101,18 +1043,16 @@ AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -])dnl PKG_INSTALLDIR +]) dnl PKG_INSTALLDIR -dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) -dnl -------------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable noarch_pkgconfigdir as the location where a -dnl module should install arch-independent pkg-config .pc files. By -dnl default the directory is $datadir/pkgconfig, but the default can be -dnl changed by passing DIRECTORY. The user can override through the -dnl --with-noarch-pkgconfigdir parameter. +# PKG_NOARCH_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable noarch_pkgconfigdir as the location where a +# module should install arch-independent pkg-config .pc files. By +# default the directory is $datadir/pkgconfig, but the default can be +# changed by passing DIRECTORY. The user can override through the +# --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -1123,15 +1063,13 @@ AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -])dnl PKG_NOARCH_INSTALLDIR +]) dnl PKG_NOARCH_INSTALLDIR -dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------- -dnl Since: 0.28 -dnl -dnl Retrieves the value of the pkg-config variable for the given module. +# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------- +# Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl @@ -1140,7 +1078,81 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl -])dnl PKG_CHECK_VAR +])# PKG_CHECK_VAR + +# PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +# [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +# [DESCRIPTION], [DEFAULT]) +# +# Prepare a "--with-" configure option using the lowercase [VARIABLE-PREFIX] +# name, merging the behaviour of AC_ARG_WITH and PKG_CHECK_MODULES in a single +# macro +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +]) dnl PKG_WITH_MODULES + +# PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +# [DESCRIPTION], [DEFAULT]) +# +# Convenience macro to trigger AM_CONDITIONAL after +# PKG_WITH_MODULES check. +# +# HAVE_[VARIABLE-PREFIX] is exported as make variable. +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +]) + +# PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +# [DESCRIPTION], [DEFAULT]) +# +# Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +# PKG_WITH_MODULES check. +# +# HAVE_[VARIABLE-PREFIX] is exported as make and preprocessor variable. +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +]) # Copyright (C) 2002-2014 Free Software Foundation, Inc. # diff -Nru accountsservice-0.6.42/config.guess accountsservice-0.6.45/config.guess --- accountsservice-0.6.42/config.guess 2016-02-03 17:37:24.000000000 +0000 +++ accountsservice-0.6.45/config.guess 2017-02-10 06:47:11.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,19 +168,29 @@ # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,10 @@ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +256,9 @@ *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +275,42 @@ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -359,16 +383,16 @@ exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -618,13 +642,13 @@ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -663,11 +687,11 @@ exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -680,12 +704,12 @@ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -790,14 +814,14 @@ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -879,7 +903,7 @@ exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -902,7 +926,7 @@ EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -933,6 +957,9 @@ crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -945,6 +972,9 @@ ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -970,6 +1000,9 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; @@ -1002,6 +1035,9 @@ ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; @@ -1021,7 +1057,7 @@ echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1100,7 +1136,7 @@ # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1249,6 +1285,9 @@ SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1262,9 +1301,9 @@ UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1286,7 +1325,7 @@ exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1317,7 +1356,7 @@ # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1359,7 +1398,7 @@ echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1370,23 +1409,25 @@ x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff -Nru accountsservice-0.6.42/config.h.in accountsservice-0.6.45/config.h.in --- accountsservice-0.6.42/config.h.in 2016-06-09 14:17:26.000000000 +0000 +++ accountsservice-0.6.45/config.h.in 2017-03-27 18:33:00.000000000 +0000 @@ -35,6 +35,9 @@ /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT +/* Define if getusershell() is available */ +#undef HAVE_GETUSERSHELL + /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H diff -Nru accountsservice-0.6.42/config.sub accountsservice-0.6.45/config.sub --- accountsservice-0.6.42/config.sub 2016-02-03 17:37:24.000000000 +0000 +++ accountsservice-0.6.45/config.sub 2017-02-10 06:47:11.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-09-05' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,8 +116,8 @@ case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -255,11 +254,12 @@ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ + | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ @@ -305,7 +305,7 @@ | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -376,12 +376,13 @@ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ @@ -428,12 +429,13 @@ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -518,6 +520,9 @@ basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -638,6 +643,14 @@ basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -1017,7 +1030,7 @@ ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle | ppc-le | powerpc-little) + ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) @@ -1027,7 +1040,7 @@ ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) + ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) @@ -1373,18 +1386,18 @@ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -1393,7 +1406,8 @@ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1525,6 +1539,8 @@ ;; -nacl*) ;; + -ios) + ;; -none) ;; *) diff -Nru accountsservice-0.6.42/configure accountsservice-0.6.45/configure --- accountsservice-0.6.42/configure 2016-06-09 14:17:25.000000000 +0000 +++ accountsservice-0.6.45/configure 2017-03-27 18:32:59.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for AccountsService 0.6.42. +# Generated by GNU Autoconf 2.69 for AccountsService 0.6.45. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='AccountsService' PACKAGE_TARNAME='accountsservice' -PACKAGE_VERSION='0.6.42' -PACKAGE_STRING='AccountsService 0.6.42' +PACKAGE_VERSION='0.6.45' +PACKAGE_STRING='AccountsService 0.6.45' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1442,7 +1442,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures AccountsService 0.6.42 to adapt to many kinds of systems. +\`configure' configures AccountsService 0.6.45 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1512,7 +1512,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of AccountsService 0.6.42:";; + short | recursive ) echo "Configuration of AccountsService 0.6.45:";; esac cat <<\_ACEOF @@ -1663,7 +1663,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -AccountsService configure 0.6.42 +AccountsService configure 0.6.45 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2074,7 +2074,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by AccountsService $as_me 0.6.42, which was +It was created by AccountsService $as_me 0.6.45, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2937,7 +2937,7 @@ # Define the identity of the package. PACKAGE='accountsservice' - VERSION='0.6.42' + VERSION='0.6.45' cat >>confdefs.h <<_ACEOF @@ -15142,6 +15142,54 @@ _ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getusershell in -lc" >&5 +$as_echo_n "checking for getusershell in -lc... " >&6; } +if ${ac_cv_lib_c_getusershell+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getusershell (); +int +main () +{ +return getusershell (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_getusershell=yes +else + ac_cv_lib_c_getusershell=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_getusershell" >&5 +$as_echo "$ac_cv_lib_c_getusershell" >&6; } +if test "x$ac_cv_lib_c_getusershell" = xyes; then : + have_getusershell=yes +else + have_getusershell=no +fi + +if test x$have_getusershell = xyes; then + +$as_echo "#define HAVE_GETUSERSHELL 1" >>confdefs.h + +fi + @@ -16368,7 +16416,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by AccountsService $as_me 0.6.42, which was +This file was extended by AccountsService $as_me 0.6.45, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16434,7 +16482,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -AccountsService config.status 0.6.42 +AccountsService config.status 0.6.45 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru accountsservice-0.6.42/configure.ac accountsservice-0.6.45/configure.ac --- accountsservice-0.6.42/configure.ac 2016-06-09 14:17:02.000000000 +0000 +++ accountsservice-0.6.45/configure.ac 2017-03-27 18:32:19.000000000 +0000 @@ -1,4 +1,4 @@ -AC_INIT([AccountsService],[0.6.42]) +AC_INIT([AccountsService],[0.6.45]) AM_INIT_AUTOMAKE([1.11.2 no-dist-gzip dist-xz tar-ustar foreign]) GETTEXT_PACKAGE=accounts-service @@ -213,6 +213,11 @@ fi AC_DEFINE_UNQUOTED([PATH_WTMP], [$wtmpx_found], [Path to wtmpx file]) +AC_CHECK_LIB(c, getusershell, have_getusershell=yes, have_getusershell=no) +if test x$have_getusershell = xyes; then + AC_DEFINE(HAVE_GETUSERSHELL, 1, [Define if getusershell() is available]) +fi + dnl --------------------------------------------------------------------------- dnl - gtk-doc Documentation dnl --------------------------------------------------------------------------- diff -Nru accountsservice-0.6.42/data/org.freedesktop.Accounts.User.xml accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml --- accountsservice-0.6.42/data/org.freedesktop.Accounts.User.xml 2016-01-11 15:42:31.000000000 +0000 +++ accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml 2017-03-27 17:53:21.000000000 +0000 @@ -568,6 +568,16 @@ + + + + + + + + + + diff -Nru accountsservice-0.6.42/debian/accountsservice.install accountsservice-0.6.45/debian/accountsservice.install --- accountsservice-0.6.42/debian/accountsservice.install 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/accountsservice.install 2017-12-18 02:42:18.000000000 +0000 @@ -1,6 +1,9 @@ +#!/usr/bin/dh-exec etc +lib [linux-any] usr/lib/accountsservice usr/share/dbus-1 +usr/share/language-tools usr/share/locale usr/share/polkit-1 var diff -Nru accountsservice-0.6.42/debian/accountsservice.install.linux.in accountsservice-0.6.45/debian/accountsservice.install.linux.in --- accountsservice-0.6.42/debian/accountsservice.install.linux.in 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/accountsservice.install.linux.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -# only list linux-specific files here -lib diff -Nru accountsservice-0.6.42/debian/accountsservice.postinst accountsservice-0.6.45/debian/accountsservice.postinst --- accountsservice-0.6.42/debian/accountsservice.postinst 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/accountsservice.postinst 2017-12-18 02:42:18.000000000 +0000 @@ -15,7 +15,9 @@ # stop accounts-daemon pid=$(get_pid org.freedesktop.Accounts) kill $pid 2>/dev/null || true + + # restart daemon if it was running before + [ -z "$pid" ] || /usr/lib/accountsservice/accounts-daemon & >/dev/null || true # will trigger through D-Bus activation fi #DEBHELPER# - diff -Nru accountsservice-0.6.42/debian/changelog accountsservice-0.6.45/debian/changelog --- accountsservice-0.6.42/debian/changelog 2017-10-27 20:02:00.000000000 +0000 +++ accountsservice-0.6.45/debian/changelog 2017-12-18 02:42:18.000000000 +0000 @@ -1,208 +1,16 @@ -accountsservice (0.6.42-0ubuntu4) bionic; urgency=medium +accountsservice (0.6.45-1ubuntu1) bionic; urgency=medium - * debian/patches/0009-language-tools.patch: - - Modification of the update-langlist script due to new - ~/.pam_environment syntax (LP: #1722151). - - -- Gunnar Hjalmarsson Fri, 27 Oct 2017 22:02:00 +0200 - -accountsservice (0.6.42-0ubuntu3) artful; urgency=medium - - * debian/patches/0009-language-tools.patch: - - Use correct syntax when writing to ~/.pam_environment - (LP: #1722151). - - -- Gunnar Hjalmarsson Mon, 09 Oct 2017 23:08:00 +0200 - -accountsservice (0.6.42-0ubuntu2) zesty; urgency=medium - - * debian/patches/0009-language-tools.patch: - - Make list of display language options include 'en' even if the - English language pack is not installed (LP: #1665627). - - -- Gunnar Hjalmarsson Sat, 18 Feb 2017 23:54:00 +0100 - -accountsservice (0.6.42-0ubuntu1) yakkety; urgency=medium - - * New upstream bugfix release. - - allow a user to change his own data even if he's remote - - add way to set password hint independent of password - - conform to modern systemd library naming scheme - - disable GVFS support in service, since it's not needed and has - bad side effects - * Drop patches applied in new version: - - 0014-libsystemd.patch - - change-own-data-inactive.patch - * Add debian/patches/wtmp-fix-logout.patch: - - Backport 0.6.43 commit to fix logout records when a user - shuts down or restarts their computer (LP: #1443052) - - -- Jeremy Bicha Tue, 04 Oct 2016 09:04:41 -0400 - -accountsservice (0.6.40-2ubuntu15) yakkety; urgency=medium - - [ Laurent Bigonville ] - * Drop the -dbg package and rely on the automatically built -dbgsym one - - [ Jeremy Bicha ] - * 0014-libsystemd.patch: - - Backport patch to adapt to systemd 209, fixes missing "Switch User" - functionality in GNOME Shell (LP: #1577049) - * debian/control: - - Bump minimum systemd for above patch - - Drop build-dependencies only needed for obsolete pam-pin - - -- Jeremy Bicha Thu, 25 Aug 2016 21:15:10 -0400 - -accountsservice (0.6.40-2ubuntu14) yakkety; urgency=medium - - * Build-depend on libgnutls28-dev instead of libgnutls-dev, which was - never renamed in Debian. - - -- Steve Langasek Thu, 14 Jul 2016 18:19:03 -0700 - -accountsservice (0.6.40-2ubuntu13.1) yakkety; urgency=medium - - * debian/patches/change-own-data-inactive.patch: - - use matching tags... - - -- Sebastien Bacher Fri, 13 May 2016 17:03:31 +0200 - -accountsservice (0.6.40-2ubuntu13) yakkety; urgency=medium - - * debian/patches/change-own-data-inactive.patch: - - restore the allow_active/inactive rules they are needed, fix regression - where the user account panel can't change the user own image/name - (lp: #1581567) - - -- Sebastien Bacher Fri, 13 May 2016 16:44:45 +0200 - -accountsservice (0.6.40-2ubuntu12) yakkety; urgency=medium - - * debian/patches/change-own-data-inactive.patch: - - updated to use allow_any=yes to avoid displaying unndeed dialog for - remote sessions as well, thanks Alkis Georgopoulos - (lp: #1512002) - - -- Sebastien Bacher Fri, 29 Apr 2016 16:15:39 +0200 - -accountsservice (0.6.40-2ubuntu10) xenial; urgency=medium - - * debian/patches/change-own-data-inactive.patch: - - let inactive user sessions update their own datas without - triggering authentification dialogs. Indicator-messages does that to - indicate to the greeter that the user received messages, which - currently leads to auth dialog to be stacked in the locked session, - thanks Alkis Georgopoulos (lp: #1512002) - - -- Sebastien Bacher Tue, 19 Apr 2016 11:23:47 +0200 - -accountsservice (0.6.40-2ubuntu9) xenial; urgency=medium - - * debian/patches/0005-gdm_config_file_path_ubuntu.patch: - Copy patch from Debian packaging to correct the path to the - GDM config file. (LP: #1547297) - * debian/patches/0007-add-lightdm-support.patch: - Update paths to gdm config directory - - -- Tim Lunn Wed, 06 Apr 2016 10:59:09 +1000 - -accountsservice (0.6.40-2ubuntu8) xenial; urgency=medium - - * debian/patches/0009-language-tools.patch: - - Make the language2locale script return a locale name also when - the argument is a complete locale name including codeset - (LP: #1556684). - - -- Gunnar Hjalmarsson Wed, 16 Mar 2016 12:42:00 +0100 - -accountsservice (0.6.40-2ubuntu7) xenial; urgency=medium - - * Drop 0014-pam-pin.patch and 0015-pam-pin-ubuntu.patch, along with - the associated libpam-pin package. Added a Breaks on the old - package to get it off systems too. These patches were from an - upstream bug but they never made progress there. And we never used - the module in Ubuntu Touch like we planned either. So I'm dropping - it before the LTS is released. - - -- Michael Terry Fri, 08 Jan 2016 12:38:51 -0500 - -accountsservice (0.6.40-2ubuntu6) xenial; urgency=high - - * Build-depend on libsystemd-dev, rather than split name dev packages. - - -- Dimitri John Ledkov Mon, 07 Dec 2015 09:59:29 +0000 - -accountsservice (0.6.40-2ubuntu5) wily; urgency=medium - - * debian/patches/0009-language-tools.patch: - - Correction of a code inconsistency introduced in version - 0.6.40-2ubuntu2 (LP: #1502921). - - -- Gunnar Hjalmarsson Tue, 06 Oct 2015 06:51:00 +0200 - -accountsservice (0.6.40-2ubuntu4) wily; urgency=medium - - * debian/patches/0007-add-lightdm-support.patch: - - Use [Seat:*] instead of deprecated [SeatDefaults] - - -- Robert Ancell Fri, 14 Aug 2015 09:02:59 +1200 - -accountsservice (0.6.40-2ubuntu3) wily; urgency=medium - - * debian/control: - - Switch build-depends from transitional libgcrypt11-dev to libgcrypt20-dev - - -- Robert Ancell Fri, 07 Aug 2015 12:58:21 +1200 - -accountsservice (0.6.40-2ubuntu2) wily; urgency=medium - - * debian/patches/0009-language-tools.patch: - - Make it possible to set the "Catalan - valencia" language from - the Ubuntu GNOME GUI (LP: #1440275). - - -- Gunnar Hjalmarsson Mon, 29 Jun 2015 22:43:00 +0200 - -accountsservice (0.6.40-2ubuntu1) wily; urgency=medium - - * Merge with Debian, remaining Ubuntu changes (LP: #1466289): - * debian/compat: - - Use version 9. - * debian/control: - - Use debhelper version 9. - - Add libpam-pin build-depends: dh-exec, libgcr-3-dev, libgcrypt11-dev, - libgnutls-dev, libpam0g-dev. - - Use multi-arch. - - libaccountsservice-dev depends on gir1.2-accountsservice-1.0, not - libgirepository1.0-dev. - - Add libpam-pin package. - * debian/rules: - - Use -O1 instead of -O2 because it works around a problem with - the manager object never reporting its readiness to users of - libaccountsservice. Hoping this fixes LP: #1351308 - - Don't multi-arch the libexec dir - * debian/gir1.2-accountsservice-1.0.install: - * debian/libaccountsservice-dev.install: - * debian/libaccountsservice0.install: - - Update for multiarch paths. - * debian/accountsservice.postinst: - - don't try restarting the service from the maintainer script after - upgrades. + * Merge with Debian, remaining Ubuntu changes: * debian/libaccountsservice0.symbols: - Add symbols added from patches. - * libpam-pin.install: - - Install PAM pin support from 0014-pam-pin.patch + - 0015-pam-pin-ubuntu.patch * debian/patches/0001-formats-locale-property.patch: - Addition of FormatsLocale property and SetFormatsLocale method. * debian/patches/0001-Move-cache-cleanup-out-into-a-common-function-and-cl.patch: - Move cache cleanup out into a common function and clean up icon too. - * debian/patches/0002-create-and-manage-groups-like-on-a-ubuntu-system.patch: - - Create and manage groups like on an Ubuntu system. * debian/patches/0002-On-startup-clean-out-the-data-of-removed-users.patch: - On startup, clean out the data of removed users. - * debian/patches/0007-add-lightdm-support.patch: - - Modified from Debian version. + * debian/patches/0005-gdm_config_file_path.patch: + - We use custom.conf, not daemon.conf * debian/patches/0008-nopasswdlogin-group.patch: - When setting a user to have no password, also add them to the 'nopasswdlogin' group. @@ -216,10 +24,6 @@ - Add XKeyboardLayouts property to report a user's keyboard layouts. * debian/patches/0013-add-has-message-support.patch: - Add XHasMessages property to report if a user had unread messages. - * debian/patches/0014-pam-pin.patch: - - Add PIN module for PIN codes. - * debian/patches/0015-pam-pin-ubuntu.patch: - - Ubuntu integration tweaks to PAM PIN module. * debian/patches/0016-add-input-sources-support.patch: - Store input sources in the user object. * debian/patches/0020-support-login.defs.patch: @@ -230,7 +34,73 @@ - In addition to watching /etc/{passwd,shadow,group}, also watch those same files in /var/lib/extrausers/, if they exist. - -- Robert Ancell Tue, 23 Jun 2015 15:38:53 +1200 + -- Robert Ancell Mon, 18 Dec 2017 15:42:18 +1300 + +accountsservice (0.6.45-1) unstable; urgency=medium + + * New upstream release. + * debian/libaccountsservice0.symbols: add new symbols. + * debian/control: bump Standards-Version to 4.1.0; no changes needed. + + -- Emilio Pozuelo Monfort Wed, 27 Sep 2017 23:20:10 +0200 + +accountsservice (0.6.43-1) unstable; urgency=medium + + * Adopt package under pkg-freedesktop. Closes: #842851. + * Add myself to Uploaders. + * New upstream release. Closes: #841672. + * debian/patches/0002-create-and-manage-groups-like-on-a-debian-system.patch, + debian/patches/1002-dont-override-standardoutput.patch: + + Updated to apply with the new version. + * debian/patches/0014-libsystemd.patch: + + Removed, applied upstream. + * Refreshed all patches. + * debian/rules: Fail the build if the symbols file is outdated. + * debian/libaccountsservice0.symbols: Updated for new symbols. + * Use dh-exec to install linux-only files. + * Unconditionally install language-tools. + * debhelper enables autoreconf, systemd and parallel builds by default + in compat 10, no need to set those anymore. + * debian/rules: Don't call dh_girepository directly. Use dh gir sequence + instead. + + -- Emilio Pozuelo Monfort Thu, 29 Dec 2016 16:17:42 +0100 + +accountsservice (0.6.40-4) unstable; urgency=medium + + [ Dr. Tobias Quathamer ] + * QA upload. + * Use debhelper v10 + * Add Multi-Arch: foreign to -doc package + * Set maintainer to Debian QA Group + * Update Vcs-Browser URL + + [ Laurent Bigonville ] + * debian/rules: Fix FTBFS when building arch:all packages only. + Thanks to Santiago Vila (Closes: #805989) + * 0015-debian-nologin-path.patch: Use debian specific path for nologin executable + (Closes: #805086) + * Drop the -dbg package and rely on the automatically built -dbgsym one + * debian/control: Use https for the Vcs-* and Homepage URL's + * debian/control: Bump Standards-Version to 3.9.8 (no further changes) + + [ Alessio Treglia ] + * Multiarchify-ication. + + -- Dr. Tobias Quathamer Sat, 26 Nov 2016 22:28:05 +0100 + +accountsservice (0.6.40-3) unstable; urgency=medium + + * Team upload. + + [ Alessio Treglia ] + * Update b-d according to libsystemd transition. + * libaccountsservice-dev dependencies fix. + + [ Michael Biebl ] + * Transition to libsystemd. (Closes: #779740) + + -- Michael Biebl Thu, 27 Aug 2015 02:45:14 +0200 accountsservice (0.6.40-2) unstable; urgency=medium @@ -272,113 +142,6 @@ -- Alessio Treglia Thu, 10 Jul 2014 16:19:39 +0100 -accountsservice (0.6.37-1ubuntu11) wily; urgency=medium - - * debian/patches/0010-set-language.patch: - Use static variables inside user_get_fallback_value() to prevent - execution of expensive code at each invocation (LP: #1443178). - - -- Gunnar Hjalmarsson Tue, 12 May 2015 16:17:00 +0200 - -accountsservice (0.6.37-1ubuntu10) vivid; urgency=medium - - * No change rebuild to get debug symbols on all architectures. - - -- Brian Murray Tue, 18 Nov 2014 08:07:26 -0800 - -accountsservice (0.6.37-1ubuntu9) utopic; urgency=high - - * No change rebuild against gnutls28. - - -- Dimitri John Ledkov Fri, 15 Aug 2014 22:48:15 +0100 - -accountsservice (0.6.37-1ubuntu8) utopic; urgency=medium - - * debian/rules: - - Use -O1 instead of -O2 because it works around a problem with - the manager object never reporting its readiness to users of - libaccountsservice. Hoping this fixes LP: #1351308 - - -- Michael Terry Mon, 04 Aug 2014 20:07:12 -0400 - -accountsservice (0.6.37-1ubuntu7) utopic; urgency=medium - - * debian/patches/0022-fix-desktop-centric-polkit-policy.patch: - - Change the polkit policy so accountsservice allows use of the - DBus API by admin users that are not logged in via a monitor+keyboard. - This includes users logged in via ssh. (LP: #1349813) - - -- Omer Akram Wed, 30 Jul 2014 10:24:09 -0500 - -accountsservice (0.6.37-1ubuntu6) utopic; urgency=medium - - * debian/patches/0021-support-extrausers.patch: - - In addition to watching /etc/{passwd,shadow,group}, also watch those - same files in /var/lib/extrausers/, if they exist. - - -- Michael Terry Fri, 18 Jul 2014 15:44:44 -0400 - -accountsservice (0.6.37-1ubuntu5) utopic; urgency=medium - - * debian/patches/0020-support-login.defs.patch: - - Check for nobody and nfsnobody users - these accounts are > UID_MID - - -- Robert Ancell Tue, 24 Jun 2014 15:26:16 +1200 - -accountsservice (0.6.37-1ubuntu4) utopic; urgency=medium - - * debian/patches/0020-support-login.defs.patch: - - Don't use UID_MAX - all system users will be below UID_MIN and using - UID_MAX hides valid users on systems with large UIDs (LP: #1290785) - - -- Robert Ancell Tue, 24 Jun 2014 11:34:15 +1200 - -accountsservice (0.6.37-1ubuntu3) utopic; urgency=medium - - * debian/patches/0020-support-login.defs.patch: - - Revert upstream patch that dropped support for using login.defs - to determine min and max UID for system users. We still want - that support in at least Ubuntu Touch. - - -- Michael Terry Wed, 21 May 2014 12:16:14 -0400 - -accountsservice (0.6.37-1ubuntu2) utopic; urgency=medium - - * Merge changes from Debian to install systemd unit and use systemd - debhelper sequence. (LP: #1321705) - - -- Iain Lane Wed, 21 May 2014 13:29:14 +0100 - -accountsservice (0.6.37-1ubuntu1) utopic; urgency=low - - * Merge from Debian unstable. Remaining changes: - + debian/accountsservice.postinst: - - don't try restarting the service from the maintainer script after - upgrades - + Convert to Multi-Arch - + Add libpam-pin package containing a PAM module for using a PIN code - + Configure with --enable-systemd - + Add patches; see their headers for descriptions. - - 0001-formats-locale-property.patch - - 0002-create-and-manage-groups-like-on-a-ubuntu-system.patch - - 0008-nopasswdlogin-group.patch - - 0009-language-tools.patch - - 0010-set-language.patch - - 0011-add-background-file-support.patch - - 0012-add-keyboard-layout-support.patch - - 0013-add-has-message-support.patch - - 0014-pam-pin.patch - - 0015-pam-pin-ubuntu.patch - - 2002-disable_systemd.patch - - 0016-add-input-sources-support.patch - - 0001-Move-cache-cleanup-out-into-a-common-function-and-cl.patch - - 0002-On-startup-clean-out-the-data-of-removed-users.patch - + Drop 1001-buildsystem.patch, no longer needed. - * dh_autoreconf: run autogen.sh instead of autoreconf; fails with gtk-doc - errors otherwise. - - -- Iain Lane Tue, 20 May 2014 11:23:06 +0100 - accountsservice (0.6.37-1) unstable; urgency=low * New upstream release. @@ -391,72 +154,6 @@ -- Alessio Treglia Tue, 01 Apr 2014 14:41:18 +0100 -accountsservice (0.6.35-0ubuntu7) trusty; urgency=medium - - * debian/patches/0007-add-lightdm-support.patch: - - updated to not keep polling on an inexistant gdm (or lightdm) - configurations, fixed the code checking if gdm is running as well - (thanks Lars for hints on how to do that one correctly) (lp: #1234289) - - -- Sebastien Bacher Fri, 17 Jan 2014 18:09:20 +0100 - -accountsservice (0.6.35-0ubuntu6) trusty; urgency=low - - [ Tim Lunn ] - * debian/gir1.2-accountsservice-1.0.install: Don't install typelib - file to multiarch path (LP: #1260880) - - [ Rico Tzschichholz ] - * Don't multiarch gir1.2-accountsservice-1.0 (LP: #1260604) - * Add gir1.2-accountsservice-1.0 to libaccountsservice-dev depends. - - -- Tim Lunn Sat, 14 Dec 2013 09:38:23 +1100 - -accountsservice (0.6.35-0ubuntu5) trusty; urgency=low - - * debian/patches/0017-clean-up-cache-dir.patch: - Remove only if errno is zero, and then remove the icon as well. - - -- Gunnar Hjalmarsson Thu, 12 Dec 2013 23:09:00 +0100 - -accountsservice (0.6.35-0ubuntu4) trusty; urgency=low - - * Remove pointless dependency on libgirepository1.0-dev. - - -- Dimitri John Ledkov Thu, 12 Dec 2013 17:10:10 +0000 - -accountsservice (0.6.35-0ubuntu3) trusty; urgency=low - - * Bump debian/compat to 9. - * Convert to multiarch (LP: #1260370). - - -- Dimitri John Ledkov Thu, 12 Dec 2013 16:07:54 +0000 - -accountsservice (0.6.35-0ubuntu2) trusty; urgency=low - - [ Robert Ancell ] - * debian/patches/0017-clean-up-cache-dir.patch: - Remove user cache files if user account no longer exists - (LP: #1259562). - - -- Gunnar Hjalmarsson Wed, 11 Dec 2013 14:22:00 +0100 - -accountsservice (0.6.35-0ubuntu1) trusty; urgency=low - - * New upstream version - * Refreshed the patches - * debian/control: - - don't build-depends on valac - - updated glib requirement - * debian/libaccountsservice-dev.install: - - don't install the vapi, upstream dropped it - * debian/patches/git_hold_keyfiles.patch, - debian/patches/git_custom_interfaces.patch, - debian/patches/2001-filtering_out_users.patch: - - dropped, the changes are in the new version - - -- Sebastien Bacher Wed, 13 Nov 2013 15:15:40 +0100 - accountsservice (0.6.34-2) unstable; urgency=low * Re-enable systemd support (Closes: #723857): @@ -480,74 +177,6 @@ -- Alessio Treglia Tue, 02 Jul 2013 04:12:44 +0100 -accountsservice (0.6.34-0ubuntu7) trusty; urgency=low - - * debian/patches/0009-language-tools.patch: - Don't try to maintain a LANGUAGE priority list if - language-selector-gnome is not present (LP: #1240058). - - -- Gunnar Hjalmarsson Sun, 03 Nov 2013 23:38:00 +0100 - -accountsservice (0.6.34-0ubuntu6) saucy; urgency=low - - * Fix various memory leaks. References: - - https://bugzilla.redhat.com/show_bug.cgi?id=1000364 - - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=723745 - - -- Alessio Treglia Sat, 21 Sep 2013 23:24:14 +0100 - -accountsservice (0.6.34-0ubuntu5) saucy; urgency=low - - * debian/patches/0016-add-input-sources-support.patch: - - Store input sources in the user object. - - -- William Hua Wed, 31 Jul 2013 12:44:00 -0400 - -accountsservice (0.6.34-0ubuntu4) saucy; urgency=low - - * Move gtk-doc-tools to Build-Depends from Build-Depends-Indep. - - -- Adam Conrad Mon, 29 Jul 2013 16:13:05 +0100 - -accountsservice (0.6.34-0ubuntu3) saucy; urgency=low - - * Merge some changes from Debian: - - Bump build-deps on glib-2.0 >= 2.34. - - Add gtk-doc-tools to Build-Depends-Indep. - - Build libaccountsservice's documentation - - Bump Standards - - Fix VCS canonical URLs. - - Refresh some patches - * Don't build-depend on gnome-doc-utils - - -- Jeremy Bicha Sat, 27 Jul 2013 23:18:48 -0400 - -accountsservice (0.6.34-0ubuntu2) saucy; urgency=low - - * debian/patches/0015-pam-pin-ubuntu.patch: - - Split Ubuntu integration changes to 0014-pam-pin.patch out into a - a separate patch to make it easier to update 0014 from the upstream - bug as needed. - - Fix setting password via DBus (LP: #1195021) - - -- Michael Terry Wed, 03 Jul 2013 15:06:53 -0400 - -accountsservice (0.6.34-0ubuntu1) saucy; urgency=low - - * New upstream version - * Refreshed patches - * debian/libaccountsservice0.symbols: - - updated for the new version (and some of the previous ones) - * debian/patches/0014-pam-pin.patch: - - updated to fix a double free issue - * debian/patches/git_custom_interfaces.patch, - debian/patches/git_hold_keyfiles.patch: - - support for adding custom settings, thanks Ryan Lortie - * debian/patches/2001-filtering_out_users.patch: - - updated with a patch proposed upstream, thanks Ryan - - -- Sebastien Bacher Wed, 26 Jun 2013 15:42:50 +0200 - accountsservice (0.6.30-2) unstable; urgency=low * ACK NMU. @@ -581,118 +210,6 @@ -- Alessio Treglia Fri, 14 Dec 2012 09:33:13 +0000 -accountsservice (0.6.29-1ubuntu10) saucy; urgency=low - - * debian/patches/0014-pam-pin.patch: - - Add experimental PAM module for PIN codes. Patch mostly by - Giovanni Campagna from upstream bug. Ideally will be useful - for phablets that want to show a PIN unlock screen. - - -- Michael Terry Mon, 06 May 2013 21:17:43 -0400 - -accountsservice (0.6.29-1ubuntu9) saucy; urgency=low - - * Add git_logind_check.patch: Check for logind, not for systemd. - * Switch from ConsoleKit to to logind. - - -- Martin Pitt Mon, 29 Apr 2013 11:24:49 -0700 - -accountsservice (0.6.29-1ubuntu8) raring; urgency=low - - * debian/patches/0009-language-tools.patch: - Take /usr/local/share/locale into account when generating the list - of language options (LP: #1159496). - - -- Gunnar Hjalmarsson Fri, 29 Mar 2013 06:19:34 +0100 - -accountsservice (0.6.29-1ubuntu7) raring; urgency=low - - * debian/patches/0009-language-tools.patch: - - Code for migration from ~/.profile to ~/.pam_environment dropped. This - was done in 12.04 LTS already. - * debian/patches/0010-set-language.patch: - - Code for parsing /etc/default/locale made able to deal with both - quoted and non-quoted entries (LP: #1159290). - - Code for migration from ~/.profile to ~/.pam_environment dropped. This - was done in 12.04 LTS already. - - A couple of memory leaks fixed. - - -- Gunnar Hjalmarsson Sun, 24 Mar 2013 20:33:00 +0100 - -accountsservice (0.6.29-1ubuntu6) raring; urgency=low - - * debian/patches/0009-language-tools.patch: - Set the PAPERSIZE env. variable in ~/.pam_environment, since - LC_PAPER is ignored by many apps (LP: #1130690). - - -- Gunnar Hjalmarsson Thu, 21 Feb 2013 23:53:00 +0100 - -accountsservice (0.6.29-1ubuntu5) raring; urgency=low - - * debian/patches/0009-language-tools.patch: - Prevent language-options from listing items that don't correspond - with an installed langpack, even if there is a matching locale - (LP: #960314). - - -- Gunnar Hjalmarsson Wed, 30 Jan 2013 02:10:00 +0100 - -accountsservice (0.6.29-1ubuntu4) raring; urgency=low - - * debian/patches/0010-set-language.patch: - Run user_HOME_available() as user in order to prevent incorrect - failures when HOME is on NFS (LP: #1083605). - - -- Gunnar Hjalmarsson Wed, 23 Jan 2013 08:19:27 -0500 - -accountsservice (0.6.29-1ubuntu3) raring; urgency=low - - [ Albert Astals Cid ] - * debian/patches/0007-add-lightdm-support.patch: - - Fix reporting of autologin setting for users when using lightdm - (LP: #1043349) - - -- Michael Terry Tue, 22 Jan 2013 14:11:08 -0500 - -accountsservice (0.6.29-1ubuntu2) raring; urgency=low - - * debian/control: build-depends on valac - - -- Sebastien Bacher Thu, 29 Nov 2012 21:49:16 +0100 - -accountsservice (0.6.29-1ubuntu1) raring; urgency=low - - * Resync on Debian, remaining diffs: - * debian/accountsservice.postinst: - - don't try restarting the service from the maintainer script after - upgrades, it leads to some issues and shouldn't be needed since - it will be dbus reactivated when needed (lp: #1021293) - * debian/libaccountsservice-dev.install: - - install vala directory - * debian/patches/0001-formats-locale-property.patch: - - readded bit of the patch that seems to not be in the debian version - * debian/patches/0002-create-and-manage-groups-like-on-a-ubuntu-system.patch: - - updated to gdbus - * debian/patches/0005-gdm_config_file_path.patch - - drop patch since it breaks setting automatic login. (LP: #1059090) - * debian/patches/0007-add-lightdm-support.patch: - - used Ubuntu version, they are slightly different - * debian/patches/0008-nopasswdlogin-group.patch: - - used Ubuntu version, they are slightly different - * debian/patches/0009-language-tools.patch: - - used Ubuntu version, they are slightly different - * debian/patches/0010-set-language.patch: - - used Ubuntu version, they are slightly different - * debian/patches/0011-add-background-file-support.patch: - - updated for the gdbus codebase - * debian/patches/0012-add-keyboard-layout-support.patch: - - updated for the gdbus codebase - * debian/patches/0013-add-has-message-support.patch: - - updated for the gdbus codebase - * debian/patches/git_correct_32bit_type.patch: - - backport upstream fix for a 32bit segfault issue - - -- Sebastien Bacher Thu, 19 Jul 2012 19:00:43 +0200 - accountsservice (0.6.29-1) experimental; urgency=low * New upstream release: diff -Nru accountsservice-0.6.42/debian/compat accountsservice-0.6.45/debian/compat --- accountsservice-0.6.42/debian/compat 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/compat 2017-12-18 02:42:18.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru accountsservice-0.6.42/debian/control accountsservice-0.6.45/debian/control --- accountsservice-0.6.42/debian/control 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/control 2017-12-18 02:42:18.000000000 +0000 @@ -1,12 +1,11 @@ Source: accountsservice Section: admin Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Alessio Treglia +Maintainer: Debian freedesktop.org maintainers +Uploaders: Emilio Pozuelo Monfort Build-Depends: - debhelper (>= 9.20160114~), - dh-autoreconf, - dh-systemd, + debhelper (>= 10), + dh-exec (>= 0.13), gir1.2-freedesktop, gir1.2-glib-2.0 (>= 1.34), gnome-doc-utils, @@ -18,10 +17,10 @@ libpolkit-gobject-1-dev, libsystemd-dev (>= 209) [linux-any], xmlto -Standards-Version: 3.9.8 +Standards-Version: 4.1.0 Homepage: https://www.freedesktop.org/wiki/Software/AccountsService/ Vcs-Git: https://anonscm.debian.org/git/collab-maint/accountsservice.git -Vcs-Browser: https://anonscm.debian.org/gitweb/?p=collab-maint/accountsservice.git +Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/accountsservice.git Package: accountsservice Architecture: any @@ -32,8 +31,6 @@ ${shlibs:Depends} Suggests: gnome-control-center -Breaks: - libpam-pin Description: query and manipulate user account information The AccountService project provides a set of D-Bus interfaces for querying and manipulating user account @@ -101,6 +98,7 @@ Package: libaccountsservice-doc Section: doc Architecture: all +Multi-Arch: foreign Depends: ${misc:Depends} Description: query and manipulate user account information - documentation diff -Nru accountsservice-0.6.42/debian/libaccountsservice0.symbols accountsservice-0.6.45/debian/libaccountsservice0.symbols --- accountsservice-0.6.42/debian/libaccountsservice0.symbols 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/libaccountsservice0.symbols 2017-12-18 02:42:18.000000000 +0000 @@ -44,6 +44,9 @@ accounts_accounts_set_daemon_version@Base 0.6.18 accounts_accounts_skeleton_get_type@Base 0.6.18 accounts_accounts_skeleton_new@Base 0.6.18 + accounts_user_call_get_password_expiration_policy@Base 0.6.45 + accounts_user_call_get_password_expiration_policy_finish@Base 0.6.45 + accounts_user_call_get_password_expiration_policy_sync@Base 0.6.45 accounts_user_call_set_account_type@Base 0.6.18 accounts_user_call_set_account_type_finish@Base 0.6.18 accounts_user_call_set_account_type_sync@Base 0.6.18 @@ -79,6 +82,9 @@ accounts_user_call_set_locked_sync@Base 0.6.18 accounts_user_call_set_password@Base 0.6.18 accounts_user_call_set_password_finish@Base 0.6.18 + accounts_user_call_set_password_hint@Base 0.6.43 + accounts_user_call_set_password_hint_finish@Base 0.6.43 + accounts_user_call_set_password_hint_sync@Base 0.6.43 accounts_user_call_set_password_mode@Base 0.6.18 accounts_user_call_set_password_mode_finish@Base 0.6.18 accounts_user_call_set_password_mode_sync@Base 0.6.18 @@ -101,6 +107,7 @@ accounts_user_call_set_xsession@Base 0.6.18 accounts_user_call_set_xsession_finish@Base 0.6.18 accounts_user_call_set_xsession_sync@Base 0.6.18 + accounts_user_complete_get_password_expiration_policy@Base 0.6.45 accounts_user_complete_set_account_type@Base 0.6.18 accounts_user_complete_set_automatic_login@Base 0.6.18 accounts_user_complete_set_background_file@Base 0.6.29 @@ -113,6 +120,7 @@ accounts_user_complete_set_location@Base 0.6.18 accounts_user_complete_set_locked@Base 0.6.18 accounts_user_complete_set_password@Base 0.6.18 + accounts_user_complete_set_password_hint@Base 0.6.43 accounts_user_complete_set_password_mode@Base 0.6.18 accounts_user_complete_set_real_name@Base 0.6.18 accounts_user_complete_set_shell@Base 0.6.18 @@ -217,6 +225,7 @@ act_user_get_num_sessions@Base 0.6.8 act_user_get_num_sessions_anywhere@Base 0.6.34 act_user_get_object_path@Base 0.6.8 + act_user_get_password_expiration_policy@Base 0.6.45 act_user_get_password_hint@Base 0.6.8 act_user_get_password_mode@Base 0.6.8 act_user_get_primary_session_id@Base 0.6.8 @@ -269,6 +278,7 @@ act_user_set_location@Base 0.6.8 act_user_set_locked@Base 0.6.8 act_user_set_password@Base 0.6.8 + act_user_set_password_hint@Base 0.6.43 act_user_set_password_mode@Base 0.6.8 act_user_set_real_name@Base 0.6.8 act_user_set_user_name@Base 0.6.8 diff -Nru accountsservice-0.6.42/debian/patches/0001-formats-locale-property.patch accountsservice-0.6.45/debian/patches/0001-formats-locale-property.patch --- accountsservice-0.6.42/debian/patches/0001-formats-locale-property.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0001-formats-locale-property.patch 2017-12-18 02:42:18.000000000 +0000 @@ -3,10 +3,10 @@ Author: Gunnar Hjalmarsson Last-Update: 2011-11-12 -Index: accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +Index: accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml =================================================================== ---- accountsservice-0.6.40.orig/data/org.freedesktop.Accounts.User.xml -+++ accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +--- accountsservice-0.6.45.orig/data/org.freedesktop.Accounts.User.xml ++++ accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml @@ -150,6 +150,41 @@ @@ -49,7 +49,7 @@ -@@ -621,6 +656,16 @@ +@@ -666,6 +701,16 @@ @@ -66,10 +66,10 @@ -Index: accountsservice-0.6.40/src/libaccountsservice/act-user.c +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.c =================================================================== ---- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.c -+++ accountsservice-0.6.40/src/libaccountsservice/act-user.c +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.c ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.c @@ -93,6 +93,7 @@ enum { PROP_LOGIN_HISTORY, PROP_ICON_FILE, @@ -159,7 +159,7 @@ } else if (strcmp (key, "XSession") == 0) { const char *new_x_session; -@@ -1602,6 +1642,35 @@ act_user_set_email (ActUser *user, +@@ -1616,6 +1656,35 @@ act_user_get_password_expiration_policy g_error_free (error); return; } @@ -195,10 +195,10 @@ } /** -Index: accountsservice-0.6.40/src/libaccountsservice/act-user.h +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.h =================================================================== ---- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.h -+++ accountsservice-0.6.40/src/libaccountsservice/act-user.h +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.h ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.h @@ -77,6 +77,7 @@ gboolean act_user_is_local_account gboolean act_user_is_nonexistent (ActUser *user); const char *act_user_get_icon_file (ActUser *user); @@ -207,7 +207,7 @@ const char *act_user_get_x_session (ActUser *user); const char *act_user_get_primary_session_id (ActUser *user); -@@ -88,6 +89,8 @@ void act_user_set_email +@@ -96,6 +97,8 @@ void act_user_set_email const char *email); void act_user_set_language (ActUser *user, const char *language); @@ -216,10 +216,10 @@ void act_user_set_x_session (ActUser *user, const char *x_session); void act_user_set_location (ActUser *user, -Index: accountsservice-0.6.40/src/user.c +Index: accountsservice-0.6.45/src/user.c =================================================================== ---- accountsservice-0.6.40.orig/src/user.c -+++ accountsservice-0.6.40/src/user.c +--- accountsservice-0.6.45.orig/src/user.c ++++ accountsservice-0.6.45/src/user.c @@ -58,6 +58,7 @@ enum { PROP_SHELL, PROP_EMAIL, @@ -236,7 +236,7 @@ gchar *x_session; gchar *location; guint64 login_frequency; -@@ -322,6 +324,13 @@ user_update_from_keyfile (User *user +@@ -319,6 +321,13 @@ user_update_from_keyfile (User *user g_object_notify (G_OBJECT (user), "language"); } @@ -250,7 +250,7 @@ s = g_key_file_get_string (keyfile, "User", "XSession", NULL); if (s != NULL) { g_free (user->x_session); -@@ -405,6 +414,9 @@ user_save_to_keyfile (User *user, +@@ -402,6 +411,9 @@ user_save_to_keyfile (User *user, if (user->language) g_key_file_set_string (keyfile, "User", "Language", user->language); @@ -260,7 +260,7 @@ if (user->x_session) g_key_file_set_string (keyfile, "User", "XSession", user->x_session); -@@ -1107,6 +1119,61 @@ user_set_language (AccountsUser +@@ -1104,6 +1116,61 @@ user_set_language (AccountsUser } static void @@ -322,7 +322,7 @@ user_change_x_session_authorized_cb (Daemon *daemon, User *user, GDBusMethodInvocation *context, -@@ -2107,6 +2174,7 @@ user_finalize (GObject *object) +@@ -2209,6 +2276,7 @@ user_finalize (GObject *object) g_free (user->default_icon_file); g_free (user->email); g_free (user->language); @@ -330,7 +330,7 @@ g_free (user->x_session); g_free (user->location); g_free (user->password_hint); -@@ -2133,6 +2201,9 @@ user_set_property (GObject *object, +@@ -2235,6 +2303,9 @@ user_set_property (GObject *object, case PROP_LANGUAGE: user->language = g_value_dup_string (value); break; @@ -340,7 +340,7 @@ case PROP_X_SESSION: user->x_session = g_value_dup_string (value); break; -@@ -2201,6 +2272,9 @@ user_get_property (GObject *object, +@@ -2303,6 +2374,9 @@ user_get_property (GObject *object, case PROP_LANGUAGE: g_value_set_string (value, user->language); break; @@ -350,7 +350,7 @@ case PROP_X_SESSION: g_value_set_string (value, user->x_session); break; -@@ -2264,6 +2338,7 @@ user_accounts_user_iface_init (AccountsU +@@ -2366,6 +2440,7 @@ user_accounts_user_iface_init (AccountsU iface->handle_set_account_type = user_set_account_type; iface->handle_set_automatic_login = user_set_automatic_login; iface->handle_set_email = user_set_email; @@ -358,7 +358,7 @@ iface->handle_set_home_directory = user_set_home_directory; iface->handle_set_icon_file = user_set_icon_file; iface->handle_set_language = user_set_language; -@@ -2310,6 +2385,7 @@ user_init (User *user) +@@ -2414,6 +2489,7 @@ user_init (User *user) user->default_icon_file = NULL; user->email = NULL; user->language = NULL; diff -Nru accountsservice-0.6.42/debian/patches/0001-Move-cache-cleanup-out-into-a-common-function-and-cl.patch accountsservice-0.6.45/debian/patches/0001-Move-cache-cleanup-out-into-a-common-function-and-cl.patch --- accountsservice-0.6.42/debian/patches/0001-Move-cache-cleanup-out-into-a-common-function-and-cl.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0001-Move-cache-cleanup-out-into-a-common-function-and-cl.patch 2017-12-18 02:42:18.000000000 +0000 @@ -9,12 +9,12 @@ src/daemon.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) -Index: accountsservice-0.6.40/src/daemon.c +Index: accountsservice-0.6.45/src/daemon.c =================================================================== ---- accountsservice-0.6.40.orig/src/daemon.c -+++ accountsservice-0.6.40/src/daemon.c -@@ -137,6 +137,20 @@ error_get_type (void) - #include "fgetpwent.c" +--- accountsservice-0.6.45.orig/src/daemon.c ++++ accountsservice-0.6.45/src/daemon.c +@@ -140,6 +140,20 @@ error_get_type (void) + #define MAX_LOCAL_USERS 50 #endif +static void @@ -32,9 +32,9 @@ +} + static struct passwd * - entry_generator_fgetpwent (GHashTable *users, - gpointer *state) -@@ -1023,7 +1037,6 @@ daemon_uncache_user_authorized_cb (Daemo + entry_generator_fgetpwent (Daemon *daemon, + GHashTable *users, +@@ -1146,7 +1160,6 @@ daemon_uncache_user_authorized_cb (Daemo gpointer data) { const gchar *user_name = data; @@ -42,7 +42,7 @@ User *user; sys_log (context, "uncache user '%s'", user_name); -@@ -1038,13 +1051,7 @@ daemon_uncache_user_authorized_cb (Daemo +@@ -1161,13 +1174,7 @@ daemon_uncache_user_authorized_cb (Daemo /* Always use the canonical user name looked up */ user_name = user_get_user_name (user); @@ -57,7 +57,7 @@ accounts_accounts_complete_uncache_user (NULL, context); -@@ -1084,7 +1091,6 @@ daemon_delete_user_authorized_cb (Daemon +@@ -1207,7 +1214,6 @@ daemon_delete_user_authorized_cb (Daemon { DeleteUserData *ud = data; GError *error; @@ -65,7 +65,7 @@ struct passwd *pwent; const gchar *argv[6]; -@@ -1111,13 +1117,7 @@ daemon_delete_user_authorized_cb (Daemon +@@ -1234,13 +1240,7 @@ daemon_delete_user_authorized_cb (Daemon } diff -Nru accountsservice-0.6.42/debian/patches/0002-create-and-manage-groups-like-on-a-debian-system.patch accountsservice-0.6.45/debian/patches/0002-create-and-manage-groups-like-on-a-debian-system.patch --- accountsservice-0.6.42/debian/patches/0002-create-and-manage-groups-like-on-a-debian-system.patch 1970-01-01 00:00:00.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0002-create-and-manage-groups-like-on-a-debian-system.patch 2017-12-18 02:42:18.000000000 +0000 @@ -0,0 +1,153 @@ +From: Frederic Peters +Bug-Debian: http://bugs.debian.org/618764 +Forwarded: not-needed +Description: Create and manage groups like on a debian system. +--- + src/daemon.c | 22 ++++++---------------- + src/user.c | 16 ++++++++-------- + src/util.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + src/util.h | 9 +++++++++ + 4 files changed, 65 insertions(+), 24 deletions(-) + +--- a/src/daemon.c ++++ b/src/daemon.c +@@ -976,22 +976,8 @@ + argv[1] = "-m"; + argv[2] = "-c"; + argv[3] = cd->real_name; +- if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) { +- argv[4] = "-G"; +- argv[5] = ADMIN_GROUP; +- argv[6] = "--"; +- argv[7] = cd->user_name; +- argv[8] = NULL; +- } +- else if (cd->account_type == ACCOUNT_TYPE_STANDARD) { +- argv[4] = "--"; +- argv[5] = cd->user_name; +- argv[6] = NULL; +- } +- else { +- throw_error (context, ERROR_FAILED, "Don't know how to add user of type %d", cd->account_type); +- return; +- } ++ argv[4] = cd->user_name; ++ argv[5] = NULL; + + error = NULL; + if (!spawn_with_login_uid (context, argv, &error)) { +@@ -1000,6 +986,10 @@ + return; + } + ++ if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) { ++ add_user_to_group (context, cd->user_name, "sudo"); ++ } ++ + user = daemon_local_find_user_by_name (daemon, cd->user_name); + user_update_local_account_property (user, TRUE); + user_update_system_account_property (user, FALSE); +--- a/src/user.c ++++ b/src/user.c +@@ -1611,7 +1611,7 @@ + gid_t *groups; + gint ngroups; + GString *str; +- gid_t wheel; ++ gid_t admin; + struct group *grp; + gint i; + const gchar *argv[6]; +@@ -1623,22 +1623,22 @@ + + grp = getgrnam (ADMIN_GROUP); + if (grp == NULL) { +- throw_error (context, ERROR_FAILED, "failed to set account type: wheel group not found"); ++ throw_error (context, ERROR_FAILED, "failed to set account type: admin group not found"); + return; + } +- wheel = grp->gr_gid; ++ admin = grp->gr_gid; + + ngroups = get_user_groups (user->user_name, user->gid, &groups); + + str = g_string_new (""); + for (i = 0; i < ngroups; i++) { +- if (groups[i] == wheel) ++ if (groups[i] == admin) + continue; + g_string_append_printf (str, "%d,", groups[i]); + } + switch (account_type) { + case ACCOUNT_TYPE_ADMINISTRATOR: +- g_string_append_printf (str, "%d", wheel); ++ g_string_append_printf (str, "%d", admin); + break; + case ACCOUNT_TYPE_STANDARD: + default: +--- a/src/util.c ++++ b/src/util.c +@@ -313,3 +313,45 @@ + + return TRUE; + } ++ ++void ++add_user_to_group (GDBusMethodInvocation *context, ++ const char *user_name, ++ const char *group_name) ++{ ++ GError *error; ++ gchar *argv[4]; ++ ++ argv[0] = (gchar*) "/usr/sbin/adduser"; ++ argv[1] = (gchar*) user_name; ++ argv[2] = (gchar*) group_name; ++ argv[3] = NULL; ++ ++ error = NULL; ++ if (!spawn_with_login_uid (context, argv, &error)) { ++ g_warning ("failed to add user %s to group %s", user_name, group_name); ++ g_error_free (error); ++ return; ++ } ++} ++ ++void ++remove_user_from_group (GDBusMethodInvocation *context, ++ const char *user_name, ++ const char *group_name) ++{ ++ GError *error; ++ gchar *argv[4]; ++ ++ argv[0] = (gchar*) "/usr/sbin/deluser"; ++ argv[1] = (gchar*) user_name; ++ argv[2] = (gchar*) group_name; ++ argv[3] = NULL; ++ ++ error = NULL; ++ if (!spawn_with_login_uid (context, argv, &error)) { ++ g_warning ("failed to remove user %s from group %s", user_name, group_name); ++ g_error_free (error); ++ return; ++ } ++} +--- a/src/util.h ++++ b/src/util.h +@@ -40,6 +40,15 @@ + gid_t group, + gid_t **groups); + ++void add_user_to_group (GDBusMethodInvocation *context, ++ const char *user_name, ++ const char *group_name); ++ ++void remove_user_from_group (GDBusMethodInvocation *context, ++ const char *user_name, ++ const char *group_name); ++ ++ + G_END_DECLS + + #endif /* __UTIL_H__ */ diff -Nru accountsservice-0.6.42/debian/patches/0002-create-and-manage-groups-like-on-a-ubuntu-system.patch accountsservice-0.6.45/debian/patches/0002-create-and-manage-groups-like-on-a-ubuntu-system.patch --- accountsservice-0.6.42/debian/patches/0002-create-and-manage-groups-like-on-a-ubuntu-system.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0002-create-and-manage-groups-like-on-a-ubuntu-system.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -From: Frederic Peters -Bug-Debian: http://bugs.debian.org/618764 -Forwarded: not-needed -Description: Create and manage groups like on an Ubuntu system. ---- - src/daemon.c | 25 +++++++++---------------- - src/user.c | 22 +++++++++++----------- - src/util.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - src/util.h | 9 +++++++++ - 4 files changed, 71 insertions(+), 27 deletions(-) - -Index: accountsservice-0.6.40/src/daemon.c -=================================================================== ---- accountsservice-0.6.40.orig/src/daemon.c -+++ accountsservice-0.6.40/src/daemon.c -@@ -895,22 +895,8 @@ daemon_create_user_authorized_cb (Daemon - argv[1] = "-m"; - argv[2] = "-c"; - argv[3] = cd->real_name; -- if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) { -- argv[4] = "-G"; -- argv[5] = ADMIN_GROUP; -- argv[6] = "--"; -- argv[7] = cd->user_name; -- argv[8] = NULL; -- } -- else if (cd->account_type == ACCOUNT_TYPE_STANDARD) { -- argv[4] = "--"; -- argv[5] = cd->user_name; -- argv[6] = NULL; -- } -- else { -- throw_error (context, ERROR_FAILED, "Don't know how to add user of type %d", cd->account_type); -- return; -- } -+ argv[4] = cd->user_name; -+ argv[5] = NULL; - - error = NULL; - if (!spawn_with_login_uid (context, argv, &error)) { -@@ -919,6 +905,13 @@ daemon_create_user_authorized_cb (Daemon - return; - } - -+ if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) { -+ add_user_to_group (context, cd->user_name, ADMIN_GROUP); -+ add_user_to_group (context, cd->user_name, "adm"); -+ add_user_to_group (context, cd->user_name, "lpadmin"); -+ add_user_to_group (context, cd->user_name, "sambashare"); -+ } -+ - user = daemon_local_find_user_by_name (daemon, cd->user_name); - user_update_local_account_property (user, TRUE); - user_update_system_account_property (user, FALSE); -Index: accountsservice-0.6.40/src/user.c -=================================================================== ---- accountsservice-0.6.40.orig/src/user.c -+++ accountsservice-0.6.40/src/user.c -@@ -124,7 +124,8 @@ static gint - account_type_from_pwent (struct passwd *pwent) - { - struct group *grp; -- gid_t wheel; -+ gid_t sudo; -+ gid_t admin; - gid_t *groups; - gint ngroups; - gint i; -@@ -139,12 +140,21 @@ account_type_from_pwent (struct passwd * - g_debug (ADMIN_GROUP " group not found"); - return ACCOUNT_TYPE_STANDARD; - } -- wheel = grp->gr_gid; -+ sudo = grp->gr_gid; -+ -+ /* Ubuntu prior to 12.04 used "admin" */ -+ grp = getgrnam ("admin"); -+ if (grp == NULL) { -+ g_debug ("admin group not found"); -+ admin = -1; -+ } else { -+ admin = grp->gr_gid; -+ } - - ngroups = get_user_groups (pwent->pw_name, pwent->pw_gid, &groups); - - for (i = 0; i < ngroups; i++) { -- if (groups[i] == wheel) { -+ if (groups[i] == sudo || groups[i] == admin) { - g_free (groups); - return ACCOUNT_TYPE_ADMINISTRATOR; - } -@@ -1694,7 +1704,7 @@ user_change_account_type_authorized_cb ( - gid_t *groups; - gint ngroups; - GString *str; -- gid_t wheel; -+ gid_t admin; - struct group *grp; - gint i; - const gchar *argv[6]; -@@ -1706,22 +1716,22 @@ user_change_account_type_authorized_cb ( - - grp = getgrnam (ADMIN_GROUP); - if (grp == NULL) { -- throw_error (context, ERROR_FAILED, "failed to set account type: wheel group not found"); -+ throw_error (context, ERROR_FAILED, "failed to set account type: sudo group not found"); - return; - } -- wheel = grp->gr_gid; -+ admin = grp->gr_gid; - - ngroups = get_user_groups (user->user_name, user->gid, &groups); - - str = g_string_new (""); - for (i = 0; i < ngroups; i++) { -- if (groups[i] == wheel) -+ if (groups[i] == admin) - continue; - g_string_append_printf (str, "%d,", groups[i]); - } - switch (account_type) { - case ACCOUNT_TYPE_ADMINISTRATOR: -- g_string_append_printf (str, "%d", wheel); -+ g_string_append_printf (str, "%d", admin); - break; - case ACCOUNT_TYPE_STANDARD: - default: -Index: accountsservice-0.6.40/src/util.c -=================================================================== ---- accountsservice-0.6.40.orig/src/util.c -+++ accountsservice-0.6.40/src/util.c -@@ -313,3 +313,45 @@ get_caller_uid (GDBusMethodInvocation *c - - return TRUE; - } -+ -+void -+add_user_to_group (GDBusMethodInvocation *context, -+ const char *user_name, -+ const char *group_name) -+{ -+ GError *error; -+ const gchar *argv[4]; -+ -+ argv[0] = (gchar*) "/usr/sbin/adduser"; -+ argv[1] = (gchar*) user_name; -+ argv[2] = (gchar*) group_name; -+ argv[3] = NULL; -+ -+ error = NULL; -+ if (!spawn_with_login_uid (context, argv, &error)) { -+ g_warning ("failed to add user %s to group %s", user_name, group_name); -+ g_error_free (error); -+ return; -+ } -+} -+ -+void -+remove_user_from_group (GDBusMethodInvocation *context, -+ const char *user_name, -+ const char *group_name) -+{ -+ GError *error; -+ const gchar *argv[4]; -+ -+ argv[0] = (gchar*) "/usr/sbin/deluser"; -+ argv[1] = (gchar*) user_name; -+ argv[2] = (gchar*) group_name; -+ argv[3] = NULL; -+ -+ error = NULL; -+ if (!spawn_with_login_uid (context, argv, &error)) { -+ g_warning ("failed to remove user %s from group %s", user_name, group_name); -+ g_error_free (error); -+ return; -+ } -+} -Index: accountsservice-0.6.40/src/util.h -=================================================================== ---- accountsservice-0.6.40.orig/src/util.h -+++ accountsservice-0.6.40/src/util.h -@@ -40,6 +40,15 @@ gint get_user_groups (const gchar *user - gid_t group, - gid_t **groups); - -+void add_user_to_group (GDBusMethodInvocation *context, -+ const char *user_name, -+ const char *group_name); -+ -+void remove_user_from_group (GDBusMethodInvocation *context, -+ const char *user_name, -+ const char *group_name); -+ -+ - G_END_DECLS - - #endif /* __UTIL_H__ */ diff -Nru accountsservice-0.6.42/debian/patches/0002-On-startup-clean-out-the-data-of-removed-users.patch accountsservice-0.6.45/debian/patches/0002-On-startup-clean-out-the-data-of-removed-users.patch --- accountsservice-0.6.42/debian/patches/0002-On-startup-clean-out-the-data-of-removed-users.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0002-On-startup-clean-out-the-data-of-removed-users.patch 2017-12-18 02:42:18.000000000 +0000 @@ -8,21 +8,24 @@ src/daemon.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) -Index: accountsservice-0.6.40/src/daemon.c +Index: accountsservice-0.6.45/src/daemon.c =================================================================== ---- accountsservice-0.6.40.orig/src/daemon.c -+++ accountsservice-0.6.40/src/daemon.c -@@ -223,11 +223,17 @@ entry_generator_cachedir (GHashTable *us +--- accountsservice-0.6.45.orig/src/daemon.c ++++ accountsservice-0.6.45/src/daemon.c +@@ -293,14 +293,20 @@ entry_generator_cachedir (Daemon * g_free (filename); if (regular) { + errno = 0; pwent = getpwnam (name); -- if (pwent == NULL) +- if (pwent == NULL) { - g_debug ("user '%s' in cache dir but not present on system", name); -- else -+ if (pwent != NULL) +- } else { ++ if (pwent != NULL) { + *shadow_entry = getspnam (pwent->pw_name); + return pwent; + } + else if (errno == 0) { + g_debug ("user '%s' in cache dir but not present on system, removing", name); + remove_cache_files (name); diff -Nru accountsservice-0.6.42/debian/patches/0005-gdm_config_file_path.patch accountsservice-0.6.45/debian/patches/0005-gdm_config_file_path.patch --- accountsservice-0.6.42/debian/patches/0005-gdm_config_file_path.patch 1970-01-01 00:00:00.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0005-gdm_config_file_path.patch 2017-12-18 02:42:18.000000000 +0000 @@ -0,0 +1,22 @@ +Description: Fix path to the GDM configuration file, which is different + in Debian/Ubuntu. +Author: Josselin Mouette +Bug-Debian: http://bugs.debian.org/627311 +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=49993 +--- + src/daemon.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: accountsservice-0.6.45/src/daemon.c +=================================================================== +--- accountsservice-0.6.45.orig/src/daemon.c ++++ accountsservice-0.6.45/src/daemon.c +@@ -51,7 +51,7 @@ + #define PATH_PASSWD "/etc/passwd" + #define PATH_SHADOW "/etc/shadow" + #define PATH_GROUP "/etc/group" +-#define PATH_GDM_CUSTOM "/etc/gdm/custom.conf" ++#define PATH_GDM_CUSTOM "/etc/gdm3/custom.conf" + + enum { + PROP_0, diff -Nru accountsservice-0.6.42/debian/patches/0005-gdm_config_file_path_ubuntu.patch accountsservice-0.6.45/debian/patches/0005-gdm_config_file_path_ubuntu.patch --- accountsservice-0.6.42/debian/patches/0005-gdm_config_file_path_ubuntu.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0005-gdm_config_file_path_ubuntu.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -Description: Fix path to the GDM configuration file, which is different - in Debian/Ubuntu. -Author: Josselin Mouette -Bug-Debian: http://bugs.debian.org/627311 -Bug: https://bugs.freedesktop.org/show_bug.cgi?id=49993 ---- - src/daemon.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: accountsservice-0.6.40/src/daemon.c -=================================================================== ---- accountsservice-0.6.40.orig/src/daemon.c -+++ accountsservice-0.6.40/src/daemon.c -@@ -48,7 +48,7 @@ - #define PATH_PASSWD "/etc/passwd" - #define PATH_SHADOW "/etc/shadow" - #define PATH_GROUP "/etc/group" --#define PATH_GDM_CUSTOM "/etc/gdm/custom.conf" -+#define PATH_GDM_CUSTOM "/etc/gdm3/custom.conf" - - enum { - PROP_0, diff -Nru accountsservice-0.6.42/debian/patches/0006-adduser_instead_of_useradd.patch accountsservice-0.6.45/debian/patches/0006-adduser_instead_of_useradd.patch --- accountsservice-0.6.42/debian/patches/0006-adduser_instead_of_useradd.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0006-adduser_instead_of_useradd.patch 2017-12-18 02:42:18.000000000 +0000 @@ -6,11 +6,9 @@ src/daemon.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) -Index: accountsservice-0.6.40/src/daemon.c -=================================================================== ---- accountsservice-0.6.40.orig/src/daemon.c -+++ accountsservice-0.6.40/src/daemon.c -@@ -891,12 +891,13 @@ daemon_create_user_authorized_cb (Daemon +--- a/src/daemon.c ++++ b/src/daemon.c +@@ -972,12 +972,13 @@ sys_log (context, "create user '%s'", cd->user_name); diff -Nru accountsservice-0.6.42/debian/patches/0007-add-lightdm-support.patch accountsservice-0.6.45/debian/patches/0007-add-lightdm-support.patch --- accountsservice-0.6.42/debian/patches/0007-add-lightdm-support.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0007-add-lightdm-support.patch 2017-12-18 02:42:18.000000000 +0000 @@ -8,51 +8,9 @@ src/daemon.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 132 insertions(+), 11 deletions(-) -Index: accountsservice-0.6.40/src/daemon.c -=================================================================== ---- accountsservice-0.6.40.orig/src/daemon.c -+++ accountsservice-0.6.40/src/daemon.c -@@ -49,6 +49,7 @@ - #define PATH_SHADOW "/etc/shadow" - #define PATH_GROUP "/etc/group" - #define PATH_GDM_CUSTOM "/etc/gdm3/custom.conf" -+#define PATH_LIGHTDM_CONFIG "/etc/lightdm/lightdm.conf" - - enum { - PROP_0, -@@ -67,6 +68,7 @@ struct DaemonPrivate { - GFileMonitor *shadow_monitor; - GFileMonitor *group_monitor; - GFileMonitor *gdm_monitor; -+ GFileMonitor *lightdm_monitor; - GFileMonitor *wtmp_monitor; - - guint reload_id; -@@ -534,9 +536,20 @@ daemon_init (Daemon *daemon) - wtmp_helper_get_path_for_monitor (), - on_users_monitor_changed); - -- daemon->priv->gdm_monitor = setup_monitor (daemon, -- PATH_GDM_CUSTOM, -- on_gdm_monitor_changed); -+ if (g_file_test ("/etc/gdm3", G_FILE_TEST_EXISTS)) -+ { -+ daemon->priv->gdm_monitor = setup_monitor (daemon, -+ PATH_GDM_CUSTOM, -+ on_gdm_monitor_changed); -+ } -+ -+ if (g_file_test ("/etc/lightdm", G_FILE_TEST_EXISTS)) -+ { -+ daemon->priv->lightdm_monitor = setup_monitor (daemon, -+ PATH_LIGHTDM_CONFIG, -+ on_gdm_monitor_changed); -+ } -+ - reload_users_timeout (daemon); - queue_reload_autologin (daemon); - } -@@ -1266,10 +1279,10 @@ daemon_local_check_auth (Daemon +--- a/src/daemon.c ++++ b/src/daemon.c +@@ -1344,10 +1344,10 @@ } gboolean @@ -67,7 +25,7 @@ { GKeyFile *keyfile; GError *local_error; -@@ -1312,23 +1325,94 @@ load_autologin (Daemon *daemon, +@@ -1390,23 +1390,89 @@ return TRUE; } @@ -82,21 +40,20 @@ + GError **error) +{ + GKeyFile *keyfile; ++ const gchar *filename; ++ ++ filename = "/etc/lightdm/lightdm.conf"; + + keyfile = g_key_file_new (); + if (!g_key_file_load_from_file (keyfile, -+ PATH_LIGHTDM_CONFIG, ++ filename, + G_KEY_FILE_KEEP_COMMENTS, + error)) { + g_key_file_free (keyfile); + return FALSE; + } + -+ *name = g_key_file_get_string (keyfile, "Seat:*", "autologin-user", error); -+ if (!*name) { -+ g_clear_error (error); -+ *name = g_key_file_get_string (keyfile, "SeatDefaults", "autologin-user", error); -+ } ++ *name = g_key_file_get_string (keyfile, "SeatDefaults", "autologin-user", error); + *enabled = (*error == NULL && (*name) && (*name)[0] != 0); + + g_key_file_free (keyfile); @@ -110,27 +67,23 @@ + gboolean *enabled, GError **error) { -+ GDBusConnection *connection; -+ GVariant *reply; ++ GDBusProxy *proxy; + + /* First, determine whether we should load GDM or LightDM values by + checking if GDM is running. */ -+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); -+ reply = g_dbus_connection_call_sync (connection, -+ "org.freedesktop.DBus", -+ "/", -+ "org.freedesktop.DBus", -+ "GetNameOwner", -+ g_variant_new ("(s)", "org.gnome.DisplayManager"), -+ G_VARIANT_TYPE ("(s)"), -+ G_DBUS_CALL_FLAGS_NO_AUTO_START, -+ -1, -+ NULL, -+ NULL); -+ g_object_unref (connection); ++ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, ++ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES| ++ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS| ++ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, ++ NULL, ++ "org.gnome.DisplayManager", ++ "/org/gnome/DisplayManager/Manager", ++ "org.gnome.DisplayManager.Manager", ++ NULL, /* GCancellable */ ++ NULL); /* GError */ + -+ if (reply != NULL) { -+ g_variant_unref (reply); ++ if (proxy != NULL) { ++ g_object_unref (proxy); + return load_autologin_gdm (daemon, name, enabled, error); + } else { + return load_autologin_lightdm (daemon, name, enabled, error); @@ -169,7 +122,7 @@ } g_key_file_set_string (keyfile, "daemon", "AutomaticLoginEnable", enabled ? "True" : "False"); -@@ -1343,6 +1427,61 @@ save_autologin (Daemon *daemon, +@@ -1421,6 +1487,61 @@ return result; } @@ -180,6 +133,7 @@ + GError **error) +{ + GKeyFile *keyfile; ++ const gchar *filename; + gchar *data; + gboolean result; + GError *local_error = NULL; @@ -187,9 +141,11 @@ + if (!g_file_test ("/etc/lightdm", G_FILE_TEST_EXISTS)) + return TRUE; /* not an error, just not installed */ + ++ filename = "/etc/lightdm/lightdm.conf"; ++ + keyfile = g_key_file_new (); + if (!g_key_file_load_from_file (keyfile, -+ PATH_LIGHTDM_CONFIG, ++ filename, + G_KEY_FILE_KEEP_COMMENTS, + &local_error)) { + /* It's OK for custom.conf to not exist, we will make it */ @@ -201,13 +157,10 @@ + g_error_free (local_error); + } + -+ /* Remove old value */ -+ g_key_file_remove_key (keyfile, "SeatDefaults", "autologin-user", NULL); -+ -+ g_key_file_set_string (keyfile, "Seat:*", "autologin-user", enabled ? name : ""); ++ g_key_file_set_string (keyfile, "SeatDefaults", "autologin-user", enabled ? name : ""); + + data = g_key_file_to_data (keyfile, NULL, NULL); -+ result = g_file_set_contents (PATH_LIGHTDM_CONFIG, data, -1, error); ++ result = g_file_set_contents (filename, data, -1, error); + + g_key_file_free (keyfile); + g_free (data); diff -Nru accountsservice-0.6.42/debian/patches/0010-set-language.patch accountsservice-0.6.45/debian/patches/0010-set-language.patch --- accountsservice-0.6.42/debian/patches/0010-set-language.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0010-set-language.patch 2017-12-18 02:42:18.000000000 +0000 @@ -1,9 +1,11 @@ Description: Save user language and regional formats settings to ~/.pam_environment. Author: Gunnar Hjalmarsson ---- accountsservice.orig/src/user.c 2015-04-13 12:54:51.519751660 +0200 -+++ accountsservice/src/user.c 2015-05-12 16:01:26.198226769 +0200 -@@ -1072,6 +1072,307 @@ +Index: accountsservice-0.6.45/src/user.c +=================================================================== +--- accountsservice-0.6.45.orig/src/user.c ++++ accountsservice-0.6.45/src/user.c +@@ -1059,6 +1059,307 @@ user_set_email (AccountsUser *a return TRUE; } @@ -311,7 +313,7 @@ static void user_change_language_authorized_cb (Daemon *daemon, User *user, -@@ -1079,11 +1380,78 @@ +@@ -1066,11 +1367,78 @@ user_change_language_authorized_cb (Daem gpointer data) { @@ -394,7 +396,7 @@ save_extra_data (user); -@@ -1092,6 +1460,7 @@ +@@ -1079,6 +1447,7 @@ user_change_language_authorized_cb (Daem g_object_notify (G_OBJECT (user), "language"); } @@ -402,7 +404,7 @@ accounts_user_complete_set_language (ACCOUNTS_USER (user), context); } -@@ -1135,11 +1504,15 @@ +@@ -1122,11 +1491,15 @@ user_change_formats_locale_authorized_cb gpointer data) { @@ -423,7 +425,7 @@ save_extra_data (user); -@@ -2326,10 +2699,16 @@ +@@ -2372,10 +2745,16 @@ user_get_property (GObject *object, g_value_set_string (value, user->email); break; case PROP_LANGUAGE: diff -Nru accountsservice-0.6.42/debian/patches/0011-add-background-file-support.patch accountsservice-0.6.45/debian/patches/0011-add-background-file-support.patch --- accountsservice-0.6.42/debian/patches/0011-add-background-file-support.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0011-add-background-file-support.patch 2017-12-18 02:42:18.000000000 +0000 @@ -2,10 +2,10 @@ Author: Michael Terry Bug-Ubuntu: https://launchpad.net/bugs/844081 -Index: accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +Index: accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml =================================================================== ---- accountsservice-0.6.40.orig/data/org.freedesktop.Accounts.User.xml -+++ accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +--- accountsservice-0.6.45.orig/data/org.freedesktop.Accounts.User.xml ++++ accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml @@ -331,6 +331,41 @@ @@ -48,7 +48,7 @@ -@@ -723,6 +758,16 @@ +@@ -768,6 +803,16 @@ @@ -65,10 +65,10 @@ -Index: accountsservice-0.6.40/src/libaccountsservice/act-user.c +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.c =================================================================== ---- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.c -+++ accountsservice-0.6.40/src/libaccountsservice/act-user.c +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.c ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.c @@ -91,6 +91,7 @@ enum { PROP_LOGIN_FREQUENCY, PROP_LOGIN_TIME, @@ -156,7 +156,7 @@ } else if (strcmp (key, "IconFile") == 0) { const char *new_icon_file; -@@ -1759,6 +1797,35 @@ act_user_set_location (ActUser *user, +@@ -1743,6 +1781,35 @@ act_user_set_language (ActUser *user, g_error_free (error); return; } @@ -192,10 +192,10 @@ } /** -Index: accountsservice-0.6.40/src/user.c +Index: accountsservice-0.6.45/src/user.c =================================================================== ---- accountsservice-0.6.40.orig/src/user.c -+++ accountsservice-0.6.40/src/user.c +--- accountsservice-0.6.45.orig/src/user.c ++++ accountsservice-0.6.45/src/user.c @@ -64,6 +64,7 @@ enum { PROP_LOGIN_FREQUENCY, PROP_LOGIN_TIME, @@ -210,9 +210,9 @@ guint64 login_frequency; + gchar *background_file; gint64 login_time; - GVariant *login_history; - gchar *icon_file; -@@ -369,6 +371,13 @@ user_update_from_keyfile (User *user + gint64 expiration_time; + gint64 last_change_time; +@@ -356,6 +358,13 @@ user_update_from_keyfile (User *user g_object_notify (G_OBJECT (user), "password-hint"); } @@ -226,7 +226,7 @@ s = g_key_file_get_string (keyfile, "User", "Icon", NULL); if (s != NULL) { g_free (user->icon_file); -@@ -436,6 +445,9 @@ user_save_to_keyfile (User *user, +@@ -423,6 +432,9 @@ user_save_to_keyfile (User *user, if (user->password_hint) g_key_file_set_string (keyfile, "User", "PasswordHint", user->password_hint); @@ -236,7 +236,7 @@ if (user->icon_file) g_key_file_set_string (keyfile, "User", "Icon", user->icon_file); -@@ -1799,6 +1811,86 @@ become_user (gpointer data) +@@ -1834,6 +1846,86 @@ become_user (gpointer data) } static void @@ -323,7 +323,7 @@ user_change_icon_file_authorized_cb (Daemon *daemon, User *user, GDBusMethodInvocation *context, -@@ -2601,6 +2693,7 @@ user_finalize (GObject *object) +@@ -2647,6 +2739,7 @@ user_finalize (GObject *object) g_free (user->shell); g_free (user->icon_file); g_free (user->default_icon_file); @@ -331,7 +331,7 @@ g_free (user->email); g_free (user->language); g_free (user->formats_locale); -@@ -2716,6 +2809,9 @@ user_get_property (GObject *object, +@@ -2762,6 +2855,9 @@ user_get_property (GObject *object, case PROP_LOCATION: g_value_set_string (value, user->location); break; @@ -341,7 +341,7 @@ case PROP_ICON_FILE: if (user->icon_file) g_value_set_string (value, user->icon_file); -@@ -2772,6 +2868,7 @@ user_accounts_user_iface_init (AccountsU +@@ -2818,6 +2914,7 @@ user_accounts_user_iface_init (AccountsU { iface->handle_set_account_type = user_set_account_type; iface->handle_set_automatic_login = user_set_automatic_login; @@ -349,7 +349,7 @@ iface->handle_set_email = user_set_email; iface->handle_set_formats_locale = user_set_formats_locale; iface->handle_set_home_directory = user_set_home_directory; -@@ -2816,6 +2913,7 @@ user_init (User *user) +@@ -2864,6 +2961,7 @@ user_init (User *user) user->account_type = ACCOUNT_TYPE_STANDARD; user->home_dir = NULL; user->shell = NULL; diff -Nru accountsservice-0.6.42/debian/patches/0012-add-keyboard-layout-support.patch accountsservice-0.6.45/debian/patches/0012-add-keyboard-layout-support.patch --- accountsservice-0.6.42/debian/patches/0012-add-keyboard-layout-support.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0012-add-keyboard-layout-support.patch 2017-12-18 02:42:18.000000000 +0000 @@ -2,10 +2,10 @@ Author: Michael Terry Bug-Ubuntu: https://launchpad.net/bugs/915468 -Index: accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +Index: accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml =================================================================== ---- accountsservice-0.6.40.orig/data/org.freedesktop.Accounts.User.xml -+++ accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +--- accountsservice-0.6.45.orig/data/org.freedesktop.Accounts.User.xml ++++ accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml @@ -331,6 +331,41 @@ @@ -48,7 +48,7 @@ -@@ -758,6 +793,16 @@ +@@ -803,6 +838,16 @@ @@ -65,10 +65,10 @@ -Index: accountsservice-0.6.40/src/user.c +Index: accountsservice-0.6.45/src/user.c =================================================================== ---- accountsservice-0.6.40.orig/src/user.c -+++ accountsservice-0.6.40/src/user.c +--- accountsservice-0.6.45.orig/src/user.c ++++ accountsservice-0.6.45/src/user.c @@ -64,6 +64,7 @@ enum { PROP_LOGIN_FREQUENCY, PROP_LOGIN_TIME, @@ -84,8 +84,8 @@ + gchar **x_keyboard_layouts; gchar *background_file; gint64 login_time; - GVariant *login_history; -@@ -371,6 +373,13 @@ user_update_from_keyfile (User *user + gint64 expiration_time; +@@ -358,6 +360,13 @@ user_update_from_keyfile (User *user g_object_notify (G_OBJECT (user), "password-hint"); } @@ -99,7 +99,7 @@ s = g_key_file_get_string (keyfile, "User", "Background", NULL); if (s != NULL) { g_free (user->background_file); -@@ -445,6 +454,9 @@ user_save_to_keyfile (User *user, +@@ -432,6 +441,9 @@ user_save_to_keyfile (User *user, if (user->password_hint) g_key_file_set_string (keyfile, "User", "PasswordHint", user->password_hint); @@ -109,7 +109,7 @@ if (user->background_file) g_key_file_set_string (keyfile, "User", "Background", user->background_file); -@@ -1811,6 +1823,55 @@ become_user (gpointer data) +@@ -1846,6 +1858,55 @@ become_user (gpointer data) } static void @@ -165,7 +165,7 @@ user_change_background_file_authorized_cb (Daemon *daemon, User *user, GDBusMethodInvocation *context, -@@ -2691,6 +2752,7 @@ user_finalize (GObject *object) +@@ -2737,6 +2798,7 @@ user_finalize (GObject *object) g_free (user->real_name); g_free (user->home_dir); g_free (user->shell); @@ -173,7 +173,7 @@ g_free (user->icon_file); g_free (user->default_icon_file); g_free (user->background_file); -@@ -2809,6 +2871,9 @@ user_get_property (GObject *object, +@@ -2855,6 +2917,9 @@ user_get_property (GObject *object, case PROP_LOCATION: g_value_set_string (value, user->location); break; @@ -183,15 +183,15 @@ case PROP_BACKGROUND_FILE: g_value_set_string (value, user->background_file); break; -@@ -2881,6 +2946,7 @@ user_accounts_user_iface_init (AccountsU +@@ -2928,6 +2993,7 @@ user_accounts_user_iface_init (AccountsU iface->handle_set_real_name = user_set_real_name; iface->handle_set_shell = user_set_shell; iface->handle_set_user_name = user_set_user_name; + iface->handle_set_xkeyboard_layouts = user_set_xkeyboard_layouts; iface->handle_set_xsession = user_set_x_session; + iface->handle_get_password_expiration_policy = user_get_password_expiration_policy; iface->get_uid = user_real_get_uid; - iface->get_user_name = user_real_get_user_name; -@@ -2913,6 +2979,7 @@ user_init (User *user) +@@ -2961,6 +3027,7 @@ user_init (User *user) user->account_type = ACCOUNT_TYPE_STANDARD; user->home_dir = NULL; user->shell = NULL; @@ -199,10 +199,10 @@ user->background_file = NULL; user->icon_file = NULL; user->default_icon_file = NULL; -Index: accountsservice-0.6.40/src/libaccountsservice/act-user.c +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.c =================================================================== ---- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.c -+++ accountsservice-0.6.40/src/libaccountsservice/act-user.c +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.c ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.c @@ -91,6 +91,7 @@ enum { PROP_LOGIN_FREQUENCY, PROP_LOGIN_TIME, @@ -319,7 +319,7 @@ } else if (strcmp (key, "BackgroundFile") == 0) { const char *new_background_file; -@@ -1680,6 +1740,35 @@ act_user_set_email (ActUser *user, +@@ -1694,6 +1754,35 @@ act_user_get_password_expiration_policy g_error_free (error); return; } diff -Nru accountsservice-0.6.42/debian/patches/0013-add-has-message-support.patch accountsservice-0.6.45/debian/patches/0013-add-has-message-support.patch --- accountsservice-0.6.42/debian/patches/0013-add-has-message-support.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0013-add-has-message-support.patch 2017-12-18 02:42:18.000000000 +0000 @@ -1,10 +1,10 @@ Description: Add XHasMessages property to report if a user had unread messages, largely for LightDM's benefit. Author: Michael Terry -Index: accountsservice-0.6.43/data/org.freedesktop.Accounts.User.xml +Index: accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml =================================================================== ---- accountsservice-0.6.43.orig/data/org.freedesktop.Accounts.User.xml -+++ accountsservice-0.6.43/data/org.freedesktop.Accounts.User.xml +--- accountsservice-0.6.45.orig/data/org.freedesktop.Accounts.User.xml ++++ accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml @@ -331,6 +331,41 @@ @@ -47,7 +47,7 @@ -@@ -828,6 +863,16 @@ +@@ -838,6 +873,16 @@ @@ -64,10 +64,10 @@ -Index: accountsservice-0.6.43/src/libaccountsservice/act-user.c +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.c =================================================================== ---- accountsservice-0.6.43.orig/src/libaccountsservice/act-user.c -+++ accountsservice-0.6.43/src/libaccountsservice/act-user.c +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.c ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.c @@ -91,6 +91,7 @@ enum { PROP_LOGIN_FREQUENCY, PROP_LOGIN_TIME, @@ -146,7 +146,7 @@ } else if (strcmp (key, "XKeyboardLayouts") == 0) { const char **new_x_keyboard_layouts; -@@ -1740,6 +1776,34 @@ act_user_set_email (ActUser *user, +@@ -1754,6 +1790,34 @@ act_user_get_password_expiration_policy g_error_free (error); return; } @@ -181,10 +181,10 @@ } /** -Index: accountsservice-0.6.43/src/user.c +Index: accountsservice-0.6.45/src/user.c =================================================================== ---- accountsservice-0.6.43.orig/src/user.c -+++ accountsservice-0.6.43/src/user.c +--- accountsservice-0.6.45.orig/src/user.c ++++ accountsservice-0.6.45/src/user.c @@ -64,6 +64,7 @@ enum { PROP_LOGIN_FREQUENCY, PROP_LOGIN_TIME, @@ -201,7 +201,7 @@ gchar **x_keyboard_layouts; gchar *background_file; gint64 login_time; -@@ -1797,6 +1799,52 @@ become_user (gpointer data) +@@ -1858,6 +1860,52 @@ become_user (gpointer data) } static void @@ -254,7 +254,7 @@ user_change_x_keyboard_layouts_authorized_cb (Daemon *daemon, User *user, GDBusMethodInvocation *context, -@@ -2902,6 +2950,9 @@ user_get_property (GObject *object, +@@ -2917,6 +2965,9 @@ user_get_property (GObject *object, case PROP_LOCATION: g_value_set_string (value, user->location); break; @@ -264,15 +264,15 @@ case PROP_X_KEYBOARD_LAYOUTS: g_value_set_boxed (value, g_strdupv (user->x_keyboard_layouts)); break; -@@ -2978,6 +3029,7 @@ user_accounts_user_iface_init (AccountsU +@@ -2993,6 +3044,7 @@ user_accounts_user_iface_init (AccountsU iface->handle_set_real_name = user_set_real_name; iface->handle_set_shell = user_set_shell; iface->handle_set_user_name = user_set_user_name; + iface->handle_set_xhas_messages = user_set_xhas_messages; iface->handle_set_xkeyboard_layouts = user_set_xkeyboard_layouts; iface->handle_set_xsession = user_set_x_session; - iface->get_uid = user_real_get_uid; -@@ -3011,6 +3063,7 @@ user_init (User *user) + iface->handle_get_password_expiration_policy = user_get_password_expiration_policy; +@@ -3027,6 +3079,7 @@ user_init (User *user) user->account_type = ACCOUNT_TYPE_STANDARD; user->home_dir = NULL; user->shell = NULL; diff -Nru accountsservice-0.6.42/debian/patches/0015-debian-nologin-path.patch accountsservice-0.6.45/debian/patches/0015-debian-nologin-path.patch --- accountsservice-0.6.42/debian/patches/0015-debian-nologin-path.patch 1970-01-01 00:00:00.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0015-debian-nologin-path.patch 2017-12-18 02:42:18.000000000 +0000 @@ -0,0 +1,19 @@ +Description: Use debian specific path for nologin executable +Author: Laurent Bigonville +Forwarded: not-needed +Origin: vendor +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=805086 + +Index: accountsservice-0.6.45/src/user-classify.c +=================================================================== +--- accountsservice-0.6.45.orig/src/user-classify.c ++++ accountsservice-0.6.45/src/user-classify.c +@@ -58,7 +58,7 @@ static const char *default_excludes[] = + "gnome-initial-setup" + }; + +-#define PATH_NOLOGIN "/sbin/nologin" ++#define PATH_NOLOGIN "/usr/sbin/nologin" + #define PATH_FALSE "/bin/false" + + static gboolean diff -Nru accountsservice-0.6.42/debian/patches/0016-add-input-sources-support.patch accountsservice-0.6.45/debian/patches/0016-add-input-sources-support.patch --- accountsservice-0.6.42/debian/patches/0016-add-input-sources-support.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0016-add-input-sources-support.patch 2017-12-18 02:42:18.000000000 +0000 @@ -10,10 +10,10 @@ src/user.c | 212 +++++++++++++++++++++++++++++++++ 4 files changed, 342 insertions(+) -Index: accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +Index: accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml =================================================================== ---- accountsservice-0.6.40.orig/data/org.freedesktop.Accounts.User.xml -+++ accountsservice-0.6.40/data/org.freedesktop.Accounts.User.xml +--- accountsservice-0.6.45.orig/data/org.freedesktop.Accounts.User.xml ++++ accountsservice-0.6.45/data/org.freedesktop.Accounts.User.xml @@ -185,6 +185,41 @@ @@ -56,7 +56,7 @@ -@@ -771,6 +806,16 @@ +@@ -816,6 +851,16 @@ @@ -73,10 +73,10 @@ -Index: accountsservice-0.6.40/src/libaccountsservice/act-user.c +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.c =================================================================== ---- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.c -+++ accountsservice-0.6.40/src/libaccountsservice/act-user.c +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.c ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.c @@ -97,6 +97,7 @@ enum { PROP_ICON_FILE, PROP_LANGUAGE, @@ -186,7 +186,7 @@ g_free (user->x_session); user->x_session = g_strdup (user_to_copy->x_session); g_object_notify (G_OBJECT (user), "x-session"); -@@ -1891,6 +1944,35 @@ act_user_set_language (ActUser *user, +@@ -1905,6 +1958,35 @@ act_user_set_email (ActUser *user, g_error_free (error); return; } @@ -222,10 +222,10 @@ } /** -Index: accountsservice-0.6.40/src/libaccountsservice/act-user.h +Index: accountsservice-0.6.45/src/libaccountsservice/act-user.h =================================================================== ---- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.h -+++ accountsservice-0.6.40/src/libaccountsservice/act-user.h +--- accountsservice-0.6.45.orig/src/libaccountsservice/act-user.h ++++ accountsservice-0.6.45/src/libaccountsservice/act-user.h @@ -78,6 +78,7 @@ gboolean act_user_is_nonexistent const char *act_user_get_icon_file (ActUser *user); const char *act_user_get_language (ActUser *user); @@ -234,7 +234,7 @@ const char *act_user_get_x_session (ActUser *user); const char *act_user_get_primary_session_id (ActUser *user); -@@ -91,6 +92,8 @@ void act_user_set_language +@@ -99,6 +100,8 @@ void act_user_set_language const char *language); void act_user_set_formats_locale (ActUser *user, const char *formats_locale); @@ -243,10 +243,10 @@ void act_user_set_x_session (ActUser *user, const char *x_session); void act_user_set_location (ActUser *user, -Index: accountsservice-0.6.40/src/user.c +Index: accountsservice-0.6.45/src/user.c =================================================================== ---- accountsservice-0.6.40.orig/src/user.c -+++ accountsservice-0.6.40/src/user.c +--- accountsservice-0.6.45.orig/src/user.c ++++ accountsservice-0.6.45/src/user.c @@ -59,6 +59,7 @@ enum { PROP_EMAIL, PROP_LANGUAGE, @@ -263,7 +263,7 @@ gchar *x_session; gchar *location; guint64 login_frequency; -@@ -324,6 +326,75 @@ user_update_from_pwent (User *u +@@ -311,6 +313,75 @@ user_update_from_pwent (User *u accounts_user_emit_changed (ACCOUNTS_USER (user)); } @@ -339,7 +339,7 @@ void user_update_from_keyfile (User *user, GKeyFile *keyfile) -@@ -347,6 +418,11 @@ user_update_from_keyfile (User *user +@@ -334,6 +405,11 @@ user_update_from_keyfile (User *user g_object_notify (G_OBJECT (user), "formats-locale"); } @@ -351,7 +351,7 @@ s = g_key_file_get_string (keyfile, "User", "XSession", NULL); if (s != NULL) { g_free (user->x_session); -@@ -433,6 +509,51 @@ user_update_system_account_property (Use +@@ -420,6 +496,51 @@ user_update_system_account_property (Use } static void @@ -403,7 +403,7 @@ user_save_to_keyfile (User *user, GKeyFile *keyfile) { -@@ -447,6 +568,9 @@ user_save_to_keyfile (User *user, +@@ -434,6 +555,9 @@ user_save_to_keyfile (User *user, if (user->formats_locale) g_key_file_set_string (keyfile, "User", "FormatsLocale", user->formats_locale); @@ -413,7 +413,7 @@ if (user->x_session) g_key_file_set_string (keyfile, "User", "XSession", user->x_session); -@@ -1583,6 +1707,67 @@ user_set_formats_locale (AccountsUser +@@ -1570,6 +1694,67 @@ user_set_formats_locale (AccountsUser } static void @@ -481,7 +481,7 @@ user_change_x_session_authorized_cb (Daemon *daemon, User *user, GDBusMethodInvocation *context, -@@ -2717,6 +2902,12 @@ user_real_get_language (AccountsUser *us +@@ -2763,6 +2948,12 @@ user_real_get_language (AccountsUser *us return USER (user)->language; } @@ -494,7 +494,7 @@ static const gchar * user_real_get_xsession (AccountsUser *user) { -@@ -2814,6 +3005,9 @@ user_finalize (GObject *object) +@@ -2860,6 +3051,9 @@ user_finalize (GObject *object) if (user->login_history) g_variant_unref (user->login_history); @@ -504,7 +504,7 @@ if (G_OBJECT_CLASS (user_parent_class)->finalize) (*G_OBJECT_CLASS (user_parent_class)->finalize) (object); } -@@ -2825,6 +3019,7 @@ user_set_property (GObject *object, +@@ -2871,6 +3065,7 @@ user_set_property (GObject *object, GParamSpec *pspec) { User *user = USER (object); @@ -512,7 +512,7 @@ switch (param_id) { case PROP_ACCOUNT_TYPE: -@@ -2836,6 +3031,18 @@ user_set_property (GObject *object, +@@ -2882,6 +3077,18 @@ user_set_property (GObject *object, case PROP_FORMATS_LOCALE: user->formats_locale = g_value_dup_string (value); break; @@ -531,7 +531,7 @@ case PROP_X_SESSION: user->x_session = g_value_dup_string (value); break; -@@ -2913,6 +3120,9 @@ user_get_property (GObject *object, +@@ -2959,6 +3166,9 @@ user_get_property (GObject *object, else g_value_set_string (value, user_get_fallback_value (user, "FormatsLocale")); break; @@ -541,7 +541,7 @@ case PROP_X_SESSION: g_value_set_string (value, user->x_session); break; -@@ -2990,6 +3200,7 @@ user_accounts_user_iface_init (AccountsU +@@ -3036,6 +3246,7 @@ user_accounts_user_iface_init (AccountsU iface->handle_set_home_directory = user_set_home_directory; iface->handle_set_icon_file = user_set_icon_file; iface->handle_set_language = user_set_language; @@ -549,7 +549,7 @@ iface->handle_set_location = user_set_location; iface->handle_set_locked = user_set_locked; iface->handle_set_password = user_set_password; -@@ -3008,6 +3219,7 @@ user_accounts_user_iface_init (AccountsU +@@ -3056,6 +3267,7 @@ user_accounts_user_iface_init (AccountsU iface->get_shell = user_real_get_shell; iface->get_email = user_real_get_email; iface->get_language = user_real_get_language; @@ -557,7 +557,7 @@ iface->get_xsession = user_real_get_xsession; iface->get_location = user_real_get_location; iface->get_login_frequency = user_real_get_login_frequency; -@@ -3039,6 +3251,7 @@ user_init (User *user) +@@ -3087,6 +3299,7 @@ user_init (User *user) user->email = NULL; user->language = NULL; user->formats_locale = NULL; diff -Nru accountsservice-0.6.42/debian/patches/0018-wtmp-fix-logout-times.patch accountsservice-0.6.45/debian/patches/0018-wtmp-fix-logout-times.patch --- accountsservice-0.6.42/debian/patches/0018-wtmp-fix-logout-times.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0018-wtmp-fix-logout-times.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -From 73734890efe0cf9ddf5824229cce774d9ce2a5ee Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Tue, 28 Jun 2016 13:01:26 +0200 -Subject: wtmp: Fix logout times in login-history - -Logout times for users are correct if user logs off and then shutdown -from GDM, however logout times are wrong if user shutdowns directly -from the user session, because DEAD_PROCESS record is missing in that -case and BOOT_TIME record is used instead. - -Wtmp contains also shutdown/reboot records. Set logout time to the -time from those record instead of BOOT_TIME. - -https://bugs.freedesktop.org/show_bug.cgi?id=94497 - -Bug-Ubuntu: https://launchpad.net/bugs/1443052 - -diff --git a/src/wtmp-helper.c b/src/wtmp-helper.c -index 83ac43b..4986e16 100644 ---- a/src/wtmp-helper.c -+++ b/src/wtmp-helper.c -@@ -107,9 +107,17 @@ wtmp_helper_entry_generator (GHashTable *users, - while ((wtmp_entry = getutxent ())) { - UserAccounting *accounting; - UserPreviousLogin *previous_login; -+ gboolean shutdown_or_reboot = FALSE; - -- if (wtmp_entry->ut_type == BOOT_TIME) { -- /* Set boot time for missing logout records */ -+ if (g_str_equal (wtmp_entry->ut_line, "~")) { -+ if (g_str_equal (wtmp_entry->ut_user, "shutdown") || -+ g_str_equal (wtmp_entry->ut_user, "reboot")) { -+ shutdown_or_reboot = TRUE; -+ } -+ } -+ -+ if (wtmp_entry->ut_type == BOOT_TIME || shutdown_or_reboot) { -+ /* Set shutdown, reboot, or boot time for missing logout records */ - g_hash_table_iter_init (&iter, logout_hash); - while (g_hash_table_iter_next (&iter, &key, &value)) { - previous_login = (UserPreviousLogin *) value; - diff -Nru accountsservice-0.6.42/debian/patches/0020-support-login.defs.patch accountsservice-0.6.45/debian/patches/0020-support-login.defs.patch --- accountsservice-0.6.42/debian/patches/0020-support-login.defs.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0020-support-login.defs.patch 2017-12-18 02:42:18.000000000 +0000 @@ -2,11 +2,11 @@ Forwarded: not-needed Description: This patch is a reversion of upstream commit linked above. Ubuntu would still like to support login.defs, which is used in at least Ubuntu Touch. -Index: accountsservice-0.6.37/configure.ac +Index: accountsservice-0.6.45/configure.ac =================================================================== ---- accountsservice-0.6.37.orig/configure.ac -+++ accountsservice-0.6.37/configure.ac -@@ -56,17 +56,11 @@ AS_IF([test x$enable_admin_group = xauto +--- accountsservice-0.6.45.orig/configure.ac ++++ accountsservice-0.6.45/configure.ac +@@ -55,17 +55,11 @@ AS_IF([test x$enable_admin_group = xauto AC_DEFINE_UNQUOTED([ADMIN_GROUP], ["$enable_admin_group"], [Define to the group for administrator users]) AC_ARG_ENABLE(user-heuristics, @@ -25,19 +25,19 @@ dnl --------------------------------------------------------------------------- dnl - coverage dnl --------------------------------------------------------------------------- -Index: accountsservice-0.6.37/src/user-classify.c +Index: accountsservice-0.6.45/src/user-classify.c =================================================================== ---- accountsservice-0.6.37.orig/src/user-classify.c -+++ accountsservice-0.6.37/src/user-classify.c -@@ -26,6 +26,7 @@ - +--- accountsservice-0.6.45.orig/src/user-classify.c ++++ accountsservice-0.6.45/src/user-classify.c +@@ -27,6 +27,7 @@ #include + #include +#ifdef ENABLE_USER_HEURISTICS static const char *default_excludes[] = { "bin", "root", -@@ -56,10 +57,16 @@ static const char *default_excludes[] = +@@ -57,10 +58,16 @@ static const char *default_excludes[] = "gnome-initial-setup" }; @@ -55,7 +55,7 @@ if (exclusions == NULL) { guint i; -@@ -75,20 +82,6 @@ user_classify_is_blacklisted (const char +@@ -76,19 +83,6 @@ user_classify_is_blacklisted (const char return TRUE; } @@ -68,26 +68,29 @@ -#ifdef ENABLE_USER_HEURISTICS -static gboolean -user_classify_is_excluded_by_heuristics (const gchar *username, -- const gchar *shell, - const gchar *password_hash) -{ - gboolean ret = FALSE; - - if (shell != NULL) { - char *basename, *nologin_basename, *false_basename; - -@@ -146,6 +139,99 @@ user_classify_is_excluded_by_heuristics + if (password_hash != NULL) { + /* skip over the account-is-locked '!' prefix if present */ + if (password_hash[0] == '!') +@@ -113,69 +107,110 @@ user_classify_is_excluded_by_heuristics return ret; } +-#endif /* ENABLE_USER_HEURISTICS */ + +#else /* ENABLE_USER_HEURISTICS */ -+ -+static gboolean + + static gboolean +-is_invalid_shell (const char *shell) +user_classify_parse_login_defs_field (const gchar *contents, + const gchar *key, + uid_t *result) -+{ + { +- char *basename, *nologin_basename, *false_basename; +- int ret = FALSE; + gsize key_len; + gint64 value; + gchar *end; @@ -101,7 +104,19 @@ + contents += key_len; + break; + } -+ + +-#ifdef HAVE_GETUSERSHELL +- /* getusershell returns a whitelist of valid shells. +- * assume the shell is invalid unless there is a match */ +- ret = TRUE; +- char *valid_shell; +- +- setusershell (); +- while ((valid_shell = getusershell ()) != NULL) { +- if (g_strcmp0 (shell, valid_shell) != 0) +- continue; +- ret = FALSE; +- break; + /* Didn't find it. Find the end of the line. */ + contents = strchr (contents, '\n'); + @@ -113,13 +128,32 @@ + + /* Start at the beginning of the next line on next iteration. */ + contents++; -+ } -+ + } +- endusershell (); +-#endif + +- /* always check for false and nologin since they are sometimes included by getusershell */ +- basename = g_path_get_basename (shell); +- nologin_basename = g_path_get_basename (PATH_NOLOGIN); +- false_basename = g_path_get_basename (PATH_FALSE); +- +- if (shell[0] == '\0') { +- ret = TRUE; +- } else if (g_strcmp0 (basename, nologin_basename) == 0) { +- ret = TRUE; +- } else if (g_strcmp0 (basename, false_basename) == 0) { +- ret = TRUE; +- } +- +- g_free (basename); +- g_free (nologin_basename); +- g_free (false_basename); + /* 'contents' now points at the whitespace character just after + * the field name. strtoll can deal with that. + */ + value = g_ascii_strtoll (contents, &end, 10); -+ + +- return ret; + if (*end && !g_ascii_isspace (*end)) { + g_warning ("Trailing junk after '%s' field in login.defs", key); + return FALSE; @@ -133,8 +167,8 @@ + *result = value; + + return TRUE; -+} -+ + } + +static void +user_classify_read_login_defs (uid_t *min_uid) +{ @@ -173,23 +207,27 @@ + + return uid >= min_uid; +} - #endif /* ENABLE_USER_HEURISTICS */ - ++#endif /* ENABLE_USER_HEURISTICS */ ++ gboolean -@@ -154,16 +240,9 @@ user_classify_is_human (uid_t uid + user_classify_is_human (uid_t uid, + const gchar *username, const gchar *shell, const gchar *password_hash) { - if (user_classify_is_blacklisted (username)) - return FALSE; - +- if (shell != NULL && is_invalid_shell (shell)) +- return FALSE; +- #ifdef ENABLE_USER_HEURISTICS - /* only do heuristics on the range 500-1000 to catch one off migration problems in Fedora */ - if (uid >= 500 && uid < MINIMUM_UID) { -- if (!user_classify_is_excluded_by_heuristics (username, shell, password_hash)) +- if (!user_classify_is_excluded_by_heuristics (username, password_hash)) - return TRUE; - } -+ return !user_classify_is_excluded_by_heuristics (username, shell, password_hash); ++ return !user_classify_is_excluded_by_heuristics (username, password_hash); +#else + return user_classify_is_in_human_range (username, uid); #endif diff -Nru accountsservice-0.6.42/debian/patches/0021-support-extrausers.patch accountsservice-0.6.45/debian/patches/0021-support-extrausers.patch --- accountsservice-0.6.42/debian/patches/0021-support-extrausers.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/0021-support-extrausers.patch 2017-12-18 02:42:18.000000000 +0000 @@ -1,11 +1,11 @@ Description: In addition to watching /etc/{passwd,shadow,group}, also watch those same files in /var/lib/extrausers/, if they exist. Author: Michael Terry -Index: accountsservice-0.6.37/src/daemon.c +Index: accountsservice-0.6.45/src/daemon.c =================================================================== ---- accountsservice-0.6.37.orig/src/daemon.c -+++ accountsservice-0.6.37/src/daemon.c -@@ -48,6 +48,9 @@ +--- accountsservice-0.6.45.orig/src/daemon.c ++++ accountsservice-0.6.45/src/daemon.c +@@ -51,6 +51,9 @@ #define PATH_PASSWD "/etc/passwd" #define PATH_SHADOW "/etc/shadow" #define PATH_GROUP "/etc/group" @@ -13,9 +13,9 @@ +#define PATH_EXTRAUSERS_SHADOW "/var/lib/extrausers/shadow" +#define PATH_EXTRAUSERS_GROUP "/var/lib/extrausers/group" #define PATH_GDM_CUSTOM "/etc/gdm3/custom.conf" - #define PATH_LIGHTDM_CONFIG "/etc/lightdm/lightdm.conf" -@@ -67,6 +70,9 @@ struct DaemonPrivate { + enum { +@@ -69,6 +72,9 @@ struct DaemonPrivate { GFileMonitor *passwd_monitor; GFileMonitor *shadow_monitor; GFileMonitor *group_monitor; @@ -23,9 +23,9 @@ + GFileMonitor *extrausers_shadow_monitor; + GFileMonitor *extrausers_group_monitor; GFileMonitor *gdm_monitor; - GFileMonitor *lightdm_monitor; GFileMonitor *wtmp_monitor; -@@ -554,6 +560,16 @@ daemon_init (Daemon *daemon) + +@@ -679,6 +685,16 @@ daemon_init (Daemon *daemon) PATH_GROUP, on_users_monitor_changed); diff -Nru accountsservice-0.6.42/debian/patches/1002-dont-override-standardoutput.patch accountsservice-0.6.45/debian/patches/1002-dont-override-standardoutput.patch --- accountsservice-0.6.42/debian/patches/1002-dont-override-standardoutput.patch 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/1002-dont-override-standardoutput.patch 2017-12-18 02:42:18.000000000 +0000 @@ -5,9 +5,9 @@ data/accounts-daemon.service.in | 1 - 1 file changed, 1 deletion(-) ---- accountsservice.orig/data/accounts-daemon.service.in -+++ accountsservice/data/accounts-daemon.service.in -@@ -11,7 +11,6 @@ Wants=nss-user-lookup.target +--- a/data/accounts-daemon.service.in ++++ b/data/accounts-daemon.service.in +@@ -11,7 +11,6 @@ Type=dbus BusName=org.freedesktop.Accounts ExecStart=@libexecdir@/accounts-daemon diff -Nru accountsservice-0.6.42/debian/patches/2001-filtering_out_users.patch accountsservice-0.6.45/debian/patches/2001-filtering_out_users.patch --- accountsservice-0.6.42/debian/patches/2001-filtering_out_users.patch 1970-01-01 00:00:00.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/2001-filtering_out_users.patch 2017-12-18 02:42:18.000000000 +0000 @@ -0,0 +1,234 @@ +Description: Filter out users which have an UID lower than UID_MIN specified in + /etc/login.defs +Author: Alessio Treglia +Forwarded: no +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673095 +--- + src/daemon.c | 129 ++++++++++++++++++++++++++++++----------------------------- + src/daemon.h | 3 - + src/user.c | 3 - + 3 files changed, 68 insertions(+), 67 deletions(-) + +--- accountsservice.orig/src/daemon.c ++++ accountsservice/src/daemon.c +@@ -50,10 +50,15 @@ + #define PATH_NOLOGIN "/sbin/nologin" + #define PATH_FALSE "/bin/false" + #define PATH_GDM_CUSTOM "/etc/gdm3/daemon.conf" ++#define PATH_LOGIN_DEFS "/etc/login.defs" + #ifdef HAVE_UTMPX_H + #define PATH_WTMP _PATH_WTMPX + #endif + ++#ifndef FALLBACK_MINIMAL_UID ++#define FALLBACK_MINIMAL_UID 500 ++#endif ++ + static const char *default_excludes[] = { + "bin", + "root", +@@ -96,6 +101,7 @@ struct DaemonPrivate { + + GHashTable *users; + GHashTable *exclusions; ++ uid_t minimal_uid; + + User *autologin; + +@@ -168,73 +174,18 @@ error_get_type (void) + gboolean + daemon_local_user_is_excluded (Daemon *daemon, + const gchar *username, +- const gchar *shell, +- const gchar *password_hash) ++ uid_t uid) + { +- int ret; + + if (g_hash_table_lookup (daemon->priv->exclusions, username)) { + return TRUE; + } + +- ret = FALSE; +- +- if (shell != NULL) { +- char *basename, *nologin_basename, *false_basename; +- +-#ifdef HAVE_GETUSERSHELL +- char *valid_shell; +- +- ret = TRUE; +- setusershell (); +- while ((valid_shell = getusershell ()) != NULL) { +- if (g_strcmp0 (shell, valid_shell) != 0) +- continue; +- ret = FALSE; +- } +- endusershell (); +-#endif +- +- basename = g_path_get_basename (shell); +- nologin_basename = g_path_get_basename (PATH_NOLOGIN); +- false_basename = g_path_get_basename (PATH_FALSE); +- +- if (shell[0] == '\0') { +- ret = TRUE; +- } else if (g_strcmp0 (basename, nologin_basename) == 0) { +- ret = TRUE; +- } else if (g_strcmp0 (basename, false_basename) == 0) { +- ret = TRUE; +- } +- +- g_free (basename); +- g_free (nologin_basename); +- g_free (false_basename); +- } +- +- if (password_hash != NULL) { +- /* skip over the account-is-locked '!' prefix if present */ +- if (password_hash[0] == '!') +- password_hash++; +- +- if (password_hash[0] != '\0') { +- /* modern hashes start with "$n$" */ +- if (password_hash[0] == '$') { +- if (strlen (password_hash) < 4) +- ret = TRUE; +- +- /* DES crypt is base64 encoded [./A-Za-z0-9]* +- */ +- } else if (!g_ascii_isalnum (password_hash[0]) && +- password_hash[0] != '.' && +- password_hash[0] != '/') { +- ret = TRUE; +- } +- } +- ++ if (uid < daemon->priv->minimal_uid) { ++ return TRUE; + } + +- return ret; ++ return FALSE; + } + + #ifdef HAVE_UTMPX_H +@@ -516,7 +467,7 @@ load_entries (Daemon *daemon + break; + + /* Skip system users... */ +- if (daemon_local_user_is_excluded (daemon, pwent->pw_name, pwent->pw_shell, NULL)) { ++ if (daemon_local_user_is_excluded (daemon, pwent->pw_name, pwent->pw_uid)) { + g_debug ("skipping user: %s", pwent->pw_name); + continue; + } +@@ -743,6 +694,59 @@ on_gdm_monitor_changed (GFileMonitor + queue_reload_autologin (daemon); + } + ++static uid_t ++get_minimal_uid (void) ++{ ++ GError *error; ++ char *contents; ++ gboolean contents_loaded; ++ const char *uid_min_string, *start_of_uid_string; ++ char *end; ++ uid_t uid = FALLBACK_MINIMAL_UID; ++ gint64 uid_as_number; ++ ++ error = NULL; ++ contents = NULL; ++ contents_loaded = g_file_get_contents (PATH_LOGIN_DEFS, &contents, NULL, &error); ++ if (!contents_loaded) { ++ g_debug ("unable to read " PATH_LOGIN_DEFS ": %s", error->message); ++ g_error_free (error); ++ goto out; ++ } ++ ++ uid_min_string = strstr (contents, "UID_MIN"); ++ ++ if (uid_min_string == NULL || ++ (uid_min_string != contents && uid_min_string[-1] != '\n')) { ++ g_debug (PATH_LOGIN_DEFS " does not have a UID_MIN field"); ++ goto out; ++ } ++ ++ start_of_uid_string = uid_min_string + strlen ("UID_MIN"); ++ ++ if (start_of_uid_string == '\0') { ++ g_debug (PATH_LOGIN_DEFS " contains UID_MIN key with no value"); ++ goto out; ++ } ++ ++ ++ uid_as_number = g_ascii_strtoll (start_of_uid_string, &end, 10); ++ if (!g_ascii_isspace (*end) && *end != '\0') { ++ g_debug (PATH_LOGIN_DEFS " contains non-numerical value for UID_MIN"); ++ goto out; ++ } ++ ++ if (uid_as_number < 0 || ((uid_t) uid_as_number) != uid_as_number) { ++ g_debug (PATH_LOGIN_DEFS " contains out-of-range value for UID_MIN"); ++ goto out; ++ } ++ ++ uid = (uid_t) uid_as_number; ++out: ++ g_free (contents); ++ return uid; ++} ++ + static void + daemon_init (Daemon *daemon) + { +@@ -752,6 +756,7 @@ daemon_init (Daemon *daemon) + + daemon->priv = DAEMON_GET_PRIVATE (daemon); + ++ daemon->priv->minimal_uid = get_minimal_uid (); + daemon->priv->exclusions = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, +@@ -1075,16 +1080,14 @@ finish_list_cached_users (gpointer user_ + const gchar *name; + User *user; + uid_t uid; +- const gchar *shell; + + object_paths = g_ptr_array_new (); + + g_hash_table_iter_init (&iter, data->daemon->priv->users); + while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&user)) { + uid = user_get_uid (user); +- shell = user_get_shell (user); + +- if (daemon_local_user_is_excluded (data->daemon, name, shell, NULL)) { ++ if (daemon_local_user_is_excluded (data->daemon, name, uid)) { + g_debug ("user %s %ld excluded", name, (long) uid); + continue; + } +--- accountsservice.orig/src/daemon.h ++++ accountsservice/src/daemon.h +@@ -78,8 +78,7 @@ User *daemon_local_find_user_by_name (Da + User *daemon_local_get_automatic_login_user (Daemon *daemon); + gboolean daemon_local_user_is_excluded (Daemon *daemon, + const gchar *name, +- const gchar *shell, +- const gchar *password_hash); ++ uid_t uid); + + typedef void (*AuthorizedCallback) (Daemon *daemon, + User *user, +--- accountsservice.orig/src/user.c ++++ accountsservice/src/user.c +@@ -290,8 +290,7 @@ user_update_from_pwent (User *u + */ + user->system_account = daemon_local_user_is_excluded (user->daemon, + user->user_name, +- pwent->pw_shell, +- passwd); ++ pwent->pw_uid); + + g_object_thaw_notify (G_OBJECT (user)); + diff -Nru accountsservice-0.6.42/debian/patches/series accountsservice-0.6.45/debian/patches/series --- accountsservice-0.6.42/debian/patches/series 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/patches/series 2017-12-18 02:42:18.000000000 +0000 @@ -1,9 +1,8 @@ 0001-formats-locale-property.patch -0002-create-and-manage-groups-like-on-a-ubuntu-system.patch -0005-gdm_config_file_path_ubuntu.patch +0002-create-and-manage-groups-like-on-a-debian-system.patch +0005-gdm_config_file_path.patch 0006-adduser_instead_of_useradd.patch 0007-add-lightdm-support.patch -0008-nopasswdlogin-group.patch 0009-language-tools.patch 0010-set-language.patch 0011-add-background-file-support.patch @@ -15,4 +14,4 @@ 0020-support-login.defs.patch 0021-support-extrausers.patch 1002-dont-override-standardoutput.patch -0018-wtmp-fix-logout-times.patch +0015-debian-nologin-path.patch diff -Nru accountsservice-0.6.42/debian/rules accountsservice-0.6.45/debian/rules --- accountsservice-0.6.42/debian/rules 2016-10-04 13:04:41.000000000 +0000 +++ accountsservice-0.6.45/debian/rules 2017-12-18 02:42:18.000000000 +0000 @@ -1,10 +1,6 @@ #!/usr/bin/make -f # -*- makefile -*- -export DEB_CPPFLAGS_MAINT_APPEND=-O1 -export DEB_CFLAGS_MAINT_APPEND=-O1 -export DEB_CXXFLAGS_MAINT_APPEND=-O1 - export CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) export CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) export CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) @@ -13,15 +9,14 @@ LDFLAGS+=-Wl,--as-needed %: - dh $@ --parallel --with=autoreconf,systemd + dh $@ --with=gir override_dh_autoreconf: gtkdocize dh_autoreconf -override_dh_shlibdeps: - dh_shlibdeps - dh_girepository -l src:debian/libaccountsservice-dev/usr/share/gir-1.0 +override_dh_makeshlibs: + dh_makeshlibs -V -- -c4 override_dh_auto_configure: dh_auto_configure -- \ @@ -36,14 +31,6 @@ override_dh_installchangelogs: dh_installchangelogs NEWS -override_dh_install-arch: - cat debian/accountsservice.install debian/accountsservice.install.linux.in > debian/accountsservice.install.linux - dh_install - # patch is only applied conditionally, only install when present - if [ -d debian/tmp/usr/share/language-tools ]; then \ - cp -r debian/tmp/usr/share/language-tools debian/accountsservice/usr/share/; \ - fi - override_dh_strip: - dh_strip -plibaccountsservice0 --dbgsym-migration='libaccountsservice-dbg (<< 0.6.40-2ubuntu15~)' + dh_strip -plibaccountsservice0 --dbgsym-migration='libaccountsservice-dbg (<< 0.6.40-4~)' dh_strip --remaining-packages diff -Nru accountsservice-0.6.42/doc/dbus/AccountsService.xml accountsservice-0.6.45/doc/dbus/AccountsService.xml --- accountsservice-0.6.42/doc/dbus/AccountsService.xml 2016-06-09 14:17:31.000000000 +0000 +++ accountsservice-0.6.45/doc/dbus/AccountsService.xml 2017-03-27 18:33:18.000000000 +0000 @@ -6,8 +6,8 @@ - AccountsService 0.6.42 Documentation - Version 0.6.42 + AccountsService 0.6.45 Documentation + Version 0.6.45 Matthias diff -Nru accountsservice-0.6.42/doc/dbus/org.freedesktop.Accounts.ref.xml accountsservice-0.6.45/doc/dbus/org.freedesktop.Accounts.ref.xml --- accountsservice-0.6.42/doc/dbus/org.freedesktop.Accounts.ref.xml 2014-10-16 17:57:41.000000000 +0000 +++ accountsservice-0.6.45/doc/dbus/org.freedesktop.Accounts.ref.xml 2017-03-27 18:08:48.000000000 +0000 @@ -8,26 +8,26 @@ Methods - ListCachedUsers(out'ao'users) -FindUserById(in'x'id, -out'o'user) -FindUserByName(in's'name, -out'o'user) -CreateUser(in's'name, -in's'fullname, -out'o'user, -in'i'accountType) -CacheUser(in's'name, -out'o'user) -UncacheUser(in's'name) -DeleteUser(in'x'id, -in'b'removeFiles) + ListCachedUsers (out 'ao' users) +FindUserById (in 'x' id, + out 'o' user) +FindUserByName (in 's' name, + out 'o' user) +CreateUser (in 's' name, + in 's' fullname, + out 'o' user, + in 'i' accountType) +CacheUser (in 's' name, + out 'o' user) +UncacheUser (in 's' name) +DeleteUser (in 'x' id, + in 'b' removeFiles) Signals - UserAdded('o'user) -UserDeleted('o'user) + UserAdded ('o' user) +UserDeleted ('o' user) @@ -40,7 +40,7 @@ Properties - 'DaemonVersion'read's' + 'DaemonVersion' read 's' @@ -49,7 +49,7 @@ Details - <anchor role="function" id="Accounts.ListCachedUsers"/>ListCachedUsers ()ListCachedUsersAccountsListCachedUsers (out'ao'users) + <anchor role="function" id="Accounts.ListCachedUsers"/>ListCachedUsers ()ListCachedUsersAccountsListCachedUsers (out 'ao' users) Lists users which have logged into the system locally before. This is not meant to return an exhaustive list of all users. @@ -57,22 +57,22 @@ to return a user that's not on the list. users:Object paths of cached users - <anchor role="function" id="Accounts.FindUserById"/>FindUserById ()FindUserByIdAccountsFindUserById (in'x'id, -out'o'user) + <anchor role="function" id="Accounts.FindUserById"/>FindUserById ()FindUserByIdAccountsFindUserById (in 'x' id, + out 'o' user) Finds a user by uid. id:The uid to look upuser:Object path of userErrorsorg.freedesktop.Accounts.Error.Failed:if no user with the given uid exists - <anchor role="function" id="Accounts.FindUserByName"/>FindUserByName ()FindUserByNameAccountsFindUserByName (in's'name, -out'o'user) + <anchor role="function" id="Accounts.FindUserByName"/>FindUserByName ()FindUserByNameAccountsFindUserByName (in 's' name, + out 'o' user) Finds a user by its username. name:The username to look upuser:Object path of userErrorsorg.freedesktop.Accounts.Error.Failed:if no user with the given username exists - <anchor role="function" id="Accounts.CreateUser"/>CreateUser ()CreateUserAccountsCreateUser (in's'name, -in's'fullname, -out'o'user, -in'i'accountType) + <anchor role="function" id="Accounts.CreateUser"/>CreateUser ()CreateUserAccountsCreateUser (in 's' name, + in 's' fullname, + out 'o' user, + in 'i' accountType) Creates a new user account. @@ -83,8 +83,8 @@ name:The username for the new userfullname:The real name for the new useruser:Object path of the new useraccountType:The account type, encoded as an integerErrorsorg.freedesktop.Accounts.Error.PermissionDenied:if the caller lacks the appropriate PolicyKit authorizationorg.freedesktop.Accounts.Error.Failed:if the operation failedPermissions The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization. - <anchor role="function" id="Accounts.CacheUser"/>CacheUser ()CacheUserAccountsCacheUser (in's'name, -out'o'user) + <anchor role="function" id="Accounts.CacheUser"/>CacheUser ()CacheUserAccountsCacheUser (in 's' name, + out 'o' user) Caches a user account, so that it shows up in ListCachedUsers() output. The user name may be a remote user, but the system must be able to lookup @@ -93,7 +93,7 @@ name:The username for the useruser:Object path of userErrorsorg.freedesktop.Accounts.Error.PermissionDenied:if the caller lacks the appropriate PolicyKit authorizationorg.freedesktop.Accounts.Error.UserDoesNotExist:if the user name cannot be resolvedPermissions The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization. - <anchor role="function" id="Accounts.UncacheUser"/>UncacheUser ()UncacheUserAccountsUncacheUser (in's'name) + <anchor role="function" id="Accounts.UncacheUser"/>UncacheUser ()UncacheUserAccountsUncacheUser (in 's' name) Releases all metadata about a user account, including icon, language and session. If the user account is from a remote server and the user has never logged in before, then that account will no longer show up @@ -102,8 +102,8 @@ name:The username for the userErrorsorg.freedesktop.Accounts.Error.PermissionDenied:if the caller lacks the appropriate PolicyKit authorizationorg.freedesktop.Accounts.Error.UserDoesNotExist:if the user name cannot be resolvedPermissions The caller needs the org.freedesktop.accounts.user-administration PolicyKit authorization. - <anchor role="function" id="Accounts.DeleteUser"/>DeleteUser ()DeleteUserAccountsDeleteUser (in'x'id, -in'b'removeFiles) + <anchor role="function" id="Accounts.DeleteUser"/>DeleteUser ()DeleteUserAccountsDeleteUser (in 'x' id, + in 'b' removeFiles) Deletes a user account. @@ -113,12 +113,12 @@ Signal Details - <anchor role="function" id="Accounts::UserAdded"/>The UserAdded signalUserAddedAccountsUserAdded ('o'user) + <anchor role="function" id="Accounts::UserAdded"/>The UserAdded signalUserAddedAccountsUserAdded ('o' user) Emitted when a user is added. user:Object path of the user that was added. - <anchor role="function" id="Accounts::UserDeleted"/>The UserDeleted signalUserDeletedAccountsUserDeleted ('o'user) + <anchor role="function" id="Accounts::UserDeleted"/>The UserDeleted signalUserDeletedAccountsUserDeleted ('o' user) Emitted when a user is deleted. @@ -126,7 +126,7 @@ Property Details - <anchor role="function" id="Accounts:DaemonVersion"/>The "DaemonVersion" propertyDaemonVersionAccounts'DaemonVersion'read's' + <anchor role="function" id="Accounts:DaemonVersion"/>The "DaemonVersion" propertyDaemonVersionAccounts'DaemonVersion' read 's' The version of the running daemon. diff -Nru accountsservice-0.6.42/doc/dbus/org.freedesktop.Accounts.User.ref.xml accountsservice-0.6.45/doc/dbus/org.freedesktop.Accounts.User.ref.xml --- accountsservice-0.6.42/doc/dbus/org.freedesktop.Accounts.User.ref.xml 2016-06-09 14:15:57.000000000 +0000 +++ accountsservice-0.6.45/doc/dbus/org.freedesktop.Accounts.User.ref.xml 2017-03-27 18:08:48.000000000 +0000 @@ -8,27 +8,33 @@ Methods - SetUserName(in's'name) -SetRealName(in's'name) -SetEmail(in's'email) -SetLanguage(in's'language) -SetXSession(in's'x_session) -SetLocation(in's'location) -SetHomeDirectory(in's'homedir) -SetShell(in's'shell) -SetIconFile(in's'filename) -SetLocked(in'b'locked) -SetAccountType(in'i'accountType) -SetPasswordMode(in'i'mode) -SetPassword(in's'password, -in's'hint) -SetPasswordHint(in's'hint) -SetAutomaticLogin(in'b'enabled) + SetUserName (in 's' name) +SetRealName (in 's' name) +SetEmail (in 's' email) +SetLanguage (in 's' language) +SetXSession (in 's' x_session) +SetLocation (in 's' location) +SetHomeDirectory (in 's' homedir) +SetShell (in 's' shell) +SetIconFile (in 's' filename) +SetLocked (in 'b' locked) +SetAccountType (in 'i' accountType) +SetPasswordMode (in 'i' mode) +SetPassword (in 's' password, + in 's' hint) +SetPasswordHint (in 's' hint) +SetAutomaticLogin (in 'b' enabled) +GetPasswordExpirationPolicy (out 'x' expiration_time, + out 'x' last_change_time, + out 'x' min_days_between_changes, + out 'x' max_days_between_changes, + out 'x' days_to_warn, + out 'x' days_after_expiration_until_lock) Signals - Changed() + Changed () @@ -41,26 +47,26 @@ Properties - 'Uid'read't' -'UserName'read's' -'RealName'read's' -'AccountType'read'i' -'HomeDirectory'read's' -'Shell'read's' -'Email'read's' -'Language'read's' -'XSession'read's' -'Location'read's' -'LoginFrequency'read't' -'LoginTime'read'x' -'LoginHistory'read'a(xxa{sv})' -'IconFile'read's' -'Locked'read'b' -'PasswordMode'read'i' -'PasswordHint'read's' -'AutomaticLogin'read'b' -'SystemAccount'read'b' -'LocalAccount'read'b' + 'Uid' read 't' +'UserName' read 's' +'RealName' read 's' +'AccountType' read 'i' +'HomeDirectory' read 's' +'Shell' read 's' +'Email' read 's' +'Language' read 's' +'XSession' read 's' +'Location' read 's' +'LoginFrequency' read 't' +'LoginTime' read 'x' +'LoginHistory' read 'a(xxa{sv})' +'IconFile' read 's' +'Locked' read 'b' +'PasswordMode' read 'i' +'PasswordHint' read 's' +'AutomaticLogin' read 'b' +'SystemAccount' read 'b' +'LocalAccount' read 'b' @@ -69,7 +75,7 @@ Details - <anchor role="function" id="User.SetUserName"/>SetUserName ()SetUserNameUserSetUserName (in's'name) + <anchor role="function" id="User.SetUserName"/>SetUserName ()SetUserNameUserSetUserName (in 's' name) Sets the users username. Note that it is usually not allowed to have multiple users with the same username. @@ -80,7 +86,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To change the username of any user - <anchor role="function" id="User.SetRealName"/>SetRealName ()SetRealNameUserSetRealName (in's'name) + <anchor role="function" id="User.SetRealName"/>SetRealName ()SetRealNameUserSetRealName (in 's' name) Sets the users real name. @@ -90,7 +96,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own nameorg.freedesktop.accounts.user-administration: To change the name of another user - <anchor role="function" id="User.SetEmail"/>SetEmail ()SetEmailUserSetEmail (in's'email) + <anchor role="function" id="User.SetEmail"/>SetEmail ()SetEmailUserSetEmail (in 's' email) Sets the users email address. @@ -105,7 +111,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own email addressorg.freedesktop.accounts.user-administration: To change the email address of another user - <anchor role="function" id="User.SetLanguage"/>SetLanguage ()SetLanguageUserSetLanguage (in's'language) + <anchor role="function" id="User.SetLanguage"/>SetLanguage ()SetLanguageUserSetLanguage (in 's' language) Sets the users language. @@ -119,7 +125,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own languageorg.freedesktop.accounts.user-administration: To change the language of another user - <anchor role="function" id="User.SetXSession"/>SetXSession ()SetXSessionUserSetXSession (in's'x_session) + <anchor role="function" id="User.SetXSession"/>SetXSession ()SetXSessionUserSetXSession (in 's' x_session) Sets the users x session. @@ -133,7 +139,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own languageorg.freedesktop.accounts.user-administration: To change the language of another user - <anchor role="function" id="User.SetLocation"/>SetLocation ()SetLocationUserSetLocation (in's'location) + <anchor role="function" id="User.SetLocation"/>SetLocation ()SetLocationUserSetLocation (in 's' location) Sets the users location. @@ -143,7 +149,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own locationorg.freedesktop.accounts.user-administration: To change the location of another user - <anchor role="function" id="User.SetHomeDirectory"/>SetHomeDirectory ()SetHomeDirectoryUserSetHomeDirectory (in's'homedir) + <anchor role="function" id="User.SetHomeDirectory"/>SetHomeDirectory ()SetHomeDirectoryUserSetHomeDirectory (in 's' homedir) Sets the users home directory. @@ -158,7 +164,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To change the home directory of a user - <anchor role="function" id="User.SetShell"/>SetShell ()SetShellUserSetShell (in's'shell) + <anchor role="function" id="User.SetShell"/>SetShell ()SetShellUserSetShell (in 's' shell) Sets the users shell. @@ -172,7 +178,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To change the shell of a user - <anchor role="function" id="User.SetIconFile"/>SetIconFile ()SetIconFileUserSetIconFile (in's'filename) + <anchor role="function" id="User.SetIconFile"/>SetIconFile ()SetIconFileUserSetIconFile (in 's' filename) Sets the users icon. @@ -182,7 +188,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own iconorg.freedesktop.accounts.user-administration: To change the icon of another user - <anchor role="function" id="User.SetLocked"/>SetLocked ()SetLockedUserSetLocked (in'b'locked) + <anchor role="function" id="User.SetLocked"/>SetLocked ()SetLockedUserSetLocked (in 'b' locked) Locks or unlocks a users account. @@ -195,7 +201,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To lock or unlock user accounts - <anchor role="function" id="User.SetAccountType"/>SetAccountType ()SetAccountTypeUserSetAccountType (in'i'accountType) + <anchor role="function" id="User.SetAccountType"/>SetAccountType ()SetAccountTypeUserSetAccountType (in 'i' accountType) Changes the users account type. @@ -206,7 +212,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To change an account type - <anchor role="function" id="User.SetPasswordMode"/>SetPasswordMode ()SetPasswordModeUserSetPasswordMode (in'i'mode) + <anchor role="function" id="User.SetPasswordMode"/>SetPasswordMode ()SetPasswordModeUserSetPasswordMode (in 'i' mode) Changes the users password mode. @@ -221,8 +227,8 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To change a users password mode - <anchor role="function" id="User.SetPassword"/>SetPassword ()SetPasswordUserSetPassword (in's'password, -in's'hint) + <anchor role="function" id="User.SetPassword"/>SetPassword ()SetPasswordUserSetPassword (in 's' password, + in 's' hint) Sets a new password for this user. @@ -238,7 +244,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.user-administration: To change the password of a user - <anchor role="function" id="User.SetPasswordHint"/>SetPasswordHint ()SetPasswordHintUserSetPasswordHint (in's'hint) + <anchor role="function" id="User.SetPasswordHint"/>SetPasswordHint ()SetPasswordHintUserSetPasswordHint (in 's' hint) Sets the users password hint. @@ -248,7 +254,7 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.change-own-user-data: To change his own languageorg.freedesktop.accounts.user-administration: To change the language of another user - <anchor role="function" id="User.SetAutomaticLogin"/>SetAutomaticLogin ()SetAutomaticLoginUserSetAutomaticLogin (in'b'enabled) + <anchor role="function" id="User.SetAutomaticLogin"/>SetAutomaticLogin ()SetAutomaticLoginUserSetAutomaticLogin (in 'b' enabled) Enables or disables automatic login for a user. @@ -263,6 +269,57 @@ The caller needs one of the following PolicyKit authorizations: org.freedesktop.accounts.set-login-option: To change the login screen configuration + + <anchor role="function" id="User.GetPasswordExpirationPolicy"/>GetPasswordExpirationPolicy () + + GetPasswordExpirationPolicy + User + + GetPasswordExpirationPolicy (out 'x' expiration_time, + out 'x' last_change_time, + out 'x' min_days_between_changes, + out 'x' max_days_between_changes, + out 'x' days_to_warn, + out 'x' days_after_expiration_until_lock) + + + expiration_time: + + + + + + last_change_time: + + + + + + min_days_between_changes: + + + + + + max_days_between_changes: + + + + + + days_to_warn: + + + + + + days_after_expiration_until_lock: + + + + + + Signal Details @@ -274,80 +331,80 @@ Property Details - <anchor role="function" id="User:Uid"/>The "Uid" propertyUidUser'Uid'read't' + <anchor role="function" id="User:Uid"/>The "Uid" propertyUidUser'Uid' read 't' The uid of the user. - <anchor role="function" id="User:UserName"/>The "UserName" propertyUserNameUser'UserName'read's' + <anchor role="function" id="User:UserName"/>The "UserName" propertyUserNameUser'UserName' read 's' The username of the user. - <anchor role="function" id="User:RealName"/>The "RealName" propertyRealNameUser'RealName'read's' + <anchor role="function" id="User:RealName"/>The "RealName" propertyRealNameUser'RealName' read 's' The users real name. - <anchor role="function" id="User:AccountType"/>The "AccountType" propertyAccountTypeUser'AccountType'read'i' + <anchor role="function" id="User:AccountType"/>The "AccountType" propertyAccountTypeUser'AccountType' read 'i' The users account type, encoded as an integer: 0: Standard user1: Administrator - <anchor role="function" id="User:HomeDirectory"/>The "HomeDirectory" propertyHomeDirectoryUser'HomeDirectory'read's' + <anchor role="function" id="User:HomeDirectory"/>The "HomeDirectory" propertyHomeDirectoryUser'HomeDirectory' read 's' The users home directory. - <anchor role="function" id="User:Shell"/>The "Shell" propertyShellUser'Shell'read's' + <anchor role="function" id="User:Shell"/>The "Shell" propertyShellUser'Shell' read 's' The users shell. - <anchor role="function" id="User:Email"/>The "Email" propertyEmailUser'Email'read's' + <anchor role="function" id="User:Email"/>The "Email" propertyEmailUser'Email' read 's' The email address. - <anchor role="function" id="User:Language"/>The "Language" propertyLanguageUser'Language'read's' + <anchor role="function" id="User:Language"/>The "Language" propertyLanguageUser'Language' read 's' The users language, as a locale specification like "de_DE.UTF-8". - <anchor role="function" id="User:XSession"/>The "XSession" propertyXSessionUser'XSession'read's' + <anchor role="function" id="User:XSession"/>The "XSession" propertyXSessionUser'XSession' read 's' The users x session. - <anchor role="function" id="User:Location"/>The "Location" propertyLocationUser'Location'read's' + <anchor role="function" id="User:Location"/>The "Location" propertyLocationUser'Location' read 's' The users location. - <anchor role="function" id="User:LoginFrequency"/>The "LoginFrequency" propertyLoginFrequencyUser'LoginFrequency'read't' + <anchor role="function" id="User:LoginFrequency"/>The "LoginFrequency" propertyLoginFrequencyUser'LoginFrequency' read 't' How often the user has logged in. - <anchor role="function" id="User:LoginTime"/>The "LoginTime" propertyLoginTimeUser'LoginTime'read'x' + <anchor role="function" id="User:LoginTime"/>The "LoginTime" propertyLoginTimeUser'LoginTime' read 'x' The last login time. - <anchor role="function" id="User:LoginHistory"/>The "LoginHistory" propertyLoginHistoryUser'LoginHistory'read'a(xxa{sv})' + <anchor role="function" id="User:LoginHistory"/>The "LoginHistory" propertyLoginHistoryUser'LoginHistory' read 'a(xxa{sv})' The login history for this user. @@ -360,38 +417,38 @@ about the session. Possible members include 'type' (with values like ':0', 'tty0', 'pts/0' etc). - <anchor role="function" id="User:IconFile"/>The "IconFile" propertyIconFileUser'IconFile'read's' + <anchor role="function" id="User:IconFile"/>The "IconFile" propertyIconFileUser'IconFile' read 's' The filename of a png file containing the users icon. - <anchor role="function" id="User:Locked"/>The "Locked" propertyLockedUser'Locked'read'b' + <anchor role="function" id="User:Locked"/>The "Locked" propertyLockedUser'Locked' read 'b' Whether the users account is locked. - <anchor role="function" id="User:PasswordMode"/>The "PasswordMode" propertyPasswordModeUser'PasswordMode'read'i' + <anchor role="function" id="User:PasswordMode"/>The "PasswordMode" propertyPasswordModeUser'PasswordMode' read 'i' The password mode for the user account, encoded as an integer: 0: Regular password1: Password must be set at next login2: No password - <anchor role="function" id="User:PasswordHint"/>The "PasswordHint" propertyPasswordHintUser'PasswordHint'read's' + <anchor role="function" id="User:PasswordHint"/>The "PasswordHint" propertyPasswordHintUser'PasswordHint' read 's' The password hint for the user. - <anchor role="function" id="User:AutomaticLogin"/>The "AutomaticLogin" propertyAutomaticLoginUser'AutomaticLogin'read'b' + <anchor role="function" id="User:AutomaticLogin"/>The "AutomaticLogin" propertyAutomaticLoginUser'AutomaticLogin' read 'b' Whether automatic login is enabled for the user. - <anchor role="function" id="User:SystemAccount"/>The "SystemAccount" propertySystemAccountUser'SystemAccount'read'b' + <anchor role="function" id="User:SystemAccount"/>The "SystemAccount" propertySystemAccountUser'SystemAccount' read 'b' Whether this is a 'system' account, like 'root' or 'nobody'. @@ -399,7 +456,7 @@ users, and ListCachedUsers will not include such accounts. - <anchor role="function" id="User:LocalAccount"/>The "LocalAccount" propertyLocalAccountUser'LocalAccount'read'b' + <anchor role="function" id="User:LocalAccount"/>The "LocalAccount" propertyLocalAccountUser'LocalAccount' read 'b' Whether the user is a local account or not. diff -Nru accountsservice-0.6.42/doc/libaccountsservice/html/ActUser.html accountsservice-0.6.45/doc/libaccountsservice/html/ActUser.html --- accountsservice-0.6.42/doc/libaccountsservice/html/ActUser.html 2016-06-09 14:17:41.000000000 +0000 +++ accountsservice-0.6.45/doc/libaccountsservice/html/ActUser.html 2017-03-27 18:33:44.000000000 +0000 @@ -3,7 +3,7 @@ ActUser: libaccountsservice Reference Manual - + @@ -36,7 +36,7 @@

Functions

-
+
@@ -346,7 +346,7 @@

Properties

-
+
@@ -479,7 +479,7 @@

Signals

-
+
@@ -501,7 +501,7 @@

Types and Values

-
+
@@ -542,7 +542,7 @@

Organize the user by login frequency and names.

Parameters

-
+
@@ -581,7 +581,7 @@ .

Parameters

-
+
@@ -607,7 +607,7 @@

Returns whether or not ActUser is automatically logged in at boot time.

Parameters

-
+
@@ -634,7 +634,7 @@ .

Parameters

-
+
@@ -663,7 +663,7 @@ .

Parameters

-
+
@@ -692,7 +692,7 @@ .

Parameters

-
+
@@ -720,7 +720,7 @@ .

Parameters

-
+
@@ -748,7 +748,7 @@ .

Parameters

-
+
@@ -776,7 +776,7 @@

Returns whether or not the ActUser account is locked.

Parameters

-
+
@@ -803,7 +803,7 @@ has logged in.

Parameters

-
+
@@ -826,29 +826,41 @@

act_user_get_login_history ()

const GVariant *
 act_user_get_login_history (ActUser *user);
-

Returns the login history for user +

Assigns a new email to user .

+

Note this function is synchronous and ignores errors.

Parameters

-
+
- + + - + - + + + + + + +

user

a ActUser

the user object to query.

 

expiration_time

time users passwor expires +last_change_time +, +min_days_between_changes +, +max_days_between_changes +, +days_to_warn +, +days_after_expiration_until_lock +)

 
-
-

Returns

-

a pointer to GVariant of type "a(xxa{sv})" -which must not be modified or freed, or NULL.

-

[transfer none]

-

@@ -859,7 +871,7 @@ .

Parameters

-
+
@@ -887,7 +899,7 @@ same seat as the session of the calling process.

Parameters

-
+
@@ -917,7 +929,7 @@ with it.

Parameters

-
+
@@ -945,7 +957,7 @@ .

Parameters

-
+
@@ -974,7 +986,7 @@ .

Parameters

-
+
@@ -1005,7 +1017,7 @@ the seat of the session of the calling process.

Parameters

-
+
@@ -1033,7 +1045,7 @@ .

Parameters

-
+
@@ -1062,7 +1074,7 @@ .

Parameters

-
+
@@ -1091,7 +1103,7 @@ .

Parameters

-
+
@@ -1120,7 +1132,7 @@ .

Parameters

-
+
@@ -1149,7 +1161,7 @@ .

Parameters

-
+
@@ -1178,7 +1190,7 @@ act_user_manager_list_users()

Parameters

-
+
@@ -1204,7 +1216,7 @@

Retrieves whether the user is a local account or not.

Parameters

-
+
@@ -1232,7 +1244,7 @@ on the same seat as the seat of the session of the calling process.

Parameters

-
+
@@ -1259,7 +1271,7 @@ 'root' or 'nobody'.

Parameters

-
+
@@ -1288,7 +1300,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1322,7 +1334,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1354,7 +1366,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1386,7 +1398,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1418,7 +1430,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1450,7 +1462,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1480,7 +1492,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1516,7 +1528,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1566,7 +1578,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1598,7 +1610,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1630,7 +1642,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1662,7 +1674,7 @@

Note this function is synchronous and ignores errors.

Parameters

-
+
@@ -1697,7 +1709,7 @@

Type of user account

Members

-
+
@@ -1728,7 +1740,7 @@

Mode for setting the user's password.

Members

-
+
@@ -1955,7 +1967,7 @@

Emitted when the user accounts changes in some way.

Parameters

-
+
@@ -1979,7 +1991,7 @@

Emitted when the list of sessions for this user changes.

Parameters

-
+
diff -Nru accountsservice-0.6.42/doc/libaccountsservice/html/ActUserManager.html accountsservice-0.6.45/doc/libaccountsservice/html/ActUserManager.html --- accountsservice-0.6.42/doc/libaccountsservice/html/ActUserManager.html 2016-06-09 14:17:41.000000000 +0000 +++ accountsservice-0.6.45/doc/libaccountsservice/html/ActUserManager.html 2017-03-27 18:33:44.000000000 +0000 @@ -3,7 +3,7 @@ ActUserManager: libaccountsservice Reference Manual - + @@ -36,7 +36,7 @@

Functions

-
+
@@ -191,7 +191,7 @@

Properties

-
+
@@ -223,7 +223,7 @@

Signals

-
+
@@ -255,7 +255,7 @@

Types and Values

-
+
@@ -300,7 +300,7 @@

Activate the session for a given user.

Parameters

-
+
@@ -335,7 +335,7 @@

Caches a user account so it shows up via act_user_manager_list_users().

Parameters

-
+
@@ -381,7 +381,7 @@ is the synchronous version of this call.

Parameters

-
+
@@ -432,7 +432,7 @@

See act_user_manager_cache_user_async().

Parameters

-
+
@@ -472,7 +472,7 @@

Check whether the user can switch to another session.

Parameters

-
+
@@ -502,7 +502,7 @@

Creates a user account on the system.

Parameters

-
+
@@ -559,7 +559,7 @@ is the synchronous version of this call.

Parameters

-
+
@@ -620,7 +620,7 @@

See act_user_manager_create_user_async().

Parameters

-
+
@@ -663,7 +663,7 @@

Deletes a user account on the system.

Parameters

-
+
@@ -713,7 +713,7 @@ is the synchronous version of this call.

Parameters

-
+
@@ -769,7 +769,7 @@

See act_user_manager_delete_user_async().

Parameters

-
+
@@ -829,7 +829,7 @@ behavior.

Parameters

-
+
@@ -868,7 +868,7 @@ behavior.

Parameters

-
+
@@ -902,7 +902,7 @@

Switch the display to the login manager.

Parameters

-
+
@@ -928,7 +928,7 @@

Get a list of system user accounts

Parameters

-
+
@@ -955,7 +955,7 @@

Check whether or not the accounts service is running.

Parameters

-
+
@@ -986,7 +986,7 @@ account will no longer show up in ListCachedUsers() output.

Parameters

-
+
@@ -1037,7 +1037,7 @@

Various error codes returned by the accounts service.

Members

-
+
@@ -1127,7 +1127,7 @@

Emitted when a user is added to the user manager.

Parameters

-
+
@@ -1164,7 +1164,7 @@

One of the users has changed

Parameters

-
+
@@ -1201,7 +1201,7 @@

One of the users has logged in or out.

Parameters

-
+
@@ -1238,7 +1238,7 @@

Emitted when a user is removed from the user manager.

Parameters

-
+
diff -Nru accountsservice-0.6.42/doc/libaccountsservice/html/annotation-glossary.html accountsservice-0.6.45/doc/libaccountsservice/html/annotation-glossary.html --- accountsservice-0.6.42/doc/libaccountsservice/html/annotation-glossary.html 2016-06-09 14:17:41.000000000 +0000 +++ accountsservice-0.6.45/doc/libaccountsservice/html/annotation-glossary.html 2017-03-27 18:33:44.000000000 +0000 @@ -3,7 +3,7 @@ Annotation Glossary: libaccountsservice Reference Manual - + diff -Nru accountsservice-0.6.42/doc/libaccountsservice/html/api-index-full.html accountsservice-0.6.45/doc/libaccountsservice/html/api-index-full.html --- accountsservice-0.6.42/doc/libaccountsservice/html/api-index-full.html 2016-06-09 14:17:41.000000000 +0000 +++ accountsservice-0.6.45/doc/libaccountsservice/html/api-index-full.html 2017-03-27 18:33:44.000000000 +0000 @@ -3,7 +3,7 @@ API Index: libaccountsservice Reference Manual - + diff -Nru accountsservice-0.6.42/doc/libaccountsservice/html/ch01.html accountsservice-0.6.45/doc/libaccountsservice/html/ch01.html --- accountsservice-0.6.42/doc/libaccountsservice/html/ch01.html 2016-06-09 14:17:41.000000000 +0000 +++ accountsservice-0.6.45/doc/libaccountsservice/html/ch01.html 2017-03-27 18:33:44.000000000 +0000 @@ -3,7 +3,7 @@ libaccountsservice: libaccountsservice Reference Manual - + diff -Nru accountsservice-0.6.42/doc/libaccountsservice/html/index.html accountsservice-0.6.45/doc/libaccountsservice/html/index.html --- accountsservice-0.6.42/doc/libaccountsservice/html/index.html 2016-06-09 14:17:41.000000000 +0000 +++ accountsservice-0.6.45/doc/libaccountsservice/html/index.html 2017-03-27 18:33:44.000000000 +0000 @@ -3,7 +3,7 @@ libaccountsservice Reference Manual: libaccountsservice Reference Manual - + diff -Nru accountsservice-0.6.42/Makefile.in accountsservice-0.6.45/Makefile.in --- accountsservice-0.6.42/Makefile.in 2016-06-09 14:17:26.000000000 +0000 +++ accountsservice-0.6.45/Makefile.in 2017-03-27 18:33:01.000000000 +0000 @@ -625,7 +625,7 @@ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir @@ -650,7 +650,7 @@ @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -668,7 +668,7 @@ distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -678,7 +678,7 @@ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac diff -Nru accountsservice-0.6.42/NEWS accountsservice-0.6.45/NEWS --- accountsservice-0.6.42/NEWS 2016-06-09 14:17:01.000000000 +0000 +++ accountsservice-0.6.45/NEWS 2017-03-27 18:32:01.000000000 +0000 @@ -1,3 +1,20 @@ +Changes in 0.6.45 +================= +* wrap password expiration info in libaccountsservice api + +Changes in 0.6.44 +================= +* export password expiration info from shadow file +* fix user classification logic +* don't lose track of users when /etc/passwd is reloaded + +Changes in 0.6.43 +================= +* Fix logout times in login-history +* increase performance in large deployments +* memory leak fix +* exclude nologin users from user list + Changes in 0.6.42 ================= * wtmp fixes on solaris diff -Nru accountsservice-0.6.42/src/accounts-generated.c accountsservice-0.6.45/src/accounts-generated.c --- accountsservice-0.6.42/src/accounts-generated.c 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/accounts-generated.c 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -2035,8 +2035,8 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; - guint n; + gsize num_params; + gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_accounts_accounts_interface_info.parent_struct, signal_name); if (info == NULL) @@ -2370,9 +2370,9 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; + gsize num_params; guint num_extra; - guint n; + gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); diff -Nru accountsservice-0.6.42/src/accounts-generated.h accountsservice-0.6.45/src/accounts-generated.h --- accountsservice-0.6.42/src/accounts-generated.h 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/accounts-generated.h 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ diff -Nru accountsservice-0.6.42/src/accounts-user-generated.c accountsservice-0.6.45/src/accounts-user-generated.c --- accountsservice-0.6.42/src/accounts-user-generated.c 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/accounts-user-generated.c 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -844,6 +844,110 @@ FALSE }; +static const _ExtendedGDBusArgInfo _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_expiration_time = +{ + { + -1, + (gchar *) "expiration_time", + (gchar *) "x", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_last_change_time = +{ + { + -1, + (gchar *) "last_change_time", + (gchar *) "x", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_min_days_between_changes = +{ + { + -1, + (gchar *) "min_days_between_changes", + (gchar *) "x", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_max_days_between_changes = +{ + { + -1, + (gchar *) "max_days_between_changes", + (gchar *) "x", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_days_to_warn = +{ + { + -1, + (gchar *) "days_to_warn", + (gchar *) "x", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_days_after_expiration_until_lock = +{ + { + -1, + (gchar *) "days_after_expiration_until_lock", + (gchar *) "x", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const _accounts_user_method_info_get_password_expiration_policy_OUT_ARG_pointers[] = +{ + &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_expiration_time, + &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_last_change_time, + &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_min_days_between_changes, + &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_max_days_between_changes, + &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_days_to_warn, + &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_days_after_expiration_until_lock, + NULL +}; + +static const GDBusAnnotationInfo _accounts_user_method_get_password_expiration_policy_annotation_info_0 = +{ + -1, + (gchar *) "org.freedesktop.DBus.GLib.Async", + (gchar *) "", + NULL +}; + +static const GDBusAnnotationInfo * const _accounts_user_method_get_password_expiration_policy_annotation_info_pointers[] = +{ + &_accounts_user_method_get_password_expiration_policy_annotation_info_0, + NULL +}; + +static const _ExtendedGDBusMethodInfo _accounts_user_method_info_get_password_expiration_policy = +{ + { + -1, + (gchar *) "GetPasswordExpirationPolicy", + NULL, + (GDBusArgInfo **) &_accounts_user_method_info_get_password_expiration_policy_OUT_ARG_pointers, + (GDBusAnnotationInfo **) &_accounts_user_method_get_password_expiration_policy_annotation_info_pointers + }, + "handle-get-password-expiration-policy", + FALSE +}; + static const _ExtendedGDBusMethodInfo * const _accounts_user_method_info_pointers[] = { &_accounts_user_method_info_set_user_name, @@ -861,6 +965,7 @@ &_accounts_user_method_info_set_password, &_accounts_user_method_info_set_password_hint, &_accounts_user_method_info_set_automatic_login, + &_accounts_user_method_info_get_password_expiration_policy, NULL }; @@ -1240,6 +1345,7 @@ /** * AccountsUserIface: * @parent_iface: The parent interface. + * @handle_get_password_expiration_policy: Handler for the #AccountsUser::handle-get-password-expiration-policy signal. * @handle_set_account_type: Handler for the #AccountsUser::handle-set-account-type signal. * @handle_set_automatic_login: Handler for the #AccountsUser::handle-set-automatic-login signal. * @handle_set_email: Handler for the #AccountsUser::handle-set-email signal. @@ -1633,6 +1739,28 @@ 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_BOOLEAN); + /** + * AccountsUser::handle-get-password-expiration-policy: + * @object: A #AccountsUser. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the GetPasswordExpirationPolicy() D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call accounts_user_complete_get_password_expiration_policy() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-password-expiration-policy", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AccountsUserIface, handle_get_password_expiration_policy), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + /* GObject signals for received D-Bus signals: */ /** * AccountsUser::changed: @@ -4165,6 +4293,134 @@ } /** + * accounts_user_call_get_password_expiration_policy: + * @proxy: A #AccountsUserProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetPasswordExpirationPolicy() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call accounts_user_call_get_password_expiration_policy_finish() to get the result of the operation. + * + * See accounts_user_call_get_password_expiration_policy_sync() for the synchronous, blocking version of this method. + */ +void +accounts_user_call_get_password_expiration_policy ( + AccountsUser *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetPasswordExpirationPolicy", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * accounts_user_call_get_password_expiration_policy_finish: + * @proxy: A #AccountsUserProxy. + * @out_expiration_time: (out): Return location for return parameter or %NULL to ignore. + * @out_last_change_time: (out): Return location for return parameter or %NULL to ignore. + * @out_min_days_between_changes: (out): Return location for return parameter or %NULL to ignore. + * @out_max_days_between_changes: (out): Return location for return parameter or %NULL to ignore. + * @out_days_to_warn: (out): Return location for return parameter or %NULL to ignore. + * @out_days_after_expiration_until_lock: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to accounts_user_call_get_password_expiration_policy(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with accounts_user_call_get_password_expiration_policy(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +accounts_user_call_get_password_expiration_policy_finish ( + AccountsUser *proxy, + gint64 *out_expiration_time, + gint64 *out_last_change_time, + gint64 *out_min_days_between_changes, + gint64 *out_max_days_between_changes, + gint64 *out_days_to_warn, + gint64 *out_days_after_expiration_until_lock, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(xxxxxx)", + out_expiration_time, + out_last_change_time, + out_min_days_between_changes, + out_max_days_between_changes, + out_days_to_warn, + out_days_after_expiration_until_lock); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * accounts_user_call_get_password_expiration_policy_sync: + * @proxy: A #AccountsUserProxy. + * @out_expiration_time: (out): Return location for return parameter or %NULL to ignore. + * @out_last_change_time: (out): Return location for return parameter or %NULL to ignore. + * @out_min_days_between_changes: (out): Return location for return parameter or %NULL to ignore. + * @out_max_days_between_changes: (out): Return location for return parameter or %NULL to ignore. + * @out_days_to_warn: (out): Return location for return parameter or %NULL to ignore. + * @out_days_after_expiration_until_lock: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetPasswordExpirationPolicy() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See accounts_user_call_get_password_expiration_policy() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +accounts_user_call_get_password_expiration_policy_sync ( + AccountsUser *proxy, + gint64 *out_expiration_time, + gint64 *out_last_change_time, + gint64 *out_min_days_between_changes, + gint64 *out_max_days_between_changes, + gint64 *out_days_to_warn, + gint64 *out_days_after_expiration_until_lock, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetPasswordExpirationPolicy", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(xxxxxx)", + out_expiration_time, + out_last_change_time, + out_min_days_between_changes, + out_max_days_between_changes, + out_days_to_warn, + out_days_after_expiration_until_lock); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** * accounts_user_complete_set_user_name: * @object: A #AccountsUser. * @invocation: (transfer full): A #GDBusMethodInvocation. @@ -4434,6 +4690,42 @@ g_variant_new ("()")); } +/** + * accounts_user_complete_get_password_expiration_policy: + * @object: A #AccountsUser. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @expiration_time: Parameter to return. + * @last_change_time: Parameter to return. + * @min_days_between_changes: Parameter to return. + * @max_days_between_changes: Parameter to return. + * @days_to_warn: Parameter to return. + * @days_after_expiration_until_lock: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetPasswordExpirationPolicy() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +accounts_user_complete_get_password_expiration_policy ( + AccountsUser *object, + GDBusMethodInvocation *invocation, + gint64 expiration_time, + gint64 last_change_time, + gint64 min_days_between_changes, + gint64 max_days_between_changes, + gint64 days_to_warn, + gint64 days_after_expiration_until_lock) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(xxxxxx)", + expiration_time, + last_change_time, + min_days_between_changes, + max_days_between_changes, + days_to_warn, + days_after_expiration_until_lock)); +} + /* ------------------------------------------------------------------------ */ /** @@ -4551,8 +4843,8 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; - guint n; + gsize num_params; + gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_accounts_user_interface_info.parent_struct, signal_name); if (info == NULL) @@ -5188,9 +5480,9 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; + gsize num_params; guint num_extra; - guint n; + gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); diff -Nru accountsservice-0.6.42/src/accounts-user-generated.h accountsservice-0.6.45/src/accounts-user-generated.h --- accountsservice-0.6.42/src/accounts-user-generated.h 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/accounts-user-generated.h 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -30,6 +30,10 @@ + gboolean (*handle_get_password_expiration_policy) ( + AccountsUser *object, + GDBusMethodInvocation *invocation); + gboolean (*handle_set_account_type) ( AccountsUser *object, GDBusMethodInvocation *invocation, @@ -218,6 +222,16 @@ AccountsUser *object, GDBusMethodInvocation *invocation); +void accounts_user_complete_get_password_expiration_policy ( + AccountsUser *object, + GDBusMethodInvocation *invocation, + gint64 expiration_time, + gint64 last_change_time, + gint64 min_days_between_changes, + gint64 max_days_between_changes, + gint64 days_to_warn, + gint64 days_after_expiration_until_lock); + /* D-Bus signal emissions functions: */ @@ -499,6 +513,34 @@ GCancellable *cancellable, GError **error); +void accounts_user_call_get_password_expiration_policy ( + AccountsUser *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean accounts_user_call_get_password_expiration_policy_finish ( + AccountsUser *proxy, + gint64 *out_expiration_time, + gint64 *out_last_change_time, + gint64 *out_min_days_between_changes, + gint64 *out_max_days_between_changes, + gint64 *out_days_to_warn, + gint64 *out_days_after_expiration_until_lock, + GAsyncResult *res, + GError **error); + +gboolean accounts_user_call_get_password_expiration_policy_sync ( + AccountsUser *proxy, + gint64 *out_expiration_time, + gint64 *out_last_change_time, + gint64 *out_min_days_between_changes, + gint64 *out_max_days_between_changes, + gint64 *out_days_to_warn, + gint64 *out_days_after_expiration_until_lock, + GCancellable *cancellable, + GError **error); + /* D-Bus property accessors: */ diff -Nru accountsservice-0.6.42/src/daemon.c accountsservice-0.6.45/src/daemon.c --- accountsservice-0.6.42/src/daemon.c 2015-02-25 13:51:44.000000000 +0000 +++ accountsservice-0.6.45/src/daemon.c 2017-03-27 18:05:12.000000000 +0000 @@ -29,6 +29,9 @@ #include #include #include +#ifdef HAVE_SHADOW_H +#include +#endif #include #include #include @@ -59,6 +62,7 @@ GDBusConnection *bus_connection; GHashTable *users; + GList *explicitly_requested_users; User *autologin; @@ -75,7 +79,7 @@ GHashTable *extension_ifaces; }; -typedef struct passwd * (* EntryGeneratorFunc) (GHashTable *, gpointer *); +typedef struct passwd * (* EntryGeneratorFunc) (Daemon *, GHashTable *, gpointer *, struct spwd **shadow_entry); static void daemon_accounts_accounts_iface_init (AccountsAccountsIface *iface); @@ -132,38 +136,109 @@ #include "fgetpwent.c" #endif +#ifndef MAX_LOCAL_USERS +#define MAX_LOCAL_USERS 50 +#endif + static struct passwd * -entry_generator_fgetpwent (GHashTable *users, - gpointer *state) +entry_generator_fgetpwent (Daemon *daemon, + GHashTable *users, + gpointer *state, + struct spwd **spent) { struct passwd *pwent; - FILE *fp; + + struct { + struct spwd spbuf; + char buf[1024]; + } *shadow_entry_buffers; + + struct { + FILE *fp; + GHashTable *users; + } *generator_state; /* First iteration */ if (*state == NULL) { - *state = fp = fopen (PATH_PASSWD, "r"); + GHashTable *shadow_users = NULL; + FILE *fp; + struct spwd *shadow_entry; + + fp = fopen (PATH_SHADOW, "r"); if (fp == NULL) { + g_warning ("Unable to open %s: %s", PATH_SHADOW, g_strerror (errno)); + return NULL; + } + + shadow_users = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + + do { + int ret = 0; + + shadow_entry_buffers = g_malloc0 (sizeof (*shadow_entry_buffers)); + + ret = fgetspent_r (fp, &shadow_entry_buffers->spbuf, shadow_entry_buffers->buf, sizeof (shadow_entry_buffers->buf), &shadow_entry); + if (ret == 0) { + g_hash_table_insert (shadow_users, g_strdup (shadow_entry->sp_namp), shadow_entry_buffers); + } else { + g_free (shadow_entry_buffers); + + if (errno != EINTR) { + break; + } + } + } while (shadow_entry != NULL); + + fclose (fp); + + if (g_hash_table_size (shadow_users) == 0) { + g_clear_pointer (&shadow_users, g_hash_table_unref); + return NULL; + } + + fp = fopen (PATH_PASSWD, "r"); + if (fp == NULL) { + g_clear_pointer (&shadow_users, g_hash_table_unref); g_warning ("Unable to open %s: %s", PATH_PASSWD, g_strerror (errno)); return NULL; } + + generator_state = g_malloc0 (sizeof (*generator_state)); + generator_state->fp = fp; + generator_state->users = shadow_users; + + *state = generator_state; } /* Every iteration */ - fp = *state; - pwent = fgetpwent (fp); - if (pwent != NULL) { - return pwent; + generator_state = *state; + + if (g_hash_table_size (users) < MAX_LOCAL_USERS) { + pwent = fgetpwent (generator_state->fp); + if (pwent != NULL) { + shadow_entry_buffers = g_hash_table_lookup (generator_state->users, pwent->pw_name); + + if (shadow_entry_buffers != NULL) { + *spent = &shadow_entry_buffers->spbuf; + return pwent; + } + } } /* Last iteration */ - fclose (fp); + fclose (generator_state->fp); + g_hash_table_unref (generator_state->users); + g_free (generator_state); *state = NULL; + return NULL; } static struct passwd * -entry_generator_cachedir (GHashTable *users, - gpointer *state) +entry_generator_cachedir (Daemon *daemon, + GHashTable *users, + gpointer *state, + struct spwd **shadow_entry) { struct passwd *pwent; const gchar *name; @@ -205,10 +280,13 @@ if (regular) { pwent = getpwnam (name); - if (pwent == NULL) + if (pwent == NULL) { g_debug ("user '%s' in cache dir but not present on system", name); - else + } else { + *shadow_entry = getspnam (pwent->pw_name); + return pwent; + } } } @@ -230,24 +308,72 @@ return NULL; } +static struct passwd * +entry_generator_requested_users (Daemon *daemon, + GHashTable *users, + gpointer *state, + struct spwd **shadow_entry) +{ + struct passwd *pwent; + GList *node; + + /* First iteration */ + if (*state == NULL) { + *state = daemon->priv->explicitly_requested_users; + } + + /* Every iteration */ + + if (g_hash_table_size (users) < MAX_LOCAL_USERS) { + node = *state; + while (node != NULL) { + const char *name; + + name = node->data; + node = node->next; + + *state = node; + + if (!g_hash_table_lookup (users, name)) { + pwent = getpwnam (name); + if (pwent == NULL) { + g_debug ("user '%s' requested previously but not present on system", name); + } else { + *shadow_entry = getspnam (pwent->pw_name); + + return pwent; + } + } + } + } + + /* Last iteration */ + + *state = NULL; + return NULL; +} + static void load_entries (Daemon *daemon, GHashTable *users, + gboolean allow_system_users, EntryGeneratorFunc entry_generator) { gpointer generator_state = NULL; struct passwd *pwent; + struct spwd *spent = NULL; User *user = NULL; g_assert (entry_generator != NULL); for (;;) { - pwent = entry_generator (users, &generator_state); + spent = NULL; + pwent = entry_generator (daemon, users, &generator_state, &spent); if (pwent == NULL) break; /* Skip system users... */ - if (!user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, NULL)) { + if (!allow_system_users && !user_classify_is_human (pwent->pw_uid, pwent->pw_name, pwent->pw_shell, spent? spent->sp_pwdp : NULL)) { g_debug ("skipping user: %s", pwent->pw_name); continue; } @@ -266,7 +392,7 @@ /* freeze & update users not already in the new list */ g_object_freeze_notify (G_OBJECT (user)); - user_update_from_pwent (user, pwent); + user_update_from_pwent (user, pwent, spent); g_hash_table_insert (users, g_strdup (user_get_user_name (user)), user); g_debug ("loaded user: %s", user_get_user_name (user)); @@ -305,15 +431,19 @@ */ /* Load the local users into our hash table */ - load_entries (daemon, users, entry_generator_fgetpwent); + load_entries (daemon, users, FALSE, entry_generator_fgetpwent); 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)) g_hash_table_add (local, name); + /* and add users to hash table that were explicitly requested */ + load_entries (daemon, users, TRUE, entry_generator_requested_users); + /* Now add/update users from other sources, possibly non-local */ - load_entries (daemon, users, wtmp_helper_entry_generator); - load_entries (daemon, users, entry_generator_cachedir); + load_entries (daemon, users, FALSE, entry_generator_cachedir); + + wtmp_helper_update_login_frequencies (users); /* Mark which users are local, which are not */ g_hash_table_iter_init (&iter, users); @@ -552,6 +682,8 @@ if (daemon->priv->bus_connection != NULL) g_object_unref (daemon->priv->bus_connection); + g_list_free_full (daemon->priv->explicitly_requested_users, g_free); + g_hash_table_destroy (daemon->priv->users); g_hash_table_unref (daemon->priv->extension_ifaces); @@ -638,12 +770,13 @@ static User * add_new_user_for_pwent (Daemon *daemon, - struct passwd *pwent) + struct passwd *pwent, + struct spwd *spent) { User *user; user = user_new (daemon, pwent->pw_uid); - user_update_from_pwent (user, pwent); + user_update_from_pwent (user, pwent, spent); user_register (user); g_hash_table_insert (daemon->priv->users, @@ -670,8 +803,14 @@ user = g_hash_table_lookup (daemon->priv->users, pwent->pw_name); - if (user == NULL) - user = add_new_user_for_pwent (daemon, pwent); + if (user == NULL) { + struct spwd *spent; + spent = getspnam (pwent->pw_name); + user = add_new_user_for_pwent (daemon, pwent, spent); + + daemon->priv->explicitly_requested_users = g_list_append (daemon->priv->explicitly_requested_users, + g_strdup (pwent->pw_name)); + } return user; } @@ -691,8 +830,14 @@ user = g_hash_table_lookup (daemon->priv->users, pwent->pw_name); - if (user == NULL) - user = add_new_user_for_pwent (daemon, pwent); + if (user == NULL) { + struct spwd *spent; + spent = getspnam (pwent->pw_name); + user = add_new_user_for_pwent (daemon, pwent, spent); + + daemon->priv->explicitly_requested_users = g_list_append (daemon->priv->explicitly_requested_users, + g_strdup (pwent->pw_name)); + } return user; } diff -Nru accountsservice-0.6.42/src/libaccountsservice/accountsservice.pc accountsservice-0.6.45/src/libaccountsservice/accountsservice.pc --- accountsservice-0.6.42/src/libaccountsservice/accountsservice.pc 2016-06-09 14:17:31.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/accountsservice.pc 2017-03-27 18:33:18.000000000 +0000 @@ -5,6 +5,6 @@ Name: Accounts Service Description: Client Library for communicating with accounts service -Version: 0.6.42 +Version: 0.6.45 Libs: -L${libdir} -laccountsservice Cflags: -I${includedir}/accountsservice-1.0 diff -Nru accountsservice-0.6.42/src/libaccountsservice/act-user.c accountsservice-0.6.45/src/libaccountsservice/act-user.c --- accountsservice-0.6.42/src/libaccountsservice/act-user.c 2016-01-11 15:42:43.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/act-user.c 2017-03-27 18:31:22.000000000 +0000 @@ -1576,6 +1576,49 @@ } /** + * act_user_get_login_history: + * @user: the user object to query. + * @expiration_time: time users passwor expires + * @last_change_time, + * @min_days_between_changes, + * @max_days_between_changes, + * @days_to_warn, + * @days_after_expiration_until_lock) + * + * Assigns a new email to @user. + * + * Note this function is synchronous and ignores errors. + **/ +void +act_user_get_password_expiration_policy (ActUser *user, + gint64 *expiration_time, + gint64 *last_change_time, + gint64 *min_days_between_changes, + gint64 *max_days_between_changes, + gint64 *days_to_warn, + gint64 *days_after_expiration_until_lock) +{ + GError *error = NULL; + + g_return_if_fail (ACT_IS_USER (user)); + g_return_if_fail (ACCOUNTS_IS_USER (user->accounts_proxy)); + + if (!accounts_user_call_get_password_expiration_policy_sync (user->accounts_proxy, + expiration_time, + last_change_time, + min_days_between_changes, + max_days_between_changes, + days_to_warn, + days_after_expiration_until_lock, + NULL, + &error)) { + g_warning ("GetPasswordExpirationPolicy call failed: %s", error->message); + g_error_free (error); + return; + } +} + +/** * act_user_set_email: * @user: the user object to alter. * @email: an email address diff -Nru accountsservice-0.6.42/src/libaccountsservice/act-user-enum-types.c accountsservice-0.6.45/src/libaccountsservice/act-user-enum-types.c --- accountsservice-0.6.42/src/libaccountsservice/act-user-enum-types.c 2016-06-09 14:15:56.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/act-user-enum-types.c 2017-03-27 18:33:36.000000000 +0000 @@ -6,52 +6,52 @@ #include "act-user-enum-types.h" #include -/* enumerations from "act-user.h" */ +/* enumerations from "act-user-manager.h" */ GType -act_user_account_type_get_type (void) +act_user_manager_error_get_type (void) { static GType etype = 0; if (etype == 0) { static const GEnumValue values[] = { - { ACT_USER_ACCOUNT_TYPE_STANDARD, "ACT_USER_ACCOUNT_TYPE_STANDARD", "standard" }, - { ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR, "ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR", "administrator" }, + { ACT_USER_MANAGER_ERROR_FAILED, "ACT_USER_MANAGER_ERROR_FAILED", "failed" }, + { ACT_USER_MANAGER_ERROR_USER_EXISTS, "ACT_USER_MANAGER_ERROR_USER_EXISTS", "user-exists" }, + { ACT_USER_MANAGER_ERROR_USER_DOES_NOT_EXIST, "ACT_USER_MANAGER_ERROR_USER_DOES_NOT_EXIST", "user-does-not-exist" }, + { ACT_USER_MANAGER_ERROR_PERMISSION_DENIED, "ACT_USER_MANAGER_ERROR_PERMISSION_DENIED", "permission-denied" }, + { ACT_USER_MANAGER_ERROR_NOT_SUPPORTED, "ACT_USER_MANAGER_ERROR_NOT_SUPPORTED", "not-supported" }, { 0, NULL, NULL } }; - etype = g_enum_register_static ("ActUserAccountType", values); + etype = g_enum_register_static ("ActUserManagerError", values); } return etype; } + +/* enumerations from "act-user.h" */ GType -act_user_password_mode_get_type (void) +act_user_account_type_get_type (void) { static GType etype = 0; if (etype == 0) { static const GEnumValue values[] = { - { ACT_USER_PASSWORD_MODE_REGULAR, "ACT_USER_PASSWORD_MODE_REGULAR", "regular" }, - { ACT_USER_PASSWORD_MODE_SET_AT_LOGIN, "ACT_USER_PASSWORD_MODE_SET_AT_LOGIN", "set-at-login" }, - { ACT_USER_PASSWORD_MODE_NONE, "ACT_USER_PASSWORD_MODE_NONE", "none" }, + { ACT_USER_ACCOUNT_TYPE_STANDARD, "ACT_USER_ACCOUNT_TYPE_STANDARD", "standard" }, + { ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR, "ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR", "administrator" }, { 0, NULL, NULL } }; - etype = g_enum_register_static ("ActUserPasswordMode", values); + etype = g_enum_register_static ("ActUserAccountType", values); } return etype; } - -/* enumerations from "act-user-manager.h" */ GType -act_user_manager_error_get_type (void) +act_user_password_mode_get_type (void) { static GType etype = 0; if (etype == 0) { static const GEnumValue values[] = { - { ACT_USER_MANAGER_ERROR_FAILED, "ACT_USER_MANAGER_ERROR_FAILED", "failed" }, - { ACT_USER_MANAGER_ERROR_USER_EXISTS, "ACT_USER_MANAGER_ERROR_USER_EXISTS", "user-exists" }, - { ACT_USER_MANAGER_ERROR_USER_DOES_NOT_EXIST, "ACT_USER_MANAGER_ERROR_USER_DOES_NOT_EXIST", "user-does-not-exist" }, - { ACT_USER_MANAGER_ERROR_PERMISSION_DENIED, "ACT_USER_MANAGER_ERROR_PERMISSION_DENIED", "permission-denied" }, - { ACT_USER_MANAGER_ERROR_NOT_SUPPORTED, "ACT_USER_MANAGER_ERROR_NOT_SUPPORTED", "not-supported" }, + { ACT_USER_PASSWORD_MODE_REGULAR, "ACT_USER_PASSWORD_MODE_REGULAR", "regular" }, + { ACT_USER_PASSWORD_MODE_SET_AT_LOGIN, "ACT_USER_PASSWORD_MODE_SET_AT_LOGIN", "set-at-login" }, + { ACT_USER_PASSWORD_MODE_NONE, "ACT_USER_PASSWORD_MODE_NONE", "none" }, { 0, NULL, NULL } }; - etype = g_enum_register_static ("ActUserManagerError", values); + etype = g_enum_register_static ("ActUserPasswordMode", values); } return etype; } diff -Nru accountsservice-0.6.42/src/libaccountsservice/act-user-enum-types.h accountsservice-0.6.45/src/libaccountsservice/act-user-enum-types.h --- accountsservice-0.6.42/src/libaccountsservice/act-user-enum-types.h 2016-06-09 14:15:56.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/act-user-enum-types.h 2017-03-27 18:33:36.000000000 +0000 @@ -7,14 +7,14 @@ #include G_BEGIN_DECLS +/* enumerations from "act-user-manager.h" */ +GType act_user_manager_error_get_type (void); +#define ACT_USER_TYPE_USER_MANAGER_ERROR (act_user_manager_error_get_type()) /* enumerations from "act-user.h" */ GType act_user_account_type_get_type (void); #define ACT_USER_TYPE_USER_ACCOUNT_TYPE (act_user_account_type_get_type()) GType act_user_password_mode_get_type (void); #define ACT_USER_TYPE_USER_PASSWORD_MODE (act_user_password_mode_get_type()) -/* enumerations from "act-user-manager.h" */ -GType act_user_manager_error_get_type (void); -#define ACT_USER_TYPE_USER_MANAGER_ERROR (act_user_manager_error_get_type()) G_END_DECLS #endif /* __ACT_USER_ENUM_TYPES_H__ */ diff -Nru accountsservice-0.6.42/src/libaccountsservice/act-user.h accountsservice-0.6.45/src/libaccountsservice/act-user.h --- accountsservice-0.6.42/src/libaccountsservice/act-user.h 2016-01-11 15:42:31.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/act-user.h 2017-03-27 18:31:22.000000000 +0000 @@ -84,6 +84,14 @@ ActUser *user2); gboolean act_user_is_loaded (ActUser *user); +void act_user_get_password_expiration_policy (ActUser *user, + gint64 *expiration_time, + gint64 *last_change_time, + gint64 *min_days_between_changes, + gint64 *max_days_between_changes, + gint64 *days_to_warn, + gint64 *days_after_expiration_until_lock); + void act_user_set_email (ActUser *user, const char *email); void act_user_set_language (ActUser *user, diff -Nru accountsservice-0.6.42/src/libaccountsservice/ck-manager-generated.c accountsservice-0.6.45/src/libaccountsservice/ck-manager-generated.c --- accountsservice-0.6.42/src/libaccountsservice/ck-manager-generated.c 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/ck-manager-generated.c 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -3527,8 +3527,8 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; - guint n; + gsize num_params; + gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_console_kit_manager_interface_info.parent_struct, signal_name); if (info == NULL) @@ -3844,9 +3844,9 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; + gsize num_params; guint num_extra; - guint n; + gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); diff -Nru accountsservice-0.6.42/src/libaccountsservice/ck-manager-generated.h accountsservice-0.6.45/src/libaccountsservice/ck-manager-generated.h --- accountsservice-0.6.42/src/libaccountsservice/ck-manager-generated.h 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/ck-manager-generated.h 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ diff -Nru accountsservice-0.6.42/src/libaccountsservice/ck-seat-generated.c accountsservice-0.6.45/src/libaccountsservice/ck-seat-generated.c --- accountsservice-0.6.42/src/libaccountsservice/ck-seat-generated.c 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/ck-seat-generated.c 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -1677,8 +1677,8 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; - guint n; + gsize num_params; + gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_console_kit_seat_interface_info.parent_struct, signal_name); if (info == NULL) @@ -1994,9 +1994,9 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; + gsize num_params; guint num_extra; - guint n; + gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); diff -Nru accountsservice-0.6.42/src/libaccountsservice/ck-seat-generated.h accountsservice-0.6.45/src/libaccountsservice/ck-seat-generated.h --- accountsservice-0.6.42/src/libaccountsservice/ck-seat-generated.h 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/ck-seat-generated.h 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ diff -Nru accountsservice-0.6.42/src/libaccountsservice/ck-session-generated.c accountsservice-0.6.45/src/libaccountsservice/ck-session-generated.c --- accountsservice-0.6.42/src/libaccountsservice/ck-session-generated.c 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/ck-session-generated.c 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -4503,8 +4503,8 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; - guint n; + gsize num_params; + gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_console_kit_session_interface_info.parent_struct, signal_name); if (info == NULL) @@ -4982,9 +4982,9 @@ GVariantIter iter; GVariant *child; GValue *paramv; - guint num_params; + gsize num_params; guint num_extra; - guint n; + gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); diff -Nru accountsservice-0.6.42/src/libaccountsservice/ck-session-generated.h accountsservice-0.6.45/src/libaccountsservice/ck-session-generated.h --- accountsservice-0.6.42/src/libaccountsservice/ck-session-generated.h 2016-06-09 14:17:39.000000000 +0000 +++ accountsservice-0.6.45/src/libaccountsservice/ck-session-generated.h 2017-03-27 18:33:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.48.1. DO NOT EDIT. + * Generated by gdbus-codegen 2.51.5. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ diff -Nru accountsservice-0.6.42/src/main.c accountsservice-0.6.45/src/main.c --- accountsservice-0.6.42/src/main.c 2013-10-15 20:25:19.000000000 +0000 +++ accountsservice-0.6.45/src/main.c 2016-09-06 17:31:50.000000000 +0000 @@ -121,6 +121,8 @@ message ? message : "(NULL) message"); ret = write (1, string->str, string->len); + + g_string_free (string, TRUE); } static void diff -Nru accountsservice-0.6.42/src/user.c accountsservice-0.6.45/src/user.c --- accountsservice-0.6.42/src/user.c 2016-01-11 15:42:31.000000000 +0000 +++ accountsservice-0.6.45/src/user.c 2017-03-27 17:53:21.000000000 +0000 @@ -97,6 +97,12 @@ gchar *location; guint64 login_frequency; gint64 login_time; + gint64 expiration_time; + gint64 last_change_time; + gint64 min_days_between_changes; + gint64 max_days_between_changes; + gint64 days_to_warn; + gint64 days_after_expiration_until_lock; GVariant *login_history; gchar *icon_file; gchar *default_icon_file; @@ -122,9 +128,6 @@ account_type_from_pwent (struct passwd *pwent) { struct group *grp; - gid_t wheel; - gid_t *groups; - gint ngroups; gint i; if (pwent->pw_uid == 0) { @@ -137,29 +140,21 @@ g_debug (ADMIN_GROUP " group not found"); return ACCOUNT_TYPE_STANDARD; } - wheel = grp->gr_gid; - ngroups = get_user_groups (pwent->pw_name, pwent->pw_gid, &groups); - - for (i = 0; i < ngroups; i++) { - if (groups[i] == wheel) { - g_free (groups); + for (i = 0; grp->gr_mem[i] != NULL; i++) { + if (g_strcmp0 (grp->gr_mem[i], pwent->pw_name) == 0) { return ACCOUNT_TYPE_ADMINISTRATOR; } } - g_free (groups); - return ACCOUNT_TYPE_STANDARD; } void user_update_from_pwent (User *user, - struct passwd *pwent) + struct passwd *pwent, + struct spwd *spent) { -#ifdef HAVE_SHADOW_H - struct spwd *spent; -#endif gchar *real_name; gboolean changed; const gchar *passwd; @@ -258,11 +253,8 @@ } passwd = NULL; -#ifdef HAVE_SHADOW_H - spent = getspnam (pwent->pw_name); if (spent) passwd = spent->sp_pwdp; -#endif if (passwd && passwd[0] == '!') { locked = TRUE; @@ -284,13 +276,18 @@ mode = PASSWORD_MODE_NONE; } -#ifdef HAVE_SHADOW_H if (spent) { if (spent->sp_lstchg == 0) { mode = PASSWORD_MODE_SET_AT_LOGIN; } + + user->expiration_time = spent->sp_expire; + user->last_change_time = spent->sp_lstchg; + user->min_days_between_changes = spent->sp_min; + user->max_days_between_changes = spent->sp_max; + user->days_to_warn = spent->sp_warn; + user->days_after_expiration_until_lock = spent->sp_inact; } -#endif if (user->password_mode != mode) { user->password_mode = mode; @@ -1161,6 +1158,54 @@ } static void +user_get_password_expiration_policy_authorized_cb (Daemon *daemon, + User *user, + GDBusMethodInvocation *context, + gpointer data) + +{ + accounts_user_complete_get_password_expiration_policy (ACCOUNTS_USER (user), + context, + user->expiration_time, + user->last_change_time, + user->min_days_between_changes, + user->max_days_between_changes, + user->days_to_warn, + user->days_after_expiration_until_lock); +} + +static gboolean +user_get_password_expiration_policy (AccountsUser *auser, + GDBusMethodInvocation *context) +{ + User *user = (User*)auser; + int uid; + const gchar *action_id; + + if (!get_caller_uid (context, &uid)) { + throw_error (context, ERROR_FAILED, "identifying caller failed"); + return FALSE; + } + + if (user->uid == (uid_t) uid) + action_id = "org.freedesktop.accounts.change-own-user-data"; + else + action_id = "org.freedesktop.accounts.user-administration"; + + daemon_local_check_auth (user->daemon, + user, + action_id, + TRUE, + user_get_password_expiration_policy_authorized_cb, + context, + NULL, + NULL); + + return TRUE; +} + + +static void user_change_location_authorized_cb (Daemon *daemon, User *user, GDBusMethodInvocation *context, @@ -2333,6 +2378,7 @@ iface->handle_set_shell = user_set_shell; iface->handle_set_user_name = user_set_user_name; iface->handle_set_xsession = user_set_x_session; + iface->handle_get_password_expiration_policy = user_get_password_expiration_policy; iface->get_uid = user_real_get_uid; iface->get_user_name = user_real_get_user_name; iface->get_real_name = user_real_get_real_name; diff -Nru accountsservice-0.6.42/src/user-classify.c accountsservice-0.6.45/src/user-classify.c --- accountsservice-0.6.42/src/user-classify.c 2014-03-20 18:16:56.000000000 +0000 +++ accountsservice-0.6.45/src/user-classify.c 2017-03-27 16:50:42.000000000 +0000 @@ -25,6 +25,7 @@ #include "user-classify.h" #include +#include static const char *default_excludes[] = { "bin", @@ -84,44 +85,10 @@ #ifdef ENABLE_USER_HEURISTICS static gboolean user_classify_is_excluded_by_heuristics (const gchar *username, - const gchar *shell, const gchar *password_hash) { gboolean ret = FALSE; - if (shell != NULL) { - char *basename, *nologin_basename, *false_basename; - -#ifdef HAVE_GETUSERSHELL - char *valid_shell; - - ret = TRUE; - setusershell (); - while ((valid_shell = getusershell ()) != NULL) { - if (g_strcmp0 (shell, valid_shell) != 0) - continue; - ret = FALSE; - } - endusershell (); -#endif - - basename = g_path_get_basename (shell); - nologin_basename = g_path_get_basename (PATH_NOLOGIN); - false_basename = g_path_get_basename (PATH_FALSE); - - if (shell[0] == '\0') { - ret = TRUE; - } else if (g_strcmp0 (basename, nologin_basename) == 0) { - ret = TRUE; - } else if (g_strcmp0 (basename, false_basename) == 0) { - ret = TRUE; - } - - g_free (basename); - g_free (nologin_basename); - g_free (false_basename); - } - if (password_hash != NULL) { /* skip over the account-is-locked '!' prefix if present */ if (password_hash[0] == '!') @@ -148,6 +115,48 @@ } #endif /* ENABLE_USER_HEURISTICS */ +static gboolean +is_invalid_shell (const char *shell) +{ + char *basename, *nologin_basename, *false_basename; + int ret = FALSE; + +#ifdef HAVE_GETUSERSHELL + /* getusershell returns a whitelist of valid shells. + * assume the shell is invalid unless there is a match */ + ret = TRUE; + char *valid_shell; + + setusershell (); + while ((valid_shell = getusershell ()) != NULL) { + if (g_strcmp0 (shell, valid_shell) != 0) + continue; + ret = FALSE; + break; + } + endusershell (); +#endif + + /* always check for false and nologin since they are sometimes included by getusershell */ + basename = g_path_get_basename (shell); + nologin_basename = g_path_get_basename (PATH_NOLOGIN); + false_basename = g_path_get_basename (PATH_FALSE); + + if (shell[0] == '\0') { + ret = TRUE; + } else if (g_strcmp0 (basename, nologin_basename) == 0) { + ret = TRUE; + } else if (g_strcmp0 (basename, false_basename) == 0) { + ret = TRUE; + } + + g_free (basename); + g_free (nologin_basename); + g_free (false_basename); + + return ret; +} + gboolean user_classify_is_human (uid_t uid, const gchar *username, @@ -157,10 +166,13 @@ if (user_classify_is_blacklisted (username)) return FALSE; + if (shell != NULL && is_invalid_shell (shell)) + return FALSE; + #ifdef ENABLE_USER_HEURISTICS /* only do heuristics on the range 500-1000 to catch one off migration problems in Fedora */ if (uid >= 500 && uid < MINIMUM_UID) { - if (!user_classify_is_excluded_by_heuristics (username, shell, password_hash)) + if (!user_classify_is_excluded_by_heuristics (username, password_hash)) return TRUE; } #endif diff -Nru accountsservice-0.6.42/src/user.h accountsservice-0.6.45/src/user.h --- accountsservice-0.6.42/src/user.h 2013-10-15 20:25:19.000000000 +0000 +++ accountsservice-0.6.45/src/user.h 2016-09-06 17:31:50.000000000 +0000 @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -54,7 +55,8 @@ uid_t uid); void user_update_from_pwent (User *user, - struct passwd *pwent); + struct passwd *pwent, + struct spwd *spent); void user_update_from_keyfile (User *user, GKeyFile *keyfile); void user_update_local_account_property (User *user, diff -Nru accountsservice-0.6.42/src/wtmp-helper.c accountsservice-0.6.45/src/wtmp-helper.c --- accountsservice-0.6.42/src/wtmp-helper.c 2016-01-27 18:38:21.000000000 +0000 +++ accountsservice-0.6.45/src/wtmp-helper.c 2017-03-27 16:50:42.000000000 +0000 @@ -41,11 +41,6 @@ gint64 logout_time; } UserPreviousLogin; -typedef struct { - GHashTable *login_hash; - GHashTable *logout_hash; -} WTmpGeneratorState; - static void user_previous_login_free (UserPreviousLogin *previous_login) { @@ -73,9 +68,8 @@ return TRUE; } -struct passwd * -wtmp_helper_entry_generator (GHashTable *users, - gpointer *state) +void +wtmp_helper_update_login_frequencies (GHashTable *users) { GHashTable *login_hash, *logout_hash; struct utmpx *wtmp_entry; @@ -83,33 +77,30 @@ gpointer key, value; struct passwd *pwent; User *user; - WTmpGeneratorState *state_data; GVariantBuilder *builder, *builder2; GList *l; - if (*state == NULL) { - /* First iteration */ - - if (!wtmp_helper_start ()) { - return NULL; - } - - *state = g_new (WTmpGeneratorState, 1); - state_data = *state; - state_data->login_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - state_data->logout_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + if (!wtmp_helper_start ()) { + return; } - /* Every iteration */ - state_data = *state; - login_hash = state_data->login_hash; - logout_hash = state_data->logout_hash; + login_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + logout_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + while ((wtmp_entry = getutxent ())) { UserAccounting *accounting; UserPreviousLogin *previous_login; + gboolean shutdown_or_reboot = FALSE; + + if (g_str_equal (wtmp_entry->ut_line, "~")) { + if (g_str_equal (wtmp_entry->ut_user, "shutdown") || + g_str_equal (wtmp_entry->ut_user, "reboot")) { + shutdown_or_reboot = TRUE; + } + } - if (wtmp_entry->ut_type == BOOT_TIME) { - /* Set boot time for missing logout records */ + if (wtmp_entry->ut_type == BOOT_TIME || shutdown_or_reboot) { + /* Set shutdown, reboot, or boot time for missing logout records */ g_hash_table_iter_init (&iter, logout_hash); while (g_hash_table_iter_next (&iter, &key, &value)) { previous_login = (UserPreviousLogin *) value; @@ -165,8 +156,6 @@ accounting->previous_logins = g_list_prepend (accounting->previous_logins, previous_login); g_hash_table_insert (logout_hash, g_strdup (wtmp_entry->ut_line), previous_login); - - return pwent; } /* Last iteration */ @@ -204,9 +193,6 @@ g_hash_table_unref (login_hash); g_hash_table_unref (logout_hash); - g_free (state_data); - *state = NULL; - return NULL; } const gchar * @@ -217,13 +203,6 @@ #else /* HAVE_UTMPX_H */ -struct passwd * -wtmp_helper_entry_generator (GHashTable *users, - gpointer *state) -{ - return NULL; -} - const gchar * wtmp_helper_get_path_for_monitor (void) { diff -Nru accountsservice-0.6.42/src/wtmp-helper.h accountsservice-0.6.45/src/wtmp-helper.h --- accountsservice-0.6.42/src/wtmp-helper.h 2014-03-20 18:16:56.000000000 +0000 +++ accountsservice-0.6.45/src/wtmp-helper.h 2017-03-27 16:50:42.000000000 +0000 @@ -23,9 +23,9 @@ #include #include +#include const gchar * wtmp_helper_get_path_for_monitor (void); -struct passwd * wtmp_helper_entry_generator (GHashTable *users, - gpointer *state); +void wtmp_helper_update_login_frequencies (GHashTable *users); #endif /* __WTMP_HELPER_H__ */