From: kay.sievers@vrfy.org Date: Mon, 21 Feb 2005 14:01:53 +0000 (+0100) Subject: [PATCH] determine device type in udev_init_device() X-Git-Tag: 054~11 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=2a9a19245bc5ac49e9f1e1f5d073c53f611fa9e2 [PATCH] determine device type in udev_init_device() --- diff --git a/namedev.c b/namedev.c index 0463d4df0..a36557443 100644 --- a/namedev.c +++ b/namedev.c @@ -201,7 +201,6 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, dbg("format=%c, string='%s', tail='%s'",c , string, tail); attr = get_format_attribute(&tail); - switch (c) { case 'p': if (strlen(udev->devpath) == 0) diff --git a/udev.c b/udev.c index 5dbade3c6..7854bc74d 100644 --- a/udev.c +++ b/udev.c @@ -152,18 +152,15 @@ int main(int argc, char *argv[], char *envp[]) /* older kernels passed the SUBSYSTEM only as argument */ if (!subsystem && argc == 2) subsystem = argv[1]; - udev_init_device(&udev, devpath, subsystem); if (!action) { dbg("no action"); goto hotplug; } - if (!subsystem) { dbg("no subsystem"); goto hotplug; } - if (!devpath) { dbg("no devpath"); goto hotplug; @@ -173,7 +170,9 @@ int main(int argc, char *argv[], char *envp[]) if (udev_log) setenv("UDEV_LOG", "1", 1); - if ((strncmp(devpath, "/block/", 7) == 0) || (strncmp(devpath, "/class/", 7) == 0)) { + udev_init_device(&udev, devpath, subsystem); + + if (udev.type == BLOCK || udev.type == CLASS || udev.type == NET) { if (strcmp(action, "add") == 0) { /* wait for sysfs and possibly add node */ dbg("udev add"); @@ -221,7 +220,7 @@ int main(int argc, char *argv[], char *envp[]) if (udev_dev_d) udev_multiplex_directory(&udev, DEVD_DIR, DEVD_SUFFIX); } - } else if ((strncmp(devpath, "/devices/", 9) == 0)) { + } else if (udev.type == PHYSDEV) { if (strcmp(action, "add") == 0) { /* wait for sysfs */ dbg("devices add"); diff --git a/udev_utils.c b/udev_utils.c index ea4aa25c9..c1e497626 100644 --- a/udev_utils.c +++ b/udev_utils.c @@ -60,6 +60,8 @@ int udev_init_device(struct udevice *udev, const char* devpath, const char *subs udev->type = NET; else if (strncmp(udev->devpath, "/class/", 7) == 0) udev->type = CLASS; + else if (strncmp(udev->devpath, "/devices/", 9) == 0) + udev->type = PHYSDEV; udev->mode = 0660; strcpy(udev->owner, "root"); @@ -293,8 +295,7 @@ static int name_list_add(struct list_head *name_list, const char *name, int sort } /* calls function for every file found in specified directory */ -int call_foreach_file(file_fnct_t fnct, const char *dirname, - const char *suffix, void *data) +int call_foreach_file(file_fnct_t fnct, const char *dirname, const char *suffix, void *data) { struct dirent *ent; DIR *dir;