[Pkg-owncloud-commits] [owncloud-client] 219/332: SocketAPI: Handle top sync folder correctly.

Sandro Knauß hefee-guest at moszumanska.debian.org
Thu Aug 14 21:07:02 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit f8bea55b100ffdafc3c9a56f70af7c9e5da35dcb
Author: Klaas Freitag <freitag at owncloud.com>
Date:   Thu Jul 17 19:27:12 2014 +0200

    SocketAPI: Handle top sync folder correctly.
---
 src/mirall/socketapi.cpp | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/mirall/socketapi.cpp b/src/mirall/socketapi.cpp
index 757a1ff..e34f86d 100644
--- a/src/mirall/socketapi.cpp
+++ b/src/mirall/socketapi.cpp
@@ -107,14 +107,18 @@ SyncFileStatus fileStatus(Folder *folder, const QString& fileName )
 {
     // FIXME: Find a way for STATUS_ERROR
 
-    QString file = fileName;
-    if( folder->path() != QLatin1String("/") ) {
+    QString file = folder->path();
+
+    bool isSyncRootFolder = true;
+    if( fileName != QLatin1String("/") && !fileName.isEmpty() ) {
         file = folder->path() + fileName;
+        isSyncRootFolder = false;
     }
 
     QFileInfo fi(file);
 
     if( !fi.exists() ) {
+        qDebug() << "OO File " << file << " is not existing";
         return SyncFileStatus(SyncFileStatus::STATUS_STAT_ERROR);
     }
 
@@ -137,28 +141,30 @@ SyncFileStatus fileStatus(Folder *folder, const QString& fileName )
         return SyncFileStatus(SyncFileStatus::STATUS_IGNORE);
     }
 
+    // Problem: for the sync dir itself we do not have a record in the sync journal
+    // so the next check must not be used for the sync root folder.
     SyncJournalFileRecord rec = folder->journalDb()->getFileRecord(fileName);
-    if( !rec.isValid() ) {
+    if( !isSyncRootFolder && !rec.isValid() ) {
         return SyncFileStatus(SyncFileStatus::STATUS_NEW);
     }
 
-    SyncFileStatus stat(SyncFileStatus::STATUS_NONE);
+    SyncFileStatus status(SyncFileStatus::STATUS_NONE);
     if( type == CSYNC_FTW_TYPE_DIR ) {
         // compute recursive status of the directory
-        stat = recursiveFolderStatus( folder, fileName );
+        status = recursiveFolderStatus( folder, fileName );
     } else if(fi.lastModified() != rec._modtime ) {
         // file was locally modified.
-        stat.set(SyncFileStatus::STATUS_EVAL);
+        status.set(SyncFileStatus::STATUS_EVAL);
     } else {
-        stat.set(SyncFileStatus::STATUS_SYNC);
+        status.set(SyncFileStatus::STATUS_SYNC);
     }
 
     if (rec._remotePerm.contains("S")) {
         // FIXME!  that should be an additional flag
-       stat.setSharedWithMe(true);
+       status.setSharedWithMe(true);
     }
 
-    return stat;
+    return status;
 }
 
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list