- util_strlcpy(filename, path, sizeof(filename));
- util_strlcat(filename, "/", sizeof(filename));
- util_strlcat(filename, dent->d_name, sizeof(filename));
-
- syslen = util_strlcpy(syspath, udev_get_sys_path(udev_queue->udev), sizeof(syspath));
- len = readlink(filename, &syspath[syslen], sizeof(syspath)-syslen);
- if (len < 0 || len >= (ssize_t)(sizeof(syspath)-syslen))
+ s = syspath;
+ l = util_strpcpyl(&s, sizeof(syspath), udev_get_sys_path(udev_queue->udev), NULL);
+ len = readlinkat(dirfd(dir), dent->d_name, s, l);
+ if (len < 0 || (size_t)len >= l)