d()->m_linkTarget = fi.readLink();
#else
// Unfortunately Qt4 readLink always returns an absolute path, even if the link is relative
- char s[PATH_MAX+1];
- int len = readlink(QFile::encodeName(fi.absoluteFilePath()).constData(), s, PATH_MAX);
- if ( len>0 )
+ struct stat sb;
+ if (lstat(QFile::encodeName(fi.absoluteFilePath()).constData(), &sb) == -1)
{
- s[len] = '\0';
- d()->m_linkTarget = QFile::decodeName(s);
+ d()->m_linkTarget = fi.readLink();
}
else
{
- d()->m_linkTarget = fi.readLink();
+ char* s = (char*)malloc(sb.st_size + 1);
+ int len = readlink(QFile::encodeName(fi.absoluteFilePath()).constData(), s, PATH_MAX);
+ if ( len>0 )
+ {
+ s[len] = '\0';
+ d()->m_linkTarget = QFile::decodeName(s);
+ }
+ else
+ {
+ d()->m_linkTarget = fi.readLink();
+ }
}
#endif
}