diff options
Diffstat (limited to 'src/libsystemd')
-rw-r--r-- | src/libsystemd/libsystemd.sym.m4 | 7 | ||||
-rw-r--r-- | src/libsystemd/sd-login/sd-login.c | 19 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/libsystemd/libsystemd.sym.m4 b/src/libsystemd/libsystemd.sym.m4 index d1450fbb26..87da7ac021 100644 --- a/src/libsystemd/libsystemd.sym.m4 +++ b/src/libsystemd/libsystemd.sym.m4 @@ -153,6 +153,11 @@ global: sd_machine_get_ifindices; } LIBSYSTEMD_214; +LIBSYSTEMD_217 { +global: + sd_session_get_desktop; +} LIBSYSTEMD_216; + m4_ifdef(`ENABLE_KDBUS', LIBSYSTEMD_FUTURE { global: @@ -438,5 +443,5 @@ global: /* sd-path */ sd_path_home; sd_path_search; -} LIBSYSTEMD_216; +} LIBSYSTEMD_217; ) diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c index 95cb6ff581..c72d23ed53 100644 --- a/src/libsystemd/sd-login/sd-login.c +++ b/src/libsystemd/sd-login/sd-login.c @@ -485,6 +485,25 @@ _public_ int sd_session_get_class(const char *session, char **class) { return session_get_string(session, "CLASS", class); } +_public_ int sd_session_get_desktop(const char *session, char **desktop) { + _cleanup_free_ char *escaped = NULL; + char *t; + int r; + + assert_return(desktop, -EINVAL); + + r = session_get_string(session, "DESKTOP", &escaped); + if (r < 0) + return r; + + t = cunescape(escaped); + if (!t) + return -ENOMEM; + + *desktop = t; + return 0; +} + _public_ int sd_session_get_display(const char *session, char **display) { return session_get_string(session, "DISPLAY", display); } |