+ if (isdigit(class_dev->directory->path[strlen(class_dev->directory->path)-1])) {
+ temp[0] = class_dev->directory->path[strlen(class_dev->directory->path)-1];
+ temp[1] = 0x00;
+ strcat(attr->name, temp);
+ }
+ if (dev->attr.mode != 0) {
+ attr->mode = dev->attr.mode;
+ strcpy(attr->owner, dev->attr.owner);
+ strcpy(attr->group, dev->attr.group);
+ }
+ dbg("file '%s' with value '%s' becomes '%s' - owner = %s, group = %s, mode = %#o",
+ dev->sysfs_file, dev->sysfs_value, attr->name,
+ dev->attr.owner, dev->attr.group, dev->attr.mode);
+ goto done;
+ break;
+ }
+ case NUMBER:
+ {
+ char path[SYSFS_PATH_MAX];
+ char *temp;
+
+ found = 0;
+ if (!class_dev->sysdevice)
+ continue;
+ strcpy(path, class_dev->sysdevice->directory->path);
+ temp = strrchr(path, '/');
+ dbg("NUMBER path = '%s'", path);
+ dbg("NUMBER temp = '%s' id = '%s'", temp, dev->id);
+ if (strstr(temp, dev->id) != NULL) {
+ found = 1;
+ } else {
+ *temp = 0x00;
+ temp = strrchr(path, '/');
+ dbg("TOPOLOGY temp = '%s' id = '%s'", temp, dev->id);
+ if (strstr(temp, dev->id) != NULL)
+ found = 1;
+ }
+ if (!found)
+ continue;
+
+ strcpy(attr->name, dev->attr.name);
+ if (dev->attr.mode != 0) {
+ attr->mode = dev->attr.mode;
+ strcpy(attr->owner, dev->attr.owner);
+ strcpy(attr->group, dev->attr.group);
+ }
+ dbg("device id '%s' becomes '%s' - owner = %s, group = %s, mode = %#o",
+ dev->id, attr->name,
+ dev->attr.owner, dev->attr.group, dev->attr.mode);
+ goto done;
+ break;
+ }
+ case TOPOLOGY:
+ {
+ char path[SYSFS_PATH_MAX];
+ char *temp;
+
+ if (!class_dev->sysdevice)
+ continue;
+ found = 0;
+ strcpy(path, class_dev->sysdevice->directory->path);
+ temp = strrchr(path, '/');
+ dbg("TOPOLOGY path = '%s'", path);
+ dbg("TOPOLOGY temp = '%s' place = '%s'", temp, dev->place);
+ if (strstr(temp, dev->place) != NULL) {
+ found = 1;
+ } else {
+ *temp = 0x00;
+ temp = strrchr(path, '/');
+ dbg("TOPOLOGY temp = '%s' place = '%s'", temp, dev->place);
+ if (strstr(temp, dev->place) != NULL)
+ found = 1;
+ }
+ if (!found)
+ continue;
+
+ strcpy(attr->name, dev->attr.name);
+ if (dev->attr.mode != 0) {
+ attr->mode = dev->attr.mode;
+ strcpy(attr->owner, dev->attr.owner);
+ strcpy(attr->group, dev->attr.group);
+ }
+ dbg("device at '%s' becomes '%s' - owner = %s, group = %s, mode = %#o",
+ dev->place, attr->name,
+ dev->attr.owner, dev->attr.group, dev->attr.mode);
+ goto done;
+ break;
+ }
+ case REPLACE:
+ if (strcmp(dev->kernel_name, class_dev->name) != 0)
+ continue;
+ strcpy(attr->name, dev->attr.name);
+ if (dev->attr.mode != 0) {
+ attr->mode = dev->attr.mode;
+ strcpy(attr->owner, dev->attr.owner);
+ strcpy(attr->group, dev->attr.group);
+ }
+ dbg("'%s' becomes '%s' - owner = %s, group = %s, mode = %#o",
+ dev->kernel_name, attr->name,
+ dev->attr.owner, dev->attr.group, dev->attr.mode);
+ goto done;
+ break;
+ case KERNEL_NAME:
+ break;
+ default:
+ dbg("Unknown type of device '%d'", dev->type);
+ break;
+ }