-
- dbg_parse("read '%s'", temp);
-
- /* eat the whitespace at the beginning of the line */
- while (isspace(*temp))
- ++temp;
-
- /* empty line? */
- if (*temp == 0x00)
- continue;
-
- /* see if this is a comment */
- if (*temp == COMMENT_CHARACTER)
- continue;
-
- memset(&dev, 0x00, sizeof(dev));
-
- /* parse the line */
- temp2 = strsep(&temp, ":");
- if (!temp2) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- strncpy(dev.name, temp2, sizeof(dev.name));
-
- temp2 = strsep(&temp, ":");
- if (!temp2) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- strncpy(dev.owner, temp2, sizeof(dev.owner));
-
- temp2 = strsep(&temp, ":");
- if (!temp2) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- strncpy(dev.group, temp2, sizeof(dev.owner));
-
- dev.mode = strtol(temp, NULL, 8);
-
- dbg_parse("name='%s', owner='%s', group='%s', mode=%#o",
- dev.name, dev.owner, dev.group,
- dev.mode);
- retval = add_dev(&dev);
- if (retval) {
- dbg("add_dev returned with error %d", retval);
- goto exit;
- }
- }
-
-exit:
- fclose(fd);
- return retval;
-}
-
-static mode_t get_default_mode(struct sysfs_class_device *class_dev)
-{
- /* just default everyone to rw for the world! */
- return 0666;
-}
-
-static void build_kernel_number(struct sysfs_class_device *class_dev, struct udevice *udev)
-{
- char *dig;
-
- /* FIXME, figure out how to handle stuff like sdaj which will not work right now. */
- dig = class_dev->name + strlen(class_dev->name);
- while (isdigit(*(dig-1)))
- dig--;
- strfieldcpy(udev->kernel_number, dig);
- dbg("kernel_number='%s'", udev->kernel_number);
-}
-
-static void apply_format(struct udevice *udev, unsigned char *string)
-{
- char name[NAME_SIZE];
- char *pos;
-
- while (1) {
- pos = strchr(string, '%');
-
- if (pos) {
- strfieldcpy(name, pos+2);
- *pos = 0x00;
- switch (pos[1]) {
- case 'b':
- if (strlen(udev->bus_id) == 0)
- break;
- strcat(pos, udev->bus_id);
- dbg("substitute bus_id '%s'", udev->bus_id);