- len = readlinkat(dirfd(dir), entry.d_name, target, sizeof(target));
- if (len <= 0 || len >= (int) sizeof(target)-1)
+ snprintf(buf, sizeof(buf), "/sys/class/tty/%s", entry.d_name);
+ if (lstat(buf, &statbuf) == -1)
+ continue;
+ if (!S_ISLNK(statbuf.st_mode))
+ snprintf(buf, sizeof(buf), "/sys/class/tty/%s/device", entry.d_name);
+ len = readlink(buf, target, sizeof(target));
+ if (len <= 0 || len >= (int)(sizeof(target) - 1))