We use it pretty much everywhere else, hence use it here too.
This also changes the error generated from EOPNOTSUPP to ENOSYS, to
match the other cases where we do such a check. One user checked for
EOPNOTSUPP which is updated to check for ENOSYS instead.
/* ENOENT can mean two things: that the fd does not exist or that /proc is not mounted. Let's make
* things debuggable and distinguish the two. */
- if (access("/proc/self/fd/", F_OK) < 0)
- /* /proc is not available or not set up properly, we're most likely in some chroot
- * environment. */
- return errno == ENOENT ? -EOPNOTSUPP : -errno;
-
+ if (proc_mounted() == 0)
+ return -ENOSYS; /* /proc is not available or not set up properly, we're most likely in some chroot
+ * environment. */
return -EBADF; /* The directory exists, hence it's the fd that doesn't. */
}
if (r < 0) {
log_debug_errno(r, "Failed to query /proc/self/fd/%d%s: %m",
fd,
- r == -EOPNOTSUPP ? ", ignoring" : "");
+ r == -ENOSYS ? ", ignoring" : "");
- if (r == -EOPNOTSUPP)
+ if (r == -ENOSYS)
/* If /proc is not available, we're most likely running in some
* chroot environment, and syncing the directory is not very
* important in that case. Let's just silently do nothing. */