[arch-commits] Commit in kdelibs/trunk (PKGBUILD kdelibs-nepomuk-unicode.diff)

Ronald van Haren ronald at archlinux.org
Sun Oct 9 13:02:38 EDT 2011


    Date: Sunday, October 9, 2011 @ 13:02:38
  Author: ronald
Revision: 140211

upgpkg: kdelibs 4.7.2-2

nepomuk unicode character fix FS#26351

Added:
  kdelibs/trunk/kdelibs-nepomuk-unicode.diff
Modified:
  kdelibs/trunk/PKGBUILD

------------------------------+
 PKGBUILD                     |   10 ++++--
 kdelibs-nepomuk-unicode.diff |   65 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-10-09 16:27:51 UTC (rev 140210)
+++ PKGBUILD	2011-10-09 17:02:38 UTC (rev 140211)
@@ -4,7 +4,7 @@
 
 pkgname=kdelibs
 pkgver=4.7.2
-pkgrel=1
+pkgrel=2
 pkgdesc="KDE Core Libraries"
 arch=('i686' 'x86_64')
 url='http://www.kde.org'
@@ -19,10 +19,12 @@
 replaces=('kdelibs-experimental')
 install='kdelibs.install'
 source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
-        'kde-applications-menu.patch' 'archlinux-menu.patch')
+        'kde-applications-menu.patch' 'archlinux-menu.patch'
+	'kdelibs-nepomuk-unicode.diff')
 sha1sums=('4b074633cbf69752fda96018514ee771efe8f18b'
           '86ee8c8660f19de8141ac99cd6943964d97a1ed7'
-          '63a850ab4196b9d06934f2b4a13acd9f7739bc67')
+          '63a850ab4196b9d06934f2b4a13acd9f7739bc67'
+          'e24aae17ef0d83085199ad7c7623afef9919b8ff')
 
 build() {
        cd "${srcdir}"/${pkgname}-${pkgver}
@@ -31,6 +33,8 @@
        patch -p1 -i "${srcdir}"/kde-applications-menu.patch
        # add Archlinux menu entry
        patch -p1 -i "${srcdir}"/archlinux-menu.patch
+       # nepomuk unicode character fix	
+       patch -p1 -i "${srcdir}"/kdelibs-nepomuk-unicode.diff
 
        cd "${srcdir}"
        mkdir build

Added: kdelibs-nepomuk-unicode.diff
===================================================================
--- kdelibs-nepomuk-unicode.diff	                        (rev 0)
+++ kdelibs-nepomuk-unicode.diff	2011-10-09 17:02:38 UTC (rev 140211)
@@ -0,0 +1,65 @@
+diff --git a/nepomuk/query/querybuilderdata_p.h b/nepomuk/query/querybuilderdata_p.h
+index 055482e..3880e13 100644
+--- a/nepomuk/query/querybuilderdata_p.h
++++ b/nepomuk/query/querybuilderdata_p.h
+@@ -32,6 +32,28 @@
+ #include "query_p.h"
+ #include "groupterm_p.h"
+ 
++namespace {
++/// A hack to avoid passing extended chars to the bif:search_excerpts method which cannot handle
++/// utf8 chars which use more than one char, ie. wide chars.
++/// Thus, we simply truncate each term at the first wide char.
++QStringList stripExtendedCharsHack(const QStringList& terms) {
++    QStringList newTerms;
++    foreach(const QString& term, terms) {
++        int i = 0;
++        while(i < term.length()) {
++            if(term[i].unicode() > 0x7f) {
++                break;
++            }
++            ++i;
++        }
++        if(i > 0) {
++            newTerms.append(term.left(i));
++        }
++    }
++    return newTerms;
++}
++}
++
+ namespace Nepomuk {
+     namespace Query {
+         class QueryBuilderData
+@@ -246,16 +268,23 @@ namespace Nepomuk {
+                     for( QHash<QString, QStringList>::const_iterator it = m_fullTextSearchTerms.constBegin();
+                          it != m_fullTextSearchTerms.constEnd(); ++it ) {
+                         const QString& varName = it.key();
+-                        const QStringList& terms = it.value();
+-                        // bif:search_excerpt wants a vector of all search terms
+-                        excerptParts
+-                                << QString::fromLatin1("bif:search_excerpt(bif:vector(bif:charset_recode('%1', '_WIDE_', 'UTF-8')), %2)")
+-                            .arg( terms.join(QLatin1String("','")),
+-                                  varName );
++                        const QStringList terms = stripExtendedCharsHack(it.value());
++                        if(terms.count()) {
++                            // bif:search_excerpt wants a vector of all search terms
++                            excerptParts
++                                    << QString::fromLatin1("bif:search_excerpt(bif:vector('%1'), %2)")
++                                       .arg( terms.join(QLatin1String("','")),
++                                             varName );
++                        }
+                     }
+ 
+-                    return QString::fromLatin1("(bif:concat(%1)) as ?_n_f_t_m_ex_")
+-                        .arg(excerptParts.join(QLatin1String(",")));
++                    if(excerptParts.count()) {
++                        return QString::fromLatin1("(bif:concat(%1)) as ?_n_f_t_m_ex_")
++                                .arg(excerptParts.join(QLatin1String(",")));
++                    }
++                    else {
++                        return QString();
++                    }
+                 }
+                 else {
+                     return QString();
\ No newline at end of file



More information about the arch-commits mailing list