1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-26 14:04:03 +03:00

[PATCH] determine device type in udev_init_device()

This commit is contained in:
kay.sievers@vrfy.org 2005-02-21 15:01:53 +01:00 committed by Greg KH
parent 9ed47a9f21
commit 2a9a19245b
3 changed files with 7 additions and 8 deletions

View File

@ -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)

9
udev.c
View File

@ -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");

View File

@ -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;