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

List:       kde-commits
Subject:    KDE/kdelibs/kioslave/file
From:       Christian Ehrlicher <Ch.Ehrlicher () gmx ! de>
Date:       2009-02-15 16:14:30
Message-ID: 1234714470.648841.6189.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 926538 by chehrlic:

move KFileProtocol::stat to platform specific part. I don't like it but I'm unsure \
what else will break when I use createUDSEntry() from file_win.cpp for unix. Maybe \
others can take a look and convert createUDSEntry() for unix. + one small fix - \
KMountPoint::findByPath() takes a QString, not a QByteArray

 M  +1 -47     file.cpp  
 M  +42 -0     file_unix.cpp  
 M  +69 -40    file_win.cpp  


--- trunk/KDE/kdelibs/kioslave/file/file.cpp #926537:926538
@@ -721,7 +721,7 @@
         if (::chmod(_dest_orig.data(), _mode) != 0)
         {
             // couldn't chmod. Eat the error if the filesystem apparently doesn't \
                support it.
-            KMountPoint::Ptr mp = \
KMountPoint::currentMountPoints().findByPath(_dest_orig); +            \
KMountPoint::Ptr mp = KMountPoint::currentMountPoints().findByPath(dest_orig);  if \
                (mp && mp->testFileSystemFlag(KMountPoint::SupportsChmod))
                  warning( i18n( "Could not change permissions for\n%1" ,  dest_orig \
) );  }
@@ -850,52 +850,6 @@
     return true;
 }
 
-void FileProtocol::stat( const KUrl & url )
-{
-    if (!url.isLocalFile()) {
-        KUrl redir(url);
-	redir.setProtocol(config()->readEntry("DefaultRemoteProtocol", "smb"));
-	redirection(redir);
-	kDebug(7101) << "redirecting to " << redir.url();
-	finished();
-	return;
-    }
-
-    /* directories may not have a slash at the end if
-     * we want to stat() them; it requires that we
-     * change into it .. which may not be allowed
-     * stat("/is/unaccessible")  -> rwx------
-     * stat("/is/unaccessible/") -> EPERM            H.Z.
-     * This is the reason for the -1
-     */
-#ifdef Q_WS_WIN
-    QByteArray _path( QFile::encodeName(url.toLocalFile()) );
-#else
-    QByteArray _path( QFile::encodeName(url.path(KUrl::RemoveTrailingSlash)));
-#endif
-    QString sDetails = metaData(QLatin1String("details"));
-    int details = sDetails.isEmpty() ? 2 : sDetails.toInt();
-    kDebug(7101) << "FileProtocol::stat details=" << details;
-
-    UDSEntry entry;
-    if ( !createUDSEntry( url.fileName(), _path, entry, details, true /*with acls*/ \
                ) )
-    {
-        error( KIO::ERR_DOES_NOT_EXIST, _path );
-        return;
-    }
-#if 0
-///////// debug code
-    MetaData::iterator it1 = mOutgoingMetaData.begin();
-    for ( ; it1 != mOutgoingMetaData.end(); it1++ ) {
-        kDebug(7101) << it1.key() << " = " << it1.data();
-    }
-/////////
-#endif
-    statEntry( entry );
-
-    finished();
-}
-
 /*
 void FileProtocol::testDir( const QString& path )
 {
--- trunk/KDE/kdelibs/kioslave/file/file_unix.cpp #926537:926538
@@ -571,3 +571,45 @@
     } else
         finished();
 }
+
+void FileProtocol::stat( const KUrl & url )
+{
+    if (!url.isLocalFile()) {
+        KUrl redir(url);
+	redir.setProtocol(config()->readEntry("DefaultRemoteProtocol", "smb"));
+	redirection(redir);
+	kDebug(7101) << "redirecting to " << redir.url();
+	finished();
+	return;
+    }
+
+    /* directories may not have a slash at the end if
+     * we want to stat() them; it requires that we
+     * change into it .. which may not be allowed
+     * stat("/is/unaccessible")  -> rwx------
+     * stat("/is/unaccessible/") -> EPERM            H.Z.
+     * This is the reason for the -1
+     */
+    QByteArray _path( QFile::encodeName(url.path(KUrl::RemoveTrailingSlash)));
+    QString sDetails = metaData(QLatin1String("details"));
+    int details = sDetails.isEmpty() ? 2 : sDetails.toInt();
+    kDebug(7101) << "FileProtocol::stat details=" << details;
+
+    UDSEntry entry;
+    if ( !createUDSEntry( url.fileName(), _path, entry, details, true /*with acls*/ \
) ) +    {
+        error( KIO::ERR_DOES_NOT_EXIST, _path );
+        return;
+    }
+#if 0
+///////// debug code
+    MetaData::iterator it1 = mOutgoingMetaData.begin();
+    for ( ; it1 != mOutgoingMetaData.end(); it1++ ) {
+        kDebug(7101) << it1.key() << " = " << it1.data();
+    }
+/////////
+#endif
+    statEntry( entry );
+
+    finished();
+}
--- trunk/KDE/kdelibs/kioslave/file/file_win.cpp #926537:926538
@@ -56,6 +56,52 @@
     return PROGRESS_CONTINUE;
 }
 
