Changeset View
Changeset View
Standalone View
Standalone View
stand/libsa/dev.c
Show First 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | devparse(struct devdesc **dev, const char *devspec, const char **path) | ||||
/* minimum length check */ | /* minimum length check */ | ||||
if (strlen(devspec) < 2) | if (strlen(devspec) < 2) | ||||
return (EINVAL); | return (EINVAL); | ||||
/* look for a device that matches */ | /* look for a device that matches */ | ||||
for (i = 0; devsw[i] != NULL; i++) { | for (i = 0; devsw[i] != NULL; i++) { | ||||
dv = devsw[i]; | dv = devsw[i]; | ||||
if (dv->dv_match != NULL) { | |||||
if (dv->dv_match(dv, devspec) != 0) | |||||
break; | |||||
} else { | |||||
if (!strncmp(devspec, dv->dv_name, strlen(dv->dv_name))) | if (!strncmp(devspec, dv->dv_name, strlen(dv->dv_name))) | ||||
break; | break; | ||||
} | |||||
} | } | ||||
if (devsw[i] == NULL) | if (devsw[i] == NULL) | ||||
return (ENOENT); | return (ENOENT); | ||||
idev = NULL; | idev = NULL; | ||||
err = 0; | err = 0; | ||||
if (dv->dv_parsedev) { | if (dv->dv_parsedev) { | ||||
err = dv->dv_parsedev(&idev, devspec, path); | err = dv->dv_parsedev(&idev, devspec, path); | ||||
} else { | } else { | ||||
Show All 31 Lines |