X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=device.c;fp=device.c;h=39375a4258282110a5878b49147809fc9dbdc639;hb=6326a423e7d3df2062bf29a4e9710aeecac89411;hp=500cd23e2718c7e46ac3b3555330665ebc1f26c0;hpb=d2b9fd2bb971b3b7a23acdfa1748d6810629c94c;p=elogind.git diff --git a/device.c b/device.c index 500cd23e2..39375a425 100644 --- a/device.c +++ b/device.c @@ -137,6 +137,28 @@ static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) { return 0; } +static bool devnode_is_api(const char *node) { + unsigned i; + + static const char * const table[] = { + "/dev/null", + "/dev/zero", + "/dev/urandom", + "/dev/random", + "/dev/port", + "/dev/oldmem", + "/dev/full", + "/dev/kmsg", + "/dev/mem" + }; + + for (i = 0; i < ELEMENTSOF(table); i++) + if (streq(table[i], node)) + return true; + + return false; +} + static int device_process_new_device(Manager *m, struct udev_device *dev, bool update_state) { const char *dn, *names, *wants, *sysfs, *expose, *model; Unit *u = NULL; @@ -168,7 +190,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev, bool u if (!b) return 0; } else - if (!dn && !names && !wants) + if ((!dn || devnode_is_api(dn)) && !names && !wants) return 0; /* Ok, seems kinda interesting. Now, let's see if this one