+static UDSEntry createUDSEntryWin( const QFileInfo &fileInfo )
+{
+    UDSEntry entry;
+
+    entry.insert( KIO::UDSEntry::UDS_NAME, fileInfo.fileName() );
+    if( fileInfo.isSymLink() ) {
+        entry.insert( KIO::UDSEntry::UDS_TARGET_URL, fileInfo.symLinkTarget() );
+/* TODO - or not useful on windows?
+        if ( details > 1 ) {
+            // It is a link pointing to nowhere
+            type = S_IFMT - 1;
+            access = S_IRWXU | S_IRWXG | S_IRWXO;
+
+            entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, type );
+            entry.insert( KIO::UDSEntry::UDS_ACCESS, access );
+            entry.insert( KIO::UDSEntry::UDS_SIZE, 0LL );
+            goto notype;
+
+        }
+*/
+    }
+    int type = S_IFREG;
+    int access = 0;
+    if( fileInfo.isDir() )
+        type = S_IFDIR;
+    else if( fileInfo.isSymLink() )
+        type = S_IFLNK;
+    if( fileInfo.isReadable() )
+        access |= S_IRUSR;
+    if( fileInfo.isWritable() )
+        access |= S_IWUSR;
+    if( fileInfo.isExecutable() )
+        access |= S_IXUSR;
+
+    entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, type );
+    entry.insert( KIO::UDSEntry::UDS_ACCESS, access );
+    entry.insert( KIO::UDSEntry::UDS_SIZE, fileInfo.size() );
+
+    entry.insert( KIO::UDSEntry::UDS_MODIFICATION_TIME, \
fileInfo.lastModified().toTime_t() ); +    entry.insert( KIO::UDSEntry::UDS_USER, \
fileInfo.owner() ); +    entry.insert( KIO::UDSEntry::UDS_GROUP, fileInfo.group() );
+    entry.insert( KIO::UDSEntry::UDS_ACCESS_TIME, fileInfo.lastRead().toTime_t() );
+
+    return entry;
+}
+
 void FileProtocol::copy( const KUrl &src, const KUrl &dest,
                          int _mode, JobFlags _flags )
 {
@@ -150,47 +196,8 @@
     UDSEntry entry;
     while( it.hasNext() ) {
         it.next();
-        QFileInfo fileInfo = it.fileInfo();
+        UDSEntry entry = createUDSEntryWin( it.fileInfo() );
 
-        entry.insert( KIO::UDSEntry::UDS_NAME, it.fileName() );
-        if( fileInfo.isSymLink() ) {
-            entry.insert( KIO::UDSEntry::UDS_TARGET_URL, fileInfo.symLinkTarget() );
-/* TODO - or not useful on windows?
-            if ( details > 1 ) {
-                // It is a link pointing to nowhere
-                type = S_IFMT - 1;
-                access = S_IRWXU | S_IRWXG | S_IRWXO;
-
-                entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, type );
-                entry.insert( KIO::UDSEntry::UDS_ACCESS, access );
-                entry.insert( KIO::UDSEntry::UDS_SIZE, 0LL );
-                goto notype;
-
-            }
-*/
-        }
-        int type = S_IFREG;
-        int access = 0;
-        if( fileInfo.isDir() )
-            type = S_IFDIR;
-        else if( fileInfo.isSymLink() )
-            type = S_IFLNK;
-        if( fileInfo.isReadable() )
-            access |= S_IRUSR;
-        if( fileInfo.isWritable() )
-            access |= S_IWUSR;
-        if( fileInfo.isExecutable() )
-            access |= S_IXUSR;
-
-        entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, type );
-        entry.insert( KIO::UDSEntry::UDS_ACCESS, access );
-        entry.insert( KIO::UDSEntry::UDS_SIZE, fileInfo.size() );
-
-        entry.insert( KIO::UDSEntry::UDS_MODIFICATION_TIME, \
                fileInfo.lastModified().toTime_t() );
-        entry.insert( KIO::UDSEntry::UDS_USER, fileInfo.owner() );
-        entry.insert( KIO::UDSEntry::UDS_GROUP, fileInfo.group() );
-        entry.insert( KIO::UDSEntry::UDS_ACCESS_TIME, fileInfo.lastRead().toTime_t() \
                );
-
         listEntry( entry, false );
         entry.clear();
     }
@@ -312,3 +319,25 @@
 {
     error( KIO::ERR_CANNOT_CHOWN, url.toLocalFile() );
 }
+
+void FileProtocol::stat( const KUrl & url )
+{
+    if (!url.isLocalFile()) {
+        KUrl redir(url);
+        redir.setProtocol(config()->readEntry("DefaultRemoteProtocol", "smb"));
+        redirection(redir);
+        kDebug(7101) << "redirecting to " << redir.url();
+        finished();
+        return;
+    }
+
+    const QString sDetails = metaData(QLatin1String("details"));
+    int details = sDetails.isEmpty() ? 2 : sDetails.toInt();
+    kDebug(7101) << "FileProtocol::stat details=" << details;
+
+    UDSEntry entry = createUDSEntryWin( QFileInfo(url.toLocalFile()) );
+
+    statEntry( entry );
+
+    finished();
+}


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

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