From 0c270e09de8fd686234812f4fb73c6acfd34315f Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Thu, 20 Nov 2008 17:54:10 +0000 Subject: [PATCH] Allow masking on short writes. git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@5391 7894878c-1315-0410-8ee3-d5d059ff63e0 --- tools/i2cset.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/i2cset.c b/tools/i2cset.c index 8d2f986..3af8e82 100644 --- a/tools/i2cset.c +++ b/tools/i2cset.c @@ -213,7 +213,7 @@ int main(int argc, char *argv[]) maskp = argv[flags+6]; } - if (maskp && size != I2C_SMBUS_BYTE) { + if (maskp) { vmask = strtol(maskp, &end, 0); if (*end || vmask == 0) { fprintf(stderr, "Error: Data value mask invalid!\n"); @@ -240,9 +240,14 @@ int main(int argc, char *argv[]) if (vmask) { int oldvalue; - if (size == I2C_SMBUS_WORD_DATA) { + switch (size) { + case I2C_SMBUS_BYTE: + oldvalue = i2c_smbus_read_byte(file); + break; + case I2C_SMBUS_WORD_DATA: oldvalue = i2c_smbus_read_word_data(file, daddress); - } else { + break; + default: oldvalue = i2c_smbus_read_byte_data(file, daddress); }