Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.1:Update
kdebase4-runtime
348d7cbf-kderuntime-nepomuk-47branch-regexp.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 348d7cbf-kderuntime-nepomuk-47branch-regexp.diff of Package kdebase4-runtime
commit 348d7cbf37e3e0cc638a8c6844f66efee131f6cf Author: Sebastian Trueg <trueg@kde.org> Date: Thu Oct 20 21:31:52 2011 +0200 Only convert file URLs in REGEX filters that appear at the beginning. diff --git a/nepomuk/services/storage/removablemediamodel.cpp b/nepomuk/services/storage/removablemediamodel.cpp index ebd83f1..836668e 100644 --- a/nepomuk/services/storage/removablemediamodel.cpp +++ b/nepomuk/services/storage/removablemediamodel.cpp @@ -270,6 +270,7 @@ QString Nepomuk::RemovableMediaModel::convertFileUrls(const QString &query) cons // is 0, 1, or 3 - nothing else int quoteCnt = 0; + int literalStartPos = 0; bool inRegEx = false; bool inRes = false; QChar quote; @@ -293,6 +294,7 @@ QString Nepomuk::RemovableMediaModel::convertFileUrls(const QString &query) cons newQuery.append(c); newQuery.append(c); } + literalStartPos = i+1; continue; } else if(c == quote) { @@ -379,12 +381,16 @@ QString Nepomuk::RemovableMediaModel::convertFileUrls(const QString &query) cons // else if(inRegEx && quoteCnt && c == 'f') { // peek forward to see if its a file URL - if(i+5 < query.length() && - query[i+1] == 'i' && - query[i+2] == 'l' && - query[i+3] == 'e' && - query[i+4] == ':' && - query[i+5] == '/') { + // file URLs in regexps only make sense if they appear at the beginning or following a '^' + if((i == literalStartPos || + (query[literalStartPos] == '^' && + i == literalStartPos+1)) && + i+5 < query.length() && + query[i+1] == 'i' && + query[i+2] == 'l' && + query[i+3] == 'e' && + query[i+4] == ':' && + query[i+5] == '/') { // find end of regex QString quoteEnd = quote; if(quoteCnt == 3) { diff --git a/nepomuk/services/storage/test/removablemediamodeltest.cpp b/nepomuk/services/storage/test/removablemediamodeltest.cpp index 3a4abee..c47c26d 100644 --- a/nepomuk/services/storage/test/removablemediamodeltest.cpp +++ b/nepomuk/services/storage/test/removablemediamodeltest.cpp @@ -164,6 +164,11 @@ void RemovableMediaModelTest::testConvertFileUrlsInQuery_data() QTest::newRow("queryWithConvertableRegex2") << QString::fromLatin1("select ?r where { ?r nie:url ?u . FILTER(REGEX(?u, '^file:///media/nfs/')) . }") << QString::fromLatin1("select ?r where { ?r nie:url ?u . FILTER(REGEX(?u, '^nfs://thehost/solid-path/')) . }"); + + QTest::newRow("queryWithNotReallyAFileUrl") + << QString::fromLatin1("select ?r where { ?r ?p ?u . FILTER(REGEX(?u, 'ffile:///media/nfs/')) . }") + << QString::fromLatin1("select ?r where { ?r ?p ?u . FILTER(REGEX(?u, 'ffile:///media/nfs/')) . }"); + // TODO: add queries that should NOT be converted } void RemovableMediaModelTest::testConvertFileUrlsInQuery()
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor