X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_lib.c;h=381492db01feb4bf51f0cf84f7c5250b20759fac;hb=6763c8a5a1d954c6453c2b01e331ae95b1bcfe2a;hp=e9c16c863a3407ac0705923c375b8264441b3f39;hpb=4a539daf1e5daa17b52239478d97f8dc7a6506b6;p=elogind.git diff --git a/udev_lib.c b/udev_lib.c index e9c16c863..381492db0 100644 --- a/udev_lib.c +++ b/udev_lib.c @@ -58,15 +58,15 @@ char *get_devpath(void) return devpath; } -char *get_devnode(void) +char *get_devname(void) { - char *devnode; + char *devname; - devnode = getenv("DEVNODE"); - if (devnode != NULL && strlen(devnode) > NAME_SIZE) - devnode[NAME_SIZE-1] = '\0'; + devname = getenv("DEVNAME"); + if (devname != NULL && strlen(devname) > NAME_SIZE) + devname[NAME_SIZE-1] = '\0'; - return devnode; + return devname; } char *get_seqnum(void) @@ -86,17 +86,28 @@ char *get_subsystem(char *subsystem) return subsystem; } +#define BLOCK_PATH "/block/" +#define CLASS_PATH "/class/" +#define NET_PATH "/class/net/" + char get_device_type(const char *path, const char *subsystem) { - if (strcmp(subsystem, "block") == 0 || - strstr(path, "/block/") != NULL) + if (strcmp(subsystem, "block") == 0) + return 'b'; + + if (strcmp(subsystem, "net") == 0) + return 'n'; + + if (strncmp(path, BLOCK_PATH, strlen(BLOCK_PATH)) == 0 && + strlen(path) > strlen(BLOCK_PATH)) return 'b'; - if (strcmp(subsystem, "net") == 0 || - strstr(path, "/class/net/") != NULL) + if (strncmp(path, NET_PATH, strlen(NET_PATH)) == 0 && + strlen(path) > strlen(NET_PATH)) return 'n'; - if (strstr(path, "/class/") != NULL) + if (strncmp(path, CLASS_PATH, strlen(CLASS_PATH)) == 0 && + strlen(path) > strlen(CLASS_PATH)) return 'c'; return '\0';