diff --git a/Makefile-man.am b/Makefile-man.am
index 1c264fa3fb..1f635956e2 100644
--- a/Makefile-man.am
+++ b/Makefile-man.am
@@ -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)
diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml
index e89117d990..9362fbcc55 100644
--- a/man/sd_session_is_active.xml
+++ b/man/sd_session_is_active.xml
@@ -52,6 +52,7 @@
sd_session_get_class
sd_session_get_display
sd_session_get_tty
+ sd_session_get_vt
Determine state of a specific session
@@ -111,6 +112,12 @@
const char* session
char** tty
+
+
+ int sd_session_get_vt
+ const char* session
+ unsigned* vt
+
@@ -202,6 +209,12 @@
free3
call after use.
+ sd_session_get_vt()
+ 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.
+
If the session parameter of
any of these functions is passed as
NULL the operation is executed
diff --git a/src/login/libsystemd-login.sym b/src/login/libsystemd-login.sym
index 0720704dbf..54aa91c609 100644
--- a/src/login/libsystemd-login.sym
+++ b/src/login/libsystemd-login.sym
@@ -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;
diff --git a/src/login/sd-login.c b/src/login/sd-login.c
index 06587921cd..8a7838d566 100644
--- a/src/login/sd-login.c
+++ b/src/login/sd-login.c
@@ -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);
}
diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h
index e37aeda2bb..c5837f0ca0 100644
--- a/src/systemd/sd-login.h
+++ b/src/systemd/sd-login.h
@@ -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);