X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Fudevadm-trigger.c;h=e7940ef92d608a6274690e75f6d8cb1571645c69;hb=9921484458e0233e1aae868bfa8cc1481aa460a8;hp=f0535f5eb0c9477765e4dbd129f9e6413771dc81;hpb=17fcfb5972977b6a3aedca6ad2aa8d1fbfbc761d;p=elogind.git diff --git a/udev/udevadm-trigger.c b/udev/udevadm-trigger.c index f0535f5eb..e7940ef92 100644 --- a/udev/udevadm-trigger.c +++ b/udev/udevadm-trigger.c @@ -47,7 +47,7 @@ static struct sockaddr_un saddr; static socklen_t saddrlen; /* devices that should run last cause of their dependencies */ -static int delay_device(const char *devpath) +static int delay_device(const char *syspath) { static const char *delay_device_list[] = { "*/md*", @@ -57,7 +57,7 @@ static int delay_device(const char *devpath) int i; for (i = 0; delay_device_list[i] != NULL; i++) - if (fnmatch(delay_device_list[i], devpath, 0) == 0) + if (fnmatch(delay_device_list[i], syspath, 0) == 0) return 1; return 0; } @@ -65,7 +65,6 @@ static int delay_device(const char *devpath) static int device_list_insert(struct udev *udev, const char *path) { char filename[UTIL_PATH_SIZE]; - char devpath[UTIL_PATH_SIZE]; struct stat statbuf; dbg(udev, "add '%s'\n" , path); @@ -78,30 +77,28 @@ static int device_list_insert(struct udev *udev, const char *path) if (!(statbuf.st_mode & S_IWUSR)) return -1; - util_strlcpy(devpath, &path[strlen(udev_get_sys_path(udev))], sizeof(devpath)); - /* resolve possible link to real target */ - if (lstat(path, &statbuf) < 0) + util_strlcpy(filename, path, sizeof(filename)); + if (lstat(filename, &statbuf) < 0) return -1; if (S_ISLNK(statbuf.st_mode)) - if (util_resolve_sys_link(udev, devpath, sizeof(devpath)) != 0) + if (util_resolve_sys_link(udev, filename, sizeof(filename)) != 0) return -1; - name_list_add(udev, &device_list, devpath, 1); + name_list_add(udev, &device_list, filename, 1); return 0; } -static void trigger_uevent(struct udev *udev, const char *devpath, const char *action) +static void trigger_uevent(struct udev *udev, const char *syspath, const char *action) { char filename[UTIL_PATH_SIZE]; int fd; - util_strlcpy(filename, udev_get_sys_path(udev), sizeof(filename)); - util_strlcat(filename, devpath, sizeof(filename)); + util_strlcpy(filename, syspath, sizeof(filename)); util_strlcat(filename, "/uevent", sizeof(filename)); if (verbose) - printf("%s\n", devpath); + printf("%s\n", syspath); if (dry_run) return; @@ -118,7 +115,7 @@ static void trigger_uevent(struct udev *udev, const char *devpath, const char *a close(fd); } -static int pass_to_socket(struct udev *udev, const char *devpath, const char *action, const char *env) +static int pass_to_socket(struct udev *udev, const char *syspath, const char *action, const char *env) { struct udevice *udevice; struct name_entry *name_loop; @@ -129,6 +126,7 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac int fd; char link_target[UTIL_PATH_SIZE]; int len; + const char *devpath = &syspath[strlen(udev_get_sys_path(udev))]; int err = 0; if (verbose) @@ -193,8 +191,7 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac } /* add keys from device "uevent" file */ - util_strlcpy(path, udev_get_sys_path(udev), sizeof(path)); - util_strlcat(path, devpath, sizeof(path)); + util_strlcpy(path, syspath, sizeof(path)); util_strlcat(path, "/uevent", sizeof(path)); fd = open(path, O_RDONLY); if (fd >= 0) {