i2c-tools: only try /dev/i2c/* if opening /dev/i2c-* fails with ENOENT
Trying to access /dev/i2c/* on every error after opening /dev/i2c-* can mislead users who e.g. don't have root access. Instead of bailing-out with "permission denied" we currently print "no such file or directory". Fix it by trying open("/dev/i2c/%d") only if we got ENOENT. Upstream i2cdetect tries to get any info it can from /sys and /proc even when invoked by an unprivileged user, but we don't want to add unnecessary bloat. Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b2cca32a37
commit
7ca5c51cc8
@ -379,8 +379,12 @@ static int i2c_dev_open(int i2cbus)
|
||||
sprintf(filename, "/dev/i2c-%d", i2cbus);
|
||||
fd = open(filename, O_RDWR);
|
||||
if (fd < 0) {
|
||||
filename[8] = '/'; /* change to "/dev/i2c/%d" */
|
||||
fd = xopen(filename, O_RDWR);
|
||||
if (errno == ENOENT) {
|
||||
filename[8] = '/'; /* change to "/dev/i2c/%d" */
|
||||
fd = xopen(filename, O_RDWR);
|
||||
} else {
|
||||
bb_perror_msg_and_die("can't open '%s'", filename);
|
||||
}
|
||||
}
|
||||
|
||||
return fd;
|
||||
|
Loading…
Reference in New Issue
Block a user