IBASE MRS-801-RE User Manual

Page 80

Advertising
background image

72

MRS-801-RE User Manual

}

while (fgets(n, NAME_MAX, f)) {

sscanf(n, "%*[^ ] %[^ ] %[^ ] %*s\n", sysfs, fstype);

if (strcasecmp(fstype, "sysfs") == 0) {

foundsysfs++;

break;

}

}

fclose(f);

if (! foundsysfs) {

goto done;

}

/* Bus numbers in i2c-adapter don't necessarily match those in

i2c-dev and what we really care about are the i2c-dev numbers.

Unfortunately the names are harder to get in i2c-dev */

strcat(sysfs, "/class/i2c-dev");

if(!(dir = opendir(sysfs)))

goto done;

/* go through the busses */

while ((de = readdir(dir)) != NULL) {

if (!strcmp(de->d_name, "."))

continue;

if (!strcmp(de->d_name, ".."))

continue;

/* this should work for kernels 2.6.5 or higher and */

/* is preferred because is unambiguous */

sprintf(n, "%s/%s/name", sysfs, de->d_name);

f = fopen(n, "r");

/* this seems to work for ISA */

if(f == NULL) {

sprintf(n, "%s/%s/device/name", sysfs, de->d_name);

f = fopen(n, "r");

}

/* non-ISA is much harder */

/* and this won't find the correct bus name if a driver

has more than one bus */

Advertising