sd-login: add a public accessor for the VT number

The VT number was already part of the DBus API, but was not
exposed in the C API.
This commit is contained in:
Giovanni Campagna 2013-09-11 18:48:20 +02:00 committed by Lennart Poettering
parent 4c3a31668e
commit 44ded3abc2
5 changed files with 43 additions and 0 deletions

View File

@ -854,6 +854,7 @@ MANPAGES_ALIAS += \
man/sd_session_get_tty.3 \
man/sd_session_get_type.3 \
man/sd_session_get_uid.3 \
man/sd_session_get_vt.3 \
man/sd_uid_get_seats.3 \
man/sd_uid_get_sessions.3 \
man/sd_uid_is_on_seat.3 \
@ -882,6 +883,7 @@ man/sd_session_get_state.3: man/sd_session_is_active.3
man/sd_session_get_tty.3: man/sd_session_is_active.3
man/sd_session_get_type.3: man/sd_session_is_active.3
man/sd_session_get_uid.3: man/sd_session_is_active.3
man/sd_session_get_vt.3: man/sd_session_is_active.3
man/sd_uid_get_seats.3: man/sd_uid_get_state.3
man/sd_uid_get_sessions.3: man/sd_uid_get_state.3
man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3
@ -958,6 +960,9 @@ man/sd_session_get_type.html: man/sd_session_is_active.html
man/sd_session_get_uid.html: man/sd_session_is_active.html
$(html-alias)
man/sd_session_get_vt.html: man/sd_session_is_active.html
$(html-alias)
man/sd_uid_get_seats.html: man/sd_uid_get_state.html
$(html-alias)

View File

@ -52,6 +52,7 @@
<refname>sd_session_get_class</refname>
<refname>sd_session_get_display</refname>
<refname>sd_session_get_tty</refname>
<refname>sd_session_get_vt</refname>
<refpurpose>Determine state of a specific session</refpurpose>
</refnamediv>
@ -111,6 +112,12 @@
<paramdef>const char* <parameter>session</parameter></paramdef>
<paramdef>char** <parameter>tty</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_session_get_vt</function></funcdef>
<paramdef>const char* <parameter>session</parameter></paramdef>
<paramdef>unsigned* <parameter>vt</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
@ -202,6 +209,12 @@
<citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
call after use.</para>
<para><function>sd_session_get_vt()</function>
may be used to determine the VT number of the
session identified by the specified session
identifier. This function will return an error if
the seat does not support VTs.</para>
<para>If the <varname>session</varname> parameter of
any of these functions is passed as
<constant>NULL</constant> the operation is executed

View File

@ -80,3 +80,8 @@ LIBSYSTEMD_LOGIN_205 {
global:
sd_pid_get_slice;
} LIBSYSTEMD_LOGIN_203;
LIBSYSTEMD_LOGIN_207 {
global:
sd_session_get_vt;
} LIBSYSTEMD_LOGIN_205;

View File

@ -347,6 +347,23 @@ _public_ int sd_session_get_tty(const char *session, char **tty) {
return session_get_string(session, "TTY", tty);
}
_public_ int sd_session_get_vt(const char *session, unsigned *vtnr) {
_cleanup_free_ char *vtnr_string;
unsigned u;
int r;
r = session_get_string(session, "VTNr", &vtnr_string);
if (r < 0)
return r;
r = safe_atou(vtnr_string, &u);
if (r < 0)
return r;
*vtnr = u;
return 0;
}
_public_ int sd_session_get_service(const char *session, char **service) {
return session_get_string(session, "SERVICE", service);
}

View File

@ -124,6 +124,9 @@ int sd_session_get_display(const char *session, char **display);
/* Determine the TTY of this session. */
int sd_session_get_tty(const char *session, char **display);
/* Determine the VT number of this session. */
int sd_session_get_vt(const char *session, unsigned *vtnr);
/* Return active session and user of seat */
int sd_seat_get_active(const char *seat, char **session, uid_t *uid);