- snprintf(file_name, sizeof(file_name), "/sys/class/tty/%s", dev);
- count = readlink(file_name, file_name, sizeof(file_name));
- if (count <= 0 || count >= (int) sizeof(file_name)-1)
- RETURN_ERROR(SP_ERR_ARG, "Device not found.");
+ snprintf(link_name, sizeof(link_name), "/sys/class/tty/%s", dev);
+ if (lstat(link_name, &statbuf) == -1)
+ RETURN_ERROR(SP_ERR_ARG, "Device not found");
+ if (!S_ISLNK(statbuf.st_mode))
+ snprintf(link_name, sizeof(link_name), "/sys/class/tty/%s/device", dev);
+ count = readlink(link_name, file_name, sizeof(file_name));
+ if (count <= 0 || count >= (int)(sizeof(file_name) - 1))
+ RETURN_ERROR(SP_ERR_ARG, "Device not found");