- util_strlcpy(path, oldname, sizeof(path));
- util_strlcat(path, "/", sizeof(path));
- util_strlcat(path, ent->d_name, sizeof(path));
-
- syslen = util_strlcpy(buf, udev_get_sys_path(udev), sizeof(buf));
- len = readlink(path, &buf[syslen], sizeof(buf)-syslen);
- if (len <= 0 || len >= (ssize_t)(sizeof(buf)-syslen)) {
- unlink(path);
+ s = device;
+ l = util_strpcpy(&s, sizeof(device), udev_get_sys_path(udev));
+ len = readlinkat(dirfd(dir), ent->d_name, s, l);
+ if (len <= 0 || len >= (ssize_t)l) {
+ unlinkat(dirfd(dir), ent->d_name, 0);