diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml index 0c135ba8712..14ebd53e36a 100644 --- a/man/sd_pid_get_session.xml +++ b/man/sd_pid_get_session.xml @@ -285,7 +285,7 @@ - -BADF + -EBADF The specified socket file descriptor was invalid. diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c index 25dff7738fa..49573a7d343 100644 --- a/src/libsystemd/sd-login/sd-login.c +++ b/src/libsystemd/sd-login/sd-login.c @@ -62,7 +62,7 @@ _public_ int sd_pid_get_session(pid_t pid, char **session) { assert_return(session, -EINVAL); r = cg_pid_get_session(pid, session); - return r == -ENXIO ? -ENODATA : r; + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_unit(pid_t pid, char **unit) { @@ -72,7 +72,7 @@ _public_ int sd_pid_get_unit(pid_t pid, char **unit) { assert_return(unit, -EINVAL); r = cg_pid_get_unit(pid, unit); - return r == -ENXIO ? -ENODATA : r; + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_user_unit(pid_t pid, char **unit) { @@ -82,39 +82,47 @@ _public_ int sd_pid_get_user_unit(pid_t pid, char **unit) { assert_return(unit, -EINVAL); r = cg_pid_get_user_unit(pid, unit); - return r == -ENXIO ? -ENODATA : r; + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_machine_name(pid_t pid, char **name) { + int r; assert_return(pid >= 0, -EINVAL); assert_return(name, -EINVAL); - return cg_pid_get_machine_name(pid, name); + r = cg_pid_get_machine_name(pid, name); + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_slice(pid_t pid, char **slice) { + int r; assert_return(pid >= 0, -EINVAL); assert_return(slice, -EINVAL); - return cg_pid_get_slice(pid, slice); + r = cg_pid_get_slice(pid, slice); + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_user_slice(pid_t pid, char **slice) { + int r; assert_return(pid >= 0, -EINVAL); assert_return(slice, -EINVAL); - return cg_pid_get_user_slice(pid, slice); + r = cg_pid_get_user_slice(pid, slice); + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) { + int r; assert_return(pid >= 0, -EINVAL); assert_return(uid, -EINVAL); - return cg_pid_get_owner_uid(pid, uid); + r = cg_pid_get_owner_uid(pid, uid); + return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r; } _public_ int sd_pid_get_cgroup(pid_t pid, char **cgroup) { diff --git a/src/libsystemd/sd-login/test-login.c b/src/libsystemd/sd-login/test-login.c index 6a51ae6a913..bc8488c4de6 100644 --- a/src/libsystemd/sd-login/test-login.c +++ b/src/libsystemd/sd-login/test-login.c @@ -61,14 +61,15 @@ static void test_login(void) { r = sd_pid_get_unit(0, &unit); assert_se(r >= 0 || r == -ENODATA); - log_info("sd_pid_get_unit(0, …) → \"%s\"", unit); + log_info("sd_pid_get_unit(0, …) → \"%s\"", strna(unit)); r = sd_pid_get_user_unit(0, &user_unit); assert_se(r >= 0 || r == -ENODATA); - log_info("sd_pid_get_user_unit(0, …) → \"%s\"", user_unit); + log_info("sd_pid_get_user_unit(0, …) → \"%s\"", strna(user_unit)); - assert_se(sd_pid_get_slice(0, &slice) >= 0); - log_info("sd_pid_get_slice(0, …) → \"%s\"", slice); + r = sd_pid_get_slice(0, &slice); + assert_se(r >= 0 || r == -ENODATA); + log_info("sd_pid_get_slice(0, …) → \"%s\"", strna(slice)); r = sd_pid_get_session(0, &session); if (r < 0) {