summaryrefslogtreecommitdiff
path: root/namedev.c
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2005-02-21 13:45:33 +0100
committerGreg KH <gregkh@suse.de>2005-04-26 23:36:13 -0700
commit311a2b0a1d65a1bd02bbedda0dda90f10d6b6788 (patch)
treeba4a15cb5e76ff261a50f24afe4b2f02ac75020d /namedev.c
parent5ef42682053f57fc031d420f0a2ae3e204421b8d (diff)
[PATCH] clean up match_place()
Diffstat (limited to 'namedev.c')
-rw-r--r--namedev.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/namedev.c b/namedev.c
index 146dad604b..aa45b79b13 100644
--- a/namedev.c
+++ b/namedev.c
@@ -553,32 +553,27 @@ static int match_id(struct config_device *dev, struct sysfs_class_device *class_
static int match_place(struct config_device *dev, struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device)
{
char path[SYSFS_PATH_MAX];
- int found;
- char *temp = NULL;
+ char *temp;
/* we have to have a sysfs device for PLACE to work */
if (!sysfs_device)
return -ENODEV;
- found = 0;
strfieldcpy(path, sysfs_device->path);
temp = strrchr(path, '/');
dbg("search '%s' in '%s', path='%s'", dev->place, temp, path);
- if (strstr(temp, dev->place) != NULL) {
- found = 1;
- } else {
- *temp = 0x00;
- temp = strrchr(path, '/');
- dbg("search '%s' in '%s', path='%s'", dev->place, temp, path);
- if (strstr(temp, dev->place) != NULL)
- found = 1;
- }
- if (!found) {
- dbg("place doesn't match");
- return -ENODEV;
- }
+ if (strstr(temp, dev->place) != NULL)
+ return 0;
- return 0;
+ /* try the parent */
+ temp[0] = '\0';
+ temp = strrchr(path, '/');
+ dbg("search '%s' in '%s', path='%s'", dev->place, temp, path);
+ if (strstr(temp, dev->place) == NULL)
+ return 0;
+
+ dbg("place doesn't match");
+ return -ENODEV;
}
static int match_rule(struct udevice *udev, struct config_device *dev,