From 44ded3abc28620279633f51a05f2416e5aa3e8e2 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Wed, 11 Sep 2013 18:48:20 +0200 Subject: [PATCH] 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. --- Makefile-man.am | 5 +++++ man/sd_session_is_active.xml | 13 +++++++++++++ src/login/libsystemd-login.sym | 5 +++++ src/login/sd-login.c | 17 +++++++++++++++++ src/systemd/sd-login.h | 3 +++ 5 files changed, 43 insertions(+) diff --git a/Makefile-man.am b/Makefile-man.am index 1c264fa3f..1f635956e 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 e89117d99..9362fbcc5 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 0720704db..54aa91c60 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 06587921c..8a7838d56 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 e37aeda2b..c5837f0ca 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); -- 2.30.2