diff --git a/tools/i2cget.c b/tools/i2cget.c index ae7a8f5..70d7dc3 100644 --- a/tools/i2cget.c +++ b/tools/i2cget.c @@ -154,8 +154,7 @@ static int confirm(const char *filename, int address, int size, int daddress, int main(int argc, char *argv[]) { char *end; - int res, i2cbus, address, file; - int size = I2C_SMBUS_BYTE_DATA; + int res, i2cbus, address, size, file; int daddress; char filename[20]; int pec = 0; @@ -193,18 +192,19 @@ int main(int argc, char *argv[]) if (address < 0) help(); - if (!(flags+3 < argc)) { - size = I2C_SMBUS_BYTE; - daddress = -1; - } else { + if (argc > flags + 3) { + size = I2C_SMBUS_BYTE_DATA; daddress = strtol(argv[flags+3], &end, 0); if (*end || daddress < 0 || daddress > 0xff) { fprintf(stderr, "Error: Data address invalid!\n"); help(); } + } else { + size = I2C_SMBUS_BYTE; + daddress = -1; } - if (flags+4 < argc) { + if (argc > flags + 4) { switch (argv[flags+4][0]) { case 'b': size = I2C_SMBUS_BYTE_DATA; break; case 'w': size = I2C_SMBUS_WORD_DATA; break; diff --git a/tools/i2cset.c b/tools/i2cset.c index 5e14bcd..e705ed8 100644 --- a/tools/i2cset.c +++ b/tools/i2cset.c @@ -99,21 +99,20 @@ int main(int argc, char *argv[]) help(); } - if (argc < flags + 6) { - fprintf(stderr, "No size specified (using byte-data access)\n"); - size = I2C_SMBUS_BYTE_DATA; - } else if (argv[flags+5][0] == 'b') { - size = I2C_SMBUS_BYTE_DATA; - pec = argv[flags+5][1] == 'p'; - } else if (argv[flags+5][0] == 'w') { - size = I2C_SMBUS_WORD_DATA; + if (argc > flags + 5) { + switch (argv[flags+5][0]) { + case 'b': size = I2C_SMBUS_BYTE_DATA; break; + case 'w': size = I2C_SMBUS_WORD_DATA; break; + default: + fprintf(stderr, "Error: Invalid mode!\n"); + help(); + } pec = argv[flags+5][1] == 'p'; } else { - fprintf(stderr, "Error: Invalid mode!\n"); - help(); + size = I2C_SMBUS_BYTE_DATA; } - if (argc >= flags + 7) { + if (argc > flags + 6) { vmask = strtol(argv[flags+6], &end, 0); if (*end || vmask == 0) { fprintf(stderr, "Error: Data value mask invalid!\n");