- /* execute external program */
- if (dev->program[0] != '\0') {
- char program[PROGRAM_SIZE];
-
- dbg("check " FIELD_PROGRAM);
- strfieldcpy(program, dev->program);
- apply_format(udev, program, sizeof(program), class_dev, sysfs_device);
- if (execute_program(udev, program, udev->program_result, NAME_SIZE) != 0) {
- dbg(FIELD_PROGRAM " returned nonzero");
- goto try_parent;
- } else {
- dbg(FIELD_PROGRAM " returned successful");
- }
- }
-
- /* check for matching result of external program */
- if (dev->result[0] != '\0') {
- dbg("check for " FIELD_RESULT " dev->result='%s', udev->program_result='%s'",
- dev->result, udev->program_result);
- if (strcmp_pattern(dev->result, udev->program_result) != 0) {
- dbg(FIELD_RESULT " is not matching");
- goto try_parent;
- } else {
- dbg(FIELD_RESULT " matches");
- }
- }
-
- /* we matched */
- return 0;
-