<?xml version='1.0'?> <!--*-nxml-*-->
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
-<!--
- This file is part of systemd.
-
- Copyright 2010 Lennart Poettering
-
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- systemd 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
--->
-
-<refentry id="sd_uid_get_state" conditional='HAVE_PAM'>
+<refentry id="sd_uid_get_state" conditional='HAVE_PAM'
+ xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>sd_uid_get_state</title>
<productname>systemd</productname>
-
- <authorgroup>
- <author>
- <contrib>Developer</contrib>
- <firstname>Lennart</firstname>
- <surname>Poettering</surname>
- <email>lennart@poettering.net</email>
- </author>
- </authorgroup>
</refentryinfo>
<refmeta>
<refname>sd_uid_get_sessions</refname>
<refname>sd_uid_get_seats</refname>
<refname>sd_uid_get_display</refname>
+ <refname>sd_uid_get_login_time</refname>
<refpurpose>Determine login state of a specific Unix user ID</refpurpose>
</refnamediv>
<paramdef>uid_t <parameter>uid</parameter></paramdef>
<paramdef>char **<parameter>session</parameter></paramdef>
</funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_uid_get_login_time</function></funcdef>
+ <paramdef>uid_t <parameter>uid</parameter></paramdef>
+ <paramdef>uint64_t *<parameter>usec</parameter></paramdef>
+ </funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<parameter>require_active</parameter> parameter controls whether
the returned list shall consist of only those sessions where the
user is currently active (> 0), where the user is currently
- online but possibly inactive (= 0), or logged in at all but
+ online but possibly inactive (= 0), or logged in but
possibly closing the session (< 0). The call returns a
<constant>NULL</constant> terminated string array of session
identifiers in <parameter>sessions</parameter> which needs to be
of the "primary" session of a user. If the user has graphical
sessions, it will be the oldest graphical session. Otherwise, it
will be the oldest open session.</para>
+
+ <para><function>sd_uid_get_login_time()</function> may be used to
+ determine the time the user's service manager has been invoked,
+ which is the time when the user's first active session, since which
+ they stayed logged in continuously, began. The <parameter>usec</parameter>
+ is in microseconds since the epoch (<constant>CLOCK_REALTIME</constant>).
+ This call will fail with <constant>-ENXIO</constant> if the user is not
+ currently logged in.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
- <para>On success, <function>sd_uid_get_state()</function> returns
- 0 or a positive integer. If the test succeeds,
- <function>sd_uid_is_on_seat()</function> returns a positive
- integer; if it fails, 0.
- <function>sd_uid_get_sessions()</function> and
- <function>sd_uid_get_seats()</function> return the number of
- entries in the returned arrays.
- <function>sd_uid_get_display()</function> returns a non-negative
- code on success. On failure, these calls return a negative
- errno-style error code.</para>
- </refsect1>
+ <para>On success, <function>sd_uid_get_state()</function> and
+ <function>sd_uid_get_login_time()</function> returns 0 or a positive
+ integer. If the test succeeds, <function>sd_uid_is_on_seat()</function>
+ returns a positive integer; if it fails, 0. <function>sd_uid_get_sessions()</function>
+ and <function>sd_uid_get_seats()</function> return the number of entries
+ in the returned arrays. <function>sd_uid_get_display()</function>
+ returns a non-negative code on success. On failure, these calls return
+ a negative errno-style error code.</para>
- <refsect1>
- <title>Errors</title>
+ <refsect2>
+ <title>Errors</title>
- <para>Returned errors may indicate the following problems:</para>
+ <para>Returned errors may indicate the following problems:</para>
- <variablelist>
+ <variablelist>
- <varlistentry>
- <term><constant>-ENODATA</constant></term>
+ <varlistentry>
+ <term><constant>-ENODATA</constant></term>
- <listitem><para>The given field is not specified for the described
- user.</para>
- </listitem>
- </varlistentry>
+ <listitem><para>The given field is not specified for the described user.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><constant>-ENXIO</constant></term>
+ <varlistentry>
+ <term><constant>-ENXIO</constant></term>
- <listitem><para>The specified seat is unknown.</para>
- </listitem>
- </varlistentry>
+ <listitem><para>The specified seat is unknown.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><constant>-EINVAL</constant></term>
+ <varlistentry>
+ <term><constant>-EINVAL</constant></term>
- <listitem><para>An input parameter was invalid (out of range,
- or NULL, where that is not accepted). This is also returned if
- the passed user ID is 0xFFFF or 0xFFFFFFFF, which are
- undefined on Linux.</para></listitem>
- </varlistentry>
+ <listitem><para>An input parameter was invalid (out of range, or <constant>NULL</constant>,
+ where that is not accepted). This is also returned if the passed user ID is
+ <constant>0xFFFF</constant> or <constant>0xFFFFFFFF</constant>, which are undefined on Linux.
+ </para></listitem>
+ </varlistentry>
- <varlistentry>
- <term><constant>-ENOMEM</constant></term>
+ <varlistentry>
+ <term><constant>-ENOMEM</constant></term>
- <listitem><para>Memory allocation failed.</para></listitem>
- </varlistentry>
- </variablelist>
+ <listitem><para>Memory allocation failed.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
</refsect1>
- <refsect1>
- <title>Notes</title>
-
- <para>Functions described here are available as a shared library,
- and can be compiled and linked to using the
- <constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
- entry.</para>
- </refsect1>
+ <xi:include href="libsystemd-pkgconfig.xml" />
<refsect1>
<title>History</title>
-
- <para><function>sd_uid_get_state()</function>,
- <function>sd_uid_is_on_seat()</function>,
- <function>sd_uid_get_sessions()</function>, and
- <function>sd_uid_get_seats()</function> functions were added in
- systemd-31.</para>
-
- <para><function>sd_uid_get_display()</function> was added in
- systemd-213.</para>
+ <para><function>sd_uid_get_display()</function> was added in version 213.</para>
+ <para><function>sd_uid_get_login_time()</function> was added in version 254.</para>
</refsect1>
<refsect1>
<title>See Also</title>
- <para>
- <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>sd_pid_get_owner_uid</refentrytitle><manvolnum>3</manvolnum></citerefentry>
- </para>
+ <para><simplelist type="inline">
+ <member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
+ <member><citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
+ <member><citerefentry><refentrytitle>sd_pid_get_owner_uid</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
+ </simplelist></para>
</refsect1>
</refentry>