diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-06 10:49:40 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-06 10:55:40 +0200 |
commit | a6b6e760ac2f019b9ca42847b9535207966811aa (patch) | |
tree | cdba2823eb3708f7a40593ff69b81d2be88515ea /src/corelib/io/qfilesystementry.cpp | |
parent | 48ba459580c9e4ce28dbb2c3ce433175148da5a1 (diff) | |
parent | 8ed47d961dc7e6f161030654d11cd330a542eadf (diff) |
Merge remote branch 'gerrit/master' into HEAD
Conflicts:
configure.exe
src/corelib/global/qglobal.h
src/gui/kernel/qplatformnativeinterface_qpa.h
src/gui/widgets/qlinecontrol.cpp
src/gui/widgets/qmenu_mac.mm
src/gui/widgets/qmenu_p.h
src/gui/widgets/qmenubar.cpp
src/gui/widgets/qmenubar_p.h
src/gui/widgets/widgets.pri
src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
src/plugins/platforms/wayland/qwaylandnativeinterface.h
src/src.pro
tests/auto/qdir/tst_qdir.cpp
tests/auto/qfileinfo/tst_qfileinfo.cpp
tests/auto/qsslsocket/tst_qsslsocket.cpp
tests/auto/qstring/tst_qstring.cpp
Change-Id: I64cf2cefa532ba87a92f632e3595ce6914183e9b
Diffstat (limited to 'src/corelib/io/qfilesystementry.cpp')
-rw-r--r-- | src/corelib/io/qfilesystementry.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/corelib/io/qfilesystementry.cpp b/src/corelib/io/qfilesystementry.cpp index bb7cb4e6ab..2f37542f66 100644 --- a/src/corelib/io/qfilesystementry.cpp +++ b/src/corelib/io/qfilesystementry.cpp @@ -380,4 +380,35 @@ void QFileSystemEntry::findFileNameSeparators() const } } +bool QFileSystemEntry::isClean() const +{ + resolveFilePath(); + int dots = 0; + bool dotok = true; // checking for ".." or "." starts to relative paths + bool slashok = true; + for (QString::const_iterator iter = m_filePath.constBegin(); iter != m_filePath.constEnd(); iter++) { + if (*iter == QLatin1Char('/')) { + if (dots == 1 || dots == 2) + return false; // path contains "./" or "../" + if (!slashok) + return false; // path contains "//" + dots = 0; + dotok = true; + slashok = false; + } else if (dotok) { + slashok = true; + if (*iter == QLatin1Char('.')) { + dots++; + if (dots > 2) + dotok = false; + } else { + //path element contains a character other than '.', it's clean + dots = 0; + dotok = false; + } + } + } + return (dots != 1 && dots != 2); // clean if path doesn't end in . or .. +} + QT_END_NAMESPACE |