]> Some of my projects - localmylist.git/commitdiff
Check permissions for rename
authorAPTX <marek321@gmail.com>
Mon, 1 Apr 2013 13:35:11 +0000 (15:35 +0200)
committerAPTX <marek321@gmail.com>
Mon, 1 Apr 2013 13:35:11 +0000 (15:35 +0200)
localmylist/renamehandler.cpp

index a0b6c83b486ba51dfe45c2d63c5d68c13be54666..3e1b6b7c02e0eb6ec7b29cdab19c7fb4bd645ef5 100644 (file)
@@ -133,7 +133,32 @@ void RenameHandler::handleRename()
                        }
                }
 
-               // TODO check permissions
+               // TODO make sure these are the correct permissions
+               if (!QFileInfo(newFilePath).isWritable())
+               {
+                       fl.failedRename = true;
+                       db->setFileLocation(fl);
+                       db->log(tr("Rename: Failed to rename file <%1>. Destination directory <%2> is not writable.").arg(oldFile.canonicalFilePath()).arg(newFile.absolutePath()), 2);
+                       continue;
+               }
+
+               if (!QFileInfo(oldFile.absolutePath()).isWritable())
+               {
+                       fl.failedRename = true;
+                       db->setFileLocation(fl);
+                       db->log(tr("Rename: Failed to rename file <%1>. File directory is not writable.").arg(oldFile.canonicalFilePath()), 2);
+                       continue;
+               }
+
+#ifdef Q_OS_WIN
+               if (!oldFile.isWritable())
+               {
+                       fl.failedRename = true;
+                       db->setFileLocation(fl);
+                       db->log(tr("Rename: Failed to rename file <%1>. File is not writable.").arg(oldFile.canonicalFilePath()), 2);
+                       continue;
+               }
+#endif
 
                if (!QFile::rename(oldFile.canonicalFilePath(), newFileString))
                {