[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.3/kdelibs/nepomuk/core
From: Sebastian Trueg <sebastian () trueg ! de>
Date: 2009-09-28 9:41:05
Message-ID: 1254130865.304700.13184.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1028823 by trueg:
Backport: fixed handling of local file paths and symlinks
M +19 -35 resourcemanager.cpp
--- branches/KDE/4.3/kdelibs/nepomuk/core/resourcemanager.cpp #1028822:1028823
@@ -56,44 +56,40 @@
Nepomuk::ResourceData* Nepomuk::ResourceManagerPrivate::data( const QUrl& uri, const QUrl& type )
{
- if ( uri.isEmpty() ) {
+ QUrl url( uri );
+
+ if ( url.isEmpty() ) {
// return an invalid resource which may be activated by calling setProperty
- return new ResourceData( uri, QString(), type, this );
+ return new ResourceData( url, QString(), type, this );
}
// default to "file" scheme, i.e. we do not allow an empty scheme
- if ( uri.scheme().isEmpty() ) {
- QUrl fileUri( uri );
- fileUri.setScheme( "file" );
- return data( fileUri, type );
+ if ( url.scheme().isEmpty() ) {
+ url.setScheme( "file" );
}
// if scheme is file, try to follow a symlink
- if ( uri.scheme() == "file" ) {
- QFileInfo fileInfo( uri.toLocalFile() );
- if ( fileInfo.isSymLink() ) {
- QString linkTarget = fileInfo.canonicalFilePath();
- // linkTarget is empty for dangling symlinks
- if ( !linkTarget.isEmpty() ) {
- QUrl targetUri( linkTarget );
- targetUri.setScheme( "file" );
- return data( targetUri, type );
- }
+ if ( url.scheme() == "file" ) {
+ QFileInfo fileInfo( url.toLocalFile() );
+ QString linkTarget = fileInfo.canonicalFilePath();
+ // linkTarget is empty for dangling symlinks
+ if ( !linkTarget.isEmpty() ) {
+ url = QUrl::fromLocalFile( linkTarget );
}
}
- ResourceDataHash::iterator it = m_initializedData.find( uri.toString() );
+ ResourceDataHash::iterator it = m_initializedData.find( url.toString() );
//
// The uriOrId has no local representation yet -> create one
//
if( it == m_initializedData.end() ) {
-// kDebug() << "No existing ResourceData instance found for uri " << uri;
+// kDebug() << "No existing ResourceData instance found for uri " << url;
//
// The actual URI is already known here
//
- ResourceData* d = new ResourceData( uri, QString(), type, this );
- m_initializedData.insert( uri.toString(), d );
+ ResourceData* d = new ResourceData( url, QString(), type, this );
+ m_initializedData.insert( url.toString(), d );
return d;
}
@@ -112,21 +108,9 @@
return new ResourceData( QUrl(), QString(), type, this );
}
- // special case: files (only absolute paths for now)
- if ( uriOrId[0] == '/' ) {
- // try to follow a symlink
- QFileInfo fileInfo( uriOrId );
- if ( fileInfo.isSymLink() ) {
- QString linkTarget = fileInfo.canonicalFilePath();
- // linkTarget is empty for dangling symlinks, use given url for those
- if ( !linkTarget.isEmpty() ) {
- return data( linkTarget, type );
- }
- }
- ResourceDataHash::iterator it = m_initializedData.find( "file://" + uriOrId );
- if ( it != m_initializedData.end() ) {
- return *it;
- }
+ // special case: local files
+ if ( QFile::exists(uriOrId) ) {
+ return data( QUrl::fromLocalFile (uriOrId), type );
}
ResourceDataHash::iterator it = m_initializedData.find( uriOrId );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic