udev_rules_parse_file: do not skip ENOENT
authorDmitry V. Levin <ldv@strace.io>
Tue, 28 Feb 2023 08:00:00 +0000 (08:00 +0000)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 6 Mar 2023 08:42:12 +0000 (17:42 +0900)
commit42a467b55219384c7c3b137ab3cc8b6a309a8a14
tree3dc51adebece456f00989b0c7da2e3971b0c4240
parent25e12db5e4c0edf29c4d020b825a8d667a3aa8a3
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")
src/udev/udev-rules.c