diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | man/sd_session_is_active.xml | 29 | ||||
-rw-r--r-- | src/login/libsystemd-login.sym | 5 | ||||
-rw-r--r-- | src/login/sd-login.c | 4 | ||||
-rw-r--r-- | src/systemd/sd-login.h | 3 |
5 files changed, 37 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am index 33188294a9..e10e421d43 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3690,6 +3690,7 @@ MANPAGES_ALIAS += \ man/sd_session_get_type.3 \ man/sd_session_get_class.3 \ man/sd_session_get_display.3 \ + man/sd_session_get_tty.3 \ man/sd_pid_get_owner_uid.3 \ man/sd_pid_get_unit.3 \ man/sd_uid_is_on_seat.3 \ @@ -3714,6 +3715,7 @@ man/sd_session_get_state.3: man/sd_session_is_active.3 man/sd_session_get_type.3: man/sd_session_is_active.3 man/sd_session_get_class.3: man/sd_session_is_active.3 man/sd_session_get_display.3: man/sd_session_is_active.3 +man/sd_session_get_tty.3: man/sd_session_is_active.3 man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3 man/sd_pid_get_unit.3: man/sd_pid_get_session.3 man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml index a9107cb95f..ab48b9efc2 100644 --- a/man/sd_session_is_active.xml +++ b/man/sd_session_is_active.xml @@ -51,6 +51,7 @@ <refname>sd_session_get_type</refname> <refname>sd_session_get_class</refname> <refname>sd_session_get_display</refname> + <refname>sd_session_get_tty</refname> <refpurpose>Determine state of a specific session</refpurpose> </refnamediv> @@ -104,6 +105,12 @@ <paramdef>const char* <parameter>session</parameter></paramdef> <paramdef>char** <parameter>display</parameter></paramdef> </funcprototype> + + <funcprototype> + <funcdef>int <function>sd_session_get_tty</function></funcdef> + <paramdef>const char* <parameter>session</parameter></paramdef> + <paramdef>char** <parameter>tty</parameter></paramdef> + </funcprototype> </funcsynopsis> </refsynopsisdiv> @@ -186,6 +193,14 @@ <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry> call after use.</para> + <para><function>sd_session_get_tty()</function> + may be used to determine the TTY device of the + session identified by the specified session + identifier. The returned string is one of needs to be + freed with the libc + <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry> + call after use.</para> + <para>If the <literal>session</literal> parameter of any of these functions is passed as NULL the operation is executed for the session the calling process is a @@ -203,8 +218,9 @@ <function>sd_session_get_seat()</function>, <function>sd_session_get_service()</function>, <function>sd_session_get_type()</function>, - <function>sd_session_get_class()</function> and - <function>sd_session_get_display()</function> return 0 or + <function>sd_session_get_class()</function>, + <function>sd_session_get_display()</function> and + <function>sd_session_get_tty()</function> return 0 or a positive integer. On failure, these calls return a negative errno-style error code.</para> </refsect1> @@ -218,10 +234,11 @@ <function>sd_session_get_seat()</function>, <function>sd_session_get_service()</function>, <function>sd_session_get_type()</function>, - <function>sd_session_get_class()</function> and - <function>sd_session_get_display()</function> interfaces - are available as shared library, which can be compiled - and linked to with the + <function>sd_session_get_class()</function>, + <function>sd_session_get_display()</function> and + <function>sd_session_get_tty()</function> + interfaces are available as shared library, which can + be compiled and linked to with the <literal>libsystemd-login</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para> diff --git a/src/login/libsystemd-login.sym b/src/login/libsystemd-login.sym index ff51be729b..272b0e2b52 100644 --- a/src/login/libsystemd-login.sym +++ b/src/login/libsystemd-login.sym @@ -53,3 +53,8 @@ global: sd_seat_can_tty; sd_seat_can_graphical; } LIBSYSTEMD_LOGIN_43; + +LIBSYSTEMD_LOGIN_198 { +global: + sd_session_get_tty; +} LIBSYSTEMD_LOGIN_186; diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 45e3bb8dcd..4bc51e71a2 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -409,6 +409,10 @@ _public_ int sd_session_get_seat(const char *session, char **seat) { return session_get_string(session, "SEAT", seat); } +_public_ int sd_session_get_tty(const char *session, char **tty) { + return session_get_string(session, "TTY", tty); +} + _public_ int sd_session_get_service(const char *session, char **service) { return session_get_string(session, "SERVICE", service); } diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h index 6bd1f2da4a..3746b45cf3 100644 --- a/src/systemd/sd-login.h +++ b/src/systemd/sd-login.h @@ -108,6 +108,9 @@ int sd_session_get_class(const char *session, char **clazz); /* Determine the X11 display of this session. */ 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); + /* Return active session and user of seat */ int sd_seat_get_active(const char *seat, char **session, uid_t *uid); |