summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-05-18 22:32:19 -0400
committerSven Eden <yamakuzure@gmx.net>2017-07-25 09:46:52 +0200
commitcadef8dcd75df1197e4d3834ac6b3260f93b7f68 (patch)
tree3d83a9e63b5eca51c47184f6776404cf4a4baed9
parentf5a6d04aa9c060b07d3c794dc286d454aa7c2f70 (diff)
sd-login,test-login: return -ENODATA from sd_pid_get_unit too
After all, we might be running on a non-elogind system.
-rw-r--r--src/libelogind/sd-login/sd-login.c6
-rw-r--r--src/libelogind/sd-login/test-login.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/src/libelogind/sd-login/sd-login.c b/src/libelogind/sd-login/sd-login.c
index 02cd8bebe..794136304 100644
--- a/src/libelogind/sd-login/sd-login.c
+++ b/src/libelogind/sd-login/sd-login.c
@@ -66,12 +66,16 @@ _public_ int sd_pid_get_session(pid_t pid, char **session) {
}
_public_ int sd_pid_get_unit(pid_t pid, char **unit) {
+#if 0 /// UNNEEDED by elogind
+ int r;
+#endif // 0
assert_return(pid >= 0, -EINVAL);
assert_return(unit, -EINVAL);
#if 0 /// elogind does not support systemd units
- return cg_pid_get_unit(pid, unit);
+ r = cg_pid_get_unit(pid, unit);
+ return r == -ENXIO ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
diff --git a/src/libelogind/sd-login/test-login.c b/src/libelogind/sd-login/test-login.c
index a2f59717e..5fd0c131e 100644
--- a/src/libelogind/sd-login/test-login.c
+++ b/src/libelogind/sd-login/test-login.c
@@ -61,7 +61,8 @@ static void test_login(void) {
uid_t u, u2;
char *t, **seats, **sessions;
- assert_se(sd_pid_get_unit(0, &unit) >= 0);
+ r = sd_pid_get_unit(0, &unit);
+ assert_se(r >= 0 || r == -ENODATA);
log_info("sd_pid_get_unit(0, …) → \"%s\"", unit);
r = sd_pid_get_user_unit(0, &user_unit);