The -ENOMEDIUM return value was introduced in
v232-1001-g2977724b09,
('core: make hybrid cgroup unified mode keep compat /sys/fs/cgroup/elogind hierarchy'),
and would be returned by cg_pid_get_path_shifted(), but the documented and
expected return value is -ENODATA. Let's just catch ENXIO/ENOMEDIUM and translate
it to ENODATA in all cases.
Complements
171f8f591ff27ebb5ff475b7a9d1f13a846c9331, fixes #6012.
</varlistentry>
<varlistentry>
</varlistentry>
<varlistentry>
- <term><constant>-BADF</constant></term>
+ <term><constant>-EBADF</constant></term>
<listitem><para>The specified socket file descriptor was
invalid.</para></listitem>
<listitem><para>The specified socket file descriptor was
invalid.</para></listitem>
assert_return(session, -EINVAL);
r = cg_pid_get_session(pid, 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) {
}
_public_ int sd_pid_get_unit(pid_t pid, char **unit) {
#if 0 /// elogind does not support systemd units
r = cg_pid_get_unit(pid, unit);
#if 0 /// elogind does not support systemd units
r = cg_pid_get_unit(pid, unit);
- return r == -ENXIO ? -ENODATA : r;
+ return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
#else
return -ESRCH;
#endif // 0
#if 0 /// elogind does not support systemd units
r = cg_pid_get_user_unit(pid, unit);
#if 0 /// elogind does not support systemd units
r = cg_pid_get_user_unit(pid, unit);
- return r == -ENXIO ? -ENODATA : r;
+ return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_machine_name(pid_t pid, char **name) {
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_machine_name(pid_t pid, char **name) {
+#if 0 /// UNNEEDED by elogind
+ int r;
+#endif // 0
assert_return(pid >= 0, -EINVAL);
assert_return(name, -EINVAL);
#if 0 /// elogind does not support systemd units
assert_return(pid >= 0, -EINVAL);
assert_return(name, -EINVAL);
#if 0 /// elogind does not support systemd units
- return cg_pid_get_machine_name(pid, name);
+ r = cg_pid_get_machine_name(pid, name);
+ return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_slice(pid_t pid, char **slice) {
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_slice(pid_t pid, char **slice) {
+#if 0 /// UNNEEDED by elogind
+ int r;
+#endif // 0
assert_return(pid >= 0, -EINVAL);
assert_return(slice, -EINVAL);
#if 0 /// elogind does not support systemd slices
assert_return(pid >= 0, -EINVAL);
assert_return(slice, -EINVAL);
#if 0 /// elogind does not support systemd slices
- return cg_pid_get_slice(pid, slice);
+ r = cg_pid_get_slice(pid, slice);
+ return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_user_slice(pid_t pid, char **slice) {
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_user_slice(pid_t pid, char **slice) {
+#if 0 /// UNNEEDED by elogind
+ int r;
+#endif // 0
assert_return(pid >= 0, -EINVAL);
assert_return(slice, -EINVAL);
#if 0 /// elogind does not support systemd slices
assert_return(pid >= 0, -EINVAL);
assert_return(slice, -EINVAL);
#if 0 /// elogind does not support systemd slices
- return cg_pid_get_user_slice(pid, slice);
+ r = cg_pid_get_user_slice(pid, slice);
+ return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) {
#else
return -ESRCH;
#endif // 0
}
_public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) {
+#if 0 /// UNNEEDED by elogind
+ int r;
+#endif // 0
assert_return(pid >= 0, -EINVAL);
assert_return(uid, -EINVAL);
#if 0 /// elogind does not support systemd slices
assert_return(pid >= 0, -EINVAL);
assert_return(uid, -EINVAL);
#if 0 /// elogind does not support systemd slices
- return cg_pid_get_owner_uid(pid, uid);
+ r = cg_pid_get_owner_uid(pid, uid);
+ return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
#else
return -ESRCH;
#endif // 0
#else
return -ESRCH;
#endif // 0
r = sd_pid_get_unit(0, &unit);
assert_se(r >= 0 || r == -ENODATA);
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);
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) {
r = sd_pid_get_session(0, &session);
if (r < 0) {