diff options
author | Dmitry V. Levin <ldv@strace.io> | 2023-02-28 08:00:00 +0000 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-03-06 17:42:12 +0900 |
commit | 42a467b55219384c7c3b137ab3cc8b6a309a8a14 (patch) | |
tree | 3dc51adebece456f00989b0c7da2e3971b0c4240 /src | |
parent | 25e12db5e4c0edf29c4d020b825a8d667a3aa8a3 (diff) | |
download | systemd-42a467b55219384c7c3b137ab3cc8b6a309a8a14.tar.gz |
udev_rules_parse_file: do not skip ENOENT
Starting with commit ed88bcfb7c15029f9fc95ee2380759a9eb782d46,
udev_rules_parse_file() silently skips files it fails to open with
ENOENT error, e.g. when they are broken symlinks. As this behavior is
undocumented and it seems to be unintended, let's treat ENOENT like any
other error. This change would also simplify the implementation of the
udev rules syntax checker mentioned in #26606.
udev_rules_load(), the only user of udev_rules_parse_file(), is not
affected by this change because it essentially ignores the value
returned by the latter, the only visible difference would be a log
message issued for every udev rules file that couldn't be open because
of ENOENT.
Fixes: ed88bcfb7c15 ("Be more careful when checking for empty files")
Diffstat (limited to 'src')
-rw-r--r-- | src/udev/udev-rules.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 5bd09a64d1..68c4bc903c 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1178,12 +1178,8 @@ int udev_rules_parse_file(UdevRules *rules, const char *filename) { int r; f = fopen(filename, "re"); - if (!f) { - if (errno == ENOENT) - return 0; - + if (!f) return log_warning_errno(errno, "Failed to open %s, ignoring: %m", filename); - } if (fstat(fileno(f), &st) < 0) return log_warning_errno(errno, "Failed to stat %s, ignoring: %m", filename); |