chiark / gitweb /
sd-login,test-login: return -ENODATA from sd_pid_get_unit too
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 19 May 2017 02:32:19 +0000 (22:32 -0400)
committerSven Eden <yamakuzure@gmx.net>
Tue, 25 Jul 2017 07:46:52 +0000 (09:46 +0200)
After all, we might be running on a non-elogind system.

src/libelogind/sd-login/sd-login.c
src/libelogind/sd-login/test-login.c

index 02cd8be..7941363 100644 (file)
@@ -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
index a2f5971..5fd0c13 100644 (file)
@@ -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);