From 7ca5c51cc8c54f35b6265d815d8a8be19e0821b0 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Mon, 11 May 2015 17:26:27 +0200 Subject: [PATCH] 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 Signed-off-by: Denys Vlasenko --- miscutils/i2c_tools.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/miscutils/i2c_tools.c b/miscutils/i2c_tools.c index 2805cf3b0..7034dc9a8 100644 --- a/miscutils/i2c_tools.c +++ b/miscutils/i2c_tools.c @@ -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;