if (!d->metaData.hasFlags(QFileSystemMetaData::LinkType))
QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::LinkType);
if (d->metaData.isLink()) {
- QFileSystemEntry entry = QFileSystemEngine::getLinkTarget(d->fileEntry, d->metaData);
- return entry.filePath();
+ return QFileSystemEngine::linkTarget(d->fileEntry, d->metaData);
}
return QString();
}
QFileSystemEntry fileEntry(fileName);
QFileSystemEngine::fillMetaData(fileEntry, metaData, QFileSystemMetaData::LinkType);
if (metaData.isLink()) {
- QFileSystemEntry entry = QFileSystemEngine::getLinkTarget(fileEntry, metaData);
- return entry.filePath();
+ return QFileSystemEngine::linkTarget(fileEntry, metaData);;
}
return QString();
}
break;
}
case FileName::LinkName:
- ret = QFileSystemEngine::getLinkTarget(fileEntry, metaData).filePath();
+ ret = QFileSystemEngine::linkTarget(fileEntry, metaData);
break;
case FileName::AbsoluteName:
case FileName::AbsolutePathName: {
class QFileSystemEngine
{
public:
- static QFileSystemEntry getLinkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data);
+ static QString linkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data);
static QFileSystemEntry canonicalName(const QFileSystemEntry &entry, QFileSystemMetaData &data);
static QFileSystemEntry absoluteName(const QFileSystemEntry &entry);
static QString resolveUserName(const QFileSystemEntry &entry, QFileSystemMetaData &data);
const uint QFileSystemMetaData::nobodyID = (uint) -2;
//static
-QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data)
+QString QFileSystemEngine::linkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data)
{
QByteArray lpath = link.nativeFilePath();
QSTACKARRAY(char, readlinkbuf, PATH_MAX);
ret = QDir::cleanPath(ret);
if (ret.size() > 1 && ret.endsWith(QLatin1Char('/')))
ret.chop(1);
- return QFileSystemEntry(ret);
+ return ret;
}
- return QFileSystemEntry();
+ return QString();
}
//static
char *ret = ::realpath(path.constData(), realpathbuf);
if (ret) {
data.entryFlags |= QFileSystemMetaData::ExistsAttribute;
- QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret));
+ QString canonicalPath = QDir::cleanPath(QFile::decodeName(ret));
return QFileSystemEntry(canonicalPath);
} else if (errno == ENOENT) { // file doesn't exist
data.entryFlags &= ~(QFileSystemMetaData::ExistsAttribute);