Browse Source

Move the chip address parsing to a common function for consistency.

git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@5204 7894878c-1315-0410-8ee3-d5d059ff63e0
tags/v3.0.2
Jean Delvare 18 years ago
parent
commit
bdfc87d724
  1. 23
      tools/i2cbusses.c
  2. 1
      tools/i2cbusses.h
  3. 10
      tools/i2cdump.c
  4. 6
      tools/i2cget.c
  5. 6
      tools/i2cset.c

23
tools/i2cbusses.c

@ -344,6 +344,29 @@ int lookup_i2c_bus(const char *i2cbus_arg)
return i2cbus;
}
/*
* Parse a CHIP-ADDRESS command line argument and return the corresponding
* chip address, or a negative value if the address is invalid.
*/
int parse_i2c_address(const char *address_arg)
{
long address;
char *end;
address = strtol(address_arg, &end, 0);
if (*end || !*address_arg) {
fprintf(stderr, "Error: Chip address is not a number!\n");
return -1;
}
if (address < 0x03 || address > 0x77) {
fprintf(stderr, "Error: Chip address out of range "
"(0x03-0x77)!\n");
return -2;
}
return address;
}
int open_i2c_dev(const int i2cbus, char *filename, const int quiet)
{
int file;

1
tools/i2cbusses.h

@ -33,6 +33,7 @@ struct i2c_adap *gather_i2c_busses(void);
void free_adapters(struct i2c_adap *adapters);
int lookup_i2c_bus(const char *i2cbus_arg);
int parse_i2c_address(const char *address_arg);
int open_i2c_dev(const int i2cbus, char *filename, const int quiet);
int set_slave_addr(int file, int address, int force);

10
tools/i2cdump.c

@ -97,14 +97,8 @@ int main(int argc, char *argv[])
help();
exit(1);
}
address = strtol(argv[flags+2], &end, 0);
if (*end) {
fprintf(stderr, "Error: Second argument not a number!\n");
help();
exit(1);
}
if (address < 0x03 || address > 0x77) {
fprintf(stderr, "Error: Address out of range!\n");
address = parse_i2c_address(argv[flags+2]);
if (address < 0) {
help();
exit(1);
}

6
tools/i2cget.c

@ -189,11 +189,9 @@ int main(int argc, char *argv[])
if (i2cbus < 0)
help();
address = strtol(argv[flags+2], &end, 0);
if (*end || address < 0x03 || address > 0x77) {
fprintf(stderr, "Error: Chip address invalid!\n");
address = parse_i2c_address(argv[flags+2]);
if (address < 0)
help();
}
if (!(flags+3 < argc)) {
size = I2C_SMBUS_BYTE;

6
tools/i2cset.c

@ -83,11 +83,9 @@ int main(int argc, char *argv[])
if (i2cbus < 0)
help();
address = strtol(argv[flags+2], &end, 0);
if (*end || address < 0x03 || address > 0x77) {
fprintf(stderr, "Error: Chip address invalid!\n");
address = parse_i2c_address(argv[flags+2]);
if (address < 0)
help();
}
daddress = strtol(argv[flags+3], &end, 0);
if (*end || daddress < 0 || daddress > 0xff) {

Loading…
Cancel
Save