[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdelibs/kdecore/network
From: Waldo Bastian <bastian () kde ! org>
Date: 2005-03-03 12:27:12
Message-ID: 20050303122712.3F2A91751E () office ! kde ! org
[Download RAW message or body]
CVS commit by waba:
Make IDN support configurable on a per TLD basis.
M +23 -4 kresolver.cpp 1.44
M +2 -0 kresolver.h 1.24
--- kdelibs/kdecore/network/kresolver.cpp #1.43:1.44
@@ -284,4 +284,7 @@ void KResolverResults::virtual_hook( int
// class KResolver
+QStringList *KResolver::idnDomains = 0;
+
+
// default constructor
KResolver::KResolver(QObject *parent, const char *name)
@@ -868,9 +871,17 @@ static QCString ToASCII(const QString& l
static QString ToUnicode(const QString& label);
+static QStringList *KResolver_initIdnDomains()
+{
+ const char *kde_use_idn = getenv("KDE_USE_IDN");
+ if (!kde_use_idn)
+ kde_use_idn = "at:ch:cn:de:dk:kr:jp:li:no:se:tw";
+ return new QStringList(QStringList::split(':', QString::fromLatin1(kde_use_idn).lower()));
+}
+
// implement the ToAscii function, as described by IDN documents
QCString KResolver::domainToAscii(const QString& unicodeDomain)
{
- if (getenv("KDE_USE_IDN") == 0L)
- return unicodeDomain.latin1();
+ if (!idnDomains)
+ idnDomains = KResolver_initIdnDomains();
QCString retval;
@@ -882,4 +893,8 @@ QCString KResolver::domainToAscii(const
QStringList input = splitLabels(unicodeDomain);
+ // Do we allow IDN names for this TLD?
+ if (input.count() && !idnDomains->contains(input[input.count()-1].lower()))
+ return unicodeDomain.latin1(); // No IDN allowed for this TLD
+
// 3) decide whether to enforce the STD3 rules for chars < 0x7F
// we don't enforce
@@ -913,6 +928,6 @@ QString KResolver::domainToUnicode(const
if (asciiDomain.isEmpty())
return asciiDomain;
- if (getenv("KDE_USE_IDN") == 0L)
- return asciiDomain;;
+ if (!idnDomains)
+ idnDomains = KResolver_initIdnDomains();
QString retval;
@@ -926,4 +941,8 @@ QString KResolver::domainToUnicode(const
QStringList input = splitLabels(asciiDomain);
+ // Do we allow IDN names for this TLD?
+ if (input.count() && !idnDomains->contains(input[input.count()-1].lower()))
+ return asciiDomain; // No TLDs allowed
+
// 3) decide whether to enforce the STD3 rules for chars < 0x7F
// we don't enforce
--- kdelibs/kdecore/network/kresolver.h #1.23:1.24
@@ -927,4 +927,6 @@ private:
friend class KResolverResults;
friend class ::KNetwork::Internal::KResolverManager;
+
+ static QStringList *idnDomains;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic