[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [dolphin] src/views: [ViewProperties] Check part of home first before doing file system stuff
From:       Kai Uwe Broulik <null () kde ! org>
Date:       2018-09-17 14:03:30
Message-ID: E1g1u7e-0002aE-Dk () code ! kde ! org
[Download RAW message or body]

Git commit 7ec783e7493a3c6a8d40a01d49e930b7ae5520f8 by Kai Uwe Broulik.
Committed on 17/09/2018 at 14:02.
Pushed by broulik into branch 'master'.

[ViewProperties] Check part of home first before doing file system stuff

There's no point in creating a QFileInfo instance and checking for file properties if \
we're not going to do anything with it when not inside home.

Differential Revision: https://phabricator.kde.org/D15237

M  +13   -11   src/views/viewproperties.cpp

https://commits.kde.org/dolphin/7ec783e7493a3c6a8d40a01d49e930b7ae5520f8

diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp
index e5d636cd1e..d7c6abd65e 100644
--- a/src/views/viewproperties.cpp
+++ b/src/views/viewproperties.cpp
@@ -63,17 +63,19 @@ ViewProperties::ViewProperties(const QUrl& url) :
         useDetailsViewWithPath = true;
     } else if (url.isLocalFile()) {
         m_filePath = url.toLocalFile();
-        const QFileInfo dirInfo(m_filePath);
-        const QFileInfo fileInfo(m_filePath + QDir::separator() + \
                ViewPropertiesFileName);
-        // Check if the directory is writable and check if the ".directory" file \
                exists and
-        // is read- and writable.
-        if (!dirInfo.isWritable()
-                || (fileInfo.exists() && !(fileInfo.isReadable() && \
                fileInfo.isWritable()))
-                || !isPartOfHome(m_filePath)) {
-#ifdef Q_OS_WIN
-			// m_filePath probably begins with C:/ - the colon is not a valid character for \
                paths though
-			m_filePath =  QDir::separator() + m_filePath.remove(QLatin1Char(':'));
-#endif
+
+        bool useDestinationDir = !isPartOfHome(m_filePath);
+        if (!useDestinationDir) {
+            const QFileInfo dirInfo(m_filePath);
+            const QFileInfo fileInfo(m_filePath + QDir::separator() + \
ViewPropertiesFileName); +            useDestinationDir = !dirInfo.isWritable() || \
(dirInfo.size() > 0 && fileInfo.exists() && !(fileInfo.isReadable() && \
fileInfo.isWritable())); +        }
+
+        if (useDestinationDir) {
+    #ifdef Q_OS_WIN
+            // m_filePath probably begins with C:/ - the colon is not a valid \
character for paths though +            m_filePath =  QDir::separator() + \
m_filePath.remove(QLatin1Char(':')); +    #endif
             m_filePath = destinationDir(QStringLiteral("local")) + m_filePath;
         }
     } else {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic