summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--man/sd_session_is_active.xml29
-rw-r--r--src/login/libsystemd-login.sym5
-rw-r--r--src/login/sd-login.c4
-rw-r--r--src/systemd/sd-login.h3
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);