Changeset 5193

Show
Ignore:
Timestamp:
04/20/08 19:27:34 (7 years ago)
Author:
khali
Message:

Refactor the handling of the I2CBUS parameter. This ensures more
consistency accross the i2c tools.

Location:
i2c-tools/trunk/tools
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • i2c-tools/trunk/tools/i2cbusses.c

    r5164 r5193  
    2626#include <string.h> 
    2727#include <stdio.h> 
     28#include <stdlib.h> 
    2829#include <unistd.h> 
    2930#include <limits.h> 
     
    218219} 
    219220 
     221/* 
     222 * Parse an I2CBUS command line argument and return the corresponding 
     223 * bus number, or a negative value if the bus is invalid. 
     224 */ 
     225int lookup_i2c_bus(const char *i2cbus_arg) 
     226{ 
     227        long i2cbus; 
     228        char *end; 
     229 
     230        i2cbus = strtol(i2cbus_arg, &end, 0); 
     231        if (*end || !*i2cbus_arg) { 
     232                fprintf(stderr, "Error: I2CBUS argument not a number!\n"); 
     233                return -1; 
     234        } 
     235        if (i2cbus < 0 || i2cbus > 0xff) { 
     236                fprintf(stderr, "Error: I2CBUS argument out of range " 
     237                        "(0-255)!\n"); 
     238                return -2; 
     239        } 
     240 
     241        return i2cbus; 
     242} 
     243 
    220244int open_i2c_dev(const int i2cbus, char *filename, const int quiet) 
    221245{ 
  • i2c-tools/trunk/tools/i2cbusses.h

    r5164 r5193  
    2525void print_i2c_busses(int procfmt); 
    2626 
     27int lookup_i2c_bus(const char *i2cbus_arg); 
    2728int open_i2c_dev(const int i2cbus, char *filename, const int quiet); 
    2829int set_slave_addr(int file, int address, int force); 
  • i2c-tools/trunk/tools/i2cdetect.c

    r5164 r5193  
    236236                exit(1); 
    237237        } 
    238         i2cbus = strtol(argv[flags+1], &end, 0); 
    239         if (*end) { 
    240                 fprintf(stderr, "Error: I2CBUS argument not a number!\n"); 
    241                 help(); 
    242                 exit(1); 
    243         } 
    244         if ((i2cbus < 0) || (i2cbus > 0xff)) { 
    245                 fprintf(stderr, "Error: I2CBUS argument out of range " 
    246                         "(0-255)!\n"); 
     238        i2cbus = lookup_i2c_bus(argv[flags+1]); 
     239        if (i2cbus < 0) { 
    247240                help(); 
    248241                exit(1); 
  • i2c-tools/trunk/tools/i2cdump.c

    r5164 r5193  
    9292                exit(1); 
    9393        } 
    94         i2cbus = strtol(argv[flags+1], &end, 0); 
    95         if (*end) { 
    96                 fprintf(stderr, "Error: First argument not a number!\n"); 
    97                 help(); 
    98                 exit(1); 
    99         } 
    100         if (i2cbus < 0 || i2cbus > 0xff) { 
    101                 fprintf(stderr, "Error: I2CBUS argument out of range!\n"); 
     94        i2cbus = lookup_i2c_bus(argv[flags+1]); 
     95        if (i2cbus < 0) { 
    10296                help(); 
    10397                exit(1); 
  • i2c-tools/trunk/tools/i2cget.c

    r5164 r5193  
    188188                help(); 
    189189 
    190         i2cbus = strtol(argv[flags+1], &end, 0); 
    191         if (*end || i2cbus < 0 || i2cbus > 0x3f) { 
    192                 fprintf(stderr, "Error: I2CBUS argument invalid!\n"); 
     190        i2cbus = lookup_i2c_bus(argv[flags+1]); 
     191        if (i2cbus < 0) 
    193192                help(); 
    194         } 
    195193 
    196194        address = strtol(argv[flags+2], &end, 0); 
  • i2c-tools/trunk/tools/i2cset.c

    r5164 r5193  
    7979                help(); 
    8080 
    81         i2cbus = strtol(argv[flags+1], &end, 0); 
    82         if (*end || i2cbus < 0 || i2cbus > 0x3f) { 
    83                 fprintf(stderr, "Error: I2CBUS argument invalid!\n"); 
    84                 help(); 
    85         } 
     81        i2cbus = lookup_i2c_bus(argv[flags+1]); 
     82        if (i2cbus < 0) 
     83                help(); 
    8684 
    8785        address = strtol(argv[flags+2], &end, 0);