Changeset 2675

Show
Ignore:
Timestamp:
08/28/04 22:42:49 (9 years ago)
Author:
khali
Message:

Refactor i2c device opening.

Location:
lm-sensors/trunk/prog
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/prog/detect/i2cdetect.c

    r2501 r2675  
    2626#include <stdlib.h> 
    2727#include <unistd.h> 
    28 #include <fcntl.h> 
     28#include "../dump/i2cbusses.h" 
    2929#include "i2c-dev.h" 
    3030#include "version.h" 
     
    3333#define MODE_QUICK      1 
    3434#define MODE_READ       2 
    35  
    36 void print_i2c_busses(int); 
    3735 
    3836void help(void) 
     
    4846 
    4947        print_i2c_busses(0); 
    50 } 
    51  
    52 int open_i2c_dev(const int i2cbus, char *filename) 
    53 { 
    54         int file; 
    55  
    56         sprintf(filename, "/dev/i2c-%d", i2cbus); 
    57         file = open(filename, O_RDWR); 
    58  
    59         if (file >= 0 || errno != ENOENT) { 
    60                 return file; 
    61         } 
    62  
    63         sprintf(filename, "/dev/i2c/%d", i2cbus); 
    64         file = open(filename, O_RDWR); 
    65          
    66         return file; 
    6748} 
    6849 
     
    232213  file = open_i2c_dev(i2cbus, filename); 
    233214  if (file < 0) { 
    234     if (errno == ENOENT) { 
    235       fprintf(stderr, "Error: Could not open file `/dev/i2c-%d' or `/dev/i2c/%d': %s\n", 
    236               i2cbus, i2cbus, strerror(ENOENT)); 
    237     } else { 
    238       fprintf(stderr, "Error: Could not open file `%s': %s\n", 
    239               filename, strerror(errno)); 
    240       if (errno == EACCES) 
    241         fprintf(stderr, "Run as root?\n"); 
    242     } 
    243215    exit(1); 
    244216  } 
  • lm-sensors/trunk/prog/dump/i2cbusses.c

    r2341 r2675  
    2121*/ 
    2222 
     23#include <sys/types.h> 
     24#include <sys/stat.h> 
    2325#include <string.h> 
    2426#include <stdio.h> 
    2527#include <limits.h> 
    2628#include <dirent.h> 
     29#include <fcntl.h> 
     30#include <errno.h> 
     31#include "i2cbusses.h" 
    2732 
    2833/* 
     
    164169                               "and also modprobed your i2c bus drivers\n"); 
    165170} 
     171 
     172int open_i2c_dev(const int i2cbus, char *filename) 
     173{ 
     174        int file; 
     175 
     176        sprintf(filename, "/dev/i2c/%d", i2cbus); 
     177        file = open(filename, O_RDWR); 
     178 
     179        if (file < 0 && errno == ENOENT) { 
     180                sprintf(filename, "/dev/i2c-%d", i2cbus); 
     181                file = open(filename, O_RDWR); 
     182        } 
     183 
     184        if (file < 0) { 
     185                if (errno == ENOENT) { 
     186                        fprintf(stderr, "Error: Could not open file " 
     187                                "`/dev/i2c-%d' or `/dev/i2c/%d': %s\n", 
     188                                i2cbus, i2cbus, strerror(ENOENT)); 
     189                } else { 
     190                        fprintf(stderr, "Error: Could not open file " 
     191                                "`%s': %s\n", filename, strerror(errno)); 
     192                        if (errno == EACCES) 
     193                                fprintf(stderr, "Run as root?\n"); 
     194                } 
     195        } 
     196         
     197        return file; 
     198} 
  • lm-sensors/trunk/prog/dump/i2cdump.c

    r2673 r2675  
    2525#include <stdlib.h> 
    2626#include <unistd.h> 
    27 #include <fcntl.h> 
     27#include "i2cbusses.h" 
    2828#include "i2c-dev.h" 
    2929#include "version.h" 
     
    4343#define HAVE_PEC 1 
    4444#endif 
    45  
    46 void print_i2c_busses(int); 
    4745 
    4846void help(void) 
     
    6563        char *end; 
    6664        int i, j, res, res2, i2cbus, address, size, file; 
    67         int e1, e2; 
    6865        int bank = 0, bankreg = 0x4E; 
    69         char filename1[20]; 
    70         char filename2[20]; 
    71         char *filename; 
     66        char filename[20]; 
    7267        long funcs; 
    7368        unsigned char cblock[256]; 
     
    175170        } 
    176171 
    177         /* 
    178          * Try both variants and give the correct error message 
    179          * upon failure 
    180          */ 
    181  
    182         sprintf(filename1, "/dev/i2c-%d", i2cbus); 
    183         sprintf(filename2, "/dev/i2c/%d", i2cbus); 
    184         if ((file = open(filename1, O_RDWR)) < 0) { 
    185                 e1 = errno; 
    186                 if ((file = open(filename2, O_RDWR)) < 0) { 
    187                         e2 = errno; 
    188                         if (e1 == ENOENT && e2 == ENOENT) { 
    189                                 fprintf(stderr, "Error: Could not open file " 
    190                                         "`%s' or `%s': %s\n", filename1, 
    191                                         filename2, strerror(ENOENT)); 
    192                         } 
    193                         if (e1 != ENOENT) { 
    194                                 fprintf(stderr, "Error: Could not open file " 
    195                                         "`%s': %s\n", filename1, 
    196                                         strerror(e1)); 
    197                                 if (e1 == EACCES) 
    198                                         fprintf(stderr, "Run as root?\n"); 
    199                         } 
    200                         if (e2 != ENOENT) { 
    201                                 fprintf(stderr, "Error: Could not open file " 
    202                                         "`%s' : %s\n", filename2, 
    203                                         strerror(e2)); 
    204                                 if (e2 == EACCES) 
    205                                         fprintf(stderr, "Run as root?\n"); 
    206                         } 
    207                         exit(1); 
    208                 } else { 
    209                         filename = filename2; 
    210                 } 
    211         } else { 
    212                 filename = filename1; 
     172        file = open_i2c_dev(i2cbus, filename); 
     173        if (file < 0) { 
     174                exit(1); 
    213175        } 
    214176 
  • lm-sensors/trunk/prog/dump/i2cset.c

    r2673 r2675  
    2525#include <stdlib.h> 
    2626#include <unistd.h> 
    27 #include <fcntl.h> 
     27#include "i2cbusses.h" 
    2828#include "i2c-dev.h" 
    2929#include "version.h" 
    3030 
    31 void print_i2c_busses(int); 
    3231void help(void) __attribute__ ((noreturn)); 
    3332 
     
    4746        int res, i2cbus, address, size, file; 
    4847        int value, daddress; 
    49         int e1, e2; 
    50         char filename1[20]; 
    51         char filename2[20]; 
    52         char *filename; 
     48        int e1; 
     49        char filename[20]; 
    5350        long funcs; 
    5451 
     
    104101        } 
    105102 
    106         /* 
    107          * Try both variants and give the correct error message 
    108          * upon failure 
    109          */ 
    110  
    111         sprintf(filename1, "/dev/i2c-%d", i2cbus); 
    112         sprintf(filename2, "/dev/i2c/%d", i2cbus); 
    113         if ((file = open(filename1, O_RDWR)) < 0) { 
    114                 e1 = errno; 
    115                 if ((file = open(filename2, O_RDWR)) < 0) { 
    116                         e2 = errno; 
    117                         if (e1 == ENOENT && e2 == ENOENT) { 
    118                                 fprintf(stderr, "Error: Could not open file " 
    119                                         "`%s' or `%s': %s\n", filename1, 
    120                                         filename2, strerror(ENOENT)); 
    121                         } 
    122                         if (e1 != ENOENT) { 
    123                                 fprintf(stderr, "Error: Could not open file " 
    124                                         ":`%s': %s\n", filename1, 
    125                                         strerror(e1)); 
    126                                 if (e1 == EACCES) 
    127                                         fprintf(stderr, "Run as root?\n"); 
    128                         } 
    129                         if (e2 != ENOENT) { 
    130                                 fprintf(stderr, "Error: Could not open file " 
    131                                         "`%s' : %s\n", filename2, 
    132                                         strerror(e2)); 
    133                                 if (e2 == EACCES) 
    134                                         fprintf(stderr, "Run as root?\n"); 
    135                         } 
    136                         exit(1); 
    137                 } else { 
    138                         filename = filename2; 
    139                 } 
    140         } else { 
    141                 filename = filename1; 
     103        file = open_i2c_dev(i2cbus, filename); 
     104        if (file < 0) { 
     105                exit(1); 
    142106        } 
    143107