-
- dbg("read %s", temp);
-
- /* eat the whitespace at the beginning of the line */
- while (isspace(*temp))
- ++temp;
-
- /* no more line? */
- if (*temp == 0x00)
- continue;
-
- /* see if this is a comment */
- if (*temp == COMMENT_CHARACTER)
- continue;
-
- memset(&dev, 0x00, sizeof(struct config_device));
-
- /* parse the line */
- temp2 = strsep(&temp, ",");
- if (strcasecmp(temp2, TYPE_LABEL) == 0) {
- /* label type */
- dev.type = LABEL;
-
- /* BUS="bus" */
- retval = get_value("BUS", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.bus, temp3);
-
- /* file="value" */
- temp2 = strsep(&temp, ",");
- retval = get_pair(&temp, &temp2, &temp3);
- if (retval)
- continue;
- strcpy(dev.sysfs_file, temp2);
- strcpy(dev.sysfs_value, temp3);
-
- /* NAME="new_name" */
- temp2 = strsep(&temp, ",");
- retval = get_value("NAME", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.attr.name, temp3);
-
- dbg("LABEL name = '%s', bus = '%s', sysfs_file = '%s', sysfs_value = '%s'", dev.attr.name, dev.bus, dev.sysfs_file, dev.sysfs_value);
- }
-
- if (strcasecmp(temp2, TYPE_NUMBER) == 0) {
- /* number type */
- dev.type = NUMBER;
-
- /* BUS="bus" */
- retval = get_value("BUS", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.bus, temp3);
-
- /* ID="id" */
- temp2 = strsep(&temp, ",");
- retval = get_value("id", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.id, temp3);
-
- /* NAME="new_name" */
- temp2 = strsep(&temp, ",");
- retval = get_value("NAME", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.attr.name, temp3);
-
- dbg("NUMBER name = '%s', bus = '%s', id = '%s'", dev.attr.name, dev.bus, dev.id);
- }
-
- if (strcasecmp(temp2, TYPE_TOPOLOGY) == 0) {
- /* number type */
- dev.type = TOPOLOGY;
-
- /* BUS="bus" */
- retval = get_value("BUS", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.bus, temp3);
-
- /* PLACE="place" */
- temp2 = strsep(&temp, ",");
- retval = get_value("place", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.place, temp3);
-
- /* NAME="new_name" */
- temp2 = strsep(&temp, ",");
- retval = get_value("NAME", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.attr.name, temp3);
-
- dbg("TOPOLOGY name = '%s', bus = '%s', place = '%s'", dev.attr.name, dev.bus, dev.place);
- }
-
- if (strcasecmp(temp2, TYPE_REPLACE) == 0) {
- /* number type */
- dev.type = REPLACE;
-
- /* KERNEL="kernel_name" */
- retval = get_value("KERNEL", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.kernel_name, temp3);
-
- /* NAME="new_name" */
- temp2 = strsep(&temp, ",");
- retval = get_value("NAME", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.attr.name, temp3);
- dbg("REPLACE name = %s, kernel_name = %s", dev.attr.name, dev.kernel_name);
- }
- if (strcasecmp(temp2, TYPE_CALLOUT) == 0) {
- /* number type */
- dev.type = CALLOUT;
-
- /* PROGRAM="executable" */
- retval = get_value("PROGRAM", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.exec_program, temp3);
-
- /* BUS="bus" */
- temp2 = strsep(&temp, ",");
- retval = get_value("BUS", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.bus, temp3);
-
- /* ID="id" */
- temp2 = strsep(&temp, ",");
- retval = get_value("ID", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.id, temp3);
-
- /* NAME="new_name" */
- temp2 = strsep(&temp, ",");
- retval = get_value("NAME", &temp, &temp3);
- if (retval)
- continue;
- strcpy(dev.attr.name, temp3);
- dbg("CALLOUT name = %s, program = %s", dev.attr.name, dev.exec_program);
- }
-
- retval = add_dev(&dev);
- if (retval) {
- dbg("add_dev returned with error %d", retval);
- goto exit;
- }