Revert "Make QFile::open fail when using an invalid file name"
This reverts commit 346cd79192
. The bug
report was incorrect, since the suggested file name is actually valid,
it just happens to name an Alternate Data Stream (ADS) "20:803Z.txt" in
file "testLog-03".
[ChangeLog][QtCore][QFile] Reverted an incorrect change from Qt 5.9.0
that forbade the creation and access to Alternate Data Streams on NTFS
on Windows. This means that file names containing a colon (':') are
allowed again, but note that they are not regular files.
Task-number: QTBUG-57023
Change-Id: I81480fdb578d4d43b3fcfffd14d4f2147e8a0ade
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
This commit is contained in:
parent
5303225aef
commit
7c45c6a3c4
@ -108,20 +108,6 @@ bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
|
||||
{
|
||||
Q_Q(QFSFileEngine);
|
||||
|
||||
// Check if the file name is valid:
|
||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#naming_conventions
|
||||
const QString fileName = fileEntry.fileName();
|
||||
for (QString::const_iterator it = fileName.constBegin(), end = fileName.constEnd();
|
||||
it != end; ++it) {
|
||||
const QChar c = *it;
|
||||
if (c == QLatin1Char('<') || c == QLatin1Char('>') || c == QLatin1Char(':') ||
|
||||
c == QLatin1Char('\"') || c == QLatin1Char('/') || c == QLatin1Char('\\') ||
|
||||
c == QLatin1Char('|') || c == QLatin1Char('?') || c == QLatin1Char('*')) {
|
||||
q->setError(QFile::OpenError, QStringLiteral("Invalid file name"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// All files are opened in share mode (both read and write).
|
||||
DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
|
||||
|
||||
|
@ -1155,7 +1155,6 @@ void tst_QFile::invalidFile_data()
|
||||
#else
|
||||
#if !defined(Q_OS_WINRT)
|
||||
QTest::newRow( "colon2" ) << invalidDriveLetter() + QString::fromLatin1(":ail:invalid");
|
||||
QTest::newRow( "date" ) << QString( "testLog-03:20.803Z.txt" );
|
||||
#endif
|
||||
QTest::newRow( "colon3" ) << QString( ":failinvalid" );
|
||||
QTest::newRow( "forwardslash" ) << QString( "fail/invalid" );
|
||||
|
Loading…
Reference in New Issue
Block a user