[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