From 727c76a96ad0c6c99ca80ce9e00a49bdbc416720 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 31 Oct 2011 10:54:11 +0100 Subject: qdoc3: Replace %REPLACEME% with the correct path Task-number: QTBUG-22427 --- tools/qdoc3/htmlgenerator.cpp | 8 ++++++-- tools/qdoc3/htmlgenerator.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 85ce9ac..923d523 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -217,6 +217,10 @@ void HtmlGenerator::initializeGenerator(const Config &config) headerStyles = config.getString(HtmlGenerator::format() + Config::dot + CONFIG_HEADERSTYLES); + + QString prefix = CONFIG_QHP + Config::dot + "Qt" + Config::dot; + manifestDir = "qthelp://" + config.getString(prefix + "namespace"); + manifestDir += "/" + config.getString(prefix + "virtualFolder") + "/"; } void HtmlGenerator::terminateGenerator() @@ -4398,7 +4402,7 @@ void HtmlGenerator::generateManifestFile(QString manifest, QString element) writer.writeStartElement(element); writer.writeAttribute("name", en->title()); //QString docUrl = projectUrl + "/" + en->fileBase() + ".html"; - QString docUrl = "%REPLACEME%/" + en->fileBase() + ".html"; + QString docUrl = manifestDir + en->fileBase() + ".html"; writer.writeAttribute("docUrl", docUrl); foreach (const Node* child, en->childNodes()) { if (child->subType() == Node::File) { @@ -4412,7 +4416,7 @@ void HtmlGenerator::generateManifestFile(QString manifest, QString element) } } //writer.writeAttribute("imageUrl", projectUrl + "/" + en->imageFileName()); - writer.writeAttribute("imageUrl", "%REPLACEME%/" + en->imageFileName()); + writer.writeAttribute("imageUrl", manifestDir + en->imageFileName()); writer.writeStartElement("description"); Text brief = en->doc().briefText(); if (!brief.isEmpty()) diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h index 62a7f605..baf7c30 100644 --- a/tools/qdoc3/htmlgenerator.h +++ b/tools/qdoc3/htmlgenerator.h @@ -274,6 +274,7 @@ class HtmlGenerator : public PageGenerator QString projectDescription; QString projectUrl; QString navigationLinks; + QString manifestDir; QStringList stylesheets; QStringList customHeadElements; const Tree *myTree; -- cgit v0.12 From c0b59df7488281598d750fe6dcf69d578bc81ff4 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:09 +0100 Subject: Fix for QVector::toList - code example documentation. Code example in the documentation used QString values in QVector. Task-number: QTBUG-21067 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/snippets/code/src_corelib_tools_qvector.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/snippets/code/src_corelib_tools_qvector.cpp b/doc/src/snippets/code/src_corelib_tools_qvector.cpp index fc46d91..fc1a7f7 100644 --- a/doc/src/snippets/code/src_corelib_tools_qvector.cpp +++ b/doc/src/snippets/code/src_corelib_tools_qvector.cpp @@ -148,10 +148,10 @@ vector.lastIndexOf("X"); // returns -1 //! [14] -QVector vect; +QVector vect; vect << "red" << "green" << "blue" << "black"; -QList list = vect.toList(); +QList list = vect.toList(); // list: ["red", "green", "blue", "black"] //! [14] -- cgit v0.12 From 257824bc7b2416e0b66d98423e25525da9141d1f Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Tue, 1 Nov 2011 13:51:22 +0100 Subject: Fix QFont related compilation errors on Mac OSX Carbon Task-number: QTBUG-22318 Merge-request: 1434 Reviewed-by: Jiang Jiang --- src/gui/text/qfontdatabase_mac.cpp | 4 ++-- src/gui/text/qfontengine_mac.mm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/text/qfontdatabase_mac.cpp b/src/gui/text/qfontdatabase_mac.cpp index fc8247d..9a8e8af 100644 --- a/src/gui/text/qfontdatabase_mac.cpp +++ b/src/gui/text/qfontdatabase_mac.cpp @@ -251,7 +251,7 @@ static inline float weightToFloat(unsigned int weight) return (weight - 50) / 100.0; } -static QFontEngine *loadFromDatabase(const QFontDef &req, const QFontPrivate *d) +static QFontEngine *loadFromDatabase(QFontDef &req, const QFontPrivate *d) { #if defined(QT_MAC_USE_COCOA) QCFString fontName = NULL; @@ -302,7 +302,7 @@ found: QCFString actualName; if (ATSFontFamilyGetName(familyRef, kATSOptionFlagsDefault, &actualName) == noErr) req.family = actualName; - return new QFontEngineMacMulti(familyRef, req, fontDef, d->kerning); + return new QFontEngineMacMulti(familyRef, fontRef, req, d->kerning); } #endif return NULL; diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm index 6186b2f..14ded69 100644 --- a/src/gui/text/qfontengine_mac.mm +++ b/src/gui/text/qfontengine_mac.mm @@ -369,7 +369,7 @@ int QFontEngineMacMulti::fontIndexForFontID(ATSUFontID id) const bool QFontEngineMacMulti::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const { - return stringToCMap(str, len, glyphs, nglyphs, flags, /*logClusters=*/0, /*charAttributes=*/0); + return stringToCMap(str, len, glyphs, nglyphs, flags, /*logClusters=*/0, /*charAttributes=*/0, /*si=*/0); } bool QFontEngineMacMulti::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags, -- cgit v0.12 From cb7ec7c0a6bca8a49809fbbcf6082e34184d8f88 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:09 +0100 Subject: Fix multiple typos in documentation. Link typo in the forum nokia icon article. Typo in the Symbian qt introduction document. Typos in the Diagram Scene example documentation. The link url was ending with a slash character in the icon article. Slash characted removed. In the symbian introduction doc there was a missing "p" character in the environment variables listing (QT_SIS_OPTIONS). There was 6 typos in the Diagram Scene example documentation. Task-numbers: QTBUG-13983, QTBUG-11820, QTBUG-14732 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/examples/diagramscene.qdoc | 12 ++++++------ doc/src/howtos/appicon.qdoc | 2 +- doc/src/platforms/symbian-introduction.qdoc | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/src/examples/diagramscene.qdoc b/doc/src/examples/diagramscene.qdoc index c7b4bfe..0518a33 100644 --- a/doc/src/examples/diagramscene.qdoc +++ b/doc/src/examples/diagramscene.qdoc @@ -149,11 +149,11 @@ Example}{application example} if you need a high-level introduction to actions. - The is the \c createMenus() function: + Here is the \c createMenus() function: \snippet examples/graphicsview/diagramscene/mainwindow.cpp 24 - We create the three menus' of the example. + We create the three menus of the example. The \c createToolbars() function sets up the examples tool bars. The three \l{QToolButton}s in the \c colorToolBar, the \c @@ -199,7 +199,7 @@ each button; we store the diagram's type, i.e., the DiagramItem::DiagramType enum. We use the stored diagram type when we create new diagram items for the scene. The widgets created - with this function is used in the tool box. + with this function are used in the tool box. Here is the \c createColorMenu() function: @@ -443,7 +443,7 @@ In the \c DiagramScene a mouse click can give three different actions: the item under the mouse can be moved, an item may be - inserted, or an arrow may be connected between to diagram items. + inserted, or an arrow may be connected between two diagram items. Which action a mouse click has depends on the mode, given by the Mode enum, the scene is in. The mode is set with the \c setMode() function. @@ -456,7 +456,7 @@ inserted is set with the \c setItemType() slot. The \c MainWindow and \c DiagramScene share responsibility for - the examples functionality. \c MainWindow handles the following + the example's functionality. \c MainWindow handles the following tasks: the deletion of items, text, and arrows; moving diagram items to the back and front; and setting the scale of the scene. @@ -624,7 +624,7 @@ \snippet examples/graphicsview/diagramscene/diagramitem.cpp 0 - In the constructor we create the items polygon according to + In the constructor we create the item's polygon according to \a diagramType. \l{QGraphicsItem}s are not movable or selectable by default, so we must set these properties. diff --git a/doc/src/howtos/appicon.qdoc b/doc/src/howtos/appicon.qdoc index 8e7601f..2879b05 100644 --- a/doc/src/howtos/appicon.qdoc +++ b/doc/src/howtos/appicon.qdoc @@ -205,7 +205,7 @@ In order to set the application icon for Symbian platform applications, you need an SVG-T icon. For information on how to create SVG-T compliant icons, please refer to - \l{http://wiki.forum.nokia.com/index.php/How_to_create_application_icon(SVG)_in_S60_3rd_edition/} + \l{http://wiki.forum.nokia.com/index.php/How_to_create_application_icon(SVG)_in_S60_3rd_edition} Once the icon is available in the correct format and assuming you are using \c qmake to generate your makefiles, you only need to add a single diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc index bacdbc8..f6979ef 100644 --- a/doc/src/platforms/symbian-introduction.qdoc +++ b/doc/src/platforms/symbian-introduction.qdoc @@ -205,7 +205,7 @@ \table \row \o \c QT_SIS_OPTIONS \o Options accepted by \c .sis creation. See \l{Supported options for QT_SIS_OPTIONS}{Supported options} - below. By default no otions are given. + below. By default no options are given. \row \o \c QT_SIS_TARGET \o Target for which \c .sis file is created. Accepted values are build targets listed in previous table. By default last build target. -- cgit v0.12 From c4cd84b3cccab731a0ff54e79ae0a5800b28b2a3 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:10 +0100 Subject: Documentation error in SSL document The order of setting environment variable OPENSSL_LIBS and configure was wrong. OPENSSL_LIBS is now instructed to be set first before configure. Task-number: QTBUG-14521 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/network-programming/ssl.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/network-programming/ssl.qdoc b/doc/src/network-programming/ssl.qdoc index 0bbcd8a..ab84a29 100644 --- a/doc/src/network-programming/ssl.qdoc +++ b/doc/src/network-programming/ssl.qdoc @@ -58,7 +58,7 @@ system: \code - ./configure -openssl-linked OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' + OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto' ./configure -openssl-linked \endcode To disable SSL support in a Qt build, configure Qt with the \c{-no-openssl} -- cgit v0.12 From f0c52aaa9cbb8688b2880faf61c4d589d17bc3cb Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:11 +0100 Subject: Qmake project file docs lacked information. The qmake project files documentation lacked information about "*="-operator usage. Added couple of links pointing to the qmake advanced usage - page where "*="-usage is explained. Task-number: QTBUG-9675 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/development/qmake-manual.qdoc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc index 0f85469..eabf2b9 100644 --- a/doc/src/development/qmake-manual.qdoc +++ b/doc/src/development/qmake-manual.qdoc @@ -438,7 +438,10 @@ Note, that you must use "+=", not "=", or \l{qmake Manual#qmake}{\c qmake} will not be able to use Qt's configuration to determine the settings - needed for your project. + needed for your project. More information about operators can be found in the + \l{qmake Advanced Usage#Operators} + {Operators} section of the \l{qmake Advanced Usage} + chapter. \section1 Declaring Qt Libraries @@ -464,6 +467,11 @@ \snippet doc/src/snippets/code/doc_src_qmake-manual.pro 4 + More information about operators can be found in the + \l{qmake Advanced Usage#Operators} + {Operators} section of the \l{qmake Advanced Usage} + chapter. + The table below shows the options that can be used with the \c QT variable and the features that are associated with each of them: -- cgit v0.12 From adc3ba426acee1c27e8f62c418b5d458784dbefa Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:11 +0100 Subject: Fix multiple typos in QLineF documentation. QLineF::angleTo, QLineF::setLength(), QLineF::dx() and QLineF::dy() were missing detailed information QLineF::angleTo - method returns the angle of two lines compared to each other. Documentation stated that the return value is in degrees. This fix adds specific information that the return value (angle) is returned in _positive_ degrees. setLength()-method missed information whether the angle is also changed if the given length is negative. Added mention that angle is also changed. dx() and dy() didn't mention whether the return value is negative or positive. Added mention that positive if p2()>=p1() else negative. Task-numbers: QTBUG-14759, QTBUG-14756, QTBUG-14677 Merge-request: 2698 Reviewed-by: Casper van Donderen --- src/corelib/tools/qline.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp index 9c7c243..7e3dd34 100644 --- a/src/corelib/tools/qline.cpp +++ b/src/corelib/tools/qline.cpp @@ -488,7 +488,8 @@ bool QLineF::isNull() const /*! \fn qreal QLineF::dx() const - Returns the horizontal component of the line's vector. + Returns the horizontal component of the line's vector. + Return value is positive if x2() >= x1() and negative if x2() < x1(). \sa dy(), pointAt() */ @@ -497,6 +498,7 @@ bool QLineF::isNull() const \fn qreal QLineF::dy() const Returns the vertical component of the line's vector. + Return value is positive if y2() >= y1() and negative if y2() < y1(). \sa dx(), pointAt() */ @@ -506,7 +508,8 @@ bool QLineF::isNull() const Sets the length of the line to the given \a length. QLineF will move the end point - p2() - of the line to give the line its new length. - + If the given \a length is negative the angle() is also changed. + If the line is a null line, the length will remain zero regardless of the length specified. @@ -762,7 +765,7 @@ QLineF::IntersectType QLineF::intersect(const QLineF &l, QPointF *intersectionPo \since 4.4 - Returns the angle (in degrees) from this line to the given \a + Returns the angle (in positive degrees) from this line to the given \a line, taking the direction of the lines into account. If the lines do not intersect within their range, it is the intersection point of the extended lines that serves as origin (see -- cgit v0.12 From 6f64d81da628dcc9180170f2ae4d206c5e2c3899 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:12 +0100 Subject: QXmlQuery::bindVariable documentation bug Second code example in the documentation stated that the setQuery-method should be called before bindVariable-method. Changed so that bindVariable-method is called first and then the setQuery-method as it should be. Task-number: QTBUG-17025 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/snippets/qxmlquery/bindingExample.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/src/snippets/qxmlquery/bindingExample.cpp b/doc/src/snippets/qxmlquery/bindingExample.cpp index 62e19be..a2c53eb 100644 --- a/doc/src/snippets/qxmlquery/bindingExample.cpp +++ b/doc/src/snippets/qxmlquery/bindingExample.cpp @@ -44,6 +44,7 @@ device.open(QIODevice::ReadOnly); QXmlQuery query; - query.setQuery("doc($inputDocument)/query[theDocument]"); query.bindVariable("inputDocument", &device); + query.setQuery("doc($inputDocument)/query[theDocument]"); + //! [0] -- cgit v0.12 From 847e7af62c95a309d1fedbded72a542972f2503d Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:13 +0100 Subject: QList document referenced to non existing function QList documentation introduces a QStringList-class and states that it has function: QStringList::find. Function does not exist. Changed so that the mention of the QStringList::find-function is removed from the documentation. Task-number: QTBUG-16164 Merge-request: 2698 Reviewed-by: Casper van Donderen --- src/corelib/tools/qlist.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp index 18bfe24..2e95ef8 100644 --- a/src/corelib/tools/qlist.cpp +++ b/src/corelib/tools/qlist.cpp @@ -469,8 +469,8 @@ void **QListData::erase(void **xi) \snippet doc/src/snippets/code/src_corelib_tools_qlistdata.cpp 0 Qt includes a QStringList class that inherits QList\ - and adds a few convenience functions, such as QStringList::join() - and QStringList::find(). (QString::split() creates QStringLists + and adds a convenience function QStringList::join(). + (QString::split() creates QStringLists from strings.) QList stores a list of items. The default constructor creates an -- cgit v0.12 From 24348f5707078a222b439aeee364eb99953059b8 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:14 +0100 Subject: QStyleSheet example used a property that is hidden. In the QStyleSheet documentation an example for boolean used QDialog {etch-disabled-text:1} property that is undocumented. Changed the property to QDialogButtonBox{ dialogbuttonbox-buttons-have-icons: 1; } that is documented. Task-number: QTBUG-11489 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/snippets/code/doc_src_stylesheet.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/snippets/code/doc_src_stylesheet.qdoc b/doc/src/snippets/code/doc_src_stylesheet.qdoc index 99b31c9..b322fc8 100644 --- a/doc/src/snippets/code/doc_src_stylesheet.qdoc +++ b/doc/src/snippets/code/doc_src_stylesheet.qdoc @@ -481,7 +481,7 @@ QTextEdit { background-position: bottom center } //! [81] -QDialog { etch-disabled-text: 1 } +QDialogButtonBox { dialogbuttonbox-buttons-have-icons: 1; } //! [81] -- cgit v0.12 From c462a2e950df19e6a5ef4d034917fddf49385fe0 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:14 +0100 Subject: QNetworkDiskCache documentation missed information Documentation didn't mention which unit (B,kB,MB) is used in setMaximumCacheSize and maximumCacheSize. Added unit to be bytes. Task-number: QTBUG-15562 Merge-request: 2698 Reviewed-by: Casper van Donderen --- src/network/access/qnetworkdiskcache.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp index 1c515c2..9557f7b 100644 --- a/src/network/access/qnetworkdiskcache.cpp +++ b/src/network/access/qnetworkdiskcache.cpp @@ -478,7 +478,7 @@ void QNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData &metaData) } /*! - Returns the current maximum size for the disk cache. + Returns the current maximum size in bytes for the disk cache. \sa setMaximumCacheSize() */ @@ -489,7 +489,7 @@ qint64 QNetworkDiskCache::maximumCacheSize() const } /*! - Sets the maximum size of the disk cache to be \a size. + Sets the maximum size of the disk cache to be \a size in bytes. If the new size is smaller then the current cache size then the cache will call expire(). -- cgit v0.12 From 511ebd56ee288f0860dd4fdcceac44cd78ea3f7c Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:15 +0100 Subject: Invalid links to http://developer.symbian.org Fixed "SBSv2" and "Installing qt for the Symbian platform" links from the installation.qdoc. Fixed platform security link from the external-resources.qdoc. Task-numbers: QTBUG-18313, QTBUG-18313, QTBUG-11312 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/external-resources.qdoc | 2 +- doc/src/getting-started/installation.qdoc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc index f528bf2..f81f517 100644 --- a/doc/src/external-resources.qdoc +++ b/doc/src/external-resources.qdoc @@ -420,7 +420,7 @@ */ /*! - \externalpage http://developer.symbian.org/wiki/index.php/Platform_Security_%28Fundamentals_of_Symbian_C%2B%2B%29#Self-Signed_Applications + \externalpage http://www.developer.nokia.com/Community/Wiki/Qt_&_Symbian_Platform_Security \title Symbian Platform Security */ diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc index 239f117..a4ae63f 100644 --- a/doc/src/getting-started/installation.qdoc +++ b/doc/src/getting-started/installation.qdoc @@ -590,7 +590,7 @@ the Symbian platform from scratch. The \l{Configuration Options for Qt} page gives a brief overview of these. - SBSv2 (also known as \l{http://developer.symbian.org/wiki/index.php/Introduction_to_RAPTOR} {Raptor}) + SBSv2 (also known as \l{http://projects.developer.nokia.com/raptor/wiki} {Raptor}) is a next-generation Symbian build system. SBSv2 is not officially supported by any of the S60 SDKs currently available from Forum Nokia. @@ -1348,7 +1348,7 @@ We hope you will enjoy using Qt. \endlist - We recommend you to take a look at \l{http://developer.symbian.org/wiki/index.php/Qt_Quick_Start}{Symbian Foundation - Qt Quick Start} + We recommend you to take a look at \l{http://doc.qt.nokia.com/latest/install-symbian.html}{Installing Qt for the Symbian platform} to get more information about how to setup the development environment. \sa {Known Issues} -- cgit v0.12 From 09c2405c1da26156f1aa37e2ff341fea4552c2e3 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:16 +0100 Subject: QPointer made no mention of QWeakPointer QPointer didn't mention QWeakPointer although those are "related" to each other. Added link to "see also" section. Task-number: QTBUG-20721 Merge-request: 2698 Reviewed-by: Casper van Donderen --- src/corelib/kernel/qpointer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qpointer.cpp b/src/corelib/kernel/qpointer.cpp index c7fcf4f..87e903f 100644 --- a/src/corelib/kernel/qpointer.cpp +++ b/src/corelib/kernel/qpointer.cpp @@ -97,7 +97,7 @@ Note that class \c T must inherit QObject, or a compilation or link error will result. - \sa QSharedPointer, QObject, QObjectCleanupHandler + \sa QSharedPointer, QWeakPointer, QObject, QObjectCleanupHandler */ /*! -- cgit v0.12 From e71c2a6d13e079e9e4d7a8446f2ef4c6958b18f8 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:17 +0100 Subject: QGLColormap example was invalid QGLColormap example missed int argc and char *argv[] from main - method. Filling the QGLColormap with for - loop was not working because of the 0 - size. Added arguments to main - method and changed the filling so that for-loop uses size of 256. Task-number: QTBUG-3563 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/snippets/code/src_opengl_qglcolormap.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/snippets/code/src_opengl_qglcolormap.cpp b/doc/src/snippets/code/src_opengl_qglcolormap.cpp index 3bd780b..535777d 100644 --- a/doc/src/snippets/code/src_opengl_qglcolormap.cpp +++ b/doc/src/snippets/code/src_opengl_qglcolormap.cpp @@ -42,7 +42,7 @@ #include #include -int main() +int main(int argc, char *argv[]) { QApplication app(argc, argv); @@ -51,7 +51,8 @@ int main() // This will fill the colormap with colors ranging from // black to white. - for (int i = 0; i < colormap.size(); i++) + const int size = 256; + for (int i = 0; i < size; ++i) colormap.setEntry(i, qRgb(i, i, i)); widget.setColormap(colormap); -- cgit v0.12 From 13e20c189e7dd9e86dc1419d745c98e2e4dc7739 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:17 +0100 Subject: Errors in QSqlDriver::handle examples In the examples the const char* variable was compared to QString with "==" operator which doesn't work. Changed the comparison to use qstrcmp - method. Task-number: QTBUG-20089 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp b/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp index d49b6e0..1a3772f 100644 --- a/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp +++ b/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp @@ -41,7 +41,7 @@ //! [0] QSqlDatabase db = ...; QVariant v = db.driver()->handle(); -if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*")==0) { +if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*") == 0) { // v.data() returns a pointer to the handle sqlite3 *handle = *static_cast(v.data()); if (handle != 0) { // check that it is not NULL @@ -52,12 +52,12 @@ if (v.isValid() && qstrcmp(v.typeName(), "sqlite3*")==0) { //! [1] -if (v.typeName() == "PGconn*") { +if (qstrcmp(v.typeName(), "PGconn*") == 0) { PGconn *handle = *static_cast(v.data()); if (handle != 0) ... } -if (v.typeName() == "MYSQL*") { +if (qstrcmp(v.typeName(), "MYSQL*") == 0) { MYSQL *handle = *static_cast(v.data()); if (handle != 0) ... } -- cgit v0.12 From 473f65b678d5ea6ff342e169ceb63fab7790b090 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:18 +0100 Subject: QSPlitter style-sheet example was invalid QSPlitter::handle:pressed - example missed "image:" text when image is set. Added "image:". Task-number: QTBUG-20069 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/snippets/code/doc_src_stylesheet.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/snippets/code/doc_src_stylesheet.qdoc b/doc/src/snippets/code/doc_src_stylesheet.qdoc index b322fc8..78d76a8 100644 --- a/doc/src/snippets/code/doc_src_stylesheet.qdoc +++ b/doc/src/snippets/code/doc_src_stylesheet.qdoc @@ -1479,7 +1479,7 @@ QSplitter::handle:vertical { } QSplitter::handle:pressed { - url(images/splitter_pressed.png); + image: url(images/splitter_pressed.png); } //! [142] -- cgit v0.12 From b6fe7690e2b7eada35d9240f260bfb5bfb20b585 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:19 +0100 Subject: QWebElement example missed information In the example there was told to use button.evaluateJavaScript("click()"); which doesn't work. Instead of "click()" it should be "this.click()". Changed to "this.click()". Task-number: QTBUG-17029 Merge-request: 2698 Reviewed-by: Casper van Donderen --- .../webkit/Source/WebKit/qt/docs/webkitsnippets/webelement/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/webelement/main.cpp b/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/webelement/main.cpp index b1781a6..59c124c 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/webelement/main.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/webelement/main.cpp @@ -57,7 +57,7 @@ static void findButtonAndClick() */ QWebElement button = document.findFirst("input[type=submit]"); - button.evaluateJavaScript("click()"); + button.evaluateJavaScript("this.click()"); //! [Calling a DOM element method] -- cgit v0.12 From d6a389e9a49694f407bd117bb0167f4011645232 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:19 +0100 Subject: qpaintdevice-qt3.html documentation errors Document instructed to user qApp->x11Info() to access x11Info in the examples. The QApplication doesn't have x11Info() -method, QWidget does. Changed the examples to use QWidget instead of QApplication. Task-number: QTBUG-18544 Merge-request: 2698 Reviewed-by: Casper van Donderen --- src/gui/painting/qpainter.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index fb5ce96..72357a6 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -9509,7 +9509,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode void *visual = QPaintDevice::x11AppVisual(screen); \newcode - void *visual = qApp->x11Info(screen).visual(); + void *visual = widget->x11Info().appVisual(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9521,7 +9521,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode unsigned long colormap = QPaintDevice::x11AppColormap(screen); \newcode - unsigned long colormap = qApp->x11Info(screen).colormap(); + unsigned long colormap = widget->x11Info().appColormap(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9533,7 +9533,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode Display *display = QPaintDevice::x11AppDisplay(); \newcode - Display *display = qApp->x11Info().display(); + Display *display = widget->x11Info().display(); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9545,7 +9545,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode int screen = QPaintDevice::x11AppScreen(); \newcode - int screen = qApp->x11Info().screen(); + int screen = widget->x11Info().appScreen(); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9557,7 +9557,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode int depth = QPaintDevice::x11AppDepth(screen); \newcode - int depth = qApp->x11Info(screen).depth(); + int depth = widget->x11Info().appDepth(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9569,7 +9569,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode int cells = QPaintDevice::x11AppCells(screen); \newcode - int cells = qApp->x11Info(screen).cells(); + int cells = widget->x11Info().appCells(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9581,7 +9581,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode unsigned long window = QPaintDevice::x11AppRootWindow(screen); \newcode - unsigned long window = qApp->x11Info(screen).appRootWindow(); + unsigned long window = widget->x11Info().appRootWindow(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9593,7 +9593,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDefaultColormap(screen); \newcode - bool isDefault = qApp->x11Info(screen).defaultColormap(); + bool isDefault = widget->x11Info().appDefaultColormap(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9605,7 +9605,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDefaultVisual(screen); \newcode - bool isDefault = qApp->x11Info(screen).defaultVisual(); + bool isDefault = widget->x11Info().appDefaultVisual(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9625,7 +9625,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDpiX(screen); \newcode - bool isDefault = qApp->x11Info(screen).appDpiX(); + bool isDefault = widget->x11Info().appDpiX(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() @@ -9637,7 +9637,7 @@ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivat \oldcode bool isDefault = QPaintDevice::x11AppDpiY(screen); \newcode - bool isDefault = qApp->x11Info(screen).appDpiY(); + bool isDefault = widget->x11Info().appDpiY(screen); \endcode \sa QWidget::x11Info(), QPixmap::x11Info() -- cgit v0.12 From 7a9574558b303ddf75d17399da08889b5c80fa36 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:20 +0100 Subject: Fridge magnet example code snippet error Documentation states that QTextStream::readLine() is used but the example uses ">>" operator. Changed the example to use readLine()-method. Task-number: QTBUG-7678 Merge-request: 2698 Reviewed-by: Casper van Donderen --- examples/draganddrop/fridgemagnets/dragwidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/draganddrop/fridgemagnets/dragwidget.cpp b/examples/draganddrop/fridgemagnets/dragwidget.cpp index 19abfb6..447f7ac 100644 --- a/examples/draganddrop/fridgemagnets/dragwidget.cpp +++ b/examples/draganddrop/fridgemagnets/dragwidget.cpp @@ -58,7 +58,7 @@ DragWidget::DragWidget(QWidget *parent) while (!inputStream.atEnd()) { QString word; - inputStream >> word; + word = inputStream.readLine(); if (!word.isEmpty()) { DragLabel *wordLabel = new DragLabel(word, this); wordLabel->move(x, y); -- cgit v0.12 From 1575462bf90851fb134db4892e93c04b396543f1 Mon Sep 17 00:00:00 2001 From: artoka Date: Tue, 1 Nov 2011 13:47:21 +0100 Subject: Missing icon in the designer documentation In the documentation there was missing icon in the Object Inspector section. Added reference to editbreaklayout.png icon and cleared a bit the description. Added also the image to the doc/src/images - folder. Task-number: QTBUG-17739 Merge-request: 2698 Reviewed-by: Casper van Donderen --- doc/src/development/designer-manual.qdoc | 6 ++++-- doc/src/images/editbreaklayout.png | Bin 0 -> 1321 bytes 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 doc/src/images/editbreaklayout.png diff --git a/doc/src/development/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc index 348931f..f979547 100644 --- a/doc/src/development/designer-manual.qdoc +++ b/doc/src/development/designer-manual.qdoc @@ -694,8 +694,10 @@ the object's name with the in-place editor. Since Qt 4.5, the \gui{Object Inspector} displays the layout state of - the containers. The broken layout icon ###ICON is displayed if there is - something wrong with the layouts. + the containers. The broken layout icon \inlineimage editbreaklayout.png + is displayed if there is something wrong (e.g. layout missing from the + container) with the layouts. + \endtable */ diff --git a/doc/src/images/editbreaklayout.png b/doc/src/images/editbreaklayout.png new file mode 100644 index 0000000..07c5fae Binary files /dev/null and b/doc/src/images/editbreaklayout.png differ -- cgit v0.12 From 7925f107814e46deb0848d9e6016721ceebfb521 Mon Sep 17 00:00:00 2001 From: Christophe Oosterlynck Date: Wed, 2 Nov 2011 10:00:12 +0100 Subject: Correction for effectiveBoundingRect() calculation for QGraphicsItem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QGraphicsItemPrivate::effectiveBoundingRect() should use ItemClipsChildrenToShape flag from the parent while looping to check for clipping and not use its own AncestorClipsChildren flag. By using AncestorClipsChildren, you're checking if one of your ancestors clips you, but you really want to know if your direct parent clips you. Merge-request: 1419 Reviewed-by: Samuel Rødal --- src/gui/graphicsview/qgraphicsitem.cpp | 15 +++++++--- tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp | 34 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 73e8eed..ff21296 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -2845,16 +2845,23 @@ QRectF QGraphicsItemPrivate::effectiveBoundingRect(const QRectF &rect) const If the item has an effect, the effective rect can be larger than the item's bouding rect, depending on the effect. + \a topMostEffectItem is the top most parent of which a possible QGraphicsEffect + should be taken into account (\a topMostEffectItem is inclusive). Any effects + of any ancestors of \a topMostEffectItem are not taken into consideration. + \sa boundingRect() */ QRectF QGraphicsItemPrivate::effectiveBoundingRect(QGraphicsItem *topMostEffectItem) const { #ifndef QT_NO_GRAPHICSEFFECT Q_Q(const QGraphicsItem); + // Take into account the items own effect QRectF brect = effectiveBoundingRect(q_ptr->boundingRect()); - if (ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren || topMostEffectItem == q) + + if (topMostEffectItem == q) return brect; + // Take into account any effects applied to the parents const QGraphicsItem *effectParent = parent; while (effectParent) { QGraphicsEffect *effect = effectParent->d_ptr->graphicsEffect; @@ -2863,10 +2870,10 @@ QRectF QGraphicsItemPrivate::effectiveBoundingRect(QGraphicsItem *topMostEffectI const QRectF effectRectInParentSpace = effectParent->d_ptr->effectiveBoundingRect(brectInParentSpace); brect = effectParent->mapRectToItem(q, effectRectInParentSpace); } - if (effectParent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren - || topMostEffectItem == effectParent) { + if (effectParent && (effectParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape)) + return brect.intersected(q->mapRectFromItem(effectParent, effectParent->boundingRect())); + else if (topMostEffectItem == effectParent) return brect; - } effectParent = effectParent->d_ptr->parent; } diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp index 9c189cb..3d45a07 100644 --- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp +++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp @@ -68,6 +68,7 @@ private slots: void boundingRectFor(); void boundingRect(); void boundingRect2(); + void boundingRect3(); void draw(); void opacity(); void grayscale(); @@ -319,6 +320,39 @@ void tst_QGraphicsEffect::boundingRect2() QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect | grandChildRect)); } +void tst_QGraphicsEffect::boundingRect3() +{ + QGraphicsScene scene; + QGraphicsRectItem *root = new QGraphicsRectItem; + scene.addItem(root); + QRectF rootRect(0, 0, 100, 100); + root->setFlag(QGraphicsItem::ItemClipsChildrenToShape); + root->setRect(rootRect); + + QGraphicsRectItem *child = new QGraphicsRectItem; + child->setPos(5,5); + child->setParentItem(root); + CustomEffect *effect1 = new CustomEffect; + child->setGraphicsEffect(effect1); + + QGraphicsRectItem *grandChild = new QGraphicsRectItem; + QRectF grandChildRect(0, 0, 50, 50); + grandChild->setRect(grandChildRect); + grandChild->setPos(10,10); + grandChild->setParentItem(child); + CustomEffect *effect2 = new CustomEffect; + grandChild->setGraphicsEffect(effect2); + + QRectF effectiveBoundingRectGrandChild = effect2->boundingRectFor(grandChildRect); + QCOMPARE(effect2->boundingRect(), effectiveBoundingRectGrandChild); + + QRectF effectiveBoundingRectChildAndGrandChild = effect1->boundingRectFor(child->mapRectFromItem(grandChild, effectiveBoundingRectGrandChild)); + QCOMPARE(effect1->boundingRect(),effectiveBoundingRectChildAndGrandChild); + + // The children bounding rect of the root should be the rectangle of the grandChild enlarged twice by the CustomEffect on the grandChild and the child, but clipped by the root item + QCOMPARE(root->childrenBoundingRect(), root->boundingRect().intersected(root->mapRectFromItem(child, effectiveBoundingRectChildAndGrandChild))); +} + void tst_QGraphicsEffect::draw() { QGraphicsScene scene; -- cgit v0.12 From 658bac8782bde1404d4713e5b5e60e3f519457fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Thu, 3 Nov 2011 08:26:59 +0100 Subject: Revert "Correction for effectiveBoundingRect() calculation for QGraphicsItem" This reverts commit 7925f107814e46deb0848d9e6016721ceebfb521. Needed to fix regressed auto-test tst_qgraphicsview::update_ancestorClipsChildrenToShape2. --- src/gui/graphicsview/qgraphicsitem.cpp | 15 +++------- tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp | 34 ---------------------- 2 files changed, 4 insertions(+), 45 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index ff21296..73e8eed 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -2845,23 +2845,16 @@ QRectF QGraphicsItemPrivate::effectiveBoundingRect(const QRectF &rect) const If the item has an effect, the effective rect can be larger than the item's bouding rect, depending on the effect. - \a topMostEffectItem is the top most parent of which a possible QGraphicsEffect - should be taken into account (\a topMostEffectItem is inclusive). Any effects - of any ancestors of \a topMostEffectItem are not taken into consideration. - \sa boundingRect() */ QRectF QGraphicsItemPrivate::effectiveBoundingRect(QGraphicsItem *topMostEffectItem) const { #ifndef QT_NO_GRAPHICSEFFECT Q_Q(const QGraphicsItem); - // Take into account the items own effect QRectF brect = effectiveBoundingRect(q_ptr->boundingRect()); - - if (topMostEffectItem == q) + if (ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren || topMostEffectItem == q) return brect; - // Take into account any effects applied to the parents const QGraphicsItem *effectParent = parent; while (effectParent) { QGraphicsEffect *effect = effectParent->d_ptr->graphicsEffect; @@ -2870,10 +2863,10 @@ QRectF QGraphicsItemPrivate::effectiveBoundingRect(QGraphicsItem *topMostEffectI const QRectF effectRectInParentSpace = effectParent->d_ptr->effectiveBoundingRect(brectInParentSpace); brect = effectParent->mapRectToItem(q, effectRectInParentSpace); } - if (effectParent && (effectParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape)) - return brect.intersected(q->mapRectFromItem(effectParent, effectParent->boundingRect())); - else if (topMostEffectItem == effectParent) + if (effectParent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren + || topMostEffectItem == effectParent) { return brect; + } effectParent = effectParent->d_ptr->parent; } diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp index 3d45a07..9c189cb 100644 --- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp +++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp @@ -68,7 +68,6 @@ private slots: void boundingRectFor(); void boundingRect(); void boundingRect2(); - void boundingRect3(); void draw(); void opacity(); void grayscale(); @@ -320,39 +319,6 @@ void tst_QGraphicsEffect::boundingRect2() QCOMPARE(effect->boundingRect(), effect->boundingRectFor(childRect | grandChildRect)); } -void tst_QGraphicsEffect::boundingRect3() -{ - QGraphicsScene scene; - QGraphicsRectItem *root = new QGraphicsRectItem; - scene.addItem(root); - QRectF rootRect(0, 0, 100, 100); - root->setFlag(QGraphicsItem::ItemClipsChildrenToShape); - root->setRect(rootRect); - - QGraphicsRectItem *child = new QGraphicsRectItem; - child->setPos(5,5); - child->setParentItem(root); - CustomEffect *effect1 = new CustomEffect; - child->setGraphicsEffect(effect1); - - QGraphicsRectItem *grandChild = new QGraphicsRectItem; - QRectF grandChildRect(0, 0, 50, 50); - grandChild->setRect(grandChildRect); - grandChild->setPos(10,10); - grandChild->setParentItem(child); - CustomEffect *effect2 = new CustomEffect; - grandChild->setGraphicsEffect(effect2); - - QRectF effectiveBoundingRectGrandChild = effect2->boundingRectFor(grandChildRect); - QCOMPARE(effect2->boundingRect(), effectiveBoundingRectGrandChild); - - QRectF effectiveBoundingRectChildAndGrandChild = effect1->boundingRectFor(child->mapRectFromItem(grandChild, effectiveBoundingRectGrandChild)); - QCOMPARE(effect1->boundingRect(),effectiveBoundingRectChildAndGrandChild); - - // The children bounding rect of the root should be the rectangle of the grandChild enlarged twice by the CustomEffect on the grandChild and the child, but clipped by the root item - QCOMPARE(root->childrenBoundingRect(), root->boundingRect().intersected(root->mapRectFromItem(child, effectiveBoundingRectChildAndGrandChild))); -} - void tst_QGraphicsEffect::draw() { QGraphicsScene scene; -- cgit v0.12 From 5778a20b4f6acfa9016258ac05e05a073bbd1994 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Thu, 3 Nov 2011 17:13:03 +0100 Subject: Updated WebKit to 99371ddc1d61832131835964a753e1c5817f6916 --- src/3rdparty/webkit/.tag | 2 +- src/3rdparty/webkit/ChangeLog | 11 ++ src/3rdparty/webkit/Source/WebCore/ChangeLog | 38 ++++ src/3rdparty/webkit/Source/WebCore/WebCore.pri | 4 +- src/3rdparty/webkit/Source/WebCore/WebCore.pro | 5 + .../Source/WebCore/bindings/js/JSExceptionBase.h | 86 +++++----- .../Source/WebCore/platform/win/SystemTimeWin.cpp | 3 + src/3rdparty/webkit/Source/WebKit.pri | 7 + .../webkit/Source/WebKit/qt/Api/qwebpage.cpp | 2 +- src/3rdparty/webkit/Source/WebKit/qt/ChangeLog | 36 ++++ src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro | 13 +- .../WebKit/qt/docs/qtwebkit-goes-mobile.qdoc | 191 +++++++++++++++++++++ .../webkit/Source/WebKit/qt/docs/qtwebkit.qdoc | 3 + .../qtwebkit_goes_mobile_snippets.cpp | 61 +++++++ src/3rdparty/webkit/VERSION | 2 +- 15 files changed, 411 insertions(+), 53 deletions(-) create mode 100644 src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit-goes-mobile.qdoc create mode 100644 src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/qtwebkit_goes_mobile_snippets.cpp diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 34446ae..a5f6423 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -64cce100215c71575f19ca0b090c65fa97d4ba10 +99371ddc1d61832131835964a753e1c5817f6916 diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index bc11b4d..a661d6a 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,14 @@ +2011-11-03 Zeno Albisser + + [Qt] Unreviewed: Fix universal binary build on Mac. + https://bugreports.qt.nokia.com/browse/QTBUG-20619 + + When building a universal binary the debug version + exceeds the maximum size of a static library. + Therefore we do not allow this configuration. + + * Source/WebKit.pri: + 2011-08-06 Aron Rosenberg Reviewed by Benjamin Poulain. diff --git a/src/3rdparty/webkit/Source/WebCore/ChangeLog b/src/3rdparty/webkit/Source/WebCore/ChangeLog index da9d1b2..ead97bd 100755 --- a/src/3rdparty/webkit/Source/WebCore/ChangeLog +++ b/src/3rdparty/webkit/Source/WebCore/ChangeLog @@ -1,3 +1,41 @@ +2011-11-01 Zeno Albisser + + [Qt] bad codegen, pointer diff in JSC::JSCallbackConstructor::JSCallbackConstructor + https://bugs.webkit.org/show_bug.cgi?id=60951 + + Adjust symbols visibility for WebCore. + + Reviewed by Simon Hausmann. + + * WebCore.pro: + +2011-10-28 Zeno Albisser + + [Qt] Unreviewed: Build fix for MSVC2005 + + Patch by Andy Shaw + + * platform/win/SystemTimeWin.cpp: + +2011-10-13 Zeno Albisser + + [Qt] QtWebKit build error for Mac 32bit + https://bugs.webkit.org/show_bug.cgi?id=69914 + + In WebCore.pro and QtWebKit.pro we define NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES + when compiling with ENABLE_VIDEO and with WTF_USE_QTKIT. + But this is meant to be defined in NSGeometry.h under certain preconditions. + Without setting NS_BUILD_32_LIKE_64 none of these preconditions is + met and therefore NSGeometry.h will create several conflicting type definitions. + + With this patch we create consistent definitions again. + Due to the order of include files we cannot remove + NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES from WebCore.pro. + + Reviewed by Andreas Kling. + + * WebCore.pro: + 2011-09-12 Adam Klein Fix out-of-bounds access in Gradient::sortStopsIfNecessary diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index d8ba8a6..82311d2 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -153,7 +153,7 @@ symbian { CONFIG += do_not_build_as_thumb CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3 - # Symbian plugin support. + # Symbian plugin support LIBS += -lefsrv !CONFIG(QTDIR_build) { @@ -303,7 +303,7 @@ win32-* { } # Remove whole program optimizations due to miscompilations -win32-msvc2005|win32-msvc2008|win32-msvc2010|wince*:{ +win32-msvc2005|win32-msvc2008|wince*:{ QMAKE_CFLAGS_RELEASE -= -GL QMAKE_CXXFLAGS_RELEASE -= -GL diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pro b/src/3rdparty/webkit/Source/WebCore/WebCore.pro index a305549..ceceee8 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pro @@ -7,6 +7,8 @@ include($$PWD/../WebKit.pri) include($$PWD/WebCore.pri) include($$PWD/../JavaScriptCore/JavaScriptCore.pri) +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols + TEMPLATE = lib TARGET = $$WEBCORE_TARGET CONFIG += staticlib @@ -2973,6 +2975,9 @@ contains(DEFINES, ENABLE_VIDEO=1) { platform/mac/WebWindowAnimation.mm DEFINES+=NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES + contains(CONFIG, "x86") { + DEFINES+=NS_BUILD_32_LIKE_64 + } } else: contains(DEFINES, WTF_USE_GSTREAMER=1) { HEADERS += \ diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h index a9366ed..01c6ac2 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h @@ -1,43 +1,43 @@ -/* - * Copyright (C) 2009 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef JSExceptionBase_h -#define JSExceptionBase_h - -namespace JSC { - -class JSValue; - -} // namespace JSC - -namespace WebCore { - -class ExceptionBase; - -ExceptionBase* toExceptionBase(JSC::JSValue); - -} // namespace WebCore - -#endif // JSExceptionBase_h +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSExceptionBase_h +#define JSExceptionBase_h + +namespace JSC { + +class JSValue; + +} // namespace JSC + +namespace WebCore { + +class ExceptionBase; + +ExceptionBase* toExceptionBase(JSC::JSValue); + +} // namespace WebCore + +#endif // JSExceptionBase_h diff --git a/src/3rdparty/webkit/Source/WebCore/platform/win/SystemTimeWin.cpp b/src/3rdparty/webkit/Source/WebCore/platform/win/SystemTimeWin.cpp index 547decc..c40a45a 100644 --- a/src/3rdparty/webkit/Source/WebCore/platform/win/SystemTimeWin.cpp +++ b/src/3rdparty/webkit/Source/WebCore/platform/win/SystemTimeWin.cpp @@ -27,6 +27,9 @@ #include "SystemTime.h" #include +#ifndef _WIN32_WINNT +#define _WIN32_WINNT 0x0500 +#endif #include namespace WebCore { diff --git a/src/3rdparty/webkit/Source/WebKit.pri b/src/3rdparty/webkit/Source/WebKit.pri index 5bd9577..bc889d1 100644 --- a/src/3rdparty/webkit/Source/WebKit.pri +++ b/src/3rdparty/webkit/Source/WebKit.pri @@ -10,6 +10,13 @@ CONFIG(QTDIR_build) { # Make sure we compile both debug and release on mac when inside Qt. # This line was extracted from qbase.pri instead of including the whole file win32|mac:!macx-xcode:CONFIG += debug_and_release + # In case we are building a universal binary for Qt, building debug is not + # possible because we would exceed the maximum library size for 32bit. + mac:CONFIG(QT_CONFIG, x86):CONFIG(QT_CONFIG, x86_64):debug|debug_and_release { + message(Building a universal binary with debug symbols is not possible. Building release!) + CONFIG -= debug_and_release debug + CONFIG += release + } } else { !CONFIG(release, debug|release) { OBJECTS_DIR = obj/debug diff --git a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebpage.cpp index b3efe0f..8f0f153 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qwebpage.cpp @@ -3972,7 +3972,7 @@ quint64 QWebPage::bytesReceived() const } /*! - \since 4.7 + \since 4.8 \fn void QWebPage::viewportChangeRequested() Page authors can provide the supplied values by using the viewport meta tag. More information diff --git a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog index 32428f1..7ba98b8 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/Source/WebKit/qt/ChangeLog @@ -1,3 +1,39 @@ +2011-11-03 Jesus Sanchez-Palencia + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] QtWebKit should have documentation clarifying its mobile features usage + https://bugs.webkit.org/show_bug.cgi?id=41465 + + Add "QtWebKit Goes Mobile" documentation + + * docs/qtwebkit-goes-mobile.qdoc: Added. + * docs/qtwebkit.qdoc: Linked to qtwebkit-goes-mobile documentation + * docs/webkitsnippets/qtwebkit_goes_mobile_snippets.cpp: Added. + +2011-11-01 Alexis Menard + + Unreviewed Qt documentation fix. + + This signal is Qt 4.8 material. + + * Api/qwebpage.cpp: + +2011-10-21 Zeno Albisser + + [Qt] WebKit build does not respect QMAKE_MAC_SDK variable. + https://bugs.webkit.org/show_bug.cgi?id=70596 + + Instead of only relying on DARWIN_MAJOR_VERSION we also + check QMAKE_MAC_SDK. In case QMAKE_MAC_SDK is not defined + we are still falling back to DARWIN_MAJOR_VERSION. + + Patch by Andy Shaw + + Reviewed by Noam Rosenthal. + + * QtWebKit.pro: + 2011-09-06 Ademar de Souza Reis Jr. [Qt][Symbian] REGRESSION[94105] DumpRenderTree.exe doesn't build on Symbian diff --git a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro index 41b0d39..197aa98 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro +++ b/src/3rdparty/webkit/Source/WebKit/qt/QtWebKit.pro @@ -233,6 +233,9 @@ contains(DEFINES, ENABLE_VIDEO=1) { $$SOURCE_DIR/../WebKitLibraries/ DEFINES+=NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES + contains(CONFIG, "x86") { + DEFINES+=NS_BUILD_32_LIKE_64 + } HEADERS += $$PWD/WebCoreSupport/WebSystemInterface.h \ $$PWD/WebCoreSupport/QTKitFullScreenVideoHandler.h @@ -244,12 +247,12 @@ contains(DEFINES, ENABLE_VIDEO=1) { # We can know the Mac OS version by using the Darwin major version DARWIN_VERSION = $$split(QMAKE_HOST.version, ".") DARWIN_MAJOR_VERSION = $$first(DARWIN_VERSION) - equals(DARWIN_MAJOR_VERSION, "11") { - LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLion.a - } else:equals(DARWIN_MAJOR_VERSION, "10") { - LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a - } else:equals(DARWIN_MAJOR_VERSION, "9") { + equals(DARWIN_MAJOR_VERSION, "9") | contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10.5.sdk") { LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLeopard.a + } else: equals(DARWIN_MAJOR_VERSION, "10") | contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10.6.sdk") { + LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a + } else: equals(DARWIN_MAJOR_VERSION, "11") | contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10.7.sdk") { + LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLion.a } } } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit-goes-mobile.qdoc b/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit-goes-mobile.qdoc new file mode 100644 index 0000000..40144d1 --- /dev/null +++ b/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit-goes-mobile.qdoc @@ -0,0 +1,191 @@ +/*! + \inmodule QtWebKit + \page qtwebkit-goes-mobile.html + \title QtWebKit Goes Mobile + \contentspage QtWebKit + \section1 Overview + + A lot of effort has been put into QtWebKit to make it attractive for + use on mobile devices. + + The goal of this tutorial is to help you understand the mobile + features and how to make the best of them, in other words, how to + create a good mobile web view that can be used on touch devices. + + If you want to target mobile devices you should consider using \l{QGraphicsWebView} + instead of \l{QWebView}. Since \l{QWebView} is based on the \l{QWidget} + system, it cannot easily support rotation, overlays, hardware accelerated + compositing and tiling. If you need a \l{QWidget} anyway, you can always + construct a \l{QGraphicsView} (which is a \l{QWidget}) with a \l{QGraphicsWebView} inside. + + So let's start with a very simple \l{QGraphicsWebView} based "browser": + + \snippet webkitsnippets/qtwebkit_goes_mobile_snippets.cpp 0 + + Here we set up a \l{QGraphicsView} application and add a + \l{QGraphicsWebView} to the scene. Notice + that we're disabling the scrollbars on the QGraphicsView because QtWebKit + handles scrolling and scrollbars automatically. This is to allow scrolling + optimizations and to enable web authors to interact with the scrollbars, + for instance, to style them differently. + + On touch-based mobile devices a feature known as tiling is often used. It + is used due to the interaction model (touch) as well as a scrolling + optimization. With this optimization we will have to deal with scrolling + ourselves, and we will have to disable features like scroll bar styling. + This is not usually a problem, since mobile browsers do not usually show + scroll bars, but use scroll indicators instead. + + Tiling basically means that the contents of the viewport is separated into + a grid of tiles, so that when you update an area, instead of just updating + the area, you actually update the whole tile or sub-regions of it. + This offers a few advantages for scrolling as, when you scroll, you do not need + to repaint the new visible area for each scroll step, but you simply update a row + of tiles each time; these tiles are often only partly on the screen. + This minimizes all the painting calls that we have to do and enables kinetic scrolling. + + Loading, rendering, and laying out are blocking operations. Though barely + noticeable on desktop machines, these operations can block for a long time + on a mobile device, letting the user believe the application has become + unresponsive. Additionally, scrolling will also stall when the user uses + his fingers to scroll, leading to a bad user experience. + + One way to overcome this issue, is to do all loading, laying out and + painting (basically all non-UI related work) in another thread or process, and + just blit the result from the web process/thread to the UI. There is research + in progress to enable this for a future version of QtWebKit, using WebKit2, but for now, + freezing the backing store can help when performing a zooming operation, for instance. + This will be discussed later, in the \l{#Enabling the Tiling}{Enabling the Tiling} section. + + When using tiles, you can blit any tile available when scrolling. When no tile is available you + can show a checkerboard tile instead, not letting the scrolling wait for the + tiles to be updated. This results in a responsive interface, with the only + disadvantage that you might see checkerboard tiles from time to time. + + The use of tiles also helps with zooming. Repainting at each zoom level change during + a zoom animation is basically impossible on a mobile device (or desktop for + that matter) and thus, with tiling, you can stop the tiles from being updated and + just scale the existing tiles. Then, at the end of the animation, update + tiles on top of the scaled ones. For now we will ignore the blocking + issue and concentrate on the tiling and the interaction model. + More information about Tiling can be found here: \l{http://doc.qt.nokia.com/4.7/qwebsettings.html#WebAttribute-enum} (see the entry for TiledBackingStoreEnabled). + + + \section1 Resize to Contents + + When using tiling, we want the \l{QGraphicsWebView} to act as our + content, as it supports tiling. In order for this we need to make it + resize itself to the size of its contents. For this we will use + \l{QGraphicsWebView::resizesToContents}. + + This setting removes the scroll bars for us on the main frame and + makes our \l{QGraphicsWebView} resize itself to the size of its content. + + Enabling it is as easy as setting the property: + + \snippet webkitsnippets/qtwebkit_goes_mobile_snippets.cpp 1 + + The property should be used in conjunction with the + QWebPage::preferredContentsSize property. If not explicitly set, + it is automatically set to a reasonable value. + + If we expand our mobile web view to the size of the contents + of its contained page, the view will be bigger than the device screen. + + + \section1 Using a View as the Window onto the Contents + + The idea is to have a custom widget which has a \l{QGraphicsWebView} as a + class member. Remember that the QGraphicsWebView will be as big as its + content's size, so this custom widget will serve as a viewport onto the + web view. + + The following code snippet illustrates this: + + \snippet webkitsnippets/qtwebkit_goes_mobile_snippets.cpp 2 + + In order to properly handle mouse events, you must install an event filter + on the web view or stack it behind its parent object + (\l{QGraphicsItem::ItemStacksBehindParent}). By doing this the mouse events will + reach a \c{MobileWebView} instance before they reach the member + \l{QGraphicsWebView}. Keep in mind that you'll need to add some logic in order + to distinguish between different mouse events and gestures, such as a + single click, double click and click-and-pan. Besides, scrolling and + zooming will have to be implemented manually. + + + \section1 Adjusting How Contents are Laid Out + + When testing the above on a device, you will notice that many pages are not + laid out very nicely. In particular, the width of the content may be larger + than the width of the device. This is due to the way web contents are laid + out. First, the viewport width is used for fitting the contents. If the + contents do not fit due to a non-flexible element with a width larger than + the viewport width, the minimum possible width will be used. As most pages + are written with a desktop browser in mind, that makes only very few sites + fit into the width of a mobile device. + + QtWebKit has a way to force a layout to a given width or height. What really + matters here is the width. If you lay out a page to a given width, it will get + that width and images might be cropped. The width or height is also used for + laying out fixed elements, but when we resize the \l{QGraphicsWebView} to the + size of the contents, fixed elements will not be relative to the view, which is + the behavior found on most mobile browsers. + + We saw that the QWebPage::preferredContentsSize property is automatically set + to a reasonable value when using \l{QGraphicsWebView::resizesToContents}. + + As you can imagine, laying out with a smaller viewport can cause pages to + break, therefore a default value has been chosen so that it almost breaks no + pages while still making pages fit. This value is 960x800. If the device + has a greater resolution, this value can be changed like this: + + \snippet webkitsnippets/qtwebkit_goes_mobile_snippets.cpp 3 + + You can play around with this and find a suitable size for your device, + but we will keep the default size for now. + + + \section1 The 'viewport' Meta-Tag + + As some sites do not work with 960 pixels width or want to have control of + how the page is laid out, QtWebKit, Android, Firefox Mobile and + the iPhone Safari browser support a meta-tag called \c viewport. This makes + it possible for a web page to let the browser know how it wants to be shown. + More info can be found in the + \l{http://developer.apple.com/safari/library/documentation/appleapplications/reference/safariwebcontent/usingtheviewport/usingtheviewport.html}{Safari Developer Library}. + + You must connect the signal \c{QWebPage::viewportChangeRequested(const + QWebPage::ViewportHints& hints)} to a slot of your mobile web view and use what + is provided by \l{QWebPage::ViewportHints} to update your viewport size, scale + range, and so on. + + + \section1 Enabling the Tiling + + We haven't actually enabled tiling yet, so let's go ahead and do that. That + is very simple as it is basically a setting: + + \snippet webkitsnippets/qtwebkit_goes_mobile_snippets.cpp 4 + + Note that, if you are going to add animations to your zooming or scaling + operations or want to implement fancy kinetic scrolling you might want to + take a look at \l{QGraphicsWebView::setTiledBackingStoreFrozen()}. With this, + you can avoid updates to your tiles during an animation, for instance. + + + \section1 Avoiding Scrollable Subelements + + One big issue with the above is that, iframes and sites using frames can + contain scrollable subelements. That doesn't work well with the touch + interaction model, as you want a finger swipe to scroll the whole page and not + end up just scrolling a subframe. Most mobile browsers work around this by + enabling something called frame flattening. Going straight to the point: + + \snippet webkitsnippets/qtwebkit_goes_mobile_snippets.cpp 5 + + This will make all frames from a web page expand themselves to the size of + their contents, keeping us free of scrollable subareas. + + +*/ diff --git a/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit.qdoc index 1e76901..710d194 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit.qdoc +++ b/src/3rdparty/webkit/Source/WebKit/qt/docs/qtwebkit.qdoc @@ -29,6 +29,9 @@ made fully editable to the user through the use of the \c{contenteditable} attribute on HTML elements. + QtWebKit has been enhanced to become more attractive on the mobile front as well. + For more information see \l{QtWebKit Goes Mobile}. + QtWebKit is based on the Open Source WebKit engine. More information about WebKit itself can be found on the \l{WebKit Open Source Project} Web site. diff --git a/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/qtwebkit_goes_mobile_snippets.cpp b/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/qtwebkit_goes_mobile_snippets.cpp new file mode 100644 index 0000000..8126fbf --- /dev/null +++ b/src/3rdparty/webkit/Source/WebKit/qt/docs/webkitsnippets/qtwebkit_goes_mobile_snippets.cpp @@ -0,0 +1,61 @@ +#if 0 +// ! [0] +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + const int width = 640; + const int height = 480; + + QGraphicsScene scene; + + QGraphicsView view(&scene); + view.setFrameShape(QFrame::NoFrame); + view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + QGraphicsWebView webview; + webview.resize(width, height); + webview.load(QUrl("http://doc.qt.nokia.com/")); + + scene.addItem(&webview); + + view.resize(width, height); + view.show(); + + return app.exec(); +} +// ! [0] + + +// ! [1] +webview.setResizesToContents(true); +// ! [1] + +// ! [2] +class MobileWebView : public QGraphicsWidget { + Q_OBJECT +public: + MobileWebView(QGraphicsItem *parent = 0); + ~MobileWebView(); + + bool mousePress(const QPoint &value); + void mouseMove(const QPoint &value); + void mouseRelease(const QPoint &value); + +private: + QGraphicsWebView* webView; +}; +// ! [2] + +// ! [3] +webview.page()->setPreferredContentsSize(QSize(desiredWidth, desiredHeight)); +// ! [3] + +// ! [4] +QWebSettings::globalSettings()->setAttribute(QWebSettings::TiledBackingStoreEnabled, true); +// ! [4] + +// ! [5] +QWebSettings::globalSettings()->setAttribute(QWebSettings::FrameFlatteningEnable, true); +// ! [5] +#endif diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 6a40345..19f5536 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - 64cce100215c71575f19ca0b090c65fa97d4ba10 + 99371ddc1d61832131835964a753e1c5817f6916 -- cgit v0.12 From 945c44d0865cf44363e6c860995f971ce952dd5f Mon Sep 17 00:00:00 2001 From: Ademar de Souza Reis Jr Date: Mon, 19 Sep 2011 10:43:14 -0300 Subject: Re-apply change 3dd9e66baaa0848bcc2eb7daecf2b63724624358 by Ademar de Souza Reis Jr dos2unix on a webkit source file (fix support for Visual Studio) webkit/Source/WebCore/bindings/js/JSExceptionBase.h had CRLF terminations, which Visual Studio didn't like for some reason. Reported by Simo Falt. Patch is also being submited to upstream (webkit.org) --- .../Source/WebCore/bindings/js/JSExceptionBase.h | 86 +++++++++++----------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h index 01c6ac2..7713002 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h @@ -1,43 +1,43 @@ -/* - * Copyright (C) 2009 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef JSExceptionBase_h -#define JSExceptionBase_h - -namespace JSC { - -class JSValue; - -} // namespace JSC - -namespace WebCore { - -class ExceptionBase; - -ExceptionBase* toExceptionBase(JSC::JSValue); - -} // namespace WebCore - -#endif // JSExceptionBase_h +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSExceptionBase_h +#define JSExceptionBase_h + +namespace JSC { + +class JSValue; + +} // namespace JSC + +namespace WebCore { + +class ExceptionBase; + +ExceptionBase* toExceptionBase(JSC::JSValue); + +} // namespace WebCore + +#endif // JSExceptionBase_h -- cgit v0.12 From 37cde52cb17b57f8ec89c248f06331ed4977e51c Mon Sep 17 00:00:00 2001 From: Ademar de Souza Reis Jr Date: Tue, 20 Sep 2011 11:12:04 -0300 Subject: Re-apply change 3489808c1dcd157ac09dd6da16bc057b56696d59 by Ademar de Souza Reis Jr Workaround MSVC2010 problems when linking QtWebKit Include MSVC2010 in the list of compilers where incremental build is disabled (INCREMENTAL:NO). Change suggested by Simo Falt --- src/3rdparty/webkit/Source/WebCore/WebCore.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index 82311d2..00357a1 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -303,7 +303,7 @@ win32-* { } # Remove whole program optimizations due to miscompilations -win32-msvc2005|win32-msvc2008|wince*:{ +win32-msvc2005|win32-msvc2008|win32-msvc2010|wince*:{ QMAKE_CFLAGS_RELEASE -= -GL QMAKE_CXXFLAGS_RELEASE -= -GL -- cgit v0.12 From e3208a8d44423bc3b5c32e2e90f68675e51a3b73 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 22 Sep 2011 14:48:44 +0200 Subject: Re-apply change a14033620fab5edca44293ec6dfcc904e2e0eb20 by Andreas Kling Sentences should end with a period! (Poor man's rebuild trigger.) --- src/3rdparty/webkit/Source/WebCore/WebCore.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index 00357a1..d8ba8a6 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -153,7 +153,7 @@ symbian { CONFIG += do_not_build_as_thumb CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3 - # Symbian plugin support + # Symbian plugin support. LIBS += -lefsrv !CONFIG(QTDIR_build) { -- cgit v0.12 From bc874b5a7158309b8c5469f64f015d739fd3b610 Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Thu, 3 Nov 2011 20:48:01 +0200 Subject: Add GL_EXT_texture_format_BGRA8888 support. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QtOpenGL supports GL_IMG_texture_format_BGRA8888 but GL_EXT_texture_format_BGRA8888 is missing. These extensions are essentially the same. Task-number: QTBUG-22538 Reviewed-by: Samuel Rødal --- src/opengl/qgl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 08b9ca3..db3a7ac 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -5499,7 +5499,8 @@ QGLExtensions::Extensions QGLExtensions::currentContextExtensions() glExtensions |= NVFloatBuffer; if (extensions.match("GL_ARB_pixel_buffer_object")) glExtensions |= PixelBufferObject; - if (extensions.match("GL_IMG_texture_format_BGRA8888")) + if (extensions.match("GL_IMG_texture_format_BGRA8888") + || extensions.match("GL_EXT_texture_format_BGRA8888")) glExtensions |= BGRATextureFormat; #if defined(QT_OPENGL_ES_2) glExtensions |= FramebufferObject; -- cgit v0.12 From f92483c3922763a5f5d1500f4892be8b214fe299 Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Thu, 3 Nov 2011 20:51:51 +0200 Subject: Clear error due to FRAMEBUFFER_SRGB_CAPABLE_EXT glGetBooleanv generates an error if this param isn't supported. This error generates wrong warnings in later states. Reviewed-by: Eskil --- src/opengl/qgl.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index db3a7ac..2fc3dea 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -5541,6 +5541,9 @@ QGLExtensions::Extensions QGLExtensions::currentContextExtensions() glGetBooleanv(FRAMEBUFFER_SRGB_CAPABLE_EXT, &srgbCapableFramebuffers); if (srgbCapableFramebuffers) glExtensions |= SRGBFrameBuffer; + // Clear possible error which is generated if + // FRAMEBUFFER_SRGB_CAPABLE_EXT isn't supported. + glGetError(); } return glExtensions; -- cgit v0.12 From 34af6fd31e29334e9ffe5d390d5a8b40c5a4a9c6 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 7 Nov 2011 11:58:04 +0100 Subject: Ensure that the RC_FILE is correctly handled in a single configuration With MSVC 2010 if a single configuration vcxproj file was created then it would not have an entry for the .rc file only the .res file that would be compiled from it. Without the entry for the .rc file then it would not compile the .res file. Task-number: QTBUG-22545 Merge-request: 1452 Reviewed-by: Joerg Bornemann --- qmake/generators/win32/msbuild_objectmodel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index c70d966..130f273 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -2896,6 +2896,7 @@ XmlOutput &operator<<(XmlOutput &xml, const VCXProjectSingleConfig &tool) tempProj.outputFilter(xml, xmlFilter, tempProj.ExtraCompilers.at(x)); } + tempProj.outputFilter(xml, xmlFilter, "Root Files"); xml << import("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets"); xml << tag("ImportGroup") -- cgit v0.12 From 2c072ae53ea4f90a32cfb8260f1bd0251ebab4f9 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 4 Nov 2011 18:35:41 +0100 Subject: Compile when -no-rtti is specified as a configure option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After discussing with Marko who did the original backport of the ShaderEffect to Qt 4.7 it was agreed that this is the correct thing to do in this case. Merge-request: 2713 Task-number: QTBUG-22419 Reviewed-by: Marko Niemelä --- src/imports/shaders/shadereffect.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/imports/shaders/shadereffect.cpp b/src/imports/shaders/shadereffect.cpp index f40d6b8..a5164e2 100644 --- a/src/imports/shaders/shadereffect.cpp +++ b/src/imports/shaders/shadereffect.cpp @@ -61,6 +61,7 @@ ShaderEffect::~ShaderEffect() void ShaderEffect::prepareBufferedDraw(QPainter *painter) { +#ifndef QT_NO_DYNAMIC_CAST // This workaround needed because QGraphicsEffect seems to always utilize default painters worldtransform // instead of the active painters worldtransform. const ShaderEffectBuffer *effectBuffer = dynamic_cast (painter->device()); @@ -70,6 +71,9 @@ void ShaderEffect::prepareBufferedDraw(QPainter *painter) } else { savedWorldTransform = painter->worldTransform(); } +#else + Q_UNUSED(painter); +#endif } void ShaderEffect::draw (QPainter *painter) -- cgit v0.12 From e0383c9b8bd6f4e3d445d69690f84209cad42bb5 Mon Sep 17 00:00:00 2001 From: Kjell Rune Skaaraas Date: Mon, 7 Nov 2011 16:18:33 +0100 Subject: Give better error message when using unsupported lookbehinds in QRegExp Merge-request: 1456 Reviewed-by: Oswald Buddenhagen --- src/corelib/tools/qregexp.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp index ba1609f..e3a771a 100644 --- a/src/corelib/tools/qregexp.cpp +++ b/src/corelib/tools/qregexp.cpp @@ -66,6 +66,7 @@ int qFindString(const QChar *haystack, int haystackLen, int from, #define RXERR_DISABLED QT_TRANSLATE_NOOP("QRegExp", "disabled feature used") #define RXERR_CHARCLASS QT_TRANSLATE_NOOP("QRegExp", "bad char class syntax") #define RXERR_LOOKAHEAD QT_TRANSLATE_NOOP("QRegExp", "bad lookahead syntax") +#define RXERR_LOOKBEHIND QT_TRANSLATE_NOOP("QRegExp", "lookbehinds not supported, see QTBUG-2371") #define RXERR_REPETITION QT_TRANSLATE_NOOP("QRegExp", "bad repetition syntax") #define RXERR_OCTAL QT_TRANSLATE_NOOP("QRegExp", "invalid octal value") #define RXERR_LEFTDELIM QT_TRANSLATE_NOOP("QRegExp", "missing left delim") @@ -3231,6 +3232,9 @@ int QRegExpEngine::getToken() #endif case ':': return Tok_MagicLeftParen; + case '<': + error(RXERR_LOOKBEHIND); + return Tok_MagicLeftParen; default: error(RXERR_LOOKAHEAD); return Tok_MagicLeftParen; -- cgit v0.12 From 3342cd1a4003912dfb419dbe4d3babd1f9c30173 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Mon, 17 Oct 2011 15:57:31 +0100 Subject: Symbian - fix compile error when default configured New code assumed building with OpenGL/OpenVG, which is the production configuration, but not the default configuration Reviewed-By: Jani Hautakangas Task-Number: QTBUG-21996 --- src/gui/painting/qgraphicssystemex_symbian.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qgraphicssystemex_symbian.cpp b/src/gui/painting/qgraphicssystemex_symbian.cpp index 32e040f..5a182ff 100644 --- a/src/gui/painting/qgraphicssystemex_symbian.cpp +++ b/src/gui/painting/qgraphicssystemex_symbian.cpp @@ -46,7 +46,7 @@ #include -#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#if defined(Q_SYMBIAN_SUPPORTS_SURFACES) && !defined (QT_NO_EGL) #include "private/qegl_p.h" #endif @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE static bool bcm2727Initialized = false; static bool bcm2727 = false; -#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#if defined(Q_SYMBIAN_SUPPORTS_SURFACES) && !defined (QT_NO_EGL) typedef EGLBoolean (*NOK_resource_profiling)(EGLDisplay, EGLint, EGLint*, EGLint, EGLint*); #define EGL_PROF_TOTAL_MEMORY_NOK 0x3070 #endif @@ -69,7 +69,7 @@ bool QSymbianGraphicsSystemEx::hasBCM2727() if (bcm2727Initialized) return bcm2727; -#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#if defined(Q_SYMBIAN_SUPPORTS_SURFACES) && !defined (QT_NO_EGL) EGLDisplay display = QEgl::display(); #if 1 // Hacky but fast ~0ms. -- cgit v0.12 From 865ad5053f053c9274973bb07e9f0ca04fd043d3 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Mon, 7 Nov 2011 15:42:42 +0000 Subject: symbian - handle path being passed as part of filename in QTranslator Although incorrect API usage, this was a regression from 4.7.3 behaviour Task-number: QTBUG-22489 Reviewed-by: mread --- src/corelib/kernel/qtranslator.cpp | 18 ++++++++++--- tests/auto/qtranslator/i18n/hellotr_en.qm | Bin 0 -> 230 bytes tests/auto/qtranslator/qtranslator.pro | 1 + tests/auto/qtranslator/tst_qtranslator.cpp | 40 +++++++++++++++++++++++++++-- 4 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 tests/auto/qtranslator/i18n/hellotr_en.qm diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp index 8c08760..ca30db1 100644 --- a/src/corelib/kernel/qtranslator.cpp +++ b/src/corelib/kernel/qtranslator.cpp @@ -405,13 +405,26 @@ bool QTranslator::load(const QString & filename, const QString & directory, Q_D(QTranslator); d->clear(); + QString fname = filename; QString prefix; if (QFileInfo(filename).isRelative()) { #ifdef Q_OS_SYMBIAN - if (directory.isEmpty()) + //TFindFile doesn't like path in the filename + QString dir(directory); + int slash = filename.lastIndexOf(QLatin1Char('/')); + slash = qMax(slash, filename.lastIndexOf(QLatin1Char('\\'))); + if (slash >=0) { + //so move the path component into the directory prefix + if (dir.isEmpty()) + dir = filename.left(slash + 1); + else + dir = dir + QLatin1Char('/') + filename.left(slash + 1); + fname = fname.mid(slash + 1); + } + if (dir.isEmpty()) prefix = QCoreApplication::applicationDirPath(); else - prefix = QFileInfo(directory).absoluteFilePath(); //TFindFile doesn't like dirty paths + prefix = QFileInfo(dir).absoluteFilePath(); //TFindFile doesn't like dirty paths if (prefix.length() > 2 && prefix.at(1) == QLatin1Char(':') && prefix.at(0).isLetter()) prefix[0] = QLatin1Char('Y'); #else @@ -425,7 +438,6 @@ bool QTranslator::load(const QString & filename, const QString & directory, QString nativePrefix = QDir::toNativeSeparators(prefix); #endif - QString fname = filename; QString realname; QString delims; delims = search_delimiters.isNull() ? QString::fromLatin1("_.") : search_delimiters; diff --git a/tests/auto/qtranslator/i18n/hellotr_en.qm b/tests/auto/qtranslator/i18n/hellotr_en.qm new file mode 100644 index 0000000..cc42afe Binary files /dev/null and b/tests/auto/qtranslator/i18n/hellotr_en.qm differ diff --git a/tests/auto/qtranslator/qtranslator.pro b/tests/auto/qtranslator/qtranslator.pro index 5b742f7..8ab1fd3 100644 --- a/tests/auto/qtranslator/qtranslator.pro +++ b/tests/auto/qtranslator/qtranslator.pro @@ -4,6 +4,7 @@ RESOURCES += qtranslator.qrc wince*|symbian: { addFiles.sources = hellotr_la.qm msgfmt_from_po.qm + addFiles.sources += i18n addFiles.path = . DEPLOYMENT += addFiles } diff --git a/tests/auto/qtranslator/tst_qtranslator.cpp b/tests/auto/qtranslator/tst_qtranslator.cpp index 8e2ed15..6f65e6a 100644 --- a/tests/auto/qtranslator/tst_qtranslator.cpp +++ b/tests/auto/qtranslator/tst_qtranslator.cpp @@ -66,6 +66,10 @@ protected: private slots: void load(); void load2(); + void loadSubdir(); + void loadSubdir2(); + void loadSubdir3(); + void loadSubdir4(); void threadLoad(); void testLanguageChange(); void plural(); @@ -124,6 +128,38 @@ void tst_QTranslator::load2() QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!")); } +void tst_QTranslator::loadSubdir() +{ + QTranslator tor( 0 ); + tor.load("hellotr_en_GB", "i18n"); + QVERIFY(!tor.isEmpty()); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!")); +} + +void tst_QTranslator::loadSubdir2() +{ + QTranslator tor( 0 ); + tor.load("i18n/hellotr_en_GB"); + QVERIFY(!tor.isEmpty()); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!")); +} + +void tst_QTranslator::loadSubdir3() +{ + QTranslator tor( 0 ); + tor.load(QString(QLatin1String("i18n%1hellotr_en_GB")).arg(QDir::separator())); + QVERIFY(!tor.isEmpty()); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!")); +} + +void tst_QTranslator::loadSubdir4() +{ + QTranslator tor( 0 ); + tor.load("./hellotr_en_GB", "i18n"); + QVERIFY(!tor.isEmpty()); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!")); +} + class TranslatorThread : public QThread { void run() { @@ -249,10 +285,10 @@ void tst_QTranslator::loadFromResource() void tst_QTranslator::loadDirectory() { - QVERIFY(QFileInfo("../qtranslator").isDir()); + QVERIFY(QFileInfo("i18n").isDir()); QTranslator tor; - tor.load("qtranslator", ".."); + tor.load("qtranslator", "i18n"); QVERIFY(tor.isEmpty()); } -- cgit v0.12 From 96e484c95629afd1f550449296f82c0561e64d26 Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Tue, 8 Nov 2011 10:04:45 +0200 Subject: Fix to QtOpenGL crash on Symbian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Under some rare circumstances EGL context creation fails on Symbian leading to application crash. However, Qt is able to recover from this if context pointers are guarded by null pointer checks in QtOpenGL. Task-number: QT-5334 Reviewed-by: Samuel Rødal --- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 4 +++ src/opengl/qwindowsurface_gl.cpp | 31 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index f5fe739..2db5b79 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -2108,6 +2108,10 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev) return false; d->ctx = d->device->context(); +#ifdef Q_OS_SYMBIAN + if (!d->ctx) + return false; +#endif d->ctx->d_ptr->active_engine = this; const QSize sz = d->device->size(); diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index d93efb4..e963f8c 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -192,6 +192,14 @@ public: if (!initializing && !widget && !cleanedUp) { initializing = true; widget = new QGLWidget(QGLFormat(QGL::SingleBuffer | QGL::NoDepthBuffer | QGL::NoStencilBuffer)); +#ifdef Q_OS_SYMBIAN + if (!widget->context()->isValid()) { + delete widget; + widget = 0; + initializing = false; + return 0; + } +#endif widget->resize(1, 1); // We don't need this internal widget to appear in QApplication::topLevelWidgets() @@ -369,7 +377,7 @@ QGLWindowSurface::~QGLWindowSurface() #ifdef Q_OS_SYMBIAN // Destroy the context if necessary. - if (!qt_gl_share_widget()->context()->isSharing()) + if (qt_gl_share_widget() && !qt_gl_share_context()->isSharing()) qt_destroy_gl_share_widget(); #endif } @@ -420,7 +428,12 @@ void QGLWindowSurface::hijackWindow(QWidget *widget) ctx = new QGLContext(surfaceFormat, widget); ctx->create(qt_gl_share_context()); - +#ifdef Q_OS_SYMBIAN + if (!ctx->isValid()) { + delete ctx; + return; + } +#endif #ifndef QT_NO_EGL static bool checkedForNOKSwapRegion = false; static bool haveNOKSwapRegion = false; @@ -468,6 +481,10 @@ QPaintDevice *QGLWindowSurface::paintDevice() { updateGeometry(); +#ifdef Q_OS_SYMBIAN + // On symbian we always return glDevice, even if it's invalid + return &d_ptr->glDevice; +#else if (d_ptr->pb) return d_ptr->pb; @@ -479,6 +496,7 @@ QPaintDevice *QGLWindowSurface::paintDevice() Q_ASSERT(d_ptr->fbo); return d_ptr->fbo; +#endif } static void drawTexture(const QRectF &rect, GLuint tex_id, const QSize &texSize, const QRectF &src = QRectF()); @@ -693,6 +711,10 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint & QGLContext *previous_ctx = const_cast(QGLContext::currentContext()); QGLContext *ctx = reinterpret_cast(parent->d_func()->extraData()->glContext); +#ifdef Q_OS_SYMBIAN + if (!ctx) + return; +#endif // QPainter::end() should have unbound the fbo, otherwise something is very wrong... Q_ASSERT(!d_ptr->fbo || !d_ptr->fbo->isBound()); @@ -892,7 +914,10 @@ void QGLWindowSurface::updateGeometry() { hijackWindow(window()); QGLContext *ctx = reinterpret_cast(wd->extraData()->glContext); - +#ifdef Q_OS_SYMBIAN + if (!ctx) + return; +#endif #ifdef Q_WS_MAC ctx->updatePaintDevice(); #endif -- cgit v0.12 From e1d6df4e5931ee49b4b68dd5a33146f5639268b7 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Fri, 4 Nov 2011 16:56:12 +0100 Subject: SSL: blacklist intermediate certificates that issued weak certs ... as did browser vendors. Tested manually with affected CA certificates. Reviewed-by: Richard J. Moore --- src/network/ssl/qsslcertificate.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp index 2a2ad55..85cd06c 100644 --- a/src/network/ssl/qsslcertificate.cpp +++ b/src/network/ssl/qsslcertificate.cpp @@ -814,6 +814,9 @@ static const char *certificate_blacklist[] = { // "(has not been seen in the wild so far)", "Stichting TTP Infos CA," // compromised during DigiNotar breach "1184640175", "DigiNotar Root CA", // DigiNotar intermediate cross-signed by Entrust "1184644297", "DigiNotar Root CA", // DigiNotar intermediate cross-signed by Entrust + + "120001705", "Digisign Server ID (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Verizon CyberTrust + "1276011370", "Digisign Server ID - (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Entrust 0 }; -- cgit v0.12 From 74884dd3821b22453804cd726e8d10908f493adf Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 8 Nov 2011 13:55:21 +0100 Subject: Qt Designer: Fix static linking on Mac. Add a comment in shared.pri explaining the problem. See also e7762b60d519c9ae4b47f6c4ceece584408247ea Reviewed-by: Jarek Kobus Task-number: QTBUG-22542 --- .../src/components/propertyeditor/propertyeditor.pri | 9 +++++++-- tools/designer/src/lib/shared/shared.pri | 12 +++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/designer/src/components/propertyeditor/propertyeditor.pri b/tools/designer/src/components/propertyeditor/propertyeditor.pri index 60219e1..e5e4d46 100644 --- a/tools/designer/src/components/propertyeditor/propertyeditor.pri +++ b/tools/designer/src/components/propertyeditor/propertyeditor.pri @@ -4,8 +4,13 @@ INCLUDEPATH += $$PWD -include(../../../../shared/qtpropertybrowser/qtpropertybrowser.pri) -include(../../../../shared/qtgradienteditor/qtcolorbutton.pri) +contains(CONFIG, static) { # see shared.pri + INCLUDEPATH *= $$QT_SOURCE_TREE/tools/shared/qtpropertybrowser + INCLUDEPATH *= $$QT_SOURCE_TREE/tools/shared/qtgradienteditor +} else { + include(../../../../shared/qtpropertybrowser/qtpropertybrowser.pri) + include(../../../../shared/qtgradienteditor/qtcolorbutton.pri) +} FORMS += $$PWD/paletteeditor.ui \ $$PWD/stringlisteditor.ui \ diff --git a/tools/designer/src/lib/shared/shared.pri b/tools/designer/src/lib/shared/shared.pri index 9d50911..b07f565 100644 --- a/tools/designer/src/lib/shared/shared.pri +++ b/tools/designer/src/lib/shared/shared.pri @@ -2,7 +2,17 @@ INCLUDEPATH += $$PWD contains(QT_CONFIG, script): QT += script -include(../../../../shared/qtpropertybrowser/qtpropertybrowserutils.pri) +# When linking dynamically, use only the QKeySequenceEdit widget of +# the property browser solution as the other symbols of the property +# browser solution must not be duplicated (see e7762b60d51). When linking +# statically, add the property browser solution to make the library self-contained +# and use only the include path in the property editor (see propertyeditor.pri) + +contains(CONFIG, static) { + include(../../../../shared/qtpropertybrowser/qtpropertybrowser.pri) +} else { + include(../../../../shared/qtpropertybrowser/qtpropertybrowserutils.pri) +} include(../../../../shared/deviceskin/deviceskin.pri) include(../../../../../src/tools/rcc/rcc.pri) include(../../../../shared/findwidget/findwidget.pri) -- cgit v0.12 From 1496976a05b8804135608c7dde9bca5620950c33 Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Mon, 7 Nov 2011 16:24:21 +0100 Subject: Fix localized font family access in OS X MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Font family names listed in QFontDatabase::families() should be localized names rather than their default (English) names, to be consistent with behaviors in other Mac apps and previous Qt/Mac based on ATS. It should also be possible to verify if a font exists with any family name, regardless it's localized or not. Say we have font "Hiragino Mincho Pro", which has a Japanese name called "ヒラギ ノ明朝 Pro", then db.hasFamily(QString::fromUtf8("ヒラギノ明朝 Pro")) should return true. Task-number: QTBUG-22372 Reviewed-by: Morten Sorvig --- src/gui/text/qfontdatabase.cpp | 2 +- src/gui/text/qfontdatabase_mac.cpp | 26 +++++++++++++++++++++++--- tests/auto/qfontdatabase/tst_qfontdatabase.cpp | 15 +++++++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 796c455..8d375b8 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -1132,7 +1132,7 @@ QT_BEGIN_INCLUDE_NAMESPACE #endif QT_END_INCLUDE_NAMESPACE -#if !defined(Q_WS_X11) +#if !defined(Q_WS_X11) && !defined(Q_WS_MAC) QString QFontDatabase::resolveFontFamilyAlias(const QString &family) { return family; diff --git a/src/gui/text/qfontdatabase_mac.cpp b/src/gui/text/qfontdatabase_mac.cpp index 9a8e8af..81500c7 100644 --- a/src/gui/text/qfontdatabase_mac.cpp +++ b/src/gui/text/qfontdatabase_mac.cpp @@ -104,9 +104,8 @@ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) { const int numFonts = CFArrayGetCount(fonts); for(int i = 0; i < numFonts; ++i) { CTFontDescriptorRef font = (CTFontDescriptorRef)CFArrayGetValueAtIndex(fonts, i); - - QCFString family_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontFamilyNameAttribute); - QCFString style_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontStyleNameAttribute); + QCFString family_name = (CFStringRef)CTFontDescriptorCopyLocalizedAttribute(font, kCTFontFamilyNameAttribute, NULL); + QCFString style_name = (CFStringRef)CTFontDescriptorCopyLocalizedAttribute(font, kCTFontStyleNameAttribute, NULL); QtFontFamily *family = db->family(family_name, true); for(int ws = 1; ws < QFontDatabase::WritingSystemsCount; ++ws) family->writingSystems[ws] = QtFontFamily::Supported; @@ -489,4 +488,25 @@ bool QFontDatabase::supportsThreadedFontRendering() return true; } +QString QFontDatabase::resolveFontFamilyAlias(const QString &family) +{ + QCFString expectedFamily = QCFString(family); + + QCFType attributes = CFDictionaryCreateMutable(NULL, 0, + &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + CFDictionaryAddValue(attributes, kCTFontFamilyNameAttribute, expectedFamily); + QCFType descriptor = CTFontDescriptorCreateWithAttributes(attributes); + + QCFType mandatoryAttributes = CFSetCreateMutable(NULL, 0, &kCFTypeSetCallBacks); + CFSetAddValue(mandatoryAttributes, kCTFontFamilyNameAttribute); + + QCFType font = CTFontCreateWithFontDescriptor(descriptor, 0.0, NULL); + QCFType matched = CTFontDescriptorCreateMatchingFontDescriptor(descriptor, mandatoryAttributes); + if (!matched) + return family; + + QCFString familyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(matched, kCTFontFamilyNameAttribute, NULL); + return familyName; +} + QT_END_NAMESPACE diff --git a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp index 735c7e4..15be776 100644 --- a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp +++ b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp @@ -80,6 +80,10 @@ private slots: void addAppFont_data(); void addAppFont(); + +#ifdef Q_WS_MAC + void localizedFonts(); +#endif }; tst_QFontDatabase::tst_QFontDatabase() @@ -275,5 +279,16 @@ void tst_QFontDatabase::addAppFont() QVERIFY(db.families() == oldFamilies); } +#ifdef Q_WS_MAC +void tst_QFontDatabase::localizedFonts() +{ + QFontDatabase db; + + QVERIFY(db.hasFamily(QString::fromUtf8("ヒラギノ明朝 Pro"))); + QVERIFY(db.hasFamily(QString::fromUtf8("华文宋体"))); + QVERIFY(!db.hasFamily(QString::fromUtf8("NotValidFont"))); +} +#endif + QTEST_MAIN(tst_QFontDatabase) #include "tst_qfontdatabase.moc" -- cgit v0.12 From 738b1d2d93a77283bc40e3d03f378a2db8aec97f Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Tue, 8 Nov 2011 12:49:27 +0100 Subject: Fix styleName listing with the same QtFontStyle::Key value We should store fonts with different style names but the same QtFontStyle::Key value (italic, weight and stretch) separately, so that fonts like Osaka (Regular, Regular-Mono) can be listed correctly. dd0205e0fbacf340508686cc136d70eda7bf664d introduced this regression when moving styleName out of Key. Without a styleName specified, we will do binary search and insertion for styles by comparing QtFontStyle::Key. We should do the same but comparing styleName instead when it's available. Reviewed-by: Eskil --- src/gui/text/qfontdatabase.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 8d375b8..675c292 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -359,23 +359,26 @@ QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &st { int pos = 0; if (count) { - // if styleName for searching first if possible - if (!styleName.isEmpty()) { - for (; pos < count; pos++) { - if (styles[pos]->styleName == styleName) - return styles[pos]; - } - } int low = 0; int high = count; + bool hasStyleName = !styleName.isEmpty(); // search styleName first if available pos = count / 2; while (high > low) { - if (styles[pos]->key == key) - return styles[pos]; - if (styles[pos]->key < key) - low = pos + 1; - else - high = pos; + if (hasStyleName) { + if (styles[pos]->styleName == styleName) + return styles[pos]; + if (styles[pos]->styleName < styleName) + low = pos + 1; + else + high = pos; + } else { + if (styles[pos]->key == key) + return styles[pos]; + if (styles[pos]->key < key) + low = pos + 1; + else + high = pos; + } pos = (high + low) / 2; } pos = low; @@ -383,7 +386,7 @@ QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &st if (!create) return 0; -// qDebug("adding key (weight=%d, style=%d, oblique=%d stretch=%d) at %d", key.weight, key.style, key.oblique, key.stretch, pos); + // qDebug("adding key (weight=%d, style=%d, stretch=%d) at %d", key.weight, key.style, key.stretch, pos); if (!(count % 8)) { QtFontStyle **newStyles = (QtFontStyle **) realloc(styles, (((count+8) >> 3) << 3) * sizeof(QtFontStyle *)); -- cgit v0.12 From bfc522f4d340c4696f027e36f38a7fc4e71924e7 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 7 Nov 2011 22:04:06 +0100 Subject: QNAM: Fix authentication cache when the password is in the URL Two problems: - The signal cacheCredidentials was not connected in the synchronous case while it must be connected. (Regression when the threaded http was merged) - We cannot cache the credidentials when we proceed the url because at that point, we do not know the realm (this basically reverts 9bc5a32b875b812c3a706034c8c27614f86bd138) Merge-request: 1459 Reviewed-by: Peter Hartmann Task-number: QTBUG-18411 --- src/network/access/qhttpnetworkconnection.cpp | 5 ++ .../access/qhttpnetworkconnectionchannel.cpp | 1 - src/network/access/qhttpthreaddelegate.cpp | 5 +- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 89 ++++++++++++++++++++-- 4 files changed, 92 insertions(+), 8 deletions(-) diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 4f2145e..0365703 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -387,6 +387,11 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket // send any pending requests copyCredentials(i, auth, isProxy); } + } else if (priv->phase == QAuthenticatorPrivate::Start) { + // If the url's authenticator has a 'user' set we will end up here (phase is only set to 'Done' by + // parseHttpResponse above if 'user' is empty). So if credentials were supplied with the request, + // such as in the case of an XMLHttpRequest, this is our only opportunity to cache them. + emit reply->cacheCredentials(reply->request(), auth); } // - Changing values in QAuthenticator will reset the 'phase'. Therefore if it is still "Done" // then nothing was filled in by the user or the cache diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 9b2a6e8..15fda34 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -201,7 +201,6 @@ bool QHttpNetworkConnectionChannel::sendRequest() || (!url.password().isEmpty() && url.password() != auth.password())) { auth.setUser(url.userName()); auth.setPassword(url.password()); - emit reply->cacheCredentials(request, &auth); connection->d_func()->copyCredentials(connection->d_func()->indexOf(socket), &auth, false); } // clear the userinfo, since we use the same request for resending diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp index 092fa7d..68c2292 100644 --- a/src/network/access/qhttpthreaddelegate.cpp +++ b/src/network/access/qhttpthreaddelegate.cpp @@ -312,8 +312,6 @@ void QHttpThreadDelegate::startRequest() // some signals are only interesting when normal asynchronous style is used connect(httpReply,SIGNAL(readyRead()), this, SLOT(readyReadSlot())); connect(httpReply,SIGNAL(dataReadProgress(int, int)), this, SLOT(dataReadProgressSlot(int,int))); - connect(httpReply, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)), - this, SLOT(cacheCredentialsSlot(QHttpNetworkRequest,QAuthenticator*))); #ifndef QT_NO_OPENSSL connect(httpReply,SIGNAL(sslErrors(const QList)), this, SLOT(sslErrorsSlot(QList))); #endif @@ -325,6 +323,9 @@ void QHttpThreadDelegate::startRequest() connect(httpReply, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), this, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); } + + connect(httpReply, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)), + this, SLOT(cacheCredentialsSlot(QHttpNetworkRequest,QAuthenticator*))); } // This gets called from the user thread or by the synchronous HTTP timeout timer diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 3d1e35e..9df820a 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -378,6 +378,7 @@ private Q_SLOTS: void httpAbort(); void dontInsertPartialContentIntoTheCache(); + void synchronousAuthenticationCache(); // NOTE: This test must be last! void parentingRepliesToTheApp(); @@ -499,6 +500,14 @@ protected: client->setParent(this); ++totalConnections; } + + virtual void reply() { + // we need to emulate the bytesWrittenSlot call if the data is empty. + if (dataToTransmit.size() == 0) + QMetaObject::invokeMethod(this, "bytesWrittenSlot", Qt::QueuedConnection); + else + client->write(dataToTransmit); + } private: void connectSocketSignals() { @@ -532,11 +541,7 @@ public slots: if (multiple) receivedData.remove(0, doubleEndlPos+4); - // we need to emulate the bytesWrittenSlot call if the data is empty. - if (dataToTransmit.size() == 0) - QMetaObject::invokeMethod(this, "bytesWrittenSlot", Qt::QueuedConnection); - else - client->write(dataToTransmit); + reply(); } } @@ -6344,6 +6349,80 @@ void tst_QNetworkReply::dontInsertPartialContentIntoTheCache() QCOMPARE(memoryCache->m_insertedUrls.count(), 0); } +void tst_QNetworkReply::synchronousAuthenticationCache() +{ + class MiniAuthServer : public MiniHttpServer { + public: + MiniAuthServer(QThread *thread) : MiniHttpServer(QByteArray(), false, thread) {}; + virtual void reply() { + + dataToTransmit = + "HTTP/1.0 401 Unauthorized\r\n" + "WWW-Authenticate: Basic realm=\"QNetworkAccessManager Test Realm\"\r\n" + "Content-Length: 4\r\n" + "Connection: close\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + "auth"; + QRegExp rx("Authorization: Basic ([^\r\n]*)\r\n"); + if (rx.indexIn(receivedData) > 0) { + if (QByteArray::fromBase64(rx.cap(1).toLatin1()) == "login:password") { + dataToTransmit = + "HTTP/1.0 200 OK\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: 2\r\n" + "\r\n" + "OK"; + } + } + receivedData.clear(); + MiniHttpServer::reply(); + } + }; + + // when using synchronous commands, we need a different event loop for + // the server thread, because the client is never returning to the + // event loop + QScopedPointer serverThread(new QThread); + QScopedPointer server(new MiniAuthServer(serverThread.data())); + server->doClose = true; + + //1) URL without credentials, we are not authenticated + { + QUrl url = "http://localhost:" + QString::number(server->serverPort()) + "/path"; + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); + + QNetworkReplyPtr reply = manager.get(request); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); + } + + //2) URL with credentials, we are authenticated + { + QUrl url = "http://login:password@localhost:" + QString::number(server->serverPort()) + "/path2"; + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); + + QNetworkReplyPtr reply = manager.get(request); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::NoError); + QCOMPARE(reply->readAll().constData(), "OK"); + } + + //3) URL without credentials, we are authenticated because they are cached + { + QUrl url = "http://localhost:" + QString::number(server->serverPort()) + "/path3"; + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SynchronousRequestAttribute, true); + + QNetworkReplyPtr reply = manager.get(request); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::NoError); + QCOMPARE(reply->readAll().constData(), "OK"); + } +} + // NOTE: This test must be last testcase in tst_qnetworkreply! void tst_QNetworkReply::parentingRepliesToTheApp() { -- cgit v0.12 From 68de09f538ae1103a3104e0fba1086ea93581b6e Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Wed, 9 Nov 2011 16:06:55 +0100 Subject: Fix regression in styleName searching 1. Faked styles should have styleNames as well otherwise we couldn't find them. 2. With a QtFontFoundry mixed with style keys and style names, there is no way to sort them in a manner than binary search will work, we have to use linear search instead. --- src/gui/text/qfontdatabase.cpp | 33 +++++++++------------------------ src/gui/text/qfontdatabase_x11.cpp | 1 + 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 675c292..d5d8a12 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -91,6 +91,8 @@ QT_BEGIN_NAMESPACE bool qt_enable_test_font = false; +static QString styleStringHelper(int weight, QFont::Style style); + Q_AUTOTEST_EXPORT void qt_setQtEnableTestFont(bool value) { qt_enable_test_font = value; @@ -358,30 +360,15 @@ struct QtFontFoundry QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &styleName, bool create) { int pos = 0; - if (count) { - int low = 0; - int high = count; + for (; pos < count; pos++) { bool hasStyleName = !styleName.isEmpty(); // search styleName first if available - pos = count / 2; - while (high > low) { - if (hasStyleName) { - if (styles[pos]->styleName == styleName) - return styles[pos]; - if (styles[pos]->styleName < styleName) - low = pos + 1; - else - high = pos; - } else { - if (styles[pos]->key == key) - return styles[pos]; - if (styles[pos]->key < key) - low = pos + 1; - else - high = pos; - } - pos = (high + low) / 2; + if (hasStyleName && !styles[pos]->styleName.isEmpty()) { + if (styles[pos]->styleName == styleName) + return styles[pos]; + } else { + if (styles[pos]->key == key) + return styles[pos]; } - pos = low; } if (!create) return 0; @@ -396,13 +383,11 @@ QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &st QtFontStyle *style = new QtFontStyle(key); style->styleName = styleName; - memmove(styles + pos + 1, styles + pos, (count-pos)*sizeof(QtFontStyle *)); styles[pos] = style; count++; return styles[pos]; } - struct QtFontFamily { enum WritingSystemStatus { diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp index 922a97f..df25aa6 100644 --- a/src/gui/text/qfontdatabase_x11.cpp +++ b/src/gui/text/qfontdatabase_x11.cpp @@ -1361,6 +1361,7 @@ static void initializeDb() // let's fake one... equiv = foundry->style(key, QString(), true); + equiv->styleName = styleStringHelper(key.weight, QFont::Style(key.style)); equiv->smoothScalable = true; QtFontSize *equiv_size = equiv->pixelSize(SMOOTH_SCALABLE, true); -- cgit v0.12 From 5cc8175242addb6668c3af299e9bc002f23527a2 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Wed, 9 Nov 2011 17:01:09 +0100 Subject: Updated WebKit to 52a11cec052aa40d3bbc06861be1177b649b4a99 --- src/3rdparty/webkit/.tag | 2 +- src/3rdparty/webkit/ChangeLog | 20 +++++ src/3rdparty/webkit/Source/WebCore/WebCore.pri | 4 +- .../Source/WebCore/bindings/js/JSExceptionBase.h | 86 +++++++++++----------- src/3rdparty/webkit/Source/WebKit.pri | 10 ++- src/3rdparty/webkit/VERSION | 2 +- 6 files changed, 73 insertions(+), 51 deletions(-) diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index a5f6423..12a28b8 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -99371ddc1d61832131835964a753e1c5817f6916 +52a11cec052aa40d3bbc06861be1177b649b4a99 diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog index a661d6a..bbaf26d 100644 --- a/src/3rdparty/webkit/ChangeLog +++ b/src/3rdparty/webkit/ChangeLog @@ -1,3 +1,23 @@ +2011-11-09 Zeno Albisser + + [Qt] Unreviewed: Fix build on Mac. + https://bugreports.qt.nokia.com/browse/QTBUG-20619 + + This bug was introduced by the previous commit + for the same bugreport. + + * Source/WebKit.pri: + +2011-11-09 Zeno Albisser + + [Qt] Unreviewed: Fix debug_and_release build on Windows. + https://bugreports.qt.nokia.com/browse/QTBUG-20619 + + This bug was introduced by the previous commit + for the same bugreport. + + * Source/WebKit.pri: + 2011-11-03 Zeno Albisser [Qt] Unreviewed: Fix universal binary build on Mac. diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index d8ba8a6..82311d2 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -153,7 +153,7 @@ symbian { CONFIG += do_not_build_as_thumb CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3 - # Symbian plugin support. + # Symbian plugin support LIBS += -lefsrv !CONFIG(QTDIR_build) { @@ -303,7 +303,7 @@ win32-* { } # Remove whole program optimizations due to miscompilations -win32-msvc2005|win32-msvc2008|win32-msvc2010|wince*:{ +win32-msvc2005|win32-msvc2008|wince*:{ QMAKE_CFLAGS_RELEASE -= -GL QMAKE_CXXFLAGS_RELEASE -= -GL diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h index 7713002..01c6ac2 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h @@ -1,43 +1,43 @@ -/* - * Copyright (C) 2009 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef JSExceptionBase_h -#define JSExceptionBase_h - -namespace JSC { - -class JSValue; - -} // namespace JSC - -namespace WebCore { - -class ExceptionBase; - -ExceptionBase* toExceptionBase(JSC::JSValue); - -} // namespace WebCore - -#endif // JSExceptionBase_h +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSExceptionBase_h +#define JSExceptionBase_h + +namespace JSC { + +class JSValue; + +} // namespace JSC + +namespace WebCore { + +class ExceptionBase; + +ExceptionBase* toExceptionBase(JSC::JSValue); + +} // namespace WebCore + +#endif // JSExceptionBase_h diff --git a/src/3rdparty/webkit/Source/WebKit.pri b/src/3rdparty/webkit/Source/WebKit.pri index bc889d1..c469d1a 100644 --- a/src/3rdparty/webkit/Source/WebKit.pri +++ b/src/3rdparty/webkit/Source/WebKit.pri @@ -12,10 +12,12 @@ CONFIG(QTDIR_build) { win32|mac:!macx-xcode:CONFIG += debug_and_release # In case we are building a universal binary for Qt, building debug is not # possible because we would exceed the maximum library size for 32bit. - mac:CONFIG(QT_CONFIG, x86):CONFIG(QT_CONFIG, x86_64):debug|debug_and_release { - message(Building a universal binary with debug symbols is not possible. Building release!) - CONFIG -= debug_and_release debug - CONFIG += release + mac:contains(QT_CONFIG, x86):contains(QT_CONFIG, x86_64) { + CONFIG(debug_and_release)|CONFIG(debug, debug|release) { + message(Building a universal binary with debug symbols is not possible. Building release!) + CONFIG -= debug_and_release debug + CONFIG += release + } } } else { !CONFIG(release, debug|release) { diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 19f5536..750e7e7 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - 99371ddc1d61832131835964a753e1c5817f6916 + 52a11cec052aa40d3bbc06861be1177b649b4a99 -- cgit v0.12 From 42543208749fc3b6b24983c0a7b3a6d8e62801a2 Mon Sep 17 00:00:00 2001 From: Ademar de Souza Reis Jr Date: Mon, 19 Sep 2011 10:43:14 -0300 Subject: Re-apply change 945c44d0865cf44363e6c860995f971ce952dd5f by Ademar de Souza Reis Jr dos2unix on a webkit source file (fix support for Visual Studio) webkit/Source/WebCore/bindings/js/JSExceptionBase.h had CRLF terminations, which Visual Studio didn't like for some reason. Reported by Simo Falt. Patch is also being submited to upstream (webkit.org) --- .../Source/WebCore/bindings/js/JSExceptionBase.h | 86 +++++++++++----------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h index 01c6ac2..7713002 100644 --- a/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h +++ b/src/3rdparty/webkit/Source/WebCore/bindings/js/JSExceptionBase.h @@ -1,43 +1,43 @@ -/* - * Copyright (C) 2009 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef JSExceptionBase_h -#define JSExceptionBase_h - -namespace JSC { - -class JSValue; - -} // namespace JSC - -namespace WebCore { - -class ExceptionBase; - -ExceptionBase* toExceptionBase(JSC::JSValue); - -} // namespace WebCore - -#endif // JSExceptionBase_h +/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JSExceptionBase_h +#define JSExceptionBase_h + +namespace JSC { + +class JSValue; + +} // namespace JSC + +namespace WebCore { + +class ExceptionBase; + +ExceptionBase* toExceptionBase(JSC::JSValue); + +} // namespace WebCore + +#endif // JSExceptionBase_h -- cgit v0.12 From 3c4f8767ccd4f6214eae17992aa7b0ad0630eb36 Mon Sep 17 00:00:00 2001 From: Ademar de Souza Reis Jr Date: Tue, 20 Sep 2011 11:12:04 -0300 Subject: Re-apply change 37cde52cb17b57f8ec89c248f06331ed4977e51c by Ademar de Souza Reis Jr Workaround MSVC2010 problems when linking QtWebKit Include MSVC2010 in the list of compilers where incremental build is disabled (INCREMENTAL:NO). Change suggested by Simo Falt --- src/3rdparty/webkit/Source/WebCore/WebCore.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index 82311d2..00357a1 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -303,7 +303,7 @@ win32-* { } # Remove whole program optimizations due to miscompilations -win32-msvc2005|win32-msvc2008|wince*:{ +win32-msvc2005|win32-msvc2008|win32-msvc2010|wince*:{ QMAKE_CFLAGS_RELEASE -= -GL QMAKE_CXXFLAGS_RELEASE -= -GL -- cgit v0.12 From 7a401da71f27ca9e9cd10bc8f1e0995a9992100d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 22 Sep 2011 14:48:44 +0200 Subject: Re-apply change e3208a8d44423bc3b5c32e2e90f68675e51a3b73 by Andreas Kling Sentences should end with a period! (Poor man's rebuild trigger.) --- src/3rdparty/webkit/Source/WebCore/WebCore.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/webkit/Source/WebCore/WebCore.pri b/src/3rdparty/webkit/Source/WebCore/WebCore.pri index 00357a1..d8ba8a6 100644 --- a/src/3rdparty/webkit/Source/WebCore/WebCore.pri +++ b/src/3rdparty/webkit/Source/WebCore/WebCore.pri @@ -153,7 +153,7 @@ symbian { CONFIG += do_not_build_as_thumb CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3 - # Symbian plugin support + # Symbian plugin support. LIBS += -lefsrv !CONFIG(QTDIR_build) { -- cgit v0.12 From 7eb770aed35fee50ff98c12e390dcb02c72b5132 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 9 Nov 2011 18:59:46 +0100 Subject: fix gdb_dwarf_index.prf for executables Unlike for libraries, $(TARGET) already contains $(DESTDIR). Changing to $(DESTDIR) does break the command in that case. Reviewed-by: ossi --- mkspecs/features/unix/gdb_dwarf_index.prf | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/unix/gdb_dwarf_index.prf b/mkspecs/features/unix/gdb_dwarf_index.prf index 14db4fc..7771ed4 100644 --- a/mkspecs/features/unix/gdb_dwarf_index.prf +++ b/mkspecs/features/unix/gdb_dwarf_index.prf @@ -1,8 +1,15 @@ !CONFIG(separate_debug_info):CONFIG(debug, debug|release):!staticlib:!static:!contains(TEMPLATE, subdirs):!isEmpty(QMAKE_OBJCOPY) { - QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } && \ + contains(TEMPLATE, "lib") { + QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } && + QMAKE_GDB_DIR = . + } else { + QMAKE_GDB_DIR = $(DESTDIR) + } + + QMAKE_GDB_INDEX += \ test \$\$(gdb --version | sed -e \'s,[^0-9]\\+\\([0-9]\\)\\.\\([0-9]\\).*,\\1\\2,;q\') -gt 72 && \ - gdb --nx --batch --quiet -ex \'set confirm off\' -ex \'save gdb-index .\' -ex quit \'$(TARGET)\' && \ + gdb --nx --batch --quiet -ex \'set confirm off\' -ex \'save gdb-index $$QMAKE_GDB_DIR\' -ex quit \'$(TARGET)\' && \ test -f $(TARGET).gdb-index && \ $$QMAKE_OBJCOPY --add-section \'.gdb_index=$(TARGET).gdb-index\' --set-section-flags \'.gdb_index=readonly\' \'$(TARGET)\' \'$(TARGET)\' && \ $$QMAKE_DEL_FILE $(TARGET).gdb-index || true -- cgit v0.12 From 3ae96155a760ba114fb7843154f9ae8e311162f9 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 9 Nov 2011 17:26:27 +0100 Subject: networking: regenerate effective TLD table for cookies Reviewed-by: Olivier Goffart --- src/corelib/io/qurltlds_p.h | 12916 ++++++++++--------- src/corelib/io/qurltlds_p.h.INFO | 4 +- .../qnetworkcookiejar/tst_qnetworkcookiejar.cpp | 6 + 3 files changed, 6752 insertions(+), 6174 deletions(-) diff --git a/src/corelib/io/qurltlds_p.h b/src/corelib/io/qurltlds_p.h index f4f525c..a6590a8 100644 --- a/src/corelib/io/qurltlds_p.h +++ b/src/corelib/io/qurltlds_p.h @@ -59,6421 +59,6993 @@ QT_BEGIN_NAMESPACE // for instructions see the program at // util/corelib/qurl-generateTLDs -static const quint16 tldCount = 3949; +static const quint16 tldCount = 4287; static const quint16 tldIndices[] = { 0, -7, -14, -14, -20, -51, +18, +39, 61, -93, -100, -100, -116, +68, +78, +78, +99, +99, +112, +125, 159, -167, -180, -180, -193, -234, -234, -234, -255, -255, -255, -280, -280, -287, -287, -295, -303, -313, -326, -326, +173, +226, +233, +233, +233, +240, +271, +278, +278, +290, +307, +314, +321, +340, +349, +364, 380, -393, -413, -419, -419, -419, -424, -438, -438, -469, -515, -515, -515, -534, -534, -557, -557, -557, -557, -572, -572, -572, -579, +403, +433, +440, +447, +454, +480, +480, +490, +530, +540, +547, +554, 587, -597, -612, -612, -624, -636, -648, -662, -687, -709, -714, -740, -766, -789, -789, -805, -805, -810, -815, -815, -824, -824, -831, -857, +626, +633, +641, +641, +641, +654, +670, +677, +677, +684, +713, +720, +734, +734, +753, +765, +792, +809, +816, +830, +837, +852, 869, -891, -891, -916, -916, -916, -927, -934, -964, -971, -987, -987, -987, -1008, -1008, -1016, -1016, +892, +912, +918, +949, +967, +1005, 1030, -1030, -1052, -1075, -1075, -1082, -1087, -1115, -1135, -1135, -1135, -1172, -1178, -1178, -1178, -1202, -1207, -1220, -1220, -1266, -1266, -1266, -1266, -1272, -1290, -1316, -1316, -1332, -1332, -1339, -1339, -1352, -1352, -1389, -1389, -1408, -1415, -1437, -1444, -1489, -1489, -1502, -1502, -1512, -1518, -1539, +1037, +1037, +1046, +1053, +1066, +1073, +1073, +1080, +1088, +1132, +1146, +1167, +1167, +1167, +1174, +1190, +1197, +1197, +1204, +1226, +1256, +1283, +1295, +1295, +1312, +1312, +1312, +1329, +1329, +1350, +1350, +1378, +1400, +1400, +1407, +1433, +1447, +1462, +1479, +1479, +1488, +1513, +1520, +1534, +1534, +1534, +1534, +1534, +1545, 1555, -1562, -1584, -1598, -1607, -1607, -1607, -1632, -1652, -1652, -1658, -1658, -1675, -1682, -1709, -1733, -1748, -1776, -1783, -1783, -1790, -1797, -1826, -1850, -1850, -1856, -1880, -1887, -1901, -1921, -1947, -1961, -1967, -1967, -1967, -1972, -1986, -1986, -1986, -2009, -2029, -2029, -2047, -2061, -2075, -2075, -2075, -2075, -2075, -2075, -2082, -2082, -2124, -2124, -2129, -2162, -2162, -2162, -2236, -2256, -2263, -2276, -2283, -2313, -2313, -2347, -2380, -2387, -2387, -2387, -2431, -2438, -2445, -2452, -2459, -2459, -2469, +1565, +1572, +1582, +1604, +1634, +1646, +1646, +1686, +1686, +1699, +1722, +1729, +1754, +1772, +1787, +1787, +1787, +1794, +1805, +1812, +1819, +1840, +1868, +1875, +1889, +1896, +1912, +1933, +1964, +1984, +1984, +1995, +2002, +2016, +2016, +2023, +2023, +2030, +2043, +2043, +2043, +2067, +2104, +2118, +2134, +2144, +2151, +2197, +2211, +2252, +2282, +2296, +2303, +2326, +2345, +2345, +2363, +2414, +2426, +2435, +2449, +2449, +2449, +2463, +2473, +2473, +2473, +2473, 2490, -2516, -2527, -2540, -2540, -2586, -2610, -2630, -2630, -2653, -2660, -2669, -2693, -2693, -2710, -2710, -2719, -2719, -2734, -2740, -2740, -2753, -2753, -2763, -2770, -2775, -2782, -2789, -2802, -2820, -2827, -2827, -2841, -2855, -2855, -2865, -2872, -2884, -2884, -2919, -2937, -2955, +2496, +2509, +2509, +2568, +2583, +2583, +2590, +2599, +2627, +2635, +2642, +2682, +2682, +2689, +2696, +2696, +2724, +2771, +2786, +2805, +2842, +2858, +2858, +2873, +2880, +2887, +2896, +2896, +2917, +2923, +2923, +2936, +2936, +2936, 2962, -3012, -3042, -3073, -3083, -3083, -3100, -3105, -3112, -3131, -3131, -3166, -3180, -3187, -3194, -3211, -3218, -3223, -3233, -3249, -3259, -3268, -3314, -3314, -3324, -3324, -3336, -3336, -3336, -3336, -3350, -3363, -3376, +2969, +2982, +2998, +2998, +3005, +3019, +3019, +3075, +3124, +3124, +3134, +3134, +3134, +3134, +3159, +3169, +3169, +3176, +3200, +3207, +3214, +3238, +3269, +3294, +3309, +3323, +3332, +3332, +3358, +3383, +3398, 3398, -3416, -3445, -3464, -3488, -3488, -3497, -3545, -3552, -3552, -3552, -3566, -3573, -3573, -3573, -3581, -3581, -3603, -3603, -3615, -3621, -3621, -3683, -3683, -3710, -3710, -3716, -3716, -3748, -3770, -3791, +3428, +3449, +3459, +3485, +3504, +3504, +3511, +3542, +3542, +3542, +3584, +3606, +3625, +3633, +3642, +3651, +3658, +3665, +3671, +3690, +3690, +3690, +3707, +3728, +3737, +3750, +3772, +3772, +3786, 3803, -3810, -3817, -3833, -3846, -3846, -3852, +3811, +3811, +3834, +3842, 3876, -3876, -3882, -3903, -3910, -3939, -3939, -3939, +3899, +3909, +3916, +3916, 3947, -3962, -3962, -3981, -3994, -4021, -4030, -4042, -4085, -4085, -4096, +3947, +3947, +3947, +3960, +3978, +3978, +3995, +3995, +4026, +4026, +4049, +4055, +4055, +4062, +4073, +4073, +4073, +4073, +4090, 4096, -4104, -4123, -4123, -4123, +4102, +4102, +4137, +4143, 4143, -4154, -4164, +4150, +4150, +4163, +4182, 4194, 4194, 4194, -4205, -4205, -4222, -4238, -4301, -4309, -4322, -4331, -4331, -4331, -4331, -4331, -4347, -4365, -4375, -4375, -4385, +4194, +4194, +4194, +4194, +4246, +4250, +4250, +4250, +4250, +4261, +4275, +4282, +4282, +4282, +4282, +4321, +4334, +4334, +4344, +4360, +4369, +4384, 4398, -4412, -4430, -4430, -4437, -4447, -4463, -4472, -4472, -4472, -4484, -4484, -4484, -4484, -4484, -4490, -4490, -4511, -4511, -4522, -4522, -4522, -4522, -4528, -4528, +4398, +4420, +4420, +4432, +4432, +4445, +4445, +4445, +4445, +4445, +4445, +4459, +4483, +4513, +4513, +4523, +4523, 4534, -4551, -4551, -4551, -4564, -4583, -4583, -4611, -4611, -4611, -4622, -4622, -4649, -4668, -4677, -4692, -4692, -4692, -4705, -4723, -4723, -4723, -4729, -4729, -4743, -4743, -4750, -4750, -4763, -4770, -4776, -4776, -4776, -4793, -4811, -4811, -4811, -4821, -4821, -4841, -4857, -4891, -4897, -4903, -4903, -4903, -4919, +4552, +4563, +4574, +4581, +4581, +4581, +4581, +4581, +4581, +4593, +4593, +4593, +4593, +4593, +4593, +4605, +4605, +4605, +4605, +4639, +4653, +4661, +4675, +4675, +4688, +4711, +4738, +4748, +4748, +4748, +4748, +4754, +4766, +4779, +4806, +4816, +4831, +4855, +4894, +4905, +4905, +4905, +4935, 4935, -4942, -4958, -4958, -4975, -4975, -4975, -4985, -4985, +4943, +4943, +4943, +4964, +4984, +5009, 5020, -5032, -5032, +5020, +5034, +5040, 5040, -5053, -5068, -5079, -5079, -5101, -5115, -5115, -5135, -5154, -5161, -5161, -5168, -5168, -5184, -5210, -5210, -5238, -5255, -5278, +5056, +5056, +5056, +5065, +5075, +5075, +5092, +5114, +5130, +5130, +5130, +5130, +5130, +5179, +5179, +5179, +5179, +5179, +5179, +5195, +5203, +5203, +5203, +5217, +5231, +5231, +5263, 5285, -5308, -5318, -5327, -5327, -5333, -5333, -5340, -5348, -5355, -5366, -5377, -5384, -5408, -5415, -5422, -5435, -5442, -5482, -5482, -5482, -5482, -5498, +5285, +5285, +5294, +5300, +5300, +5307, +5307, +5307, +5307, +5307, +5317, +5317, +5329, +5354, +5354, +5372, +5403, +5403, +5427, +5436, +5436, +5436, +5436, +5469, +5469, +5488, +5488, +5504, +5504, 5527, -5534, -5541, -5572, -5572, -5572, -5579, -5591, -5602, -5602, -5621, -5621, -5646, -5664, -5671, -5671, -5681, +5538, +5538, +5538, +5558, +5580, +5630, +5630, +5630, +5638, +5638, +5667, 5696, -5707, -5716, -5716, -5723, -5723, -5732, -5742, -5742, -5763, -5770, -5776, -5790, +5696, +5696, +5696, +5713, +5713, +5752, +5767, 5790, -5797, -5806, -5816, -5832, -5882, -5882, -5882, -5882, -5893, -5934, -5934, -5965, -5965, -5980, -5980, -5980, -5980, -6007, -6017, -6034, -6051, -6065, -6075, -6075, -6091, -6097, -6097, -6109, -6109, -6109, -6122, -6147, -6168, -6168, -6191, -6191, -6191, -6191, -6191, -6198, -6217, -6224, -6224, -6231, -6245, +5828, +5828, +5828, +5874, +5880, +5880, +5880, +5892, +5892, +5911, +5911, +5920, +5931, +5944, +5949, +5949, +5949, +5949, +5949, +5949, +5956, +5956, +5966, +5975, +5975, +5985, +5985, +6014, +6023, +6041, +6067, +6078, +6078, +6078, +6092, +6092, +6103, +6103, +6103, +6119, +6136, +6177, +6177, +6177, +6186, +6186, +6221, +6228, +6228, +6228, +6237, +6237, 6252, 6252, -6270, -6270, -6284, -6305, -6315, -6322, -6322, +6261, +6261, +6272, +6291, +6291, +6291, +6291, +6302, +6302, +6312, 6322, -6329, -6329, -6329, -6353, -6361, -6361, -6375, -6391, -6405, -6405, -6415, -6431, -6431, -6431, -6431, -6458, -6475, -6475, -6475, +6346, +6366, +6385, +6413, +6413, +6449, +6449, +6459, 6482, -6489, -6496, -6496, -6503, -6520, -6520, -6520, -6527, -6527, -6544, -6561, -6573, -6573, +6493, +6493, +6517, +6525, +6552, +6552, 6580, -6580, -6587, -6587, -6592, -6592, -6592, -6592, -6599, -6599, -6612, -6633, -6649, -6649, -6669, -6676, -6683, -6683, -6713, -6720, -6727, -6736, -6736, -6746, -6770, -6807, -6814, -6827, -6846, -6846, -6864, -6864, -6864, -6864, -6881, -6888, -6888, -6888, -6914, -6935, -6935, -6935, -6953, -6959, -6966, +6586, +6618, +6653, +6687, +6687, +6687, +6687, +6687, +6717, +6737, +6737, +6737, +6737, +6737, +6741, +6741, +6741, +6741, +6741, +6741, +6748, +6748, +6748, +6748, +6748, +6781, +6801, +6801, +6801, +6808, +6826, +6833, +6850, +6861, +6861, +6875, +6911, +6911, +6911, +6911, +6911, +6928, +6928, +6940, +6951, +6956, +6970, 6983, 6983, 6983, -7013, -7023, -7023, -7023, -7023, -7037, -7044, -7058, -7079, -7086, -7123, -7134, -7155, -7168, +7002, +7010, +7026, +7026, +7035, +7035, +7051, +7051, +7065, +7065, +7076, +7076, +7076, +7104, +7104, +7104, +7157, +7178, +7178, +7178, 7178, -7203, -7227, -7236, +7210, +7210, +7223, 7258, -7265, -7274, -7274, -7303, -7303, -7314, -7314, -7345, -7352, -7367, -7377, -7388, -7388, -7402, -7402, +7258, +7278, +7291, +7291, +7291, +7291, +7291, +7298, +7298, +7307, +7307, +7307, +7307, +7307, +7307, +7307, +7317, +7317, +7323, +7366, +7391, +7399, +7399, +7399, 7409, -7421, -7421, -7467, -7484, +7409, +7409, +7435, +7435, +7443, +7464, 7484, 7484, -7491, -7532, -7532, -7539, -7546, -7546, -7553, -7573, -7573, -7573, -7580, -7587, -7594, -7594, -7594, -7606, -7606, -7637, -7637, -7637, +7492, +7492, +7527, +7550, +7555, +7555, +7555, +7577, +7608, +7635, +7645, +7645, +7651, +7651, 7664, -7664, -7664, -7677, -7684, -7701, -7723, -7723, -7723, -7723, -7734, -7734, -7734, -7748, -7748, -7748, -7748, -7759, -7759, -7775, -7775, -7782, -7789, -7817, +7693, +7703, +7717, +7733, +7742, +7742, +7786, +7786, +7808, 7824, -7831, -7836, -7865, -7865, -7876, -7901, -7901, -7908, -7918, -7938, -7945, -7945, -7957, -7964, -7979, -7986, -7994, -8007, -8007, -8014, -8021, -8061, +7824, +7849, +7859, +7867, +7895, +7895, +7920, +7920, +7920, +7920, +7932, +7941, +7941, +7941, +7941, +7949, +7962, +7962, +7974, +7982, +7982, +8003, +8012, +8012, +8040, +8046, 8061, -8071, -8088, -8131, -8138, -8153, -8160, -8160, -8160, -8175, -8183, -8197, -8211, -8211, -8211, -8243, -8243, -8243, -8243, -8259, -8259, -8259, -8259, -8259, -8266, -8275, -8281, -8281, -8281, -8281, -8288, -8288, -8309, -8309, -8309, -8330, -8330, -8330, -8330, -8337, -8343, -8343, -8360, -8370, -8370, -8380, -8380, -8386, -8386, -8397, -8415, -8415, -8428, -8454, -8460, +8082, +8094, +8109, +8109, +8118, +8148, +8161, +8161, +8170, +8184, +8190, +8190, +8190, +8190, +8213, +8213, +8223, +8223, +8235, +8235, +8235, +8235, +8235, +8251, +8261, +8261, +8270, +8270, +8270, +8270, +8270, +8285, +8303, +8303, +8303, +8303, +8303, +8303, +8303, +8332, +8332, +8353, +8353, +8362, +8362, +8362, +8396, +8396, +8403, +8403, +8403, +8416, +8416, +8416, +8416, +8416, +8426, +8426, +8426, +8426, +8449, +8455, +8455, +8475, 8475, 8492, -8526, -8554, -8554, -8583, -8583, -8583, -8598, -8607, -8617, -8617, +8510, +8510, +8532, +8532, +8532, +8532, +8544, +8544, +8544, +8550, +8576, +8588, +8588, +8600, +8600, +8609, +8615, +8642, 8642, -8652, -8652, -8652, -8662, -8688, -8688, -8704, -8704, -8747, -8765, -8775, -8783, -8811, -8835, -8835, -8835, -8850, -8859, -8884, -8910, -8919, -8952, -8978, -8978, -8991, -8991, -8991, -8999, -8999, -8999, -9030, -9030, -9030, -9030, -9030, -9041, +8661, +8667, +8667, +8667, +8687, +8701, +8708, +8708, +8728, +8728, +8728, +8728, +8737, +8762, +8789, +8795, +8809, +8809, +8822, +8836, +8836, +8836, +8836, +8836, +8853, +8853, +8853, +8877, +8891, +8906, +8931, +8931, +8931, +8938, +8963, +8963, +8981, +8995, +9013, +9025, +9025, +9025, +9037, +9037, +9048, +9048, 9048, 9048, -9054, -9054, -9054, -9086, -9108, -9108, +9048, +9048, +9048, +9048, +9058, +9071, +9083, +9083, +9083, +9095, 9119, 9119, -9130, -9144, -9152, -9161, -9174, -9194, -9207, -9207, -9207, -9232, -9242, -9242, -9271, -9290, -9308, -9308, -9308, -9308, -9320, -9333, -9343, +9125, +9125, +9125, +9156, +9156, +9167, +9167, +9167, +9177, +9177, +9211, +9211, +9211, +9225, +9247, +9247, +9263, +9277, +9277, +9294, +9312, +9312, +9312, +9312, +9312, +9312, +9312, +9312, +9312, +9331, 9356, -9379, -9379, -9379, -9395, -9395, -9406, -9419, -9419, -9419, -9419, -9450, -9485, -9485, -9497, -9497, -9505, -9517, -9528, -9528, -9551, -9564, -9586, -9586, -9608, -9608, -9626, -9626, -9626, -9653, -9653, -9681, -9681, -9681, -9698, -9698, -9698, -9714, -9729, -9737, -9737, -9765, -9765, -9765, -9765, -9765, -9825, -9844, -9866, -9880, -9880, -9880, -9880, -9886, -9895, -9895, -9895, -9895, -9895, -9913, -9913, -9924, -9958, -9958, +9367, +9367, +9387, +9408, +9408, +9408, +9430, +9442, +9442, +9455, +9471, +9480, +9480, +9486, +9486, +9496, +9496, +9496, +9496, +9549, +9549, +9559, +9571, +9571, +9571, +9571, +9590, +9590, +9590, +9590, +9590, +9600, +9616, +9629, +9668, +9668, +9668, +9705, +9724, +9724, +9724, +9750, +9750, +9750, +9756, +9769, +9769, +9769, +9786, +9786, +9820, +9829, +9829, +9835, +9847, +9847, +9861, +9861, +9861, +9875, +9889, +9900, +9909, +9909, +9909, +9916, +9916, +9916, +9916, +9916, +9916, +9916, +9926, +9937, +9943, +9955, +9961, +9961, +9961, +9961, 9967, -9975, -9975, -9975, -9981, -9998, -9998, -9998, -10012, -10036, -10036, -10066, -10079, -10097, -10121, -10133, -10142, -10142, -10142, -10156, -10173, -10173, -10173, -10196, -10205, -10205, -10205, -10205, -10218, -10234, -10240, -10240, -10240, -10264, -10273, -10286, -10286, -10286, -10286, -10299, -10299, -10309, -10309, -10339, -10358, -10358, -10374, -10374, -10390, -10390, -10413, -10413, -10439, -10461, -10467, -10467, -10467, -10492, -10492, -10501, -10528, -10528, -10528, -10539, -10583, -10583, -10583, -10613, -10613, -10619, -10628, -10645, -10645, -10645, -10650, -10671, -10687, -10709, -10709, -10709, -10709, -10709, -10727, -10727, -10727, -10727, -10733, -10733, -10768, -10768, -10773, -10780, -10788, -10788, -10797, -10797, -10835, -10835, -10845, -10852, -10861, -10861, -10861, -10861, -10861, -10861, -10861, -10875, -10888, -10907, -10907, -10907, -10920, -10920, -10932, -10946, -10977, +9967, +9967, +9967, +9983, +9999, +9999, +10005, +10005, +10022, +10022, +10027, +10027, +10037, +10064, +10064, +10100, +10109, +10109, +10126, +10126, +10169, +10169, +10169, +10169, +10176, +10186, +10200, +10200, +10200, +10221, +10221, +10221, +10221, +10233, +10233, +10243, +10275, +10281, +10287, +10287, +10287, +10287, +10307, +10307, +10329, +10329, +10329, +10345, +10345, +10351, +10351, +10364, +10377, +10377, +10392, +10392, +10402, +10420, +10420, +10437, +10437, +10437, +10462, +10489, +10519, +10529, +10543, +10550, +10550, +10550, +10550, +10567, +10567, +10577, +10577, +10577, +10584, +10600, +10635, +10648, +10691, +10706, +10726, +10738, +10756, +10763, +10763, +10779, +10793, +10808, +10815, +10822, +10828, +10848, +10855, +10865, +10872, +10879, +10905, +10912, +10912, +10912, +10919, +10926, +10945, +10945, +10956, +10963, 10977, -10997, -11008, -11037, -11059, -11059, -11059, -11067, -11067, -11067, -11067, -11067, -11077, -11091, -11102, -11102, -11112, -11125, -11129, -11129, -11154, -11154, -11154, -11164, -11164, -11189, -11189, -11189, -11189, -11189, -11196, -11196, -11227, -11238, -11247, -11256, +10984, +11002, +11014, +11021, +11021, +11028, +11044, +11054, +11061, +11082, +11104, +11111, +11127, +11159, +11183, +11183, +11190, +11203, +11209, +11236, +11236, +11236, 11265, -11265, -11286, -11307, -11330, -11337, -11378, -11378, -11389, -11413, -11454, -11469, -11475, -11475, -11475, -11475, -11503, -11503, -11503, -11503, -11534, -11534, -11550, -11550, -11557, -11557, -11557, -11557, -11574, -11585, -11585, -11603, +11288, +11288, +11308, +11321, +11328, +11335, +11374, +11374, +11400, +11409, +11416, +11422, +11440, +11440, +11456, +11463, +11463, +11463, +11463, +11474, +11487, +11495, +11527, +11544, +11572, +11577, +11584, +11584, +11594, +11594, +11601, +11601, +11607, +11607, +11622, +11626, 11626, -11643, -11643, -11643, -11643, -11663, -11663, -11682, -11696, -11696, -11696, -11696, -11706, -11706, -11706, -11706, -11723, -11723, -11757, -11757, -11773, +11626, +11641, +11646, +11658, +11658, +11665, +11690, +11704, +11711, +11751, +11777, 11795, -11813, -11836, -11836, -11883, -11903, -11952, -11965, -11965, -11984, -11997, -12008, -12008, -12008, -12024, -12043, -12065, -12071, -12099, -12129, -12140, -12140, -12146, -12161, -12161, -12161, -12161, -12167, +11795, +11822, +11841, +11865, +11872, +11872, +11879, +11886, +11902, +11916, +11932, +11939, +11946, +11946, +11959, +11979, +11987, +12010, +12017, +12017, +12022, +12046, +12046, +12061, +12073, +12080, +12080, +12080, +12109, +12109, +12115, +12130, +12152, 12167, -12180, -12186, -12208, -12226, -12243, -12243, -12252, -12252, -12274, -12289, -12302, +12181, +12181, +12188, +12210, +12228, +12255, +12255, +12279, 12302, -12313, -12313, -12313, -12313, -12358, -12358, -12358, -12369, -12375, -12391, -12391, -12391, -12391, -12405, -12410, -12416, -12416, -12436, -12436, -12436, -12443, -12443, -12462, -12477, -12492, -12492, -12503, -12519, -12525, -12531, -12571, -12571, +12345, +12361, +12373, +12373, +12373, +12373, +12378, +12394, +12441, +12455, +12455, +12466, +12473, +12480, +12495, +12495, +12502, +12510, +12517, +12527, +12527, +12549, +12556, 12591, -12591, -12601, -12641, -12641, -12641, -12657, -12657, -12657, -12699, -12699, -12699, -12712, -12728, -12744, -12761, -12769, -12782, -12793, -12823, -12836, -12851, -12863, +12604, +12620, +12647, +12668, +12675, +12675, +12696, +12709, +12733, +12773, +12787, +12815, +12822, +12832, +12850, +12850, +12865, +12872, 12890, -12900, -12900, -12900, -12910, -12910, -12924, -12924, -12924, -12924, -12924, -12952, -12984, -13003, -13038, -13038, -13056, -13056, -13056, -13056, -13074, -13081, -13093, -13103, -13103, -13112, -13119, -13132, -13132, -13132, -13141, -13151, -13183, -13193, -13206, -13206, -13206, -13236, -13252, -13267, -13267, -13294, +12913, +12920, +12927, +12940, +12964, +12971, +12993, +13006, +13006, +13037, +13059, +13073, +13085, +13105, +13105, +13117, +13117, +13152, +13176, +13221, +13228, +13261, +13293, +13307, 13307, 13307, 13307, -13343, -13349, -13349, -13349, -13375, -13375, -13375, -13384, -13384, -13384, -13393, -13393, -13393, -13402, -13414, -13425, -13445, -13467, -13485, -13499, -13509, -13528, -13528, -13549, -13549, -13559, -13570, -13570, -13570, -13570, -13598, -13637, -13647, -13647, -13661, -13673, -13682, -13687, -13694, -13694, -13720, -13733, -13742, -13748, -13771, -13795, -13795, -13814, -13821, -13821, -13855, -13862, -13862, -13862, -13874, -13874, -13897, -13909, -13909, -13947, -13947, -13952, -13952, +13307, +13327, +13327, +13345, +13345, +13352, +13352, +13352, +13352, +13371, +13392, +13399, +13399, +13399, +13406, +13406, +13442, +13442, +13458, +13458, +13498, +13505, +13526, +13543, +13590, +13617, +13629, +13666, +13690, +13690, +13707, +13732, +13737, +13744, +13756, +13796, +13804, +13867, +13895, +13913, +13913, +13938, +13945, +13945, +13950, 13970, -13979, -13979, -13979, -14008, -14049, -14049, -14049, -14049, -14049, -14049, -14060, -14083, -14083, -14091, -14101, -14101, -14101, -14101, -14118, -14136, -14195, -14195, -14195, -14213, -14213, -14232, -14232, -14253, -14253, -14258, -14275, -14275, -14304, -14311, -14311, -14318, -14318, -14318, -14318, -14318, -14318, -14325, -14325, -14345, -14345, -14379, -14389, -14422, -14422, -14422, -14422, -14435, -14441, -14441, +13982, +13982, +13989, +14015, +14027, +14047, +14047, +14047, +14075, +14087, +14087, +14111, +14111, +14111, +14111, +14117, +14139, +14155, +14167, +14188, +14216, +14234, +14248, +14262, +14276, +14283, +14297, +14315, +14322, +14322, +14344, +14370, +14391, +14407, +14407, +14428, +14451, 14460, 14460, -14471, -14471, -14481, -14495, -14495, -14495, -14502, -14502, -14502, -14502, -14524, -14533, -14541, -14552, -14552, -14552, -14552, -14563, -14563, -14568, -14568, -14585, -14595, -14602, -14628, -14628, -14645, -14672, +14470, +14470, +14477, +14477, +14477, +14515, +14531, +14545, +14575, +14599, +14611, +14627, +14634, +14656, +14663, +14670, 14678, -14697, -14697, -14734, -14757, -14764, -14771, -14771, +14678, +14701, +14701, +14708, +14715, +14738, +14744, +14744, 14771, -14796, -14815, -14822, -14845, -14861, -14861, -14861, -14873, -14873, -14873, -14902, -14920, -14920, -14926, -14926, -14926, -14941, -14949, -14949, -14949, -14949, -14949, -14960, -14960, -14971, -14971, +14805, +14805, +14805, +14817, +14826, +14837, +14849, +14856, +14856, +14856, +14867, +14875, +14901, +14915, +14933, +14946, +14953, +14953, 14998, 15003, 15003, -15003, -15013, -15013, -15027, -15027, -15027, -15043, -15053, -15063, +15011, +15028, +15028, +15038, +15057, +15064, +15064, +15064, +15074, 15074, -15083, -15093, -15093, -15121, -15121, -15128, -15128, -15144, -15144, -15144, -15144, -15165, -15170, -15170, -15170, -15170, -15170, -15170, -15170, -15186, -15206, -15206, -15206, -15224, -15236, -15236, -15252, -15258, -15258, -15258, -15258, -15264, -15277, -15288, -15307, -15307, -15318, -15328, -15328, -15334, -15334, -15363, -15399, -15399, -15422, -15438, -15447, -15447, -15456, -15456, -15456, -15495, -15495, -15495, -15495, -15511, -15511, -15530, -15557, +15114, +15129, +15145, +15160, +15169, +15169, +15177, +15190, +15205, +15230, +15240, +15240, +15263, +15278, +15302, +15311, +15311, +15311, +15329, +15361, +15387, +15400, +15424, +15483, +15483, +15509, +15527, +15527, +15527, +15547, +15556, 15566, -15582, -15590, -15590, -15604, -15604, -15625, -15635, -15655, -15655, -15655, -15655, -15655, -15665, -15675, -15675, -15675, -15675, -15675, -15682, -15682, -15682, -15694, -15719, -15749, -15749, -15794, -15794, -15837, -15854, -15854, -15861, -15861, -15861, -15861, -15884, -15900, -15911, -15931, -15931, -15931, -15931, -15931, -15963, +15566, +15566, +15566, +15571, +15578, +15587, +15587, +15587, +15587, +15601, +15616, +15623, +15662, +15677, +15677, +15715, +15715, +15715, +15747, +15786, +15793, +15793, +15802, +15809, +15852, +15852, +15852, +15866, +15882, +15882, +15921, +15921, +15928, +15938, +15938, +15950, +15950, 15963, -15996, -16006, -16013, -16024, +15988, +15988, +15995, +16010, 16034, -16049, -16049, -16049, -16059, -16059, -16059, -16059, -16059, -16059, -16059, -16064, -16075, -16104, -16104, -16117, -16124, -16124, -16124, -16124, -16130, -16145, -16159, -16190, -16193, -16196, -16210, -16224, +16058, +16069, +16085, +16094, +16106, +16121, +16131, +16131, +16162, +16169, +16191, +16201, +16211, +16211, +16211, +16223, +16235, +16235, +16235, +16235, 16243, -16255, -16261, -16280, -16283, -16292, -16295, -16295, -16301, -16304, -16322, -16325, -16328, -16349, -16355, -16382, -16408, -16414, -16414, -16414, -16458, -16477, -16480, -16485, -16488, -16514, -16520, -16530, -16530, -16546, -16562, +16258, +16258, +16271, +16285, +16308, +16347, +16379, +16392, +16403, +16410, +16432, +16474, +16474, +16491, +16508, +16508, +16523, +16523, +16539, +16539, +16539, +16539, +16539, +16549, +16573, 16597, -16603, -16622, -16622, -16646, -16669, -16672, -16715, -16715, -16715, -16718, -16718, -16727, -16733, -16752, -16770, -16787, -16794, -16810, -16827, -16840, -16850, -16876, -16901, -16901, -16901, +16597, +16604, +16604, +16614, +16624, +16632, +16658, +16658, +16664, +16688, +16688, +16688, +16688, +16698, +16707, +16721, +16730, +16759, +16759, +16766, +16800, +16819, +16819, +16834, +16847, +16863, +16870, +16880, +16909, +16909, +16916, 16916, -16919, -16926, +16922, 16943, -16972, -16978, -16978, -16978, -16981, -17008, -17008, -17016, -17053, -17053, -17053, -17053, -17072, -17086, -17105, -17139, -17153, -17162, -17162, -17177, -17177, -17177, -17177, -17195, -17218, -17221, -17221, +16959, +16965, +16965, +17006, +17030, +17037, +17037, +17052, +17059, +17059, +17059, +17059, +17085, +17085, +17099, +17112, +17145, +17145, +17151, +17166, +17166, +17183, +17183, +17204, +17211, +17211, 17237, -17276, -17276, -17300, -17319, -17339, -17357, -17370, -17383, -17400, -17407, -17419, -17439, -17439, -17449, -17465, -17475, -17504, -17527, -17527, -17534, -17548, -17564, -17564, -17598, -17598, -17601, -17630, -17649, -17669, -17669, -17679, -17686, -17757, -17776, -17796, -17810, -17840, -17840, +17252, +17259, +17266, +17266, +17273, +17273, +17273, +17273, +17283, +17283, +17283, +17283, +17283, +17306, +17327, +17327, +17338, +17344, +17368, +17405, +17405, +17405, +17426, +17426, +17443, +17455, +17466, +17479, +17531, +17550, +17550, +17563, +17597, +17607, +17677, +17691, +17701, +17704, +17714, +17714, +17736, +17746, +17756, +17764, +17800, +17850, +17853, +17867, 17877, -17884, -17884, -17911, -17936, -17970, -17980, -17995, -17995, -18008, -18011, -18036, -18075, -18097, -18097, -18104, -18115, -18115, -18129, -18134, -18141, -18141, -18157, -18180, -18190, -18217, -18224, -18252, -18284, -18284, -18296, +17887, +17897, +17927, +17977, +17987, +17993, +18000, +18019, +18034, +18041, +18051, +18051, +18065, +18102, +18117, +18123, +18144, +18169, +18182, +18198, +18218, +18282, +18289, 18299, -18312, -18322, -18338, -18348, -18348, -18363, -18372, -18387, -18387, -18390, -18402, -18445, -18445, -18445, -18466, -18479, -18479, -18498, -18508, -18511, -18511, -18511, -18511, -18511, -18526, -18558, -18586, -18622, -18643, -18670, -18686, -18710, -18720, -18739, -18739, -18742, -18745, +18317, +18320, +18323, +18329, +18361, +18388, +18388, +18407, +18420, +18423, +18471, +18500, +18500, +18521, +18524, +18539, +18553, +18553, +18566, +18566, +18573, +18599, +18602, +18609, +18628, +18645, +18648, +18655, +18666, +18676, +18683, +18683, +18683, +18708, +18715, +18721, +18747, +18747, +18761, +18761, 18771, -18774, -18777, -18791, -18813, -18816, -18822, -18839, -18845, +18788, +18805, +18805, +18826, +18832, +18838, +18848, 18851, -18854, -18878, -18881, -18896, -18896, -18899, -18926, -18937, -18940, -18953, -18963, -19010, -19010, -19017, -19046, -19060, -19060, -19087, +18851, +18868, +18887, +18890, +18893, +18893, +18902, +18921, +18924, +18927, +18930, +18933, +18958, +18958, +18970, +18989, +18989, +19029, +19032, +19053, +19070, +19073, 19095, -19101, -19101, -19128, -19146, -19157, -19157, -19188, -19198, -19205, -19223, -19230, -19255, -19280, -19280, -19283, -19292, -19301, -19320, -19323, -19323, -19341, -19341, -19365, -19378, -19381, +19102, +19109, +19119, +19139, +19165, +19193, +19209, +19233, +19261, +19275, +19316, +19316, +19316, +19326, +19326, +19348, +19354, +19360, +19367, +19367, +19367, +19380, +19387, 19394, -19423, +19420, 19433, -19440, -19466, -19490, -19490, -19490, -19497, +19436, +19447, +19472, +19482, +19485, +19495, +19504, 19504, -19511, -19511, -19518, -19545, -19568, -19575, -19575, -19583, -19586, -19592, -19592, -19609, -19622, -19629, -19641, -19641, -19656, -19673, -19700, -19723, -19733, -19746, -19759, -19769, -19782, -19789, -19795, -19831, -19834, -19841, -19851, -19854, -19880, -19895, -19898, -19898, +19521, +19521, +19521, +19536, +19536, +19553, +19553, +19553, +19567, +19570, +19570, +19589, +19602, +19602, +19610, +19617, +19620, +19620, +19635, +19635, +19663, +19693, +19696, +19699, +19728, +19734, +19760, +19763, +19766, +19766, +19783, +19792, +19792, +19792, +19809, +19842, +19845, +19884, 19911, -19922, -19950, -20020, -20030, +19941, +19941, +19956, +19959, +19994, +20007, +20019, +20031, +20041, 20059, -20062, -20089, -20107, -20151, -20154, -20175, -20205, -20208, -20229, -20229, -20255, -20261, -20261, -20283, -20335, -20362, -20385, -20392, -20392, -20392, -20392, -20418, -20418, -20418, -20418, -20443, -20446, -20446, -20452, -20452, -20467, -20467, +20071, +20074, +20108, +20115, +20131, +20131, +20139, +20159, +20162, +20181, +20207, +20213, +20234, +20240, +20262, +20265, +20280, +20299, +20311, +20323, +20326, +20326, +20326, +20329, +20329, +20329, +20332, +20332, +20332, +20376, +20401, +20428, +20444, +20444, +20444, +20460, 20489, -20489, -20498, -20525, -20554, -20560, -20575, -20589, +20499, +20528, +20548, +20548, +20567, +20567, +20567, +20567, 20589, -20589, -20614, -20652, -20659, -20659, -20668, -20679, +20610, +20621, +20650, +20650, +20663, +20666, +20669, 20679, -20679, -20685, -20685, -20685, -20685, -20685, -20685, -20696, -20733, -20760, +20695, +20707, +20726, 20766, -20769, -20792, -20792, -20792, -20792, -20813, -20813, -20813, -20813, -20826, -20826, -20846, -20862, -20880, -20887, -20901, -20908, -20933, +20778, +20793, +20796, +20821, +20821, +20824, +20833, +20849, +20864, +20864, +20879, +20879, +20888, +20888, +20899, +20899, +20911, +20911, +20917, 20938, -20958, -20969, -20978, -20978, -20978, -20985, -20985, -20985, -21000, -21010, -21010, -21014, -21026, -21033, -21041, -21041, +20961, +20974, +21001, +21039, 21051, 21051, -21064, -21071, -21113, -21120, -21120, -21127, -21134, -21142, -21164, -21164, -21164, -21188, -21195, -21208, -21215, -21226, -21226, -21226, -21238, -21249, -21255, -21255, -21265, -21279, -21296, +21087, +21104, +21104, +21126, +21135, +21138, +21159, +21165, +21168, +21174, +21174, +21213, +21216, +21250, +21250, +21263, +21287, 21301, -21315, -21321, -21331, -21331, -21331, -21337, -21343, -21343, -21351, -21351, -21361, -21368, -21383, -21383, +21310, +21338, +21365, 21389, -21413, -21437, -21449, -21462, -21478, -21506, -21534, -21546, -21546, -21557, -21580, -21595, +21398, +21420, +21426, +21429, +21450, +21453, +21475, +21507, +21513, +21516, +21519, +21522, +21530, +21533, +21545, +21548, +21564, +21564, 21595, 21595, -21595, -21626, -21626, -21646, -21670, -21676, -21688, -21688, -21716, -21731, -21762, -21762, -21762, +21607, +21621, +21621, +21629, +21650, +21659, +21659, +21659, +21659, +21659, +21659, +21662, +21662, +21694, +21694, +21694, +21704, +21729, 21762, -21762, -21783, -21789, -21799, -21828, -21828, -21837, -21845, -21868, -21874, -21874, -21880, -21880, -21889, -21901, -21910, -21941, -21941, -21959, -21959, -21959, -21966, -21966, -21972, -21972, -21995, -22011, -22043, -22043, -22051, -22051, -22060, -22060, -22060, -22074, -22086, -22086, -22099, -22099, -22120, -22120, -22134, -22144, -22150, -22158, -22164, -22164, -22171, -22199, -22210, -22210, -22210, -22220, -22228, -22228, -22239, -22261, -22304, -22304, -22312, -22349, -22349, -22349, -22357, -22381, -22381, -22390, -22390, -22390, -22390, -22402, -22413, -22413, -22422, -22422, -22445, -22445, -22445, -22456, -22456, -22469, -22479, -22501, -22512, -22528, -22528, -22528, -22528, -22528, -22528, -22528, -22540, -22540, -22546, -22546, -22546, -22546, -22569, -22591, -22591, -22591, -22591, -22610, -22655, -22655, -22667, -22667, -22677, -22677, -22692, -22692, -22702, -22702, -22702, -22717, -22736, -22750, -22755, -22780, -22785, -22822, +21795, +21816, +21826, +21826, +21826, +21829, +21829, +21838, +21891, +21900, +21900, +21913, +21931, +21931, +21931, +21948, +21955, +21955, +21973, +21973, +21973, +21998, +21998, +21998, +22005, +22005, +22008, +22016, +22040, +22071, +22098, +22098, +22105, +22141, +22141, +22141, +22141, +22154, +22154, +22154, +22154, +22154, +22168, +22176, +22188, +22188, +22206, +22217, +22226, +22226, +22237, +22260, +22260, +22273, +22273, +22283, +22300, +22314, +22327, +22334, +22344, +22344, +22351, +22351, +22351, +22367, +22380, +22392, +22403, +22415, +22437, +22454, +22462, +22462, +22462, +22470, +22496, +22522, +22522, +22539, +22539, +22539, +22562, +22580, +22580, +22596, +22614, +22630, +22645, +22645, +22664, +22664, +22664, +22701, +22708, +22719, +22719, +22719, +22719, +22719, +22719, +22719, +22719, +22740, +22778, +22778, +22778, +22791, +22817, 22844, -22859, +22856, +22856, +22856, +22856, +22856, +22864, 22871, -22909, -22949, -22962, -22973, +22908, +22920, +22930, +22930, +22930, +22950, +22950, +22961, 22979, -22988, -23007, -23027, -23035, -23072, -23082, -23082, -23109, -23116, -23130, +23001, +23014, +23014, +23026, +23037, +23037, +23057, +23057, +23079, +23111, +23148, 23158, 23166, -23166, -23172, -23177, -23189, -23219, -23219, -23250, -23273, -23281, -23281, -23281, -23281, -23281, +23183, +23183, +23190, +23212, +23235, +23235, +23235, +23235, +23235, +23235, +23241, +23241, +23262, +23262, 23287, -23287, -23299, -23305, +23300, +23300, 23315, 23315, -23321, -23328, -23334, -23355, +23327, +23342, +23342, 23355, -23355, -23355, -23355, -23366, -23390, -23396, -23396, -23396, -23396, -23402, -23418, -23424, -23424, -23438, -23446, -23446, -23446, -23500, -23525, -23569, -23592, -23592, -23592, -23605, -23614, -23614, -23614, -23627, -23633, -23657, -23673, +23399, +23399, +23439, +23439, +23439, +23460, +23467, +23487, +23487, +23487, +23487, +23487, +23506, +23506, +23517, +23580, +23580, +23580, +23594, +23594, +23594, +23604, +23604, +23604, +23604, +23623, +23635, +23645, +23645, +23652, +23658, +23665, 23673, 23673, -23689, -23689, -23701, -23701, -23701, -23713, -23713, -23713, +23700, +23700, +23716, 23738, -23758, -23775, -23775, -23794, -23794, -23803, -23803, -23803, -23803, -23813, -23826, -23845, -23845, -23845, -23845, -23872, -23872, -23872, -23888, -23888, -23900, -23900, -23906, -23906, -23906, -23906, -23906, -23924, -23924, -23924, -23930, -23930, -23939, -23949, +23745, +23745, +23745, +23751, +23765, +23778, +23788, +23788, +23788, +23788, +23801, +23821, +23833, +23840, +23853, +23866, +23893, +23893, +23893, +23921, +23921, +23931, +23931, +23931, +23942, +23942, 23971, -23971, -23971, -24000, -24012, -24042, -24042, -24042, -24042, -24042, -24070, -24076, -24094, -24094, -24094, -24123, -24123, -24123, -24134, -24150, -24150, -24150, -24150, -24150, -24150, -24155, -24179, -24179, -24189, -24189, -24189, -24198, -24198, -24218, -24218, -24218, -24234, -24251, -24257, -24276, -24305, -24321, -24321, -24321, -24334, -24334, -24334, -24349, -24356, -24361, -24372, -24372, -24372, -24388, -24396, -24396, -24402, -24410, -24410, -24428, -24428, -24450, -24450, -24467, -24485, -24495, -24495, -24495, -24507, -24507, -24514, -24531, -24531, -24531, -24531, -24531, -24537, -24537, -24558, +23978, +23978, +23978, +23994, +24001, +24001, +24008, +24023, +24079, +24079, +24079, +24091, +24102, +24119, +24119, +24126, +24131, +24147, +24167, +24191, +24207, +24217, +24217, +24243, +24243, +24254, +24254, +24254, +24254, +24275, +24301, +24309, +24322, +24336, +24345, +24364, +24364, +24364, +24373, +24382, +24390, +24390, +24390, +24390, +24390, +24397, +24397, +24404, +24424, +24424, +24430, +24440, +24447, +24460, +24466, +24496, +24506, +24506, +24506, +24506, +24517, +24530, +24540, +24557, +24572, +24572, 24572, -24584, -24584, -24601, -24601, -24607, -24615, -24615, -24632, -24632, -24632, -24632, -24661, -24676, -24676, -24724, -24751, -24751, -24774, -24774, -24783, -24793, -24793, -24793, -24813, -24819, -24819, -24826, -24826, -24842, -24858, -24872, -24872, -24890, -24890, -24890, -24890, -24890, -24890, -24890, -24890, -24890, -24906, -24906, -24917, -24928, -24947, -24947, -24947, -24947, -24947, -24947, -24947, -24947, -24947, -24963, -24983, -24991, -24991, -24991, -24991, -24991, -24991, -24991, -24991, -25007, -25007, -25007, -25007, -25007, -25007, -25007, -25030, -25040, -25040, -25040, -25040, -25040, -25059, -25097, -25132, -25149, -25159, -25169, -25169, -25169, -25192, -25192, -25192, -25192, -25205, -25205, -25216, -25221, -25221, -25233, -25233, -25240, -25250, -25256, -25273, -25273, -25303, -25321, -25321, -25321, -25333, -25333, -25333, -25333, -25370, -25370, -25402, -25418, -25418, -25439, -25439, -25454, -25454, -25454, -25463, +24581, +24591, +24616, +24631, +24652, +24652, +24682, +24688, +24706, +24729, +24747, +24747, +24747, +24747, +24747, +24747, +24771, +24801, +24825, +24825, +24825, +24857, +24876, +24892, +24892, +24915, +24915, +24934, +24953, +24953, +24969, +24969, +24978, +24978, +24978, +24986, +25009, +25033, +25033, +25033, +25033, +25044, +25054, +25054, +25075, +25096, +25102, +25113, +25113, +25135, +25142, +25152, +25167, +25174, +25209, +25209, +25219, +25226, +25226, +25242, +25242, +25247, +25247, +25255, +25263, +25270, +25270, +25305, +25311, +25311, +25355, +25368, +25375, +25375, +25375, +25375, +25375, +25375, +25396, +25406, +25406, +25406, +25406, +25406, +25406, +25406, +25416, 25477, -25526, -25526, -25526, -25526, +25484, +25490, +25497, +25497, +25517, +25517, +25517, 25545, -25562, -25572, -25572, -25582, -25582, -25582, -25597, -25610, -25634, -25641, -25641, -25641, -25668, -25668, -25675, -25707, -25727, -25727, -25741, -25756, -25756, -25779, -25811, -25811, -25811, -25817, -25817, -25817, -25827, -25827, -25827, -25827, -25827, -25836, -25836, -25836, -25836, -25850, -25850, -25860, +25557, +25574, +25574, +25574, +25590, +25596, +25607, +25607, +25615, +25615, +25645, +25658, +25672, +25672, +25672, +25689, +25700, +25723, +25723, +25723, +25736, +25736, +25736, +25736, +25736, +25764, +25764, +25772, +25772, +25772, +25772, +25772, +25772, +25772, +25772, +25804, +25804, +25804, +25804, +25830, +25856, +25856, +25856, +25872, +25877, 25884, 25901, -25922, -25936, -25946, -25969, -25969, -25969, -25969, -25975, +25901, +25914, +25929, +25929, +25952, 25975, -25987, -25987, -26065, -26065, -26065, -26084, -26084, -26103, -26128, -26141, +25997, +26022, +26022, +26046, +26056, +26056, +26086, +26129, 26151, -26169, -26169, -26169, -26180, -26191, -26191, -26191, -26197, -26197, +26160, +26185, +26194, +26194, 26205, -26211, -26235, -26235, -26235, -26235, -26235, -26235, -26245, -26245, -26259, -26259, +26205, +26214, +26220, +26231, +26231, +26231, +26231, +26241, 26259, 26259, -26284, -26284, -26325, -26325, -26355, -26364, -26364, -26402, -26418, -26418, -26425, -26432, -26432, -26454, -26504, -26513, -26525, -26525, -26525, -26525, -26525, -26545, -26545, -26571, -26590, -26597, -26597, -26597, -26597, -26597, -26639, -26648, -26659, -26666, -26672, -26672, -26672, -26672, -26672, -26694, -26701, -26701, -26701, -26724, -26724, -26746, -26753, -26774, -26774, -26774, -26774, -26806, -26824, -26824, -26830, -26852, -26882, -26882, -26889, -26889, -26889, -26889, -26889, -26889, -26903, -26911, -26918, -26918, -26928, -26948, -26948, -26970, -26970, -26985, -26996, -27045, +26287, +26293, +26300, +26300, +26317, +26335, +26335, +26335, +26344, +26374, +26374, +26374, +26374, +26374, +26374, +26392, +26408, +26416, +26437, +26437, +26443, +26457, +26471, +26485, +26485, +26485, +26485, +26485, +26485, +26506, +26521, +26550, +26550, +26564, +26575, +26598, +26606, +26606, +26618, +26618, +26633, +26649, +26656, +26656, +26656, +26656, +26669, +26669, +26669, +26679, +26709, +26718, +26718, +26725, +26732, +26732, +26732, +26755, +26765, +26765, +26786, +26807, +26814, +26814, +26814, +26837, +26858, +26881, +26899, +26909, +26909, +26909, +26936, +26936, +26943, +26957, +26963, +26980, +27009, +27041, 27045, -27058, -27058, -27068, -27068, -27104, -27155, -27155, -27155, -27155, -27155, -27172, -27172, -27172, -27172, -27189, -27195, -27195, -27223, -27223, -27223, -27223, -27244, -27290, -27322, -27332, -27364, -27371, -27371, -27371, -27401, -27401, -27417, -27417, -27431, -27470, -27470, -27470, -27470, -27484, -27484, -27484, -27484, -27484, -27496, -27496, -27515, -27515, -27543, -27560, -27576, -27604, -27622, -27631, -27631, -27638, -27649, -27672, -27682, -27682, -27682, -27707, -27717, -27724, +27091, +27100, +27109, +27130, +27141, +27153, +27153, +27184, +27190, +27190, +27190, +27199, +27214, +27214, +27230, +27239, +27239, +27239, +27239, +27256, +27268, +27275, +27275, +27295, +27295, +27301, +27301, +27301, +27340, +27346, +27346, +27354, +27373, +27373, +27373, +27373, +27392, +27424, +27460, +27474, +27474, +27489, +27497, +27497, +27497, +27497, +27547, +27580, +27580, +27598, +27598, +27626, +27626, +27644, +27644, +27644, +27668, +27675, +27702, +27714, 27732, -27755, -27755, -27755, -27768, -27768, -27783, -27789, -27799, -27799, -27799, -27818, -27826, -27838, -27848, -27848, -27848, -27855, -27862, -27862, +27744, +27744, +27744, +27744, +27758, +27758, +27758, +27764, +27764, +27771, +27771, +27781, +27793, +27793, +27793, +27808, +27813, +27813, +27819, +27831, +27844, +27867, +27883, 27896, -27921, -27921, -27943, -27954, -27954, -27976, -27976, -27976, -27985, -28002, -28012, -28019, -28034, -28034, -28046, -28068, -28097, -28122, -28122, -28131, -28137, -28151, -28151, -28172, -28190, -28196, -28211, -28211, -28264, -28273, -28286, -28324, -28324, -28324, -28354, -28354, -28361, -28397, -28417, -28417, -28424, -28435, -28461, -28461, -28470, -28483, -28483, -28483, -28483, -28483, -28483, -28483, -28515, -28531, -28531, -28549, -28575, -28575, -28575, -28582, -28599, -28615, -28630, -28630, -28672, -28711, -28723, -28723, -28731, -28752, -28752, -28752, -28763, -28763, -28775, -28775, -28775, -28775, -28775, -28775, -28805, -28814, -28830, -28861, -28882, -28882, -28902, -28918, -28937, -28952, -28959, +27924, +27924, +27924, +27924, +27931, +27931, +27931, +27931, +27939, +27945, +27956, +27968, +27974, +27984, +27984, +28007, +28013, +28026, +28052, +28058, +28065, +28093, +28093, +28101, +28107, +28129, +28135, +28149, +28149, +28168, +28182, +28188, +28197, +28197, +28223, +28235, +28235, +28235, +28235, +28235, +28252, +28279, +28279, +28285, +28285, +28311, +28311, +28317, +28317, +28329, +28335, +28368, +28368, +28368, +28374, +28374, +28374, +28409, +28429, +28429, +28454, +28472, +28472, +28472, +28503, +28520, +28520, +28532, +28558, +28558, +28571, +28577, +28577, +28592, +28613, +28636, +28646, +28652, +28683, +28695, +28703, +28703, +28703, +28703, +28703, +28726, +28754, +28761, +28761, +28777, +28789, +28789, +28823, +28844, +28844, +28852, +28860, +28860, +28870, +28888, +28938, +28978, +28990, 28998, -29009, -29009, -29009, -29009, -29019, -29019, -29019, -29019, -29019, -29057, -29069, -29076, -29076, -29076, -29076, -29076, -29082, -29082, -29082, -29117, -29117, -29117, -29117, -29134, -29134, -29159, -29159, -29185, -29185, -29196, -29196, -29242, +29016, +29029, +29029, +29068, +29068, +29077, +29077, +29089, +29110, +29110, +29116, +29116, +29116, +29116, +29127, +29127, +29136, +29156, +29163, +29170, +29170, +29191, +29191, +29203, +29203, +29219, +29236, +29236, +29236, +29236, 29248, -29256, -29280, -29301, -29307, -29307, -29307, -29314, -29314, -29338, -29356, -29367, -29367, -29381, -29391, -29399, -29399, -29414, -29434, -29434, -29441, -29473, -29484, -29503, -29520, -29520, -29548, -29565, -29572, -29572, -29572, -29572, -29572, -29597, -29597, -29620, -29655, -29660, -29660, -29660, -29667, -29674, -29688, -29698, -29705, -29728, -29740, -29740, +29248, +29254, +29260, +29260, +29282, +29282, +29302, +29302, +29302, +29312, +29318, +29341, +29341, +29353, +29353, +29359, +29394, +29400, +29420, +29420, +29420, +29436, +29448, +29448, +29464, +29483, +29496, +29513, +29513, +29525, +29531, +29544, +29544, +29557, +29567, +29577, +29602, +29622, +29630, +29641, +29641, +29641, +29652, +29652, +29652, +29652, +29666, +29672, +29683, +29704, +29704, +29704, +29715, +29715, +29715, +29723, +29746, +29746, +29746, +29756, 29761, 29761, -29767, -29780, -29787, -29794, -29794, -29807, -29820, -29820, -29820, -29820, -29832, -29844, -29855, -29855, -29855, -29867, -29867, -29867, -29867, -29881, -29881, -29905, -29905, -29905, -29923, -29923, -29948, -29948, -29948, -29976, -29986, -29996, +29778, +29789, +29795, +29795, +29828, +29836, +29836, +29836, +29868, +29878, +29884, +29908, +29918, +29928, +29928, +29928, +29934, +29952, +29964, +29970, +29983, 29996, -30030, -30030, -30054, -30054, -30070, -30070, -30070, -30077, -30077, +30013, +30020, +30020, +30031, +30072, 30087, -30107, -30107, -30115, -30141, -30178, -30178, -30201, -30201, -30201, -30207, -30229, -30239, -30254, -30268, -30277, -30311, -30323, -30323, -30331, -30331, -30331, -30331, -30331, -30353, -30365, -30374, -30374, -30374, -30380, -30380, -30380, -30380, -30410, -30410, -30410, -30443, -30443, -30453, +30087, +30087, +30093, +30117, +30163, +30192, +30199, +30206, +30206, +30213, +30247, +30247, +30270, +30270, +30270, +30282, +30303, +30338, +30345, +30345, +30355, +30376, +30376, +30408, +30420, +30420, +30427, +30434, +30441, +30448, +30448, 30462, -30472, -30472, -30472, -30472, -30472, -30472, -30489, -30500, -30500, -30500, -30532, -30532, +30496, +30526, +30543, 30553, -30577, -30599, -30599, -30609, -30640, -30640, -30640, -30664, -30676, -30676, -30676, -30692, -30719, -30728, -30728, -30742, -30742, -30749, -30749, -30760, -30770, -30770, -30783, -30783, -30783, -30804, -30847, -30847, -30847, -30847, -30857, -30857, -30857, -30857, -30875, -30875, -30895, -30895, -30921, -30926, -30926, -30926, -30945, -30945, -30945, -30945, -30959, -30959, -30959, -30959, -30972, -30972, -30984, -31011, -31011, -31048, -31056, -31056, -31070, -31077, -31077, -31110, -31110, -31115, -31122, -31139, -31159, -31159, -31165, -31171, -31171, -31197, -31204, -31211, -31211, -31221, -31228, -31228, -31245, -31245, -31245, -31252, -31265, -31265, -31265, -31265, -31294, -31305, +30563, +30569, +30588, +30626, +30626, +30655, +30677, +30677, +30677, +30701, +30701, +30701, +30716, +30716, +30716, +30716, +30732, +30746, +30746, +30759, +30759, +30759, +30759, +30766, +30766, +30789, +30798, +30805, +30819, +30819, +30837, +30870, +30870, +30870, +30887, +30898, +30909, +30919, +30925, +30942, +30949, +30955, +30955, +30955, +30979, +30979, +30988, +30988, +30988, +30988, +31003, +31027, +31027, +31027, +31027, +31038, +31051, +31091, +31106, +31116, +31143, +31156, +31169, +31169, +31188, +31188, +31209, +31234, +31267, +31283, +31296, +31296, +31296, +31302, +31309, +31309, +31309, 31320, -31333, -31333, -31333, -31343, -31350, -31357, -31369, -31369, -31379, -31385, -31391, -31407, -31407, -31407, -31423, -31423, -31423, -31434, -31454, -31470, -31511, -31521, -31521, -31521, -31542, -31582, -31582, -31597, -31597, -31597, -31614, -31623, -31645, -31645, -31661, -31661, -31669, -31669, -31676, -31676, -31706, -31720, -31726, -31743, -31785, -31804, -31817, -31817, -31835, -31846, -31863, -31885, -31885, -31896, -31907, -31907, -31907, -31922, -31922, -31929, -31929, -31929, -31936, -31943, -31949, -31949, -31949, -31959, -32006, -32024, -32031, -32031, -32038, -32063, -32095, -32095, -32105, -32105, -32105, -32105, -32105, -32125, -32134, -32140, -32176, -32185, -32195, -32195, -32195, -32195, -32202, -32202, -32218, -32236, -32259, +31338, +31362, +31362, +31381, +31400, +31412, +31412, +31412, +31412, +31412, +31425, +31443, +31465, +31465, +31486, +31486, +31486, +31486, +31493, +31493, +31500, +31510, +31533, +31550, +31560, +31567, +31615, +31622, +31636, +31636, +31646, +31674, +31686, +31724, +31759, +31764, +31795, +31802, +31809, +31819, +31831, +31871, +31871, +31871, +31888, +31903, +31917, +31944, +31958, +31969, +31969, +31987, +31994, +31994, +32001, +32008, +32040, +32065, +32065, +32065, +32082, +32082, +32082, +32104, +32122, +32139, +32139, +32139, +32163, +32167, +32167, +32167, +32180, +32210, +32210, +32244, +32263, 32294, -32300, -32305, -32305, -32305, -32323, -32337, -32352, -32359, -32374, -32381, -32388, -32388, -32388, -32402, -32402, -32402, -32402, -32418, -32428, -32428, -32428, -32450, -32450, -32450, -32462, -32467, -32480, -32480, -32480, -32487, -32502, -32509, -32525, -32560, -32570, -32583, -32597, -32623, -32637, -32644, -32667, -32707, -32725, -32725, -32747, -32747, -32751, -32758, -32789, -32807, -32824, -32824, -32824, -32824, -32843, -32843, -32850, -32876, -32908, -32915, -32946, -32965, -32965, -32982, -33002, -33009, -33029, -33064, -33084, -33098, -33098, -33098, -33098, -33110, -33110, -33151, -33158, -33180, -33198, -33205, -33227, -33227, -33237, -33237, -33253, -33258, +32322, +32329, +32329, +32343, +32350, +32350, +32376, +32405, +32415, +32452, +32452, +32461, +32461, +32461, +32468, +32482, +32505, +32512, +32529, +32540, +32553, +32553, +32559, +32577, +32600, +32600, +32607, +32624, +32636, +32636, +32654, +32654, +32660, +32672, +32672, +32672, +32692, +32692, +32717, +32717, +32729, +32736, +32736, +32736, +32736, +32743, +32764, +32764, +32771, +32783, +32783, +32805, +32820, +32847, +32873, +32892, +32906, +32906, +32925, +32943, +32959, +32959, +32975, +32975, +32975, +32981, +32981, +32981, +32981, +32986, +32986, +32998, +32998, +33008, +33008, +33031, +33037, +33037, +33052, +33052, +33058, +33058, +33066, +33066, +33073, +33101, +33138, +33138, +33138, +33156, +33184, +33209, +33216, +33232, +33252, 33277, -33292, -33315, +33277, +33296, 33315, -33333, -33348, -33348, -33348, -33348, -33348, -33348, -33348, -33355, -33355, -33355, -33390, -33408, -33423, -33437, -33452, -33458, -33465, -33480, -33480, +33321, +33328, +33340, +33360, +33372, +33372, +33372, +33372, +33372, +33413, +33422, +33422, +33422, +33422, +33443, +33450, +33450, +33461, +33461, +33467, +33474, +33474, 33487, -33494, -33504, -33511, -33551, -33551, -33558, -33589, -33595, -33595, -33602, -33627, -33644, -33668, -33668, -33668, -33676, -33676, -33716, -33728, +33498, +33506, +33513, +33513, +33519, +33564, +33575, +33590, +33608, +33608, +33626, +33626, +33648, +33670, +33670, +33682, +33682, +33689, +33689, +33689, +33689, +33689, +33689, +33719, +33731, 33747, -33747, -33769, -33775, -33789, -33803, -33803, -33810, -33810, -33810, -33820, -33820, -33820, -33820, -33843, -33843, -33843, -33879, -33889, -33889, -33889, -33903, -33917, -33931, -33959, -33993, -34000, -34014, -34037, -34043, -34055, -34055, -34077, -34083, -34090, -34099, -34099, -34115, -34115, -34133, -34140, -34167, -34172, -34184, -34221, -34245, -34252, -34252, -34259, -34318, -34318, -34325, -34325, -34352, -34400, -34415, -34422, -34422, -34431, -34438, -34445, -34445, -34473, -34473, -34489, -34489, -34489, -34489, -34499, -34499, -34499, -34516, -34536, -34551, -34564, +33752, +33752, +33766, +33772, +33772, +33784, +33822, +33822, +33833, +33839, +33839, +33850, +33850, +33868, +33886, +33902, +33902, +33909, +33918, +33951, +33970, +33970, +33970, +34021, +34021, +34021, +34045, +34052, +34052, +34078, +34096, +34096, +34096, +34096, +34108, +34108, +34121, +34121, +34127, +34127, +34127, +34144, +34157, +34157, +34157, +34169, +34169, +34178, +34201, +34201, +34231, +34241, +34241, +34241, +34241, +34256, +34267, +34277, +34287, +34287, +34287, +34315, +34333, +34333, +34333, +34333, +34374, +34408, +34421, +34421, +34421, +34421, +34439, +34439, +34449, +34460, +34483, +34492, +34507, +34507, +34533, +34548, +34548, +34557, +34557, +34580, +34580, +34580, 34580, 34580, 34580, -34589, -34589, -34589, -34613, -34648, -34648, -34648, -34655, +34580, +34599, +34609, +34609, +34630, +34630, +34649, +34664, 34664, -34681, -34681, -34698, -34698, -34720, -34736, -34749, -34749, -34765, -34778, -34785, -34795, -34819, -34819, -34829, -34841, -34848, -34854, -34854, -34854, -34878, -34894, -34894, -34900, -34917, -34934, -34940, -34970, -34998, -34998, -35004, -35004, -35012, -35012, -35012, -35020, -35020, -35032, -35038, -35062, -35062, -35062, -35068, -35068, -35082, -35092, -35096, -35107, -35118, -35134, -35155, -35155, -35166, -35178, -35178, -35195, -35201, -35201, -35201, -35226, -35226, -35226, -35226, -35256, -35262, -35272, -35280, -35299, -35332, -35354, -35354, -35354, -35370, -35386, -35417, -35417, -35460, -35473, +34700, +34706, +34706, +34706, +34706, +34706, +34706, +34719, +34719, +34726, +34753, +34775, +34780, +34805, +34820, +34830, +34855, +34861, +34890, +34896, +34896, +34908, +34908, +34913, +34926, +34926, +34932, +34961, +34971, +34982, +34982, +35000, +35000, +35005, +35015, +35050, +35060, +35111, +35123, +35152, +35158, +35192, +35205, +35225, +35245, +35271, +35290, +35337, +35345, +35345, +35355, +35355, +35355, +35368, +35378, +35378, +35378, +35378, +35403, +35413, +35453, +35453, +35453, +35472, +35472, +35472, +35472, +35472, +35472, +35472, 35478, -35495, -35504, -35504, -35518, -35552, -35589, -35624, -35624, -35637, -35637, -35643, -35643, -35669, -35682, -35695, -35702, -35709, -35709, -35726, -35739, +35509, +35509, +35522, +35522, +35539, +35539, +35548, +35558, +35569, +35584, +35601, +35607, +35607, +35615, +35615, +35640, +35640, +35648, +35648, +35657, +35672, +35672, +35686, +35686, +35686, +35703, +35708, +35708, +35724, +35724, 35749, 35756, -35756, -35778, -35803, -35810, -35829, -35883, -35899, -35905, -35911, -35911, -35923, -35947, -35954, -35980, -35987, -36034, -36052, -36063, -36095, -36106, -36106, -36113, -36120, -36140, -36140, -36153, -36160, -36160, -36167, -36203, -36203, -36218, -36218, -36225, -36253, +35773, +35779, +35779, +35779, +35779, +35785, +35785, +35785, +35785, +35801, +35834, +35834, +35834, +35834, +35882, +35925, +35958, +35995, +36055, +36055, +36055, +36061, +36092, +36108, +36124, +36124, +36144, +36144, +36144, +36144, +36169, +36189, +36196, +36202, 36259, -36284, -36296, -36310, -36324, -36331, -36344, -36367, -36367, -36367, -36412, -36412, -36422, -36463, -36463, -36463, -36479, -36490, -36513, -36520, -36520, -36527, -36527, -36527, -36540, -36574, -36594, -36594, -36605, -36621, -36621, -36641, -36641, -36641, -36659, -36682, -36682, -36682, -36682, -36705, -36705, -36705, -36720, -36720, -36755, -36755, -36771, -36771, -36771, -36788, -36806, -36835, +36276, +36292, +36328, +36328, +36328, +36328, +36328, +36328, +36335, +36346, +36346, +36356, +36356, +36356, +36356, +36380, +36386, +36398, +36414, +36427, +36427, +36438, +36460, +36471, +36489, +36517, +36536, +36561, +36578, +36584, +36622, +36622, +36628, +36628, +36640, +36640, +36640, +36649, +36654, +36672, +36683, +36696, +36706, +36706, +36718, +36718, +36718, +36743, +36769, +36781, +36814, +36814, +36823, 36845, -36875, -36875, -36903, -36921, -36928, -36928, -36940, -36940, -36940, -36966, +36854, +36867, +36867, +36867, +36867, +36867, +36867, +36867, +36882, +36882, +36911, +36916, +36916, +36939, +36954, +36954, 36966, 36973, -36983, -36998, -37004, +36973, +36984, +36984, +37008, +37014, +37014, 37014, 37024, -37024, -37032, -37038, -37038, -37061, -37074, -37074, -37091, -37098, -37105, -37105, -37133, -37141, -37141, +37037, +37043, +37043, +37043, +37049, +37049, +37054, +37054, +37054, +37064, +37064, +37064, +37089, +37111, +37111, +37131, +37131, +37131, +37131, 37148, -37191, -37191, -37197, -37197, -37210, -37224, -37224, -37231, -37250, -37257, -37273, -37273, -37280, -37287, -37294, -37300, -37307, -37330, -37348, -37348, -37359, -37359, -37359, -37377, -37392, -37398, -37412, -37431, -37469, -37486, -37508, -37517, -37535, -37535, +37159, +37165, +37165, +37165, +37165, +37165, +37165, +37184, +37190, +37207, +37207, +37207, +37252, +37252, +37266, +37290, +37290, +37301, +37301, +37301, +37301, +37310, +37310, +37310, +37310, +37310, +37310, +37310, +37310, +37323, +37323, +37323, +37323, +37323, +37323, +37329, +37329, +37329, +37329, +37329, +37344, +37344, +37353, +37353, +37371, +37382, +37395, +37395, +37395, +37395, +37406, +37436, +37479, +37489, +37489, +37489, +37499, 37542, -37542, -37549, -37549, -37549, -37549, -37556, -37576, -37576, -37583, -37590, -37597, -37604, -37604, -37621, -37635, -37676, -37676, -37704, -37711, +37581, +37593, +37593, +37601, +37601, +37618, +37618, +37624, +37624, +37624, +37641, +37641, +37641, +37667, +37667, +37714, +37728, +37728, +37728, 37728, 37728, -37737, -37737, -37737, -37750, -37757, -37778, -37785, -37785, -37819, -37826, -37833, -37843, -37850, -37869, -37914, -37921, +37728, +37728, +37741, +37756, +37767, +37767, +37783, +37789, +37789, +37800, +37807, +37824, +37824, +37839, +37874, +37888, +37888, +37888, +37899, +37910, +37910, +37910, +37910, 37935, -37942, -37949, -37982, -38013, -38013, -38013, -38023, -38057, -38077, -38097, -38110, -38117, -38123, -38133, -38133, -38133, -38140, -38140, -38148, -38159, -38179, -38192, -38205, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38225, -38225, -38230, -38246, -38258, -38280, -38287, -38294, -38294, -38294, -38301, -38318, -38318, -38340, -38371, -38371, -38384, -38420, -38440, -38453, +37943, +37961, +37961, +37973, +37973, +37973, +37973, +37991, +37991, +37991, +38004, +38039, +38039, +38061, +38061, +38072, +38078, +38089, +38112, +38125, +38165, +38165, +38165, +38165, +38177, +38177, +38195, +38195, +38206, +38206, +38206, +38206, +38206, +38213, +38219, +38227, +38227, +38238, +38250, +38259, +38268, +38268, +38302, +38313, +38313, +38326, +38352, +38366, +38391, +38391, +38400, +38400, +38434, +38434, +38445, +38455, +38475, 38481, -38506, -38522, -38534, -38559, -38559, -38559, -38564, -38564, -38581, -38604, -38604, -38611, -38620, -38626, -38635, -38635, -38635, -38666, -38674, -38688, -38693, -38710, -38722, -38722, -38722, -38729, -38734, -38752, -38792, -38818, +38493, +38493, +38493, +38525, +38525, +38525, +38525, +38525, +38536, +38552, +38567, +38579, +38586, +38586, +38586, +38601, +38606, +38628, +38660, +38670, +38670, +38670, +38701, +38707, +38707, +38725, +38759, +38773, +38780, +38802, +38802, +38809, +38809, +38819, 38825, +38835, +38835, +38851, +38851, +38851, +38851, 38861, -38902, -38934, -38949, -38949, -38960, -38969, -38985, -38985, -38996, -39013, -39024, -39024, +38861, +38867, +38879, +38879, +38891, +38911, +38917, +38929, +38929, +38951, +38951, +38958, +38964, +38964, +38964, +38964, +38964, +38973, +38973, +38973, +38983, +39008, +39008, +39008, 39032, -39061, -39074, -39089, -39123, -39123, -39123, -39140, -39161, -39180, -39206, -39215, -39254, -39261, -39277, -39284, -39314, -39314, +39039, +39045, +39055, +39070, +39070, +39099, +39117, +39122, +39122, +39122, +39122, +39122, +39122, +39142, +39162, +39162, +39162, +39162, +39172, +39172, +39178, +39194, +39205, +39205, +39232, +39232, +39241, +39259, +39259, +39290, +39290, +39290, +39290, +39306, +39306, +39306, +39312, +39312, +39322, +39322, 39330, -39340, -39340, -39371, -39371, +39341, +39360, +39367, +39382, 39392, -39430, -39430, -39437, -39444, -39461, -39468, -39468, -39485, -39517, -39524, -39538, -39543, -39548, -39555, -39581, -39588, -39588, -39609, -39609, +39404, +39431, +39445, +39454, +39469, +39469, +39469, +39469, +39469, +39482, +39500, +39500, +39522, +39532, +39532, +39551, +39575, +39597, +39597, +39597, 39616, -39652, -39670, -39677, -39677, -39684, -39691, +39627, +39627, +39675, +39675, 39702, -39717, -39717, -39717, -39724, -39749, -39760, -39766, -39775, -39791, -39791, -39814, -39827, -39827, -39837, -39859}; +39718, +39732, +39732, +39741, +39741, +39748, +39793, +39793, +39793, +39793, +39793, +39804, +39804, +39828, +39828, +39843, +39850, +39861, +39861, +39884, +39899, +39923, +39944, +39944, +39954, +39991, +39991, +40001, +40001, +40001, +40001, +40001, +40007, +40007, +40007, +40025, +40025, +40025, +40037, +40037, +40037, +40037, +40048, +40048, +40048, +40065, +40065, +40076, +40098, +40098, +40108, +40108, +40124, +40140, +40158, +40158, +40170, +40184, +40184, +40198, +40211, +40218, +40244, +40261, +40261, +40268, +40268, +40281, +40293, +40293, +40302, +40312, +40324, +40324, +40324, +40324, +40324, +40324, +40324, +40324, +40324, +40324, +40324, +40340, +40340, +40347, +40354, +40368, +40368, +40368, +40384, +40384, +40384, +40402, +40412, +40427, +40459, +40459, +40475, +40488, +40488, +40513, +40528, +40556, +40565, +40581, +40581, +40609, +40609, +40609, +40609, +40609, +40633, +40633, +40643, +40652, +40652, +40662, +40662, +40662, +40662, +40669, +40669, +40682, +40682, +40692, +40716, +40733, +40733, +40754, +40781, +40804, +40829, +40829, +40858, +40858, +40858, +40858, +40869, +40881, +40881, +40885, +40895, +40914, +40933, +40945, +40955, +40970, +40970, +40990, +41019, +41019, +41030, +41030, +41036, +41055, +41055, +41055, +41070, +41085, +41091, +41091, +41097, +41122, +41128, +41151, +41151, +41173, +41173, +41173, +41202, +41202, +41212, +41212, +41212, +41212, +41212, +41224, +41238, +41246, +41274, +41274, +41286, +41294, +41305, +41305, +41320, +41320, +41320, +41337, +41350, +41350, +41379, +41392, +41392, +41418, +41430, +41438, +41438, +41438, +41453, +41465, +41513, +41513, +41520, +41520, +41520, +41520, +41530, +41530, +41530, +41555, +41583, +41583, +41583, +41583, +41583, +41583, +41583, +41623, +41623, +41623, +41633, +41645, +41645, +41645, +41645, +41665, +41689, +41689, +41689, +41689, +41689, +41689, +41689, +41700, +41728, +41736, +41736, +41736, +41736, +41736, +41736, +41751, +41773, +41787, +41801, +41801, +41848, +41877, +41877, +41877, +41877, +41888, +41902, +41923, +41992, +41992, +42011, +42016, +42016, +42024, +42024, +42034, +42047, +42079, +42098, +42111, +42111, +42127, +42133, +42156, +42191, +42191, +42191, +42191, +42191, +42208, +42208, +42208, +42208, +42208, +42208, +42229, +42229, +42244, +42270, +42281, +42296, +42316, +42316, +42337, +42363, +42372, +42372, +42372, +42372, +42387, +42394, +42400, +42412, +42412, +42423, +42430, +42456, +42456, +42474, +42491, +42503, +42522, +42522, +42522, +42540, +42572, +42581, +42588, +42605, +42618, +42683, +42697, +42697, +42697, +42714, +42719, +42743, +42743, +42743, +42768, +42768, +42795, +42808, +42815, +42815, +42815, +42843, +42843, +42877, +42884, +42899, +42899, +42913, +42933, +42956, +42986, +42997, +42997, +43004, +43026, +43046, +43058, +43058, +43089, +43113, +43143, +43150, +43169, +43191, +43210, +43217, +43224, +43234, +43270, +43287, +43323, +43323, +43330, +43340, +43340, +43359, +43359, +43359, +43372, +43372, +43400, +43411, +43443, +43459, +43459, +43459, +43475, +43475, +43508, +43508, +43515, +43515, +43525, +43541, +43558, +43570, +43570, +43587, +43606, +43655, +43655, +43661, +43674, +43674, +43674, +43680, +43680, +43694, +43704, +43715, +43732, +43743, +43743, +43771, +43771, +43801, +43801, +43828, +43840, +43851, +43886, +43904, +43917, +43940, +43947, +43961, +43975, +43993, +43993, +44007, +44007, +44031, +44038, +44045, +44052, +44052, +44052, +44070, +44077, +44104, +44116, +44130, +44137, +44144, +44170, +44186, +44193, +44193, +44226, +44250, +44271, +44278, +44285, +44285, +44300, +44307, +44349, +44363, +44369, +44369, +44388, +44419, +44442, +44467, +44513}; static const char tldData[] = { -"com.cn\0" -"com.co\0" -"hb.cn\0" -"med.br\0conf.lv\0wallonie.museum\0" -"namsos.no\0" -"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0farmers.museum\0rel.pl\0" -"com.cu\0" -"military.museum\0" -"*.jm\0convent.museum\0cymru.museum\0malvik.no\0" -"univ.sn\0" -"gliding.aero\0" -"wodzislaw.pl\0" -"com.dm\0!pref.iwate.jp\0tran\xc3\xb8y.no\0pila.pl\0" -"mb.it\0*.ke\0lib.ri.us\0" -"com.ec\0*.kh\0tr\xc3\xb8gstad.no\0" -"com.ee\0" -"mobi.gp\0" -"gran.no\0" -"wa.gov.au\0" -"com.dz\0kg.kr\0" -"zoological.museum\0gjerstad.no\0haugesund.no\0kharkov.ua\0" -"walbrzych.pl\0" -"civilization.museum\0" -"ha.no\0" -"*.kw\0" -"med.ec\0com.es\0" -"med.ee\0otago.museum\0svelvik.no\0" -"art.ht\0amber.museum\0elvendrell.museum\0rost.no\0" -"jx.cn\0gratangen.no\0" -"association.aero\0ca.it\0" -"zaporizhzhe.ua\0" -"com.fr\0" -"szex.hu\0" -"e-burg.ru\0" -"com.ge\0bokn.no\0" -"mordovia.ru\0" -"com.gh\0*.mm\0" -"com.gi\0z.se\0" -"cahcesuolo.no\0" -"hurdal.no\0joshkar-ola.ru\0" -"cadaques.museum\0ma.us\0" -"a.bg\0" -"com.gn\0bozen.it\0tambov.ru\0" -"*.gifu.jp\0*.tokyo.jp\0*.mt\0" -"com.gp\0travel\0cc.tx.us\0" -"com.gr\0hemne.no\0" -"*.ni\0" -"*.mz\0" -"cc.il.us\0" +"gov.ir\0karpacz.pl\0" +"com.cn\0gov.is\0int.lk\0" +"com.co\0gov.it\0!nls.uk\0" +"gov.je\0" +"hvaler.no\0" +"prd.fr\0kvinnherad.no\0" +"com.cu\0or.ug\0" +"bible.museum\0" +"*.kobe.jp\0bergen.no\0chernovtsy.ua\0" +"gouv.bj\0or.tz\0" +"karate.museum\0naturhistorisches.museum\0swiebodzin.pl\0" +"gov.jo\0" +"com.dm\0" +"salvadordali.museum\0kvitsoy.no\0" +"com.do\0" +"pa.it\0or.us\0" +"gov.kg\0lardal.no\0" +"com.ec\0" +"gov.ki\0" +"com.ee\0tysfjord.no\0" +"turek.pl\0" +"gouv.ci\0com.eg\0" +"gov.km\0skjak.no\0" +"gov.kn\0int.mv\0somna.no\0" +"journalist.aero\0com.dz\0int.mw\0" +"gov.kp\0" +"gov.la\0" +"gov.lb\0" +"gov.lc\0grandrapids.museum\0" +"biella.it\0" +"center.museum\0harvestcelebration.museum\0" +"lib.mn.us\0" +"com.es\0" +"gov.ky\0" +"*.tottori.jp\0gov.kz\0h\xc3\xb8nefoss.no\0" +"lt.it\0gov.lk\0me.us\0is-an-anarchist.com\0" +"vic.au\0" +"rome.it\0" +"oppeg\xc3\xa5rd.no\0" +"gov.ma\0ilawa.pl\0" +"gov.lr\0" +"gov.lt\0" +"mobi.gp\0gov.me\0hjelmeland.no\0" +"gov.lv\0" +"com.fr\0gov.mg\0" +"gov.ly\0from-wi.com\0" +"s.bg\0com.ge\0" +"gov.mk\0intelligence.museum\0" +"gov.ml\0melhus.no\0" +"com.gh\0" +"com.gi\0gov.mn\0" +"gov.mo\0" +"ambulance.aero\0" +"stuff-4-sale.org\0" +"gov.mr\0bokn.no\0univ.sn\0" +"com.gn\0basel.museum\0" +"te.ua\0" +"com.gp\0gov.mu\0annefrank.museum\0" +"vicenza.it\0gov.mv\0" +"com.gr\0education.museum\0gov.mw\0gov.ng\0" +"*.saga.jp\0england.museum\0" +"gov.my\0" +"hotel.lk\0" +"int.pt\0" +"nannestad.no\0" "com.gy\0" -"zj.cn\0oksnes.no\0museum.tt\0" -"com.hk\0*.np\0" -"rc.it\0baseball.museum\0" -"com.hn\0exhibition.museum\0" -"h\xc3\xa1""bmer.no\0" +"com.hk\0" +"!uba.ar\0" +"research.aero\0a\xc3\xa9roport.ci\0gov.nr\0lib.tn.us\0" +"com.hn\0prd.km\0" +"udine.it\0podzone.net\0" "com.hr\0" -"fg.it\0stathelle.no\0defense.tn\0" +"flor\xc3\xb8.no\0dn.ua\0" "com.ht\0" -"qld.gov.au\0*.nz\0" -"davvenj\xc3\xa1rga.no\0*.om\0" -"vang.no\0" -"*.kumamoto.jp\0" -"vercelli.it\0usenet.pl\0" -"com.io\0stalbans.museum\0" -"com.iq\0" -"*.pg\0" -"com.is\0klabu.no\0skiptvet.no\0" -"med.ht\0field.museum\0" -"gr.it\0gj\xc3\xb8vik.no\0tromsa.no\0lib.mi.us\0" -"ca.na\0" -"hagebostad.no\0k12.ma.us\0" -"*.qa\0" -"*.niigata.jp\0" -"monzaebrianza.it\0com.jo\0comunica\xc3\xa7\xc3\xb5""es.museum\0" -"gr.jp\0" -"ballangen.no\0*.py\0" -"scienceandindustry.museum\0" -"nuoro.it\0com.kg\0" -"com.ki\0" -"im.it\0idv.tw\0" -"*.akita.jp\0com.km\0r\xc3\xb8ros.no\0sopot.pl\0" -"!pref.yamanashi.jp\0" -"com.kp\0" -"!pref.kochi.jp\0com.la\0" -"com.lb\0" -"com.lc\0stjordalshalsen.no\0sigdal.no\0cc.nm.us\0" -"samnanger.no\0" -"drobak.no\0" -"vt.it\0" -"catering.aero\0com.ky\0" -"com.kz\0cc.ca.us\0" -"com.lk\0" -"grosseto.it\0mosvik.no\0" -"namsskogan.no\0" -"loten.no\0" -"chirurgiens-dentistes.fr\0" -"com.lr\0bremanger.no\0" -"gs.cn\0" -"com.lv\0lib.co.us\0" -"com.mg\0" -"passenger-association.aero\0" -"com.ly\0yekaterinburg.ru\0" -"vladivostok.ru\0" -"com.mk\0beeldengeluid.museum\0" -"com.ml\0" -"art.pl\0" -"com.mo\0" -"britishcolumbia.museum\0tx.us\0" -"com.na\0sakhalin.ru\0*.sv\0" -"mc.it\0" -"amsterdam.museum\0udm.ru\0" -"com.mu\0" +"fin.ec\0" +"nativeamerican.museum\0" +"gs.nl.no\0suldal.no\0fareast.ru\0" +"carrara-massa.it\0varese.it\0" +"warszawa.pl\0" +"matta-varjjat.no\0" +"com.io\0matera.it\0" +"com.iq\0brunel.museum\0" +"com.is\0*.kumamoto.jp\0gov.ph\0" +"monzaedellabrianza.it\0" +"gov.pk\0" +"idv.hk\0gov.pl\0nakhodka.ru\0" +"prd.mg\0int.ru\0" +"gov.pn\0cpa.pro\0" +"orland.no\0int.rw\0" +"olawa.pl\0" +"gov.pr\0isa-hockeynut.com\0" +"gov.ps\0" +"com.jo\0gov.pt\0" +"saratov.ru\0" +"school.na\0" +"sm\xc3\xb8la.no\0" +"com.kg\0" +"k12.ia.us\0" +"com.ki\0pacific.museum\0" +"ap.it\0moma.museum\0kostroma.ru\0" +"!siemens.om\0" +"com.km\0circus.museum\0int.tj\0zhitomir.ua\0" +"stavropol.ru\0" +"com.kp\0is-a-player.com\0" +"com.la\0" +"com.lb\0cincinnati.museum\0" +"firenze.it\0com.lc\0" +"savona.it\0t.se\0" +"int.tt\0" +"pescara.it\0" +"com.ky\0" +"com.kz\0" +"com.lk\0servegame.org\0" +"fermo.it\0vennesla.no\0gov.sa\0" +"gov.sb\0" +"gov.rs\0gov.sc\0" +"gov.sd\0" +"hotel.hu\0gov.ru\0" +"sshn.se\0blogsite.org\0" +"com.lr\0lerdal.no\0gov.rw\0gov.sg\0" +"*.shimane.jp\0abo.pa\0" +"bus.museum\0" +"com.lv\0" +"com.mg\0gov.sl\0" +"com.ly\0" +"com.mk\0" +"com.ml\0st.no\0" +"com.mo\0habmer.no\0gov.st\0" +"\xe7\xbd\x91\xe7\xbb\x9c.cn\0cmw.ru\0is-a-bookkeeper.com\0" +"com.na\0int.vn\0" +"doesntexist.com\0" +"k12.pa.us\0" +"gov.sy\0" +"com.mu\0farmers.museum\0gov.tj\0ia.us\0gotdns.org\0" "com.mv\0com.nf\0" -"com.mw\0com.ng\0il.us\0" -"geometre-expert.fr\0com.mx\0" -"med.ly\0com.my\0" -"ag.it\0" -"*.tr\0" -"!pref.oita.jp\0" -"hoyanger.no\0skedsmo.no\0" -"com.nr\0turystyka.pl\0" -"koebenhavn.museum\0" -"quebec.museum\0" -"stord.no\0*.uk\0" -"act.au\0" -"br.it\0cb.it\0gyeonggi.kr\0jobs.tt\0lib.hi.us\0" -"*.ve\0" -"*.saga.jp\0wildlife.museum\0com.pa\0" -"monzabrianza.it\0sciencehistory.museum\0stange.no\0oskol.ru\0principe.st\0*.uy\0" -"plaza.museum\0com.pe\0" -"com.pf\0" -"eigersund.no\0" +"fortmissoula.museum\0com.mw\0com.ng\0gov.tl\0" +"stateofdelaware.museum\0com.mx\0" +"com.my\0gov.tn\0" +"gov.to\0" +"namdalseid.no\0cc.ar.us\0" +"kemerovo.ru\0gov.ua\0" +"pavia.it\0turin.it\0" +"childrensgarden.museum\0sciencecenter.museum\0gov.tt\0" +"principe.st\0" +"lucca.it\0" +"com.nr\0gov.tw\0" +"modern.museum\0" +"lib.ga.us\0" +"fc.it\0gorlice.pl\0" +"rm.it\0" +"otago.museum\0" +"celtic.museum\0sciencecenters.museum\0khmelnitskiy.ua\0gov.vc\0" +"sibenik.museum\0" +"com.pa\0" +"cc.wy.us\0" +"sandiego.museum\0podlasie.pl\0" +"asso.fr\0" +"com.pe\0" +"v\xc3\xa5gs\xc3\xb8y.no\0com.pf\0is-into-cartoons.com\0" "com.ph\0" -"manx.museum\0marylhurst.museum\0" -"md.ci\0pi.it\0schweiz.museum\0com.pk\0" -"grp.lk\0fr\xc3\xb8ya.no\0com.pl\0press.se\0" -"us.com\0" -"b.bg\0cremona.it\0communication.museum\0art.sn\0" -"med.pa\0" -"com.pr\0" +"gov.vn\0" +"act.au\0com.pk\0is-a-chef.org\0" +"ascolipiceno.it\0hammerfest.no\0com.pl\0lib.pr.us\0" +"rockart.museum\0" +"opole.pl\0k12.wa.us\0" +"science-fiction.museum\0ostrowwlkp.pl\0" +"lunner.no\0pa.us\0" +"asso.gp\0com.pr\0" "com.ps\0" "com.pt\0" -"k12.in.us\0" -"ah.cn\0bahcavuotna.no\0" -"sondrio.it\0arkhangelsk.ru\0" -"cargo.aero\0" -"council.aero\0" -"museum.mv\0hattfjelldal.no\0spydeberg.no\0med.pl\0" -"niepce.museum\0museum.mw\0" -"anthropology.museum\0" -"pharmacien.fr\0smola.no\0" -"fin.ec\0" -"selbu.no\0" -"workinggroup.aero\0nm.us\0" -"museum.no\0com.re\0" -"cc.vt.us\0" -"village.museum\0" -"ca.us\0" -"*.sapporo.jp\0" -"teramo.it\0" +"tomsk.ru\0" +"psi.br\0worse-than.tv\0" +"es.kr\0" +"money.museum\0" +"!pref.kanagawa.jp\0rost.no\0" +"gov.ws\0" +"mjondalen.no\0" +"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0" +"sld.do\0" +"*.miyazaki.jp\0" +"mc.it\0eidfjord.no\0wlocl.pl\0com.re\0md.us\0\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0" +"asso.ht\0environment.museum\0is-an-entertainer.com\0" +"stokke.no\0" +"*.yamaguchi.jp\0raholt.no\0" +"\xe7\xbd\x91\xe7\xbb\x9c.hk\0" "com.ro\0" -"*.ye\0" +"aseral.no\0aknoluokta.no\0" "com.sa\0" "com.sb\0" -"so.it\0com.sc\0" -"jolster.no\0com.sd\0" -"com.ru\0" +"artcenter.museum\0com.sc\0" +"r.bg\0stjordalshalsen.no\0com.sd\0" +"cremona.it\0hol.no\0com.ru\0" +"aerobatic.aero\0" "com.rw\0com.sg\0" -"sydney.museum\0" -"sa.edu.au\0" -"tom.ru\0" -"com.sl\0*.za\0" -"\xe7\xbd\x91\xe7\xb5\xa1.hk\0naturbruksgymn.se\0com.sn\0" -"assedic.fr\0com.so\0" -"!pref.mie.jp\0*.yu\0" -"med.sa\0" -"newspaper.museum\0holmestrand.no\0dnepropetrovsk.ua\0" -"christiansburg.museum\0roan.no\0" -"pesaro-urbino.it\0med.sd\0com.st\0" -"s\xc3\xb8gne.no\0" -"nuernberg.museum\0" -"*.zm\0" -"com.sy\0" -"*.nagano.jp\0com.tj\0" -"nt.gov.au\0news.hu\0paderborn.museum\0" -"boston.museum\0" +"!educ.ar\0" +"*.okinawa.jp\0shell.museum\0" +"kommunalforbund.se\0wa.us\0" +"asso.bj\0com.sl\0" +"botanicalgarden.museum\0com.sn\0" +"louvre.museum\0com.so\0" +"e-burg.ru\0" +"newmexico.museum\0cc.or.us\0" +"!pref.hiroshima.jp\0" +"com.st\0" +"\xc3\xa1laheadju.no\0is-a-caterer.com\0" +"pharmacien.fr\0mesaverde.museum\0lavagis.no\0" +"com.sy\0is-a-green.com\0" +"lans.museum\0com.tj\0" +"asso.ci\0" +"\xc3\xb8yer.no\0" +"dyroy.no\0" "com.tn\0" "com.to\0" -"broadcast.museum\0" -"com.ua\0" -"*.zw\0" -"baikal.ru\0" -"bykle.no\0com.tt\0" -"verdal.no\0" -"roros.no\0" -"fi.cr\0carboniaiglesias.it\0chuvashia.ru\0com.tw\0" -"k12.ca.us\0" -"eidsvoll.no\0" -"*.ishikawa.jp\0" -"dolls.museum\0" -"naval.museum\0" -"karasjok.no\0tysvar.no\0" -"bielawa.pl\0com.vc\0" -"svalbard.no\0deatnu.no\0rnd.ru\0" -"grandrapids.museum\0" -"bauern.museum\0k12.pr.us\0" -"press.ma\0" -"*.kagawa.jp\0fribourg.museum\0przeworsk.pl\0com.vi\0" -"com.uz\0" -"babia-gora.pl\0" -"com.vn\0" -"med.pro\0" -"suedtirol.it\0kursk.ru\0" +"ss.it\0" +"axis.museum\0com.ua\0" +"fr\xc3\xb8ya.no\0com.tt\0" +"nordreisa.no\0gouv.rw\0" +"cc.me.us\0" +"bv.nl\0com.tw\0" +"*.chiba.jp\0tysv\xc3\xa6r.no\0" +"oregon.museum\0" +"como.it\0risor.no\0" +"gouv.sn\0" +"etc.br\0pasadena.museum\0" +"publ.pt\0" +"santafe.museum\0frogn.no\0komvux.se\0" +"klabu.no\0is-a-chef.com\0" +"muosat.no\0" +"com.vc\0" +"pv.it\0alaheadju.no\0hemsedal.no\0" +"zt.ua\0com.vi\0" +"gwangju.kr\0com.uz\0" +"asso.dz\0loten.no\0" +"museumvereniging.museum\0com.vn\0" +"hembygdsforbund.museum\0" +"mb.ca\0" +"idv.tw\0" +"and.museum\0" +"zlg.br\0k12.ut.us\0" +"ao.it\0" +"nj.us\0" +"avocat.fr\0averoy.no\0dyndns-web.com\0" +"km.ua\0" +"est.pr\0" +"control.aero\0" +"bill.museum\0\xe1\x83\x92\xe1\x83\x94\0" +"s.se\0com.ws\0" +"casadelamoneda.museum\0vestby.no\0is-a-celticsfan.org\0" +"org\0" +"treviso.it\0" +"bauern.museum\0" +"fin.tn\0" +"tempioolbia.it\0trustee.museum\0herad.no\0" +"mo-i-rana.no\0" +"mielec.pl\0" +"railroad.museum\0" +"\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" +"ostre-toten.no\0" +"nature.museum\0" +"wa.edu.au\0akrehamn.no\0" +"k\xc3\xa5""fjord.no\0" +"benevento.it\0" +"services.aero\0" +"madrid.museum\0hapmir.no\0" +"archaeology.museum\0stordal.no\0" +"mandal.no\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0" +"endofinternet.org\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0" +"l\xc3\xa6rdal.no\0" +"rnd.ru\0" +"brindisi.it\0" "bonn.museum\0" -"lt.it\0" -"design.aero\0microlight.aero\0americanantiques.museum\0meland.no\0" -"insurance.aero\0aarborte.no\0" -"kh.ua\0" -"macerata.it\0architecture.museum\0" -"rovigo.it\0rawa-maz.pl\0" -"store.nf\0levanger.no\0" -"b\xc3\xa1jddar.no\0" -"not.br\0" -"com.ws\0" -"!pref.kagawa.jp\0" -"!omanpost.om\0" -"vt.us\0" -"gs.ah.no\0vladikavkaz.ru\0" -"no.it\0" -"in.na\0szkola.pl\0a.se\0" -"aid.pl\0" -"workshop.museum\0vegarshei.no\0" -"sund.no\0" -"bs.it\0flora.no\0" -"agriculture.museum\0" -"koeln.museum\0" -"minnesota.museum\0k12.il.us\0" -"froya.no\0" -"aeroport.fr\0" -"davvenjarga.no\0zgora.pl\0ivano-frankivsk.ua\0" -"*.gunma.jp\0" -"amot.no\0" -"mus.br\0chungbuk.kr\0" -"ggf.br\0lorenskog.no\0" -"jeonbuk.kr\0" -"k12.vi.us\0" -"c.bg\0sande.more-og-romsdal.no\0" -"perugia.it\0" -"massa-carrara.it\0" -"michigan.museum\0" -"archaeology.museum\0mosj\xc3\xb8""en.no\0czest.pl\0koenig.ru\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0" +"schokoladen.museum\0\xc3\xb8vre-eiker.no\0" +"valley.museum\0" "mobi.tt\0" -"kraanghke.no\0" -"cc.in.us\0" -"re.it\0lib.vt.us\0" -"dell-ogliastra.it\0" -"s\xc3\xb8mna.no\0" -"k12.wv.us\0" -"gok.pk\0fh.se\0" -"luzern.museum\0" -"fi.it\0swidnica.pl\0" -"cbg.ru\0" +"kr\xc3\xa5""anghke.no\0" +"lindesnes.no\0" +"coloradoplateau.museum\0" +"timekeeping.museum\0rade.no\0" +"lib.co.us\0" +"ce.it\0" +"sor-fron.no\0" +"nord-fron.no\0" +"!nawras.om\0dyndns-pics.com\0" +"mel\xc3\xb8y.no\0" +"logistics.aero\0" +"!pref.tochigi.jp\0sld.pa\0" +"journalism.museum\0badaddja.no\0cc.ia.us\0" +"finn\xc3\xb8y.no\0" +"b\xc3\xa6rum.no\0meldal.no\0mazury.pl\0" +"gouv.km\0" +"biz.bb\0*.hokkaido.jp\0" +"vyatka.ru\0lib.az.us\0" +"biz.at\0resistance.museum\0" +"adygeya.ru\0" +"balestrand.no\0" +"mb.it\0" +"biz.az\0raisa.no\0" +"zgora.pl\0" +"gaular.no\0" +"gs.st.no\0perm.ru\0" +"culturalcenter.museum\0" +"yosemite.museum\0" +"ballooning.aero\0q.bg\0ullensaker.no\0on-the-web.tv\0" +"sandnessjoen.no\0" +"gouv.ml\0" +"hn.cn\0test.tj\0" +"is-a-guru.com\0" +"uslivinghistory.museum\0cc.pa.us\0" +"sport.hu\0kviteseid.no\0" +"stryn.no\0" +"rl.no\0" +"vet.br\0" +"k12.ny.us\0" +"ulan-ude.ru\0" +"rel.ht\0sr.it\0glas.museum\0" +"mobi.na\0sirdal.no\0" +"from-de.com\0is-a-socialist.com\0" +"mer\xc3\xa5ker.no\0oster\xc3\xb8y.no\0" +"cc.md.us\0" +"ip6.arpa\0bu.no\0is-very-sweet.org\0" +"on.ca\0homeunix.net\0" +"divtasvuodna.no\0" +"saltdal.no\0smolensk.ru\0" +"lezajsk.pl\0" +"oslo.no\0ralingen.no\0" +"pu.it\0!pref.toyama.jp\0" +"journal.aero\0stockholm.museum\0washingtondc.museum\0" +"test.ru\0" +"from-pr.com\0is-a-painter.com\0" +"encyclopedic.museum\0cc.wa.us\0" +"!pref.okinawa.jp\0" +"educator.aero\0yk.ca\0sassari.it\0jobs.tt\0" +"chtr.k12.ma.us\0" +"it.ao\0paroch.k12.ma.us\0" +"leasing.aero\0!pref.akita.jp\0kl\xc3\xa6""bu.no\0" +"farmstead.museum\0ski.museum\0asso.re\0k12.vi.us\0" +"an.it\0" +"nissedal.no\0" +"delmenhorst.museum\0" +"6bone.pl\0" +"act.edu.au\0" +"field.museum\0" +"r.se\0" +"lib.ee\0" +"lib.mi.us\0" +"\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0" +"\xc3\xa1lt\xc3\xa1.no\0" +"utazas.hu\0wodzislaw.pl\0wv.us\0" +"floro.no\0" +"sande.vestfold.no\0" +"russia.museum\0podzone.org\0" +"webhop.org\0" +"vantaa.museum\0" +"taranto.it\0" +"baseball.museum\0" +"!pref.ibaraki.jp\0" +"\xc3\xb8stre-toten.no\0sosnowiec.pl\0from-mn.com\0" +"sklep.pl\0" +"frankfurt.museum\0heroy.nordland.no\0" +"\xc3\xa5l.no\0" +"milan.it\0" +"chelyabinsk.ru\0" +"cc.nj.us\0" +"*.gunma.jp\0" +"bamble.no\0bardu.no\0" +"palermo.it\0" +"horten.no\0" "latina.it\0" -"vibovalentia.it\0" -"modum.no\0" -"safety.aero\0" -"sp.it\0" -"science.museum\0ah.no\0" -"norddal.no\0" +"biz.ki\0asso.nc\0kursk.ru\0" +"london.museum\0mx.na\0" +"gemological.museum\0" +"trading.aero\0holmestrand.no\0" +"monza.it\0sec.ps\0is-with-theband.com\0" +"\xc3\xa5snes.no\0" +"berlev\xc3\xa5g.no\0powiat.pl\0" +"biev\xc3\xa1t.no\0" +"trentino.it\0jevnaker.no\0" +"ivgu.no\0" +"grane.no\0tysnes.no\0voss.no\0" +"caltanissetta.it\0karm\xc3\xb8y.no\0" +"am.br\0" +"!pref.iwate.jp\0teaches-yoga.com\0" +"railway.museum\0rel.pl\0cherkassy.ua\0" +"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0" +"bt.it\0suedtirol.it\0malselv.no\0" +"grp.lk\0rennes\xc3\xb8y.no\0" +"pro\0" +"teo.br\0" +"australia.museum\0rana.no\0club.tw\0" +"lib.ms.us\0lib.nc.us\0" +"biz.mv\0" +"biz.mw\0iveland.no\0" +"\xd9\x85\xd8\xb5\xd8\xb1\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0" +"defense.tn\0" +"sebastopol.ua\0" +"nebraska.museum\0est-a-la-maison.com\0" +"biz.nr\0mincom.tn\0" +"does-it.net\0" +"kharkov.ua\0" +"p.bg\0" +"exchange.aero\0" +"media.museum\0" +"n\xc3\xa6r\xc3\xb8y.no\0osen.no\0" +"rnrt.tn\0" +"in-the-band.net\0" +"asnes.no\0" +"nt.edu.au\0tw.cn\0" +"l\xc3\xb8renskog.no\0" +"catania.it\0" +"roan.no\0tatarstan.ru\0!bl.uk\0" +"bergbau.museum\0biz.pk\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0dontexist.com\0" +"biz.pl\0is-a-chef.net\0" +"b\xc3\xa1hcavuotna.no\0hattfjelldal.no\0" +"ta.it\0biz.pr\0" +"wiki.br\0asso.km\0oregontrail.museum\0" +"newhampshire.museum\0" +"leikanger.no\0" +"ato.br\0" +"selbu.no\0" +"k12.ks.us\0" +"cz.it\0" +"pt.it\0kids.museum\0\xc3\xb8ystre-slidre.no\0gos.pk\0" +"napoli.it\0detroit.museum\0" +"asso.mc\0" +"syzran.ru\0" +"olbiatempio.it\0folldal.no\0" +"sumy.ua\0" +"artsandcrafts.museum\0" +"aero\0flekkefjord.no\0" +"tana.no\0" +"jamison.museum\0alstahaug.no\0tom.ru\0" +"engerdal.no\0homeip.net\0" +"mobi\0" +"\xc4\x8d\xc3\xa1hcesuolo.no\0nh.us\0" +"antiques.museum\0georgia.museum\0" +"passenger-association.aero\0" +"luster.no\0" +"xz.cn\0" +"paleo.museum\0" +"olsztyn.pl\0sellsyourhome.org\0" +"vdonsk.ru\0" +"living.museum\0" +"finearts.museum\0" +"selje.no\0" +"hanggliding.aero\0eng.br\0kamchatka.ru\0biz.tj\0" +"naturalhistory.museum\0" +"is-a-knight.org\0" +"news.hu\0vrn.ru\0k12.sc.us\0" +"mosvik.no\0" +"nnov.ru\0" +"s\xc3\xb8ndre-land.no\0uzhgorod.ua\0" +"sex.hu\0pomorze.pl\0biz.tt\0" +"from-ak.com\0" +"gs.rl.no\0" +"vaga.no\0" +"hornindal.no\0" +"rawa-maz.pl\0" +"mine.nu\0" +"flatanger.no\0lviv.ua\0" +"czest.pl\0" +"aquila.it\0copenhagen.museum\0" +"tx.us\0" +"h\xc3\xa6gebostad.no\0" +"aosta.it\0utah.museum\0" +"orkanger.no\0" +"denmark.museum\0" +"gs.bu.no\0" +"sa.gov.au\0*.ibaraki.jp\0biz.vn\0" +"for-our.info\0" +"hitra.no\0" +"panama.museum\0" +"qc.ca\0" +"\xc3\xa5mot.no\0lebtimnetz.de\0" +"k12.ma.us\0" +"from-ca.com\0" +"stuff-4-sale.us\0" +"pulawy.pl\0" +"cc.wv.us\0" +"nf.ca\0penza.ru\0" +"reggiocalabria.it\0" +"bs.it\0naturalsciences.museum\0" +"beeldengeluid.museum\0" +"hobol.no\0" +"massa-carrara.it\0s\xc3\xb8r-varanger.no\0" +"ngo.lk\0" +"airline.aero\0" +"voagat.no\0" +"undersea.museum\0uk.net\0" +"ma.us\0" +"author.aero\0roma.it\0" +"lyngdal.no\0vn.ua\0" +"tjome.no\0brand.se\0" +"lodi.it\0health.museum\0" +"tv.bo\0hm.no\0" +"tv.br\0" +"o.bg\0wales.museum\0pisz.pl\0" +"from-ut.com\0" +"sor-odal.no\0" +"vagan.no\0" +"is.it\0" +"omasvuotna.no\0serveftp.net\0" +"kazimierz-dolny.pl\0" +"hl.cn\0" +"franziskaner.museum\0" +"meeres.museum\0" +"nov.ru\0" +"aland.fi\0m\xc3\xa5s\xc3\xb8y.no\0" +"busan.kr\0" +"cartoonart.museum\0sex.pl\0" +"santacruz.museum\0lib.il.us\0" "cc.na\0" -"re.kr\0" -"dielddanuorri.no\0" -"force.museum\0" -"torino.it\0cc.md.us\0" -"artanddesign.museum\0pisz.pl\0" -"olsztyn.pl\0" -"unsa.ba\0rade.no\0vinnica.ua\0" -"in.rs\0astrakhan.ru\0" -"sogne.no\0" -"homebuilt.aero\0" -"polkowice.pl\0" -"hole.no\0health.vn\0" -"fj.cn\0" -"davvesiida.no\0" -"vic.au\0" -"kongsberg.no\0" -"pub.sa\0" -"vv.it\0" -"!pref.tottori.jp\0" -"*.sendai.jp\0in.th\0" -"lib.pa.us\0" -"chiropractic.museum\0" -"mobi.na\0aca.pro\0" -"konyvelo.hu\0sciencecenters.museum\0" -"he.cn\0" -"in.ua\0" -"!city.nagoya.jp\0" -"muenchen.museum\0" -"psi.br\0" -"maryland.museum\0" -"!statecouncil.om\0" -"tr\xc3\xa6na.no\0" -"!pref.yamagata.jp\0jewishart.museum\0" -"lu.it\0me.it\0" -"chel.ru\0" -"tatarstan.ru\0" -"adult.ht\0in.us\0" +"karasjohka.no\0" +"l\xc3\xb8""dingen.no\0" +"sp.it\0amot.no\0" +"gamvik.no\0ngo.ph\0" +"bremanger.no\0cieszyn.pl\0" +"ltd.gi\0ngo.pl\0" +"is-a-llama.com\0" +"g12.br\0naturbruksgymn.se\0" +"esp.br\0" +"assn.lk\0childrens.museum\0" +"pittsburgh.museum\0" +"babia-gora.pl\0" +"embroidery.museum\0" +"*.nagano.jp\0" +"flakstad.no\0" +"bielawa.pl\0" +"poznan.pl\0" +"koeln.museum\0" +"langevag.no\0" +"upow.gov.pl\0" +"americanantiques.museum\0" +"al.it\0" +"\xe6\x95\x8e\xe8\x82\xb2.hk\0fr\xc3\xa6na.no\0romskog.no\0" +"loab\xc3\xa1t.no\0" +"lierne.no\0" +"archaeological.museum\0p.se\0\xed\x95\x9c\xea\xb5\xad\0" +"spjelkavik.no\0" +"is-a-photographer.com\0" +"muenster.museum\0" +"dyndns-ip.com\0" +"!pref.fukuoka.jp\0" +"game.tw\0k12.sd.us\0" +"dovre.no\0evenes.no\0" +"appspot.com\0altoadige.it\0" +"steigen.no\0" +"n\xc3\xa5\xc3\xa5mesjevuemie.no\0" +"iglesias-carbonia.it\0" +"dgca.aero\0nittedal.no\0" +"dnsdojo.org\0" +"homeunix.org\0" +"columbia.museum\0" +"gulen.no\0" +"tv.it\0" +"crimea.ua\0" +"ltd.lk\0sologne.museum\0soundandvision.museum\0cc.nh.us\0" +"amursk.ru\0" +"grosseto.it\0" +"is-a-therapist.com\0" +"k12.nj.us\0" +"massacarrara.it\0" +"naval.museum\0" +"ri.it\0environmentalconservation.museum\0" +"farmequipment.museum\0virginia.museum\0" +"not.br\0from-nj.com\0" +"dolls.museum\0dnsalias.net\0" +"al.no\0" +"gorge.museum\0" +"is-certified.com\0" +"!pref.yamagata.jp\0dyndns-blog.com\0" +"sejny.pl\0" +"ws.na\0" +"br.it\0cb.it\0" +"usarts.museum\0" +"masfjorden.no\0" +"plants.museum\0" "kafjord.no\0" -"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0" -"net.ac\0k12.ec\0" -"net.ae\0bashkiria.ru\0" -"net.af\0!omantel.om\0" -"net.ag\0" -"net.ai\0" -"!pref.toyama.jp\0" -"net.al\0timekeeping.museum\0" -"net.an\0design.museum\0fin.tn\0" -"ethnology.museum\0" -"perso.ht\0asker.no\0b.se\0" -"net.ba\0" -"net.bb\0flanders.museum\0" -"mincom.tn\0" +"cc.tx.us\0" +"bmd.br\0" +"lib.ne.us\0" +"nalchik.ru\0" +"tv.na\0" +"bahn.museum\0" +"lo.it\0" +"jx.cn\0" +"davvenj\xc3\xa1rga.no\0" +"nes.akershus.no\0" +"hl.no\0" +"nsw.au\0plc.co.im\0" +"n.bg\0" +"\xe4\xb8\xaa\xe4\xba\xba.hk\0" +"!pref.okayama.jp\0lib.wv.us\0" +"haugesund.no\0ovre-eiker.no\0sopot.pl\0" +"modum.no\0" +"botanical.museum\0" +"hk.cn\0m\xc3\xa1latvuopmi.no\0komi.ru\0is-found.org\0" +"msk.ru\0" +"\xe7\xb5\x84\xe7\xbb\x87.hk\0" +"labour.museum\0" +"issmarterthanyou.com\0" +"rennesoy.no\0" +"k12.oh.us\0" +"!pref.oita.jp\0r\xc3\xb8st.no\0lukow.pl\0" +"ge.it\0" +"so.it\0" +"huissier-justice.fr\0" +"cc.ma.us\0is-a-cpa.com\0" +"mulhouse.museum\0" +"ol.no\0" +"hoylandet.no\0" +"agrigento.it\0" +"nord-aurdal.no\0" +"k12.ky.us\0" +"is-a-democrat.com\0" +"pr.it\0\xc3\xa5seral.no\0" +"house.museum\0from-ct.com\0" +"sci.eg\0j\xc3\xb8rpeland.no\0zp.ua\0" +"motorcycle.museum\0szczecin.pl\0" +"rad\xc3\xb8y.no\0" +"bushey.museum\0" +"adv.br\0" +"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" +"s\xc3\xb8mna.no\0" +"org.ac\0" +"is-a-hunter.com\0" +"org.ae\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0jewish.museum\0" +"org.af\0al.us\0" +"org.ag\0andria-barletta-trani.it\0mari-el.ru\0" +"vossevangen.no\0" +"org.ai\0pubol.museum\0" +"grimstad.no\0" +"ln.cn\0b\xc3\xa1id\xc3\xa1r.no\0" +"org.al\0" +"org.an\0gs.hm.no\0" +"viking.museum\0" +"teramo.it\0o.se\0" +"org.ba\0" +"org.bb\0" +"ne.jp\0" +"d\xc3\xb8nna.no\0sn\xc3\xa5sa.no\0" +"mil.ac\0" +"nesset.no\0" +"mil.ae\0" +"org.bh\0" +"org.bi\0corporation.museum\0" +"org.az\0" +"org.bm\0" +"mil.al\0" +"org.bo\0time.museum\0" +"webhop.net\0" +"org.br\0" +"mil.ba\0org.bs\0" +"org.bt\0" +"ne.kr\0vanylven.no\0" +"holtalen.no\0" +"org.bw\0" +"org.ci\0" +"org.bz\0varoy.no\0" +"elblag.pl\0" +"mil.az\0" +"andoy.no\0skierv\xc3\xa1.no\0" +"org.cn\0better-than.tv\0" +"org.co\0" +"berkeley.museum\0" +"mil.bo\0coal.museum\0neat-url.com\0" +"operaunite.com\0sogne.no\0" +"mil.br\0" +"gd.cn\0org.cu\0" +"sn.cn\0" +"e164.arpa\0b\xc3\xa1hccavuotna.no\0" +"baghdad.museum\0fylkesbibl.no\0" +"*.ar\0mil.by\0klodzko.pl\0" +"*.bd\0org.dm\0info.ht\0" +"*.au\0info.hu\0" +"org.do\0" +"mil.cn\0" +"mil.co\0!pref.kumamoto.jp\0elburg.museum\0" +"civilaviation.aero\0org.ec\0" +"skaun.no\0" +"org.ee\0" +"en.it\0" +"*.bn\0org.eg\0ri.us\0" +"is-a-techie.com\0" +"org.dz\0" +"skoczow.pl\0" +"force.museum\0" +"kchr.ru\0" +"mil.do\0overhalla.no\0voronezh.ru\0" +"fjaler.no\0nat.tn\0" +"org.es\0daegu.kr\0oygarden.no\0" +"*.ck\0" +"mil.ec\0" +"lib.dc.us\0" +"mil.eg\0" +"ca.it\0" +"bahcavuotna.no\0" +"biz\0" +"vestv\xc3\xa5g\xc3\xb8y.no\0" +"*.cy\0" +"k-uralsk.ru\0" +"org.ge\0" +"milano.it\0!pref.kyoto.jp\0" +"cim.br\0org.gg\0" +"org.gh\0" +"org.gi\0batsfjord.no\0marker.no\0lebork.pl\0" +"bearalvahki.no\0froland.no\0" +"collection.museum\0" +"se.net\0lib.mt.us\0lib.nd.us\0" +"org.gn\0from-id.com\0" +"g\xc3\xa1ls\xc3\xa1.no\0porsanger.no\0" +"org.gp\0" +"org.gr\0" +"sch.ae\0" +"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" +"suisse.museum\0" +"guernsey.museum\0" +"mil.ge\0" +"ppg.br\0" +"mil.gh\0ne.pw\0" +"*.er\0org.hk\0aca.pro\0" +"info.ec\0" +"*.et\0settlement.museum\0" +"org.hn\0" +"m.bg\0" +"siljan.no\0iamallama.com\0" +"*.fj\0lib.wy.us\0" +"*.fk\0org.ht\0" +"org.hu\0" +"ddr.museum\0gb.net\0dudinka.ru\0" +"gz.cn\0" +"info.bb\0nic.im\0" +"nic.in\0cesenaforli.it\0" +"info.at\0org.im\0" +"br.com\0org.in\0" +"mil.hn\0" +"eu.int\0org.iq\0prof.pr\0" +"org.ir\0mosjoen.no\0" +"info.az\0org.is\0merseine.nu\0" +"org.je\0is-a-student.com\0" +"mil.id\0olbia-tempio.it\0" +"trani-barletta-andria.it\0!pref.miyazaki.jp\0" +"ca.na\0k12.as.us\0" +"from-hi.com\0" +"*.gt\0" +"*.gu\0sorfold.no\0" +"org.jo\0!pref.shizuoka.jp\0quebec.museum\0tver.ru\0" +"mil.in\0za.net\0" +"\xc3\xb8ksnes.no\0" +"mil.iq\0" +"agr.br\0" +"village.museum\0" +"org.kg\0" +"info.co\0" +"org.ki\0" +"alvdal.no\0" +"bristol.museum\0sos.pl\0" +"org.km\0" +"org.kn\0foundation.museum\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" +"embaixada.st\0" +"org.kp\0pskov.ru\0" +"mil.jo\0org.la\0gop.pk\0pr.us\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0org.lb\0" +"org.lc\0" +"*.il\0g\xc3\xa1\xc5\x8bgaviika.no\0" +"essex.museum\0" +"brandywinevalley.museum\0" +"ravenna.it\0trolley.museum\0konskowola.pl\0" +"mil.kg\0org.ky\0" +"org.kz\0davvenjarga.no\0ne.ug\0" +"org.lk\0" +"rimini.it\0" +"szczytno.pl\0ne.tz\0" +"mil.km\0pila.pl\0" +"atm.pl\0" +"org.ma\0beskidy.pl\0" +"org.lr\0is-an-actor.com\0" +"org.ls\0" +"mil.kr\0" +"org.me\0ak.us\0" +"mt.it\0*.jm\0org.lv\0ne.us\0" +"org.mg\0" +"info\0at-band-camp.net\0" +"org.ly\0kh.ua\0" +"*.kagoshima.jp\0org.mk\0kepno.pl\0" +"mil.kz\0org.ml\0med.pro\0" +"jobs\0gs.hl.no\0" +"*.ke\0org.mn\0" +"org.mo\0jur.pro\0n.se\0" +"*.kh\0org.na\0" +"!pref.wakayama.jp\0r\xc3\xa1hkker\xc3\xa1vju.no\0" +"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" +"sch.gg\0org.mu\0figueres.museum\0zaporizhzhe.ua\0" +"org.mv\0" +"org.mw\0org.ng\0dyndns-at-work.com\0" +"cat\0mil.lv\0org.mx\0gildesk\xc3\xa5l.no\0" +"mil.mg\0org.my\0" +"j\xc3\xb8lster.no\0!nel.uk\0" +"*.kw\0ringerike.no\0" +"org.nr\0" +"planetarium.museum\0" +"gc.ca\0newyork.museum\0" +"mil.mv\0" +"mil.my\0" +"cadaques.museum\0samara.ru\0k12.ca.us\0" +"missoula.museum\0" +"ud.it\0anthropology.museum\0mil.no\0org.pa\0" +"sch.id\0" +"*.tokyo.jp\0vagsoy.no\0" +"is-a-blogger.com\0" +"!pref.kochi.jp\0scienceandhistory.museum\0org.pe\0" +"pp.az\0*.mm\0org.pf\0cc.al.us\0" +"mazowsze.pl\0" +"countryestate.museum\0gs.ol.no\0org.ph\0" +"kg.kr\0usantiques.museum\0" +"ask\xc3\xb8y.no\0org.pk\0" +"technology.museum\0org.pl\0" +"*.mt\0" +"org.pn\0" +"from-wa.com\0" +"sch.ir\0r\xc3\xa5""de.no\0udmurtia.ru\0blogdns.org\0" +"fhsk.se\0" +"experts-comptables.fr\0!city.fukuoka.jp\0*.ni\0sauherad.no\0org.pr\0" +"media.hu\0sch.je\0*.mz\0org.ps\0" +"leirvik.no\0org.pt\0" +"rg.it\0v\xc3\xa5ler.\xc3\xb8stfold.no\0" +"mil.pe\0" +"*.np\0" +"kvinesdal.no\0mil.ph\0" +"surnadal.no\0" +"sch.jo\0" +"mil.pl\0here-for-more.info\0" +"chungnam.kr\0" +"viterbo.it\0fedje.no\0" +"*.nz\0boldlygoingnowhere.org\0" +"narviika.no\0" +"kv\xc3\xa6nangen.no\0*.om\0\xd1\x80\xd1\x84\0" +"ca.us\0" +"ok.us\0doesntexist.org\0" +"cultural.museum\0" +"webhop.info\0" +"l\xc3\xa1hppi.no\0usenet.pl\0" +"carbonia-iglesias.it\0org.ro\0" +"*.pg\0volgograd.ru\0" +"org.sa\0isa.us\0" +"psc.br\0org.sb\0" +"org.rs\0org.sc\0" +"org.sd\0" +"org.ru\0org.se\0" +"!city.shizuoka.jp\0" +"org.sg\0" +"sch.lk\0novosibirsk.ru\0" +"naroy.no\0*.qa\0dnsdojo.net\0" +"flesberg.no\0lutsk.ua\0" +"kuban.ru\0org.sl\0" +"org.sn\0kirovograd.ua\0" +"!city.nagoya.jp\0org.so\0" +"luroy.no\0" +"name\0*.py\0" +"org.st\0" +"sch.ly\0castres.museum\0mil.ru\0cc.ri.us\0" +"*.mie.jp\0nic.tj\0" +"mil.rw\0org.sy\0" +"cesena-forli.it\0org.sz\0org.tj\0" +"tananger.no\0karasjok.no\0" +"from-la.net\0" +"is-a-soxfan.org\0" +"org.tn\0" +"l.bg\0drobak.no\0org.to\0" +"hof.no\0" +"org.ua\0" +"pisa.it\0" +"org.tt\0sells-for-u.com\0" +"mil.st\0" +"org.tw\0" +"ltd.co.im\0thruhere.net\0" +"hi.cn\0" +"arteducation.museum\0mil.sy\0" +"stjohn.museum\0mil.tj\0serveftp.org\0" +"m\xc3\xa5lselv.no\0" +"other.nf\0" +"tel\0mil.to\0" +"aarborte.no\0" +"org.vc\0" +"sokndal.no\0" +"info.vn\0" +"mansions.museum\0k12.nv.us\0" +"mil.tw\0org.vi\0" +"dyndns-remote.com\0" +"kongsberg.no\0" +"mil.tz\0" +"homebuilt.aero\0zoology.museum\0tuva.ru\0org.vn\0" +"*.sv\0" +"2000.hu\0" +"nore-og-uvdal.no\0" +"crew.aero\0" +"mil.vc\0from-mi.com\0" +"\xe9\xa6\x99\xe6\xb8\xaf\0" +"snoasa.no\0" +"shop.ht\0southwest.museum\0*.tr\0lib.fl.us\0" +"shop.hu\0rnu.tn\0" +"is-uberleet.com\0" +"simple-url.com\0" "frana.no\0" -"bt.it\0" -"net.bh\0" -"auto.pl\0" +"frei.no\0" +"charter.aero\0" +"tinn.no\0org.ws\0" +"riodejaneiro.museum\0*.uk\0" +"lyngen.no\0" +"fineart.museum\0info.tn\0" +"modelling.aero\0" +"aremark.no\0gratangen.no\0" +"media.pl\0" +"casino.hu\0info.tt\0" +"bindal.no\0valer.hedmark.no\0*.ve\0" +"stadt.museum\0rubtsovsk.ru\0" +"*.niigata.jp\0" +"usdecorativearts.museum\0" +"brussels.museum\0naturalhistorymuseum.museum\0k12.id.us\0*.uy\0" +"lakas.hu\0\xd1\x81\xd1\x80\xd0\xb1\0dyndns.tv\0" +"ms.it\0mt.us\0nd.us\0" +"indianmarket.museum\0" +"slask.pl\0" +"tr\xc3\xa6na.no\0" +"m.se\0" +"sch.sa\0" +"cuneo.it\0" +"net.ac\0spb.ru\0" +"gateway.museum\0" +"net.ae\0" +"net.af\0campobasso.it\0vlaanderen.museum\0" +"net.ag\0info.ro\0" +"net.ai\0watchandclock.museum\0gdansk.pl\0" +"net.al\0valer.ostfold.no\0info.sd\0" +"plc.ly\0capebreton.museum\0go.dyndns.org\0" +"net.an\0" +"cc.pr.us\0" +"net.ba\0" +"net.bb\0urbinopesaro.it\0ms.kr\0pilots.museum\0" +"miners.museum\0" +"bearalv\xc3\xa1hki.no\0" +"net.bh\0!city.kobe.jp\0midtre-gauldal.no\0" "net.az\0" -"treviso.it\0" -"war.museum\0" -"net.bm\0" -"langevag.no\0m\xc3\xa5lselv.no\0" -"net.bo\0" -"gol.no\0" -"folkebibl.no\0" +"lib.va.us\0" +"net.bm\0*.ye\0" +"net.bo\0ts.it\0" +"com\0gloppen.no\0dyndns.ws\0" "net.br\0" -"net.bs\0troandin.no\0saotome.st\0lib.tn.us\0" -"md.us\0k12.ut.us\0" -"d.bg\0cambridge.museum\0\xc3\xa5s.no\0" -"net.ci\0" -"net.bz\0" -"sch.ae\0undersea.museum\0odda.no\0" +"net.bs\0info.pk\0" +"net.bt\0info.pl\0cc.ak.us\0" +"british.museum\0cc.ne.us\0" +"tourism.tn\0" +"scotland.museum\0" +"siena.it\0" +"net.ci\0*.za\0" +"net.bz\0info.pr\0" +"\xe5\x80\x8b\xe4\xba\xba.hk\0" +"aerodrome.aero\0works.aero\0*.yu\0" "net.cn\0" -"net.co\0c.la\0" +"net.co\0badajoz.museum\0" +"k12.ak.us\0" +"k12.me.us\0" +"chukotka.ru\0" +"net.cu\0*.zm\0" +"info.na\0" +"malatvuopmi.no\0" +"north.museum\0" +"art.br\0net.dm\0" +"mod.gi\0info.mv\0info.nf\0" +"net.do\0zoological.museum\0tgory.pl\0*.zw\0" +"nb.ca\0muenchen.museum\0fosnes.no\0" +"dnsalias.org\0" "gliwice.pl\0" -"aurskog-h\xc3\xb8land.no\0" -"andria-trani-barletta.it\0" -"net.cu\0loab\xc3\xa1t.no\0" -"rep.kp\0" -"\xe7\xbb\x84\xe7\xb9\x94.hk\0" -"gallery.museum\0" -"\xc3\xb8rland.no\0" -"store.ro\0" -"net.dm\0" -"somna.no\0" -"hemnes.no\0" -"ringebu.no\0k12.ky.us\0" "net.ec\0" -"dn.ua\0" -"tarnobrzeg.pl\0" -"soc.lk\0" -"romsa.no\0" -"bamble.no\0" -"net.dz\0lutsk.ua\0" -"barlettatraniandria.it\0ta.it\0countryestate.museum\0" -"kaszuby.pl\0" -"*.yamaguchi.jp\0cranbrook.museum\0store.st\0" -"southcarolina.museum\0lib.md.us\0" -"textile.museum\0" -"cheltenham.museum\0hurum.no\0" -"*.oita.jp\0" -"shop.ht\0cc.me.us\0" -"shop.hu\0turin.it\0" -"louvre.museum\0" -"k12.ar.us\0" -"consulting.aero\0" -"gv.ao\0" -"sauherad.no\0" -"gv.at\0net.ge\0" -"ostre-toten.no\0lib.ok.us\0" -"net.gg\0pilots.museum\0" -"2000.hu\0geology.museum\0" +"salangen.no\0lib.de.us\0" +"palmsprings.museum\0watch-and-clock.museum\0" +"net.eg\0k12.vt.us\0" +"bo.it\0r\xc3\xb8yken.no\0" +"net.dz\0info.nr\0" +"ah.cn\0lahppi.no\0" +"\xe7\xb5\x84\xe7\xb9\x94.hk\0" +"aircraft.aero\0pa.gov.pl\0" +"!gobiernoelectronico.ar\0" +"trd.br\0" +"sandoy.no\0" +"tozsde.hu\0" +"info.la\0" +"art.do\0stat.no\0osteroy.no\0" +"local\0" +"nrw.museum\0servebbs.net\0" +"\xe6\x95\x99\xe8\x82\xb2.hk\0" +"tychy.pl\0" +"!pref.gifu.jp\0" +"grong.no\0" +"art.dz\0net.ge\0!pref.aichi.jp\0" +"net.gg\0" +"williamsburg.museum\0sor-aurdal.no\0" +"barum.no\0tambov.ru\0" +"western.museum\0" +"rakkestad.no\0" +"k.bg\0skierva.no\0" "net.gn\0" -"mazowsze.pl\0bir.ru\0" -"net.gp\0" -"net.gr\0" -"oxford.museum\0" -"per.la\0" -"eastafrica.museum\0" -"meeres.museum\0" -"net.gy\0*.shizuoka.jp\0" "\xe5\x95\x86\xe6\xa5\xad.tw\0" +"net.gp\0halden.no\0pp.ru\0pp.se\0" +"net.gr\0" +"vi.it\0" +"kopervik.no\0rygge.no\0" +"vibovalentia.it\0" +"gx.cn\0" +"net.gy\0chocolate.museum\0mari.ru\0cc.ca.us\0" +"bo.telemark.no\0cc.ok.us\0" "net.hk\0" +"hobby-site.com\0" "net.hn\0" -"philadelphiaarea.museum\0" -"osen.no\0" +"hellas.museum\0kalmykia.ru\0" "net.ht\0net.id\0" -"fundacio.museum\0" -"j\xc3\xb8rpeland.no\0" -"\xe6\x95\x99\xe8\x82\xb2.hk\0" -"divtasvuodna.no\0" -"student.aero\0sch.gg\0net.im\0" -"\xe7\xbd\x91\xe7\xbb\x9c.cn\0net.in\0" -"net.iq\0" +"plaza.museum\0" +"krager\xc3\xb8.no\0s\xc3\xa1l\xc3\xa1t.no\0k12.ok.us\0" +"fr.it\0" +"*.yamanashi.jp\0" +"cv.ua\0kherson.ua\0" +"net.im\0ullensvang.no\0" +"net.in\0" +"community.museum\0kirov.ru\0" +"net.iq\0info.ki\0" "net.ir\0" "net.is\0" "net.je\0" -"kepno.pl\0lapy.pl\0" -"per.nf\0" -"gov\0*.shimane.jp\0" -"artcenter.museum\0" -"k\xc3\xa5""fjord.no\0" -"net.jo\0" -"eu.int\0" -"c.se\0" -"net.kg\0" -"ce.it\0net.ki\0" -"sch.id\0os.hedmark.no\0" -"columbus.museum\0" -"arteducation.museum\0" -"net.kn\0" -"kr.com\0" -"net.la\0bushey.museum\0cc.gu.us\0" -"net.lb\0" -"net.lc\0" -"gs.bu.no\0" -"e164.arpa\0" -"chieti.it\0labour.museum\0" -"sch.ir\0creation.museum\0krodsherad.no\0" -"net.ky\0" -"net.kz\0me.us\0" -"e.bg\0sch.je\0net.lk\0" -"zlg.br\0suwalki.pl\0" -"\xe5\x80\x8b\xe4\xba\xba.hk\0net.ma\0" -"net.lr\0" -"sch.jo\0notaires.km\0net.me\0" -"net.lv\0karate.museum\0" -"net.ly\0karm\xc3\xb8y.no\0" -"rg.it\0" +"bievat.no\0" +"po.it\0verona.it\0gon.pk\0" +"art.ht\0net.jo\0fed.us\0" +"etnedal.no\0" +"nx.cn\0" +"from-ms.com\0from-nc.com\0" +"durham.museum\0is-a-cubicle-slave.com\0" +"*.yokohama.jp\0net.kg\0" +"ancona.it\0net.ki\0" +"sorreisa.no\0" +"ulm.museum\0" +"press.museum\0" +"urn.arpa\0ogliastra.it\0!national-library-scotland.uk\0" +"net.kn\0from-fl.com\0" +"ac\0naples.it\0" +"ad\0net.la\0openair.museum\0giske.no\0" +"ae\0net.lb\0" +"af\0frosinone.it\0!pref.kagoshima.jp\0net.lc\0b\xc3\xb8.nordland.no\0ms.us\0nc.us\0" +"ag\0incheon.kr\0" +"!mecon.ar\0" +"ai\0" +"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"al\0net.ky\0linz.museum\0" +"am\0net.kz\0" +"an\0net.lk\0" +"ao\0l.se\0" +"!pref.osaka.jp\0oceanographic.museum\0" +"aq\0ba\0historical.museum\0bronnoysund.no\0poltava.ua\0" +"bb\0" +"as\0messina.it\0" +"at\0net.ma\0" +"be\0net.lr\0" +"bf\0ggf.br\0" +"aw\0bg\0l\xc3\xa4ns.museum\0\xc3\xa5""fjord.no\0" +"ax\0bh\0net.me\0computerhistory.museum\0indian.museum\0" +"bi\0net.lv\0" +"az\0bj\0" +"lom.no\0" +"*.kagawa.jp\0net.ly\0" +"bm\0juif.museum\0" "net.mk\0" -"net.ml\0evenes.no\0" -"ngo.lk\0net.mo\0egyptian.museum\0" -"marine.ru\0" -"realestate.pl\0" -"net.mu\0" -"net.mv\0net.nf\0" -"net.mw\0net.ng\0gda.pl\0" +"bo\0net.ml\0" +"ca\0fuoisku.no\0" +"qld.edu.au\0br\0net.mo\0workshop.museum\0" +"bs\0cc\0bryne.no\0" +"bt\0cd\0" +"za.org\0game-host.org\0" +"cf\0*.kanagawa.jp\0berg.no\0" +"tmp.br\0bw\0cg\0" +"sk.ca\0ch\0net.mu\0" +"by\0ci\0net.mv\0net.nf\0" +"bz\0alessandria.it\0gyeongnam.kr\0net.mw\0net.ng\0is-a-nascarfan.com\0" "net.mx\0" -"freemasonry.museum\0net.my\0enebakk.no\0" -"karlsoy.no\0" -"\xe7\xbd\x91\xe7\xbb\x9c.hk\0\xc3\xb8rskog.no\0" -"randaberg.no\0" -"club.aero\0" -"certification.aero\0sr.it\0" -"center.museum\0so.gov.pl\0" -"caa.aero\0" -"sch.lk\0tvedestrand.no\0" -"net.nr\0" -"luroy.no\0" -"aukra.no\0s\xc3\xa1lat.no\0lib.me.us\0" -"ddr.museum\0" -"york.museum\0stryn.no\0k12.nm.us\0" -"per.sg\0" -"judaica.museum\0" -"verona.it\0" -"agdenes.no\0" -"cng.br\0sch.ly\0" +"cl\0net.my\0" +"cm\0groks-the.info\0" +"cn\0" +"co\0" +"hi.us\0" +"paragliding.aero\0tr.it\0ustka.pl\0" +"cr\0baths.museum\0drammen.no\0" +"mus.br\0vladimir.ru\0" +"cu\0de\0net.nr\0" +"cv\0" +"volkenkunde.museum\0tourism.pl\0cc.mt.us\0cc.nd.us\0" +"cx\0scienceandindustry.museum\0" +"emergency.aero\0cz\0dj\0" +"dk\0" +"cnt.br\0sola.no\0" +"dm\0izhevsk.ru\0" +"do\0jondal.no\0" +"tsk.ru\0" +"government.aero\0k12.al.us\0" +"ec\0" "net.pa\0" -"author.aero\0" -"naturalhistory.museum\0steiermark.museum\0bu.no\0" -"sn\xc3\xa5sa.no\0net.pe\0" +"ee\0monzabrianza.it\0" +"laquila.it\0re.it\0" +"eg\0" +"net.pe\0" +"spy.museum\0" +"dz\0khv.ru\0" "net.ph\0" -"savannahga.museum\0batsfjord.no\0lib.oh.us\0" -"net.pk\0" +"enna.it\0dyr\xc3\xb8y.no\0net.pk\0" "net.pl\0" -"net.pn\0" -"washingtondc.museum\0" -"net.pr\0" -"net.ps\0" -"net.pt\0" -"nordkapp.no\0" -"emergency.aero\0krokstadelva.no\0" -"satx.museum\0ngo.ph\0omsk.ru\0" -"texas.museum\0" -"ngo.pl\0" -"mantova.it\0gu.us\0" -"!pref.shiga.jp\0isa.us\0" -"usa.museum\0" -"gb.net\0k12.vi\0" -"iveland.no\0" -"tempio-olbia.it\0" -"net.sa\0" +"ah.no\0" +"mr.no\0net.pn\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" +"es\0medecin.km\0" +"eu\0net.pr\0" +"net.ps\0lib.ct.us\0" +"net.pt\0!icnet.uk\0" +"fi\0sund.no\0k12.wi.us\0" +"bn.it\0" +"ny.us\0" +"ris\xc3\xb8r.no\0" +"fm\0" +"magazine.aero\0fo\0" +"jeju.kr\0kartuzy.pl\0" +"ga\0" +"fr\0" +"gd\0re.kr\0" +"ge\0american.museum\0" +"gf\0" +"gg\0" +"gh\0" +"gi\0" +"television.museum\0art.pl\0" +"gl\0tolga.no\0" +"gm\0dinosaur.museum\0" +"forum.hu\0reklam.hu\0asker.no\0from-sc.com\0" +"gp\0" +"gq\0lecco.it\0trana.no\0" +"gr\0os.hedmark.no\0" +"gs\0" +"!pref.gunma.jp\0net.sa\0" "net.sb\0" -"works.aero\0net.sc\0komvux.se\0" -"net.sd\0" -"net.ru\0" -"0.bg\0" -"forlicesena.it\0net.rw\0net.sg\0" -"klodzko.pl\0" -"detroit.museum\0wegrow.pl\0" -"net.sl\0" -"glogow.pl\0" -"store.bb\0air.museum\0" -"net.so\0" -"katowice.pl\0" -"nsk.ru\0" -"pisa.it\0eid.no\0" +"net.sc\0" +"gw\0net.sd\0" +"steam.museum\0net.ru\0" +"uri.arpa\0gy\0homelinux.com\0" +"krodsherad.no\0net.rw\0net.sg\0" +"hk\0neues.museum\0" +"sherbrooke.museum\0tr.no\0" +"engineer.aero\0hm\0aver\xc3\xb8y.no\0" +"hn\0ferrara.it\0" +"maintenance.aero\0j.bg\0oristano.it\0net.sl\0" +"hr\0net.so\0" +"ht\0id\0sciences.museum\0" +"hu\0ie\0" +"vi.us\0" "net.st\0" -"film.hu\0" -"tuva.ru\0d.se\0" +"gaivuotna.no\0" "net.th\0" "net.sy\0" -"viterbo.it\0tsaritsyn.ru\0perso.sn\0net.tj\0" -"lib.gu.us\0" -"plc.co.im\0sec.ps\0" -"r\xc3\xa1hkker\xc3\xa1vju.no\0kazimierz-dolny.pl\0net.tn\0" -"net.to\0" -"veterinaire.km\0" -"net.ua\0" -"info.ht\0net.tt\0" -"info.hu\0" -"exchange.aero\0" -"sch.sa\0net.tw\0" -"andriatranibarletta.it\0perso.tn\0" -"f.bg\0malselv.no\0" -"net.vc\0" -"trana.no\0" -"ns.ca\0" -"net.vi\0" -"lucca.it\0oristano.it\0" -"usarts.museum\0net.vn\0" -"gon.pk\0" -"pl.ua\0" -"eastcoast.museum\0" -"novara.it\0" -"k12.ks.us\0" -"dp.ua\0" -"nesseby.no\0" -"!pref.wakayama.jp\0" -"repbody.aero\0" -"jamison.museum\0lugansk.ua\0" -"ss.it\0" -"alessandria.it\0" -"hadsel.no\0net.ws\0" -"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0" -"veterinaire.fr\0leirfjord.no\0" -"massacarrara.it\0north.museum\0" -"project.museum\0" -"other.nf\0" -"k12.nh.us\0" -"mat.br\0artgallery.museum\0" -"sr.gov.pl\0" -"gamvik.no\0" -"info.ec\0lancashire.museum\0" -"fm.br\0ltd.co.im\0" -"americana.museum\0southwest.museum\0cc.ak.us\0" -"enna.it\0lunner.no\0" -"v\xc3\xa5gan.no\0" -"mari.ru\0" -"accident-investigation.aero\0" -"sor-aurdal.no\0lib.ny.us\0" -"novosibirsk.ru\0" -"bjugn.no\0" -"n\xc3\xa6r\xc3\xb8y.no\0ostrowwlkp.pl\0" -"info.bb\0foundation.museum\0" -"brand.se\0" -"info.at\0!pref.akita.jp\0l\xc3\xb8ten.no\0" -"coal.museum\0miners.museum\0" -"glass.museum\0" -"info.az\0" -"frog.museum\0szczytno.pl\0nov.ru\0" -"sunndal.no\0" -"gen.in\0" -"gx.cn\0" -"web.co\0*.mie.jp\0hobol.no\0\xe5\x8f\xb0\xe6\xb9\xbe\0" -"logistics.aero\0plo.ps\0" -"erotika.hu\0" -"torsken.no\0" -"exeter.museum\0" -"info.co\0" -"selje.no\0" -"storfjord.no\0" -"barum.no\0lind\xc3\xa5s.no\0" -"leasing.aero\0" -"championship.aero\0fst.br\0" -"lierne.no\0" -"!gobiernoelectronico.ar\0""1.bg\0" -"corporation.museum\0" -"al.it\0*.miyagi.jp\0" -"*.aomori.jp\0" -"\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" -"amursk.ru\0" -"vestvagoy.no\0" -"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0cc.fl.us\0" -"os.hordaland.no\0" -"pistoia.it\0" -"tver.ru\0e.se\0" -"res.in\0*.yamagata.jp\0syzran.ru\0" -"capebreton.museum\0sandnessj\xc3\xb8""en.no\0" -"ternopil.ua\0" +"im\0heritage.museum\0net.tj\0" +"in\0bedzin.pl\0" +"io\0" +"isernia.it\0" +"iq\0!pref.chiba.jp\0net.tn\0" +"ir\0net.to\0" +"is\0" +"it\0net.ua\0" +"og.ao\0je\0" +"net.tt\0k12.ar.us\0" +"jpn.com\0net.tw\0" +"miasta.pl\0art.sn\0" +"jo\0war.museum\0" +"jp\0" +"fie.ee\0kustanai.ru\0" +"cyber.museum\0" "shop.pl\0" -"tank.museum\0" -"m\xc3\xa5s\xc3\xb8y.no\0" -"potenza.it\0time.museum\0" -"mjondalen.no\0" -"eng.br\0nedre-eiker.no\0" -"air-surveillance.aero\0" -"nt.au\0am.br\0pn.it\0" -"oystre-slidre.no\0ug.gov.pl\0" -"g.bg\0nesodden.no\0vologda.ru\0" -"parma.it\0tula.ru\0" -"*.nara.jp\0ak.us\0" -"nt.ca\0konin.pl\0" -"kiev.ua\0" -"skierv\xc3\xa1.no\0vestre-toten.no\0" -"ri.it\0botanical.museum\0farsund.no\0veg\xc3\xa5rshei.no\0dagestan.ru\0" -"ind.br\0k-uralsk.ru\0" -"rahkkeravju.no\0cmw.ru\0" -"canada.museum\0" -"fm.it\0" -"cc.wi.us\0" -"web.id\0aver\xc3\xb8y.no\0" -"dudinka.ru\0" -"baghdad.museum\0fitjar.no\0grane.no\0" -"gs.fm.no\0" -"sumy.ua\0" -"al.no\0" -"westfalen.museum\0" -"oregon.museum\0" -"bruxelles.museum\0elk.pl\0" -"planetarium.museum\0sn\xc3\xa5""ase.no\0" -"s\xc3\xb8rreisa.no\0" -"gs.st.no\0skien.no\0" -"bible.museum\0ivanovo.ru\0" -"avellino.it\0" -"tgory.pl\0" -"family.museum\0" -"ppg.br\0k12.as.us\0" -"trader.aero\0gorlice.pl\0" -"cc.al.us\0" -"ogliastra.it\0" -"is.it\0lib.nv.us\0" -"dr.na\0" -"media.hu\0nesna.no\0fl.us\0" -"uri.arpa\0" -"bjerkreim.no\0" -"charter.aero\0" -"genova.it\0" -"it.ao\0botany.museum\0hapmir.no\0" -"educational.museum\0" -"helsinki.museum\0" -"memorial.museum\0" -"web.lk\0pharmacy.museum\0" -"aircraft.aero\0appspot.com\0" -"ferrara.it\0beskidy.pl\0" -"hi.cn\0" -"taxi.aero\0flekkefjord.no\0" -"varoy.no\0" -"ragusa.it\0ambulance.museum\0" -"can.museum\0" -"*.osaka.jp\0isleofman.museum\0fm.no\0warmia.pl\0" -"educator.aero\0asmatart.museum\0" -"mi.it\0" -"kutno.pl\0" -"skedsmokorset.no\0" -"2.bg\0" -"*.kagoshima.jp\0km.ua\0" -"!city.sendai.jp\0" -"web.nf\0st.no\0cc.ri.us\0" -"reggiocalabria.it\0" -"wi.us\0" -"ancona.it\0newjersey.museum\0nnov.ru\0" -"f.se\0" -"ind.in\0" -"info.vn\0" -"andoy.no\0" -"ch.it\0fredrikstad.no\0guovdageaidnu.no\0" -"fjaler.no\0" -"sa.com\0" -"gs.nt.no\0" -"masfjorden.no\0" -"pordenone.it\0" -"po.it\0basel.museum\0" -"chambagri.fr\0" -"h.bg\0web.pk\0" -"london.museum\0" -"sciencecenter.museum\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"unbi.ba\0augustow.pl\0" -"wolomin.pl\0" -"notaires.fr\0tcm.museum\0al.us\0" -"nu.ca\0!pref.nagano.jp\0" -"info.tn\0" -"lib.wa.us\0" -"ed.ao\0info.tt\0" -"barreau.bj\0" -"k12.wy.us\0" -"pp.az\0gop.pk\0" -"int\0" -"l\xc3\xb8renskog.no\0podhale.pl\0" -"voagat.no\0" -"telekommunikation.museum\0" -"qld.au\0" -"te.it\0freiburg.museum\0snasa.no\0" -"gjemnes.no\0" -"sejny.pl\0" -"media.pl\0" -"skjak.no\0" -"watchandclock.museum\0" -"ed.ci\0pacific.museum\0" -"theater.museum\0info.ro\0" -"uk.com\0" -"campobasso.it\0aquarium.museum\0tysv\xc3\xa6r.no\0" -"kragero.no\0" -"windmill.museum\0info.sd\0" -"sologne.museum\0sande.m\xc3\xb8re-og-romsdal.no\0" -"nt.no\0cc.mi.us\0" -"ed.cr\0" -"academy.museum\0zachpomor.pl\0" -"tananger.no\0v\xc3\xa1rgg\xc3\xa1t.no\0ri.us\0" -"federation.aero\0" -"web.tj\0" -"matta-varjjat.no\0" -"steigen.no\0" -"local\0akrehamn.no\0" -"!pref.chiba.jp\0info.pk\0" -"info.pl\0""6bone.pl\0" -"klepp.no\0kherson.ua\0" -"ketrzyn.pl\0info.pr\0" -"sweden.museum\0" -"lardal.no\0" -"!retina.ar\0gz.cn\0" -"barletta-trani-andria.it\0vikna.no\0" -"bearalv\xc3\xa1hki.no\0" -"broker.aero\0gov.nc.tr\0" -"info.na\0k12.fl.us\0" -"hembygdsforbund.museum\0" -"entertainment.aero\0jerusalem.museum\0l\xc3\xa6rdal.no\0" -"hitra.no\0sogndal.no\0" -"farmequipment.museum\0info.mv\0info.nf\0\xc3\xa5lg\xc3\xa5rd.no\0" +"net.vc\0" +"kg\0" +"agents.aero\0ki\0" +"kristiansund.no\0navuotna.no\0" +"krokstadelva.no\0rns.tn\0net.vi\0" +"km\0" +"kn\0" +"ct.it\0karikatur.museum\0de.us\0" +"pn.it\0" +"production.aero\0la\0net.vn\0" +"kr\0" +"lc\0" +"vibo-valentia.it\0" +"skien.no\0" +"ky\0li\0modalen.no\0" +"kz\0photography.museum\0\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0" +"lk\0" +"academy.museum\0oppegard.no\0limanowa.pl\0" +"salerno.it\0maritimo.museum\0" +"groundhandling.aero\0rindal.no\0" +"marburg.museum\0" +"ma\0" +"in.na\0hurum.no\0vads\xc3\xb8.no\0olkusz.pl\0" +"ls\0mc\0fhv.se\0" +"ag.it\0lt\0md\0" +"na.it\0lu\0me\0" +"lv\0net.ws\0" +"mg\0newport.museum\0" +"mh\0loppa.no\0" +"ly\0" +"vercelli.it\0communications.museum\0" +"edu\0mk\0" +"*.saitama.jp\0ml\0" +"mn\0k.se\0" +"mo\0guovdageaidnu.no\0" +"mp\0" +"mq\0na\0kv\xc3\xa6""fjord.no\0" +"mr\0eidskog.no\0ternopil.ua\0" +"ms\0nc\0" +"is-not-certified.com\0" +"mu\0ne\0" +"reggioemilia.it\0mv\0nf\0" +"mw\0" +"mx\0nordkapp.no\0" +"my\0is-a-lawyer.com\0" +"from-az.net\0" +"safety.aero\0" +"nl\0" +"no\0" +"nr\0" +"pvt.ge\0cahcesuolo.no\0nu\0po.gov.pl\0kurgan.ru\0" +"accident-prevention.aero\0" +"alabama.museum\0lavangen.no\0" +"histoire.museum\0" +"knowsitall.info\0" +"birdart.museum\0palace.museum\0" +"k12.or.us\0" +"chattanooga.museum\0rybnik.pl\0" +"opoczno.pl\0parti.se\0" +"settlers.museum\0pa\0" +"r\xc3\xb8mskog.no\0pe\0\xd1\x83\xd0\xba\xd1\x80\0" +"pf\0cc.ms.us\0cc.nc.us\0" +"bolzano.it\0" +"ph\0is-a-financialadvisor.com\0" "la-spezia.it\0" -"skanland.no\0fam.pk\0" -"skole.museum\0" -"art.museum\0" -"presidio.museum\0" -"3.bg\0public.museum\0" -"h\xc3\xb8yanger.no\0zagan.pl\0" -"an.it\0" -"philadelphia.museum\0info.nr\0" -"pesarourbino.it\0g\xc3\xa1ivuotna.no\0" -"poltava.ua\0" -"nt.ro\0" -"station.museum\0" -"mi.th\0" -"altoadige.it\0" -"nu.it\0" -"usculture.museum\0g.se\0" -"h\xc3\xa1mm\xc3\xa1rfeasta.no\0" -"daegu.kr\0info.la\0" -"dovre.no\0" -"ci.it\0horology.museum\0" -"bergbau.museum\0" -"press.museum\0" +"pk\0" +"pl\0" +"vard\xc3\xb8.no\0" +"v\xc3\xa1rgg\xc3\xa1t.no\0pn\0" +"blogdns.net\0" +"dyndns-at-home.com\0" +"campidanomedio.it\0notteroy.no\0marine.ru\0" +"greta.fr\0pr\0" +"ps\0sakhalin.ru\0" +"pt\0" +"chirurgiens-dentistes.fr\0" +"pw\0" +"hamar.no\0" +"montreal.museum\0" +"likescandy.com\0" +"*.hiroshima.jp\0" +"agrar.hu\0" +"lipetsk.ru\0" +"augustow.pl\0" +"in.rs\0" +"portlligat.museum\0re\0" +"avellino.it\0wroclaw.pl\0" +"zachpomor.pl\0" +"nsw.edu.au\0forgot.his.name\0" +"nuremberg.museum\0kommune.no\0mosreg.ru\0" +"og.it\0oh.us\0" +"agriculture.museum\0giehtavuoatna.no\0" +"time.no\0radom.pl\0" +"zj.cn\0salem.museum\0ro\0" +"cc.hi.us\0" +"sa\0" +"sb\0is-into-anime.com\0" +"rs\0sc\0" +"sd\0" +"ru\0se\0" +"oceanographique.museum\0utsira.no\0rw\0sg\0" +"sh\0" +"gv.ao\0loabat.no\0sorum.no\0si\0in.th\0" +"sk\0lib.nh.us\0" +"farsund.no\0sl\0k12.ga.us\0" +"gj\xc3\xb8vik.no\0sm\0" +"gv.at\0sn\0" +"bozen.it\0presidio.museum\0so\0" +"aviation.museum\0rzeszow.pl\0" +"leirfjord.no\0dvrdns.org\0" +"sr\0in.ua\0" +"js.cn\0s\xc3\xb8r-odal.no\0tc\0" +"st\0td\0" +"su\0" +"monticello.museum\0tf\0" +"tg\0" +"th\0ivano-frankivsk.ua\0" +"virtual.museum\0pors\xc3\xa1\xc5\x8bgu.no\0sy\0" +"sz\0tj\0" +"tk\0" +"tl\0" +"tm\0" +"i.bg\0tn\0" +"to\0" +"getmyip.com\0" +"ua\0" +"recreation.aero\0" +"im.it\0tt\0in.us\0is-a-doctor.com\0" +"altai.ru\0tv\0" +"tula.ru\0tw\0ug\0" +"firm.ht\0" +"pilot.aero\0fitjar.no\0" +"cc.ny.us\0" +"va\0" +"firm.in\0gol.no\0irkutsk.ru\0us\0vc\0" +"lib.tx.us\0" +"coastaldefence.museum\0vg\0" +"jerusalem.museum\0romsa.no\0elk.pl\0" +"przeworsk.pl\0komforb.se\0ga.us\0vi\0" +"elvendrell.museum\0uz\0" +"*.oita.jp\0" +"vn\0" +"gs.ah.no\0" +"chiropractic.museum\0nationalheritage.museum\0gs.mr.no\0" +"molde.no\0" +"yaroslavl.ru\0" +"forlicesena.it\0vu\0" +"transport.museum\0" +"fot.br\0" +"aurskog-holand.no\0" +"of.by\0cs.it\0waw.pl\0ct.us\0" +"med.br\0" +"ws\0" +"firm.co\0" +"jfk.museum\0lorenskog.no\0" +"kunstunddesign.museum\0cc.vi.us\0" +"austin.museum\0music.museum\0" +"ath.cx\0" +"nesoddtangen.no\0is-a-republican.com\0" +"astrakhan.ru\0" +"kobierzyce.pl\0" +"gran.no\0" +"tonsberg.no\0" +"championship.aero\0" +"medecin.fr\0" +"sanok.pl\0" +"\xc3\xb8rland.no\0" +"muncie.museum\0gs.tr.no\0" +"dynalias.net\0" +"b\xc3\xb8mlo.no\0" +"usculture.museum\0" +"emp.br\0med.ec\0" +"jan-mayen.no\0" +"med.ee\0" +"lib.la.us\0" +"imb.br\0" +"b\xc3\xb8.telemark.no\0" +"sykkylven.no\0" +"from-nv.com\0" +"r\xc3\xb8""d\xc3\xb8y.no\0" +"sortland.no\0" +"audnedaln.no\0cc.de.us\0" +"is-a-patsfan.org\0" +"bar.pro\0" +"aure.no\0" +"estate.museum\0hjartdal.no\0" +"egyptian.museum\0deatnu.no\0" +"francaise.museum\0" +"gen.in\0dyndns-free.com\0" +"dell-ogliastra.it\0" +"building.museum\0" +"tp.it\0from-in.com\0" +"military.museum\0" +"carrier.museum\0" +"novara.it\0roros.no\0" +"livorno.it\0barrell-of-knowledge.info\0" +"rec.br\0" +"*.ehime.jp\0" +"kirkenes.no\0donna.no\0" +"pharmacy.museum\0york.museum\0k12.md.us\0" +"rec.co\0rc.it\0" +"castle.museum\0buryatia.ru\0" +"torino.it\0cranbrook.museum\0" +"from-ok.com\0" +"intl.tn\0" +"arq.br\0" +"isleofman.museum\0localhistory.museum\0" +"r\xc3\xb8yrvik.no\0" +"surgut.ru\0" +"med.ht\0catanzaro.it\0" +"hamaroy.no\0" +"marylhurst.museum\0" +"air-surveillance.aero\0" +"pro.az\0bl.it\0" +"roma.museum\0" +"*.hyogo.jp\0" +"mo.cn\0brasil.museum\0" +"fusa.no\0leitungsen.de\0" +"pro.br\0pistoia.it\0homelinux.net\0" +"catering.aero\0jogasz.hu\0zgorzelec.pl\0" +"tromsa.no\0" +"lier.no\0" +"!city.saitama.jp\0" +"fla.no\0" +"bydgoszcz.pl\0press.se\0" +"sk\xc3\xa5nland.no\0lowicz.pl\0" +"li.it\0" +"saves-the-whales.com\0" +"state.museum\0from-nh.com\0" +"servebbs.org\0" +"boleslawiec.pl\0" +"zakopane.pl\0" +"larsson.museum\0" +"stavanger.no\0" +"amber.museum\0fauske.no\0jgora.pl\0orenburg.ru\0" +"scientist.aero\0h.bg\0coop.ht\0bern.museum\0" +"\xe7\xbb\x84\xe7\xbb\x87.hk\0sn\xc3\xa5""ase.no\0" +"pro.ec\0" +"illustration.museum\0" +"he.cn\0homeunix.com\0" "gangwon.kr\0" -"!city.kitakyushu.jp\0sor-varanger.no\0cc.hi.us\0" -"fuossko.no\0" -"zp.ua\0" -"american.museum\0" -"fl\xc3\xa5.no\0mi.us\0" -"i.bg\0" -"od.ua\0" -"encyclopedic.museum\0" -"ind.tn\0" -"midatlantic.museum\0" -"newyork.museum\0" -"castres.museum\0" -"act.edu.au\0" -"topology.museum\0" -"ed.jp\0" -"of.by\0" -"iris.arpa\0inf.br\0askim.no\0pyatigorsk.ru\0" -"nord-fron.no\0nsn.us\0" -"beardu.no\0" -"agrar.hu\0corvette.museum\0chtr.k12.ma.us\0" -"figueres.museum\0" -"!pref.gunma.jp\0medizinhistorisches.museum\0" -"tjeldsund.no\0" -"nebraska.museum\0" -"bellevue.museum\0" -"abo.pa\0k12.al.us\0" -"info.ki\0" -"inf.cu\0sv.it\0" -"jfk.museum\0" -"!city.osaka.jp\0swinoujscie.pl\0" -"bydgoszcz.pl\0" -"!city.kyoto.jp\0" -"uvic.museum\0" -"madrid.museum\0steinkjer.no\0" -"lib.ma.us\0" -"sirdal.no\0" -"n\xc3\xb8tter\xc3\xb8y.no\0" -"taranto.it\0starnberg.museum\0" -"vic.gov.au\0pvt.ge\0pors\xc3\xa1\xc5\x8bgu.no\0" -"naroy.no\0ris\xc3\xb8r.no\0" -"va.it\0salem.museum\0starachowice.pl\0" -"!nawrastelecom.om\0" -"town.museum\0te.ua\0" -"se.net\0" -"kemerovo.ru\0" -"lerdal.no\0" -"gs.va.no\0" -"kms.ru\0" -"consulado.st\0" -"haram.no\0" -"tysnes.no\0" -"!pref.ibaraki.jp\0hamburg.museum\0" -"\xc3\xa5rdal.no\0" -"airline.aero\0" -"crew.aero\0newhampshire.museum\0" -"muenster.museum\0" -"aerodrome.aero\0" -"heroy.nordland.no\0belau.pw\0" -"kamchatka.ru\0" -"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0lillehammer.no\0hi.us\0" -"hk.cn\0" -"!city.kobe.jp\0berlevag.no\0" -"ardal.no\0" -"askoy.no\0" -"vardo.no\0" -"fyresdal.no\0" -"sassari.it\0" -"video.hu\0drammen.no\0" -"lyngen.no\0nakhodka.ru\0" -"ip6.arpa\0games.hu\0" -"online.museum\0" -"k12.sd.us\0" -"4.bg\0sebastopol.ua\0" -"ao.it\0atlanta.museum\0" -"lebork.pl\0" -"ravenna.it\0" -"railway.museum\0songdalen.no\0" -"!pref.shimane.jp\0delaware.museum\0ed.pw\0" -"f\xc3\xb8rde.no\0" -"living.museum\0" -"juif.museum\0" -"lomza.pl\0" +"web.co\0sa.com\0assisi.museum\0epilepsy.museum\0s\xc3\xb8gne.no\0cc.oh.us\0" +"b\xc3\xa5tsfjord.no\0" +"v\xc3\xa5g\xc3\xa5.no\0" +"rauma.no\0lib.gu.us\0" +"from-wv.com\0" +"\xe7\xae\x87\xe4\xba\xba.hk\0" +"med.ly\0" +"si.it\0" +"web.do\0" +"coop.br\0" +"swinoujscie.pl\0from-nm.com\0" +"gausdal.no\0i.ph\0" +"lomza.pl\0is-saved.org\0" +"qsl.br\0" +"of.no\0" +"nu.ca\0suli.hu\0" +"!pref.mie.jp\0" +"travel.pl\0" +"dnsalias.com\0" +"stpetersburg.museum\0" +"cr.it\0dc.us\0" +"gok.pk\0" +"nord-odal.no\0" +"vevelstad.no\0" +"society.museum\0egersund.no\0" +"cc.in.us\0writesthisblog.com\0" +"koenig.ru\0" +"arendal.no\0" +"unbi.ba\0museum.tt\0dyndns.org\0" +"bir.ru\0" +"maryland.museum\0" +"med.pa\0" +"pro.ht\0" +"mo.it\0press.ma\0" +"lel.br\0!pref.yamaguchi.jp\0dnepropetrovsk.ua\0homedns.org\0" +"*.aomori.jp\0" +"can.museum\0" +"aero.tt\0cc.ga.us\0" +"med.pl\0" +"i.se\0" +"hammarfeasta.no\0" +"architecture.museum\0" +"!pref.hokkaido.jp\0vf.no\0" +"!pref.kagawa.jp\0" +"hob\xc3\xb8l.no\0" +"nyny.museum\0khabarovsk.ru\0" +"sondrio.it\0" +"*.tochigi.jp\0odda.no\0" +"snaase.no\0starachowice.pl\0" +"aero.mv\0" +"tsaritsyn.ru\0" +"*.shizuoka.jp\0" +"cc.ct.us\0" +"web.id\0doomdns.com\0" +"bjugn.no\0" +"gmina.pl\0" +"firm.ro\0" +"nom.ad\0" +"rec.nf\0" +"nom.ag\0samnanger.no\0" +"to.it\0" +"travel.tt\0" +"med.sa\0" +"depot.museum\0" +"sh.cn\0" +"tra.kp\0bahccavuotna.no\0med.sd\0" +"idrett.no\0" +"agrinet.tn\0" +"t\xc3\xb8nsberg.no\0" +"tyumen.ru\0" +"yorkshire.museum\0" +"!city.osaka.jp\0" +"vadso.no\0" +"k12.mi.us\0" +"torino.museum\0vinnica.ua\0" +"textile.museum\0" +"union.aero\0algard.no\0" +"*.miyagi.jp\0halloffame.museum\0" +"cq.cn\0" +"nom.br\0air.museum\0" +"ragusa.it\0br\xc3\xb8nn\xc3\xb8y.no\0" +"afjord.no\0oyer.no\0" +"!city.niigata.jp\0pro.na\0" +"!city.chiba.jp\0florida.museum\0" +"far.br\0ruovat.no\0aid.pl\0" +"nom.co\0humanities.museum\0pro.mv\0" +"tydal.no\0k12.in.us\0" +"web.lk\0kazan.ru\0" +"nu.it\0os\xc3\xb8yro.no\0nv.us\0" +"certification.aero\0" +"cargo.aero\0firm.nf\0" +"!pref.nagano.jp\0" +"oryol.ru\0" +"name.hr\0" +"lesja.no\0isteingeek.de\0" +"dallas.museum\0uw.gov.pl\0" +"trapani.it\0" +"lib.nj.us\0" +"is-an-accountant.com\0" +"southcarolina.museum\0" +"ky.us\0" +"karlsoy.no\0" +"cosenza.it\0gjemnes.no\0" +"web.nf\0" +"oppdal.no\0" +"is-a-nurse.com\0" +"rec.ro\0" +"geometre-expert.fr\0donostia.museum\0" +"solund.no\0" +"nom.es\0" +"fhs.no\0vardo.no\0" +"g.bg\0" +"vega.no\0" +"moss.no\0" +"pro.pr\0" +"pesaro-urbino.it\0silk.museum\0il.us\0" +"ve.it\0" +"historisch.museum\0history.museum\0alesund.no\0" +"airport.aero\0" +"nom.fr\0" +"museum.mv\0selfip.net\0" +"museum.mw\0" +"k12.mo.us\0" +"cinema.museum\0mallorca.museum\0museum.no\0web.pk\0bieszczady.pl\0" +"dni.us\0" +"nt.au\0" +"no.com\0" +"botany.museum\0pl.ua\0" +"parachuting.aero\0gjesdal.no\0" +"gyeonggi.kr\0" +"ham-radio-op.net\0" +"bellevue.museum\0" +"nt.ca\0" +"vic.gov.au\0" +"name.eg\0" +"preservation.museum\0lib.ri.us\0" +"randaberg.no\0" +"public.museum\0" +"bruxelles.museum\0" +"nyc.museum\0" +"bj.cn\0eisenbahn.museum\0" +"bialystok.pl\0" +"trainer.aero\0atlanta.museum\0" +"name.az\0" +"mn.it\0wloclawek.pl\0pro.tt\0mo.us\0" +"sciencesnaturelles.museum\0" +"s\xc3\xb8r-fron.no\0scrapping.cc\0" +"federation.aero\0" "h.se\0" -"!bl.uk\0" -"portland.museum\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" -"stj\xc3\xb8rdal.no\0" -"lecce.it\0" -"bz.it\0" -"farmstead.museum\0va.no\0" -"express.aero\0!nacion.ar\0" -"presse.km\0gs.of.no\0" -"\xe5\x8f\xb0\xe7\x81\xa3\0" -"og.ao\0gyeongbuk.kr\0vestv\xc3\xa5g\xc3\xb8y.no\0" -"prd.fr\0" -"pp.ru\0pp.se\0" -"forum.hu\0!pref.saga.jp\0" -"kvalsund.no\0" -"!city.kawasaki.jp\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0" -"j.bg\0" -"vlaanderen.museum\0" -"cc.va.us\0" -"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0alabama.museum\0" -"school.museum\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0" -"\xc3\xa5seral.no\0" +"uk.com\0" +"qld.gov.au\0ad.jp\0" +"glass.museum\0" +"gallery.museum\0" +"nom.km\0stalowa-wola.pl\0" +"bashkiria.ru\0lib.ks.us\0" +"comunica\xc3\xa7\xc3\xb5""es.museum\0" +"modena.it\0web.tj\0!jet.uk\0" +"dr\xc3\xb8""bak.no\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" +"kaluga.ru\0" +"fyresdal.no\0scrapper-site.net\0" +"jorpeland.no\0polkowice.pl\0is-very-nice.org\0" +"handson.museum\0pro.vn\0" +"cc.dc.us\0" +"barletta-trani-andria.it\0" +"lubin.pl\0" +"troms\xc3\xb8.no\0" +"fjell.no\0" +"fm.br\0" +"potenza.it\0" +"lib.ut.us\0" +"versailles.museum\0" +"nom.mg\0whaling.museum\0gu.us\0" +"tn.it\0" +"gsm.pl\0" +"monza-brianza.it\0" +"ac.ae\0is-leet.com\0" +"gs.of.no\0" +"furniture.museum\0isa-geek.org\0" +"losangeles.museum\0" +"lea\xc5\x8bgaviika.no\0" +"coop.tt\0" +"fuossko.no\0lib.sc.us\0" +"ac.at\0" +"ac.be\0eng.pro\0" +"arts.co\0ra.it\0" +"niepce.museum\0" +"chesapeakebay.museum\0" +"ski.no\0lapy.pl\0" +"vic.edu.au\0v\xc3\xa5ler.hedmark.no\0" +"tarnobrzeg.pl\0" +"jeonnam.kr\0" +"coop.mv\0buyshouses.net\0" +"coop.mw\0" +"tingvoll.no\0" +"veterinaire.km\0" +"ac.ci\0narvik.no\0" +"nom.pa\0" +"ac.cn\0nom.pe\0" +"padova.it\0" +"ac.cr\0k12.ec\0starnberg.museum\0" +"gs.vf.no\0" +"nom.pl\0" +"uy.com\0" "traniandriabarletta.it\0" -"flog.br\0" -"presse.ml\0" -"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" -"historisch.museum\0" -"farm.museum\0palmsprings.museum\0oslo.no\0dyroy.no\0stranda.no\0" -"gs.rl.no\0r\xc3\xa5""de.no\0" -"bomlo.no\0s\xc3\xb8rum.no\0" -"jan-mayen.no\0ivgu.no\0" -"coop\0" -"agr.br\0k12.ak.us\0" -"!nic.ar\0catanzaro.it\0fusa.no\0" -"hu.com\0" -"inf.mk\0" -"vet.br\0" -"k12.mt.us\0k12.nd.us\0" -"vlog.br\0\xe5\x85\xac\xe5\x8f\xb8.cn\0sandnessjoen.no\0" -"lib.az.us\0" -"nsw.edu.au\0of.no\0\xc3\xb8stre-toten.no\0" -"*.okinawa.jp\0" -"vb.it\0" -"asso.fr\0firenze.it\0" -"trieste.it\0" -"\xe5\x85\xac\xe5\x8f\xb8.hk\0" -"museet.museum\0" -"prd.km\0" -"navuotna.no\0lib.ca.us\0" +"hurdal.no\0" +"perugia.it\0lib.nm.us\0" +"est-mon-blogueur.com\0" +"inf.br\0" +"caserta.it\0from-tn.com\0" +"botanicgarden.museum\0" +"tree.museum\0grajewo.pl\0" +"automotive.museum\0" +"wielun.pl\0" +"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0naustdal.no\0" +"bio.br\0" +"landes.museum\0" +"lg.jp\0" +"association.aero\0" +"nordre-land.no\0ing.pa\0nom.re\0" +"f.bg\0santabarbara.museum\0cbg.ru\0" +"gov\0" +"inf.cu\0andriatranibarletta.it\0maritime.museum\0" +"volda.no\0" +"is-by.us\0" +"communication.museum\0" +"ivanovo.ru\0" +"lodingen.no\0" +"honefoss.no\0swidnica.pl\0nom.ro\0" +"gs.cn\0" "cc.nv.us\0" -"asso.gp\0" -"meraker.no\0" -"h\xc3\xa1pmir.no\0" -"i.ph\0" -"sx.cn\0jeonnam.kr\0" -"halden.no\0" -"fed.us\0" -"medio-campidano.it\0tsk.ru\0" -"barcelona.museum\0" -"giessen.museum\0roma.museum\0" -"hl.cn\0" -"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0" -"biz.bb\0benevento.it\0rl.no\0bygland.no\0" -"port.fr\0asso.ht\0prd.mg\0" -"biz.at\0" -"tra.kp\0" -"*.aichi.jp\0khabarovsk.ru\0" -"campidano-medio.it\0" -"biz.az\0" -"newmexico.museum\0va.us\0" -"finearts.museum\0" -"murmansk.ru\0" -"\xc3\xb8rsta.no\0radom.pl\0k12.sc.us\0" -"5.bg\0kvinesdal.no\0" -"ap.it\0" -"*.fukushima.jp\0" -"asso.bj\0" -"mad.museum\0" -"lebesby.no\0" -"og.it\0glas.museum\0sauda.no\0" -"i.se\0" -"k12.tx.us\0" -"asso.ci\0mk.ua\0" -"cesena-forli.it\0" -"lowicz.pl\0" -"k12.id.us\0" -"tas.gov.au\0" -"lukow.pl\0" -"utazas.hu\0" -"maritimo.museum\0bjark\xc3\xb8y.no\0" -"adm.br\0" -"pr.it\0lib.vi.us\0" -"bergamo.it\0k12.va.us\0" -"k.bg\0" -"railroad.museum\0" -"!british-library.uk\0" -"cincinnati.museum\0" -"sorreisa.no\0" -"asso.dz\0!nel.uk\0" -"rm.it\0" -"nv.us\0" -"nx.cn\0gos.pk\0" -"vic.edu.au\0" -"biella.it\0tjome.no\0" -"r\xc3\xb8yken.no\0" -"beiarn.no\0" -"qc.ca\0" -"georgia.museum\0square.museum\0" -"labor.museum\0omasvuotna.no\0cc.la.us\0" -"br.com\0reggioemilia.it\0" -"kristiansund.no\0" -"sorum.no\0" -"orsta.no\0" -"furniture.museum\0surrey.museum\0eng.pro\0" -"asn.lv\0balat.no\0" -"lavangen.no\0sld.pa\0" -"fla.no\0k12.ms.us\0k12.nc.us\0" -"bardu.no\0" -"donostia.museum\0" -"club.tw\0" -"elburg.museum\0" -"gs.hl.no\0lodingen.no\0" -"samara.ru\0" -"vc.it\0*.nagasaki.jp\0" -"fosnes.no\0" -"fuel.aero\0" -"qc.com\0" -"skjervoy.no\0" -"bill.museum\0kv\xc3\xa6""fjord.no\0" -"skydiving.aero\0*.tokushima.jp\0" -"!congresodelalengua3.ar\0laquila.it\0k12.ct.us\0" -"gorge.museum\0linz.museum\0sherbrooke.museum\0" -"tranoy.no\0ing.pa\0" -"ptz.ru\0" -"kr.it\0prato.it\0stat.no\0" -"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" -"cosenza.it\0" -"stj\xc3\xb8rdalshalsen.no\0" -"finland.museum\0leka.no\0cc.pr.us\0" -"historichouses.museum\0s\xc3\xa1l\xc3\xa1t.no\0" -"venice.it\0" -"biz.ki\0" -"g\xc3\xa1ls\xc3\xa1.no\0" -"\xe7\xbb\x84\xe7\xbb\x87.hk\0" -"*.yamanashi.jp\0" -"rad\xc3\xb8y.no\0" -"6.bg\0" -"fareast.ru\0" -"paragliding.aero\0ba.it\0aq.it\0" -"sk\xc3\xa5nland.no\0" -"its.me\0" -"us.na\0" -"hl.no\0cc.ga.us\0" -"ac\0granvin.no\0" -"ad\0qld.edu.au\0!city.sapporo.jp\0" -"ae\0" -"af\0" -"ag\0crotone.it\0" -"dallas.museum\0" -"ai\0brussels.museum\0" -"dali.museum\0" -"la.us\0" -"al\0salzburg.museum\0" -"am\0" -"an\0cl.it\0" -"ao\0" -"aq\0ba\0" -"bb\0" -"as\0lajolla.museum\0" -"at\0" -"be\0" -"bf\0inderoy.no\0snz.ru\0" -"aw\0bg\0" -"ax\0bh\0cim.br\0ltd.gi\0biz.mv\0" -"bi\0xz.cn\0\xe7\xb5\x84\xe7\xb9\x94.hk\0biz.mw\0" -"az\0bj\0" -"bm\0tranibarlettaandria.it\0naamesjevuemie.no\0" -"chattanooga.museum\0" -"bo\0" -"l.bg\0" -"ca\0" -"br\0stateofdelaware.museum\0" -"bs\0cc\0" -"cd\0biz.nr\0" -"cf\0berlev\xc3\xa5g.no\0" -"bw\0cg\0snaase.no\0" -"ch\0harvestcelebration.museum\0ck.ua\0" -"by\0ci\0" -"bz\0bahccavuotna.no\0" -"cl\0yuzhno-sakhalinsk.ru\0" -"cm\0halsa.no\0lyngdal.no\0" -"cn\0" -"co\0rn.it\0childrens.museum\0frankfurt.museum\0" -"cr\0" -"pskov.ru\0" -"cu\0de\0" -"cv\0fr.it\0lib.ky.us\0" -"aseral.no\0kvam.no\0" -"cx\0hellas.museum\0" -"hof.no\0" -"cz\0dj\0k12.la.us\0" -"dk\0moscow.museum\0" -"sosnowiec.pl\0" -"dm\0biz.pk\0" -"schokoladen.museum\0biz.pl\0" -"far.br\0arna.no\0tynset.no\0" -"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0" -"ec\0" -"biz.pr\0" -"ee\0celtic.museum\0" -"scientist.aero\0modern.museum\0" -"pr.us\0" -"dz\0" -"mj\xc3\xb8ndalen.no\0s\xc3\xb8r-odal.no\0" -"!nic.tr\0" -"conference.aero\0vestnes.no\0k12.mn.us\0" -"!pref.hiroshima.jp\0" -"es\0trapani.it\0" -"fermo.it\0vard\xc3\xb8.no\0" -"eu\0gs.hm.no\0r\xc3\xb8""d\xc3\xb8y.no\0stordal.no\0" -"gc.ca\0!nhs.uk\0" -"jgora.pl\0" -"fi\0stjordal.no\0" -"fm\0!mediaphone.om\0" -"kirov.ru\0pvt.k12.ma.us\0" -"fo\0" -"ga\0hyllestad.no\0" -"gov.ac\0fr\0andriabarlettatrani.it\0ga.us\0" -"gov.ae\0gd\0estate.museum\0" -"gov.af\0ge\0tolga.no\0" -"gf\0asso.re\0cc.oh.us\0" -"gg\0florida.museum\0" -"presse.ci\0gh\0" -"gi\0k12.dc.us\0" -"ltd.lk\0orland.no\0" -"gov.al\0" -"gl\0tokke.no\0" -"hanggliding.aero\0gm\0" -"hareid.no\0" -"gov.ba\0tj.cn\0gp\0" -"gov.bb\0gq\0" -"gov.as\0gr\0agrigento.it\0lc.it\0" -"gs\0kalmykia.ru\0aero.tt\0" -"gov.bf\0" -"county.museum\0" -"gov.bh\0hn.cn\0gw\0" -"gov.az\0gy\0assn.lk\0guernsey.museum\0" -"hk\0" -"gov.bm\0h\xc3\xa6gebostad.no\0biz.tj\0" -"hm\0computer.museum\0" -"gov.bo\0hn\0kl\xc3\xa6""bu.no\0" -"pulawy.pl\0" -"gov.br\0" -"trd.br\0gov.bs\0hr\0reggio-calabria.it\0historyofscience.museum\0lipetsk.ru\0" -"gov.cd\0*.nagoya.jp\0" -"ht\0id\0spjelkavik.no\0" -"hu\0ie\0aero.mv\0" -"marketplace.aero\0mn.it\0biz.tt\0" -"gov.by\0saintlouis.museum\0mer\xc3\xa5ker.no\0" -"gov.bz\0" -"7.bg\0gov.cl\0virtual.museum\0" -"gov.cm\0vennesla.no\0kr.ua\0" -"gov.cn\0im\0ar.it\0galsa.no\0rovno.ua\0" -"gov.co\0in\0" -"io\0limanowa.pl\0" -"iq\0k12.ga.us\0" -"ir\0" -"riik.ee\0is\0\xc3\xa1laheadju.no\0" -"gov.cu\0it\0hawaii.museum\0seaport.museum\0" -"je\0pubol.museum\0hm.no\0" -"gov.cx\0" -"*.chiba.jp\0" -"*.kawasaki.jp\0" -"k.se\0" -"gov.dm\0" -"aland.fi\0vik.no\0" -"yk.ca\0jo\0kobierzyce.pl\0" -"jp\0biz.vn\0" -"presse.fr\0lib.il.us\0\xe9\xa6\x99\xe6\xb8\xaf\0" -"gov.ec\0" -"transport.museum\0bronnoy.no\0" -"slg.br\0gov.ee\0asso.nc\0bievat.no\0" -"nyny.museum\0" -"kg\0" -"mo-i-rana.no\0" -"gov.dz\0ki\0" -"monmouth.museum\0" -"suldal.no\0" -"bc.ca\0km\0zt.ua\0" -"pt.it\0kn\0" -"fineart.museum\0" -"la\0" -"kr\0gulen.no\0" -"m.bg\0mo.cn\0lc\0alaheadju.no\0g\xc3\xa1\xc5\x8bgaviika.no\0" -"nowaruda.pl\0cc.ut.us\0" -"br\xc3\xb8nn\xc3\xb8y.no\0" -"ky\0li\0overhalla.no\0" -"kz\0khv.ru\0" -"lk\0" -"artdeco.museum\0" -"ma\0fortworth.museum\0kostroma.ru\0" -"ro.it\0kirkenes.no\0vestby.no\0" -"urbino-pesaro.it\0ls\0mc\0alstahaug.no\0" -"blog.br\0gov.ge\0lt\0md\0" -"lu\0me\0botanicgarden.museum\0" -"gov.gg\0lv\0oh.us\0" -"gov.gh\0mg\0valley.museum\0" -"gov.gi\0mh\0" -"ly\0sandiego.museum\0" -"mk\0" -"ml\0" -"gov.gn\0rollag.no\0naklo.pl\0" -"mn\0" -"mo\0" -"mp\0leirvik.no\0" -"gov.gr\0mq\0na\0cc.ks.us\0" -"mr\0" -"ms\0nc\0" -"valer.hedmark.no\0" -"mu\0ne\0" -"mv\0nf\0" -"mw\0" -"mx\0nord-odal.no\0jur.pro\0" -"my\0" -"gov.hk\0name.hr\0" -"nl\0" -"astronomy.museum\0lib.nm.us\0" -"catania.it\0" -"no\0" -"skjerv\xc3\xb8y.no\0" -"k12.ne.us\0" -"monza-e-della-brianza.it\0!pref.fukushima.jp\0nr\0" -"gov.ie\0" -"stuttgart.museum\0nu\0cc.mn.us\0" -"karasjohka.no\0" -"engine.aero\0bearalvahki.no\0" -"oyer.no\0" -"ve.it\0" -"gov.im\0froland.no\0cc.ar.us\0" -"gov.in\0magadan.ru\0" -"pescara.it\0" -"gov.iq\0usdecorativearts.museum\0" -"gov.ir\0pa\0" -"gov.is\0" -"gov.it\0lavagis.no\0" -"gov.je\0" -"naustdal.no\0pe\0k12.or.us\0" -"gd.cn\0carraramassa.it\0pf\0" -"ph\0" -"cc.ny.us\0" -"rissa.no\0" -"info\0pk\0pomorze.pl\0" -"pl\0" -"gov.jo\0asso.km\0pn\0" -"*.okayama.jp\0cieszyn.pl\0" -"freight.aero\0" -"pr\0" -"narvik.no\0ps\0" -"!pref.aichi.jp\0elverum.no\0pt\0" -"edunet.tn\0" -"gov.kg\0" -"flatanger.no\0marker.no\0pw\0" -"gov.ki\0nuremberg.museum\0" -"aip.ee\0" -"gov.km\0" -"gov.kn\0" -"gov.kp\0" -"rieti.it\0gov.la\0bajddar.no\0" -"gov.lb\0aviation.museum\0" -"gov.lc\0" -"asso.mc\0" -"re\0" -"ut.us\0" -"sa.gov.au\0gov.ky\0" -"mo.it\0gov.kz\0" -"gov.lk\0" -"iraq.museum\0" -"badajoz.museum\0" -"8.bg\0inder\xc3\xb8y.no\0" -"monticello.museum\0ro\0ks.ua\0" -"gov.ma\0svizzera.museum\0" -"gov.lr\0sa\0" -"matera.it\0sb\0" -"gov.lt\0rs\0sc\0" -"gov.me\0sd\0" -"gov.lv\0ru\0se\0" -"gov.mg\0" -"rw\0sg\0" -"gov.ly\0assisi.museum\0kids.museum\0sh\0" -"si\0" -"gov.mk\0" -"gov.ml\0sk\0" -"sl\0" -"gov.mn\0airguard.museum\0sm\0" -"gov.mo\0l.se\0sn\0" -"so\0" -"gov.mr\0ks.us\0" -"name.az\0sr\0" -"naturhistorisches.museum\0tc\0" -"trainer.aero\0cn.it\0urbinopesaro.it\0gov.mu\0nativeamerican.museum\0st\0td\0" -"gov.mv\0su\0" -"trentino.it\0gov.mw\0gov.ng\0tf\0" -"tg\0" -"co.ae\0venezia.it\0gov.my\0th\0" -"!pref.ehime.jp\0sy\0" -"co.ag\0lewismiller.museum\0ostrowiec.pl\0sz\0tj\0" -"tk\0" -"motorcycle.museum\0tl\0" -"birdart.museum\0trogstad.no\0tm\0" -"tn\0" -"humanities.museum\0to\0" -"pu.it\0gov.nr\0ua\0lib.ut.us\0" -"co.ao\0" -"co.ba\0trondheim.no\0tt\0" -"in-addr.arpa\0tempioolbia.it\0!city.yokohama.jp\0mn.us\0" -"n.bg\0schoenbrunn.museum\0tv\0" -"co.at\0aremark.no\0tw\0ug\0" +"veterinaire.fr\0" +"nes.buskerud.no\0" +"games.hu\0" +"9.bg\0from-vt.com\0" +"tank.museum\0" +"udm.ru\0" +"l\xc3\xb8ten.no\0tranoy.no\0" +"fm.it\0" +"media.aero\0iraq.museum\0\xc3\xa1k\xc5\x8boluokta.no\0" +"ac.gn\0" +"leka.no\0" +"and\xc3\xb8y.no\0cc.ky.us\0" +"!pref.tokushima.jp\0" +"*.akita.jp\0coldwar.museum\0nt.no\0" +"tur.br\0ns.ca\0smola.no\0homelinux.org\0" +"square.museum\0" +"coop.km\0stv.ru\0" +"taxi.br\0" +"konyvelo.hu\0stuttgart.museum\0hadsel.no\0lugansk.ua\0" +"children.museum\0nuernberg.museum\0" +"eastafrica.museum\0" +"sa.edu.au\0ac.id\0jaworzno.pl\0" +"mbone.pl\0cc.il.us\0" +"kolobrzeg.pl\0malbork.pl\0" +"iki.fi\0" +"medizinhistorisches.museum\0" +"levanger.no\0" +"ac.im\0\xc3\xa5lg\xc3\xa5rd.no\0" +"tm.fr\0ac.in\0" +"ac.ir\0name.vn\0" +"mn.us\0" +"mat.br\0" +"trento.it\0" +"dnsdojo.com\0" +"phoenix.museum\0" +"g.se\0" +"ac.jp\0" +"graz.museum\0" +"drangedal.no\0" +"prato.it\0county.museum\0" +"is-very-bad.org\0" +"dynalias.org\0" +"repbody.aero\0land-4-sale.us\0" "jus.br\0" -"co.bi\0bialowieza.pl\0ar.us\0" -"audnedaln.no\0kustanai.ru\0" -"va\0" -"us\0vc\0" -"newport.museum\0" -"kopervik.no\0gov.ph\0vg\0" -"ny.us\0vi\0" -"co.bw\0finn\xc3\xb8y.no\0gov.pk\0uz\0" -"honefoss.no\0gov.pl\0lanbib.se\0" -"co.ci\0" -"gov.pn\0intl.tn\0" -"act.gov.au\0vn\0" -"television.museum\0gov.pr\0" -"sykkylven.no\0v\xc3\xa5ler.hedmark.no\0gov.ps\0" -"gov.pt\0" -"co.cr\0vu\0" -"legnica.pl\0" -"sa.au\0" -"bjarkoy.no\0" -"openair.museum\0birkenes.no\0lib.nj.us\0" -"fylkesbibl.no\0holt\xc3\xa5len.no\0" -"iz.hr\0" -"ws\0" -"oceanographique.museum\0" -"b\xc3\xa1id\xc3\xa1r.no\0cc.mo.us\0" -"\xc3\xb8ygarden.no\0" -"contemporary.museum\0" -"gb.com\0cc.as.us\0" -"belluno.it\0gov.sa\0" -"gov.sb\0" -"gov.rs\0gov.sc\0" -"gov.sd\0" -"!pref.nagasaki.jp\0gov.ru\0" -"asia\0" -"sa.cr\0gov.rw\0gov.sg\0" -"kuzbass.ru\0" -"gs.vf.no\0" -"gov.sl\0" -"norfolk.museum\0" -"k12.de.us\0" -"mil\0" -"rendalen.no\0" -"gov.st\0" -"agro.pl\0" -"orkdal.no\0" -"le.it\0gov.sy\0" -"gov.tj\0" -"co.gg\0nore-og-uvdal.no\0v\xc3\xa5ler.\xc3\xb8stfold.no\0" -"gov.tl\0" -"gov.tn\0" -"gov.to\0" -"kids.us\0" -"equipment.aero\0gov.ua\0" -"!city.niigata.jp\0gov.tt\0" -"sel.no\0" -"l\xc3\xa4ns.museum\0" -"gov.tw\0" -"rennebu.no\0" -"egersund.no\0" -"medecin.km\0" -"co.gy\0" -"!mecon.ar\0" -"berlin.museum\0" -"carrara-massa.it\0" -"9.bg\0" -"pri.ee\0gov.vc\0" -"at.it\0" -"muosat.no\0" +"name.tj\0" +"co.ae\0" +"bajddar.no\0" +"co.ag\0tm.hu\0" +"ac.kr\0" +"tj\xc3\xb8me.no\0" +"baltimore.museum\0fm.no\0" +"nt.ro\0" +"kraanghke.no\0" +"fl\xc3\xa5.no\0um.gov.pl\0name.tt\0" +"co.ao\0" +"fst.br\0" +"co.ba\0birkenes.no\0lib.ia.us\0" +"auto.pl\0" +"co.at\0" +"blog.br\0garden.museum\0" +"tn.us\0" +"ac.ma\0grue.no\0" +"co.bi\0!songfest.om\0" +"bialowieza.pl\0" +"ac.me\0" +"cc.mo.us\0" +"s\xc3\xa1lat.no\0vestre-toten.no\0" +"engine.aero\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0" +"pyatigorsk.ru\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0" +"co.bw\0" +"co.ci\0dagestan.ru\0kids.us\0" +"ac.mu\0" +"ac.mw\0ac.ng\0" +"od.ua\0" +"belluno.it\0tm.km\0misconfused.org\0" +"co.cr\0" +"is-a-conservative.com\0isa-geek.com\0" +"ab.ca\0*.ishikawa.jp\0" +"*.nara.jp\0nedre-eiker.no\0" +"dyndns-server.com\0" +"\xe7\xbb\x84\xe7\xb9\x94.hk\0stranda.no\0lib.pa.us\0" +"inf.mk\0f\xc3\xb8rde.no\0" +"bi.it\0az.us\0" +"ontario.museum\0saotome.st\0" +"*.fukuoka.jp\0" +"lg.ua\0" +"video.hu\0tm.mc\0" +"!omantel.om\0cc.gu.us\0" +"skedsmokorset.no\0ac.pa\0" +"nt.gov.au\0" +"tm.mg\0" +"taxi.aero\0dep.no\0prochowice.pl\0" +"from-ma.com\0" +"name.pr\0" +"ingatlan.hu\0nesseby.no\0" +"dali.museum\0dyndns-work.com\0" +"kr.com\0" +"dyndns-mail.com\0" +"from-ar.com\0" +"windmill.museum\0ac.pr\0from-co.net\0" +"assassination.museum\0" +"name.na\0" +"arts.ro\0" +"strand.no\0" +"dyndns-office.com\0" +"entertainment.aero\0name.mv\0kvalsund.no\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" +"!city.sapporo.jp\0tm.no\0is-very-good.org\0" +"dyndns.info\0" +"name.my\0" +"e.bg\0pomorskie.pl\0" +"folkebibl.no\0" +"co.gg\0usa.museum\0lib.wa.us\0homeftp.org\0" +"targi.pl\0" +"vc.it\0ut.us\0" +"livinghistory.museum\0" +"hb.cn\0" +"bronnoy.no\0" +"haram.no\0" +"museumcenter.museum\0" +"ptz.ru\0" +"fet.no\0" +"8.bg\0co.gy\0ac.rs\0xxx\0" +"ac.ru\0ac.se\0" +"ac.rw\0k12.ne.us\0" +"tm.pl\0gniezno.pl\0" +"mo\xc3\xa5reke.no\0" "co.id\0" "co.hu\0" -"etne.no\0" -"\xc3\xa1lt\xc3\xa1.no\0" -"gov.vn\0" -"modelling.aero\0" +"christiansburg.museum\0" +"wegrow.pl\0lanbib.se\0" +"ryazan.ru\0" "co.im\0" -"co.in\0\xc3\xa5krehamn.no\0m.se\0" -"gouv.fr\0*.kitakyushu.jp\0" -"narviika.no\0" -"rennes\xc3\xb8y.no\0" -"co.ir\0afjord.no\0" -"lea\xc5\x8bgaviika.no\0buryatia.ru\0" -"co.it\0coastaldefence.museum\0" -"co.je\0vf.no\0" -"osteroy.no\0" -"uslivinghistory.museum\0" -"aerobatic.aero\0" -"mesaverde.museum\0mining.museum\0" -"a\xc3\xa9roport.ci\0gov.ws\0" -"co.jp\0copenhagen.museum\0" -"pv.it\0" -"r\xc3\xb8mskog.no\0" -"vossevangen.no\0porsanger.no\0" -"salat.no\0mo.us\0" -"o.bg\0imperia.it\0carrier.museum\0" -"carbonia-iglesias.it\0" -"as.us\0" -"alvdal.no\0" -"state.museum\0mandal.no\0cn.ua\0" -"cuneo.it\0" -"gouv.ht\0" -"!city.okayama.jp\0co.kr\0" -"co.lc\0" -"sa.it\0" -"donna.no\0" -"sortland.no\0" -"tomsk.ru\0" -"birthplace.museum\0l\xc3\xb8""dingen.no\0" -"ge.it\0orenburg.ru\0" -"cn.com\0" -"co.ma\0" -"co.ls\0skaun.no\0name.vn\0" -"navigation.aero\0" -"cagliari.it\0co.me\0portal.museum\0" -"gouv.bj\0" -"udine.it\0" -"engineer.aero\0" -"szczecin.pl\0" -"wales.museum\0" -"co.na\0bo.telemark.no\0" -"austin.museum\0" -"k12.mo.us\0" -"co.mu\0" -"gouv.ci\0" -"co.mw\0" -"esp.br\0" -"naturalhistorymuseum.museum\0" -"mosjoen.no\0" -"solund.no\0" -"name.tj\0" -"sand\xc3\xb8y.no\0" -"kunstunddesign.museum\0" -"cartoonart.museum\0collection.museum\0gsm.pl\0" -"aure.no\0" -"!pref.yamaguchi.jp\0historical.museum\0" -"name.tt\0" -"england.museum\0valle.no\0" -"cc.ok.us\0" -"salangen.no\0" -"gloppen.no\0" -"cc.co.us\0" -"contemporaryart.museum\0" -"tas.edu.au\0" -"trading.aero\0" -"mazury.pl\0" -"!pref.aomori.jp\0co.pl\0" -"opoczno.pl\0" -"*.kobe.jp\0co.pn\0" -"oppegard.no\0" -"co.pw\0" -"saltdal.no\0smolensk.ru\0" -"na.it\0\xc4\x8d\xc3\xa1hcesuolo.no\0" -"vgs.no\0evenassi.no\0" -"parachuting.aero\0jl.cn\0maritime.museum\0bd.se\0" -"badaddja.no\0" -"bergen.no\0" -"brussel.museum\0" -"avoues.fr\0" -"cesenaforli.it\0" -"oregontrail.museum\0" -"ullensaker.no\0" -"jobs\0" -"accident-prevention.aero\0" -"n.se\0" -"association.museum\0california.museum\0" -"cultural.museum\0co.rs\0" -"zoology.museum\0" -"pruszkow.pl\0" -"control.aero\0nt.edu.au\0net\0komforb.se\0" -"lincoln.museum\0aurland.no\0name.pr\0co.rw\0" -"ostroleka.pl\0" -"isernia.it\0" -"tm.fr\0" -"gs.ol.no\0" -"nb.ca\0marnardal.no\0" -"williamsburg.museum\0" -"!jet.uk\0" -"suisse.museum\0\xc3\xa5""fjord.no\0flakstad.no\0" -"karmoy.no\0" -"yn.cn\0chesapeakebay.museum\0" -"nsw.au\0" -"amur.ru\0co.st\0" -"imb.br\0siellak.no\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" -"name.na\0" -"co.th\0" -"p.bg\0" -"co.sz\0co.tj\0" -"name.mv\0\xc3\xa5lesund.no\0lib.in.us\0" -"lucerne.museum\0naumburg.museum\0" -"society.museum\0name.my\0" -"tinn.no\0" -"co.tt\0" -"unj\xc3\xa1rga.no\0" -"co.ug\0" -"lib.wy.us\0" -"co.tz\0" -"ass.km\0" -"ok.us\0" -"tm.hu\0kongsvinger.no\0" -"ibestad.no\0" -"juedisches.museum\0co.us\0" -"cq.cn\0" -"rs.ba\0" -"wa.edu.au\0co.vi\0" -"co.uz\0" -"health.museum\0" -"grue.no\0" -"automotive.museum\0journalism.museum\0settlement.museum\0" -"qh.cn\0interactive.museum\0" -"snillfjord.no\0!national-library-scotland.uk\0" -"balsfjord.no\0lib.nh.us\0" -"kolobrzeg.pl\0" -"gs.tm.no\0" -"h\xc3\xb8nefoss.no\0" -"ol.no\0" -"music.museum\0moareke.no\0" -"b\xc3\xb8.nordland.no\0" -"name.mk\0lier.no\0" -"eidfjord.no\0" -"sc.cn\0tm.km\0" -"jelenia-gora.pl\0sanok.pl\0" -"intelligence.museum\0" -"srv.br\0elblag.pl\0" -"judygarland.museum\0" -"padua.it\0" -"k12.co.us\0" -"lindesnes.no\0" -"name.jo\0izhevsk.ru\0" -"yorkshire.museum\0mel\xc3\xb8y.no\0" -"tm.mc\0lib.pr.us\0" -"hjartdal.no\0" -"tm.mg\0" -"bari.it\0milano.it\0" -"lg.jp\0" -"zgrad.ru\0" -"sm\xc3\xb8la.no\0" -"communications.museum\0" -"arts.co\0seoul.kr\0engerdal.no\0" -"oster\xc3\xb8y.no\0" -"\xe6\x95\x8e\xe8\x82\xb2.hk\0foggia.it\0verran.no\0" -"orskog.no\0voronezh.ru\0kv.ua\0" -"av.it\0" -"tm.no\0nissedal.no\0" -"historisches.museum\0gs.mr.no\0" -"medecin.fr\0" -"montreal.museum\0" -"o.se\0" -"!metro.tokyo.jp\0sola.no\0" -"k12.tn.us\0" -"floro.no\0" -"milan.it\0*.shiga.jp\0" -"berkeley.museum\0" -"maintenance.aero\0" -"ws.na\0" -"lindas.no\0cc.ia.us\0" -"brescia.it\0embroidery.museum\0" -"arezzo.it\0tm.pl\0" -"r\xc3\xa6lingen.no\0" -"burghof.museum\0" -"rec.br\0" -"q.bg\0" -"!nawras.om\0" -"hammarfeasta.no\0" -"moss.no\0" -"on.ca\0" -"gouv.rw\0" -"luxembourg.museum\0" -"rec.co\0british.museum\0" -"reggio-emilia.it\0" -"gouv.sn\0lib.wv.us\0" -"avocat.fr\0" -"simbirsk.ru\0" -"jar.ru\0" -"monza-brianza.it\0" +"co.in\0brescia.it\0ac.th\0" +"ac.sz\0ac.tj\0" +"co.ir\0" +"arts.nf\0tjeldsund.no\0is-a-geek.com\0" +"co.it\0" +"pi.it\0co.je\0name.mk\0" +"helsinki.museum\0" +"svalbard.no\0" +"delaware.museum\0" +"is-a-candidate.org\0" +"adm.br\0ac.ug\0" +"kalisz.pl\0k12.vi\0" +"co.jp\0ac.tz\0" "tm.ro\0" -"imageandsound.museum\0" -"jpn.com\0mr.no\0" -"siracusa.it\0" -"norilsk.ru\0tm.se\0" -"tn.it\0" -"jeju.kr\0" -"!pref.fukuoka.jp\0" -"*.hyogo.jp\0portlligat.museum\0" -"!pref.osaka.jp\0" -"siena.it\0sc.kr\0omaha.museum\0saskatchewan.museum\0" -"phoenix.museum\0vanylven.no\0" -"botanicalgarden.museum\0" -"turek.pl\0" -"vagsoy.no\0" -"riodejaneiro.museum\0" -"vi.it\0" -"uy.com\0" -"kristiansand.no\0" -"sd.cn\0trento.it\0" -"muncie.museum\0" -"berg.no\0meldal.no\0" -"nes.buskerud.no\0" -"saratov.ru\0" -"gs.oslo.no\0" -"harstad.no\0vaga.no\0" -"research.museum\0" -"brunel.museum\0ia.us\0" -"test.tj\0" -"columbia.museum\0" -"ms.it\0stockholm.museum\0" -"reklam.hu\0" -"pomorskie.pl\0lg.ua\0" -"bg.it\0historicalsociety.museum\0rns.tn\0" -"mallorca.museum\0surgut.ru\0cc.sc.us\0" -"ushistory.museum\0" -"palana.ru\0" -"snoasa.no\0" -"naturalsciences.museum\0" -"yaroslavl.ru\0" -"unjarga.no\0" -"p.se\0" -"ingatlan.hu\0" -"irc.pl\0" -"savona.it\0" -"cr.it\0" -"test.ru\0cc.tn.us\0" -"ms.kr\0museumvereniging.museum\0" -"time.no\0k12.ia.us\0" -"vladimir.ru\0" -"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" -"gouv.km\0nationalfirearms.museum\0" -"m\xc3\xa1latvuopmi.no\0" -"aero\0yosemite.museum\0" -"r.bg\0school.na\0" -"cc.vi.us\0" -"*.wakayama.jp\0" -"beauxarts.museum\0averoy.no\0ullensvang.no\0bar.pro\0" -"!city.hiroshima.jp\0" -"b\xc3\xa1hccavuotna.no\0" -"frosta.no\0" -"gdynia.pl\0" -"medical.museum\0" -"embaixada.st\0" -"balsan.it\0vantaa.museum\0" -"za.net\0" -"!city.saitama.jp\0lib.ks.us\0" -"fnd.br\0" -"ru.com\0se.com\0hol.no\0modalen.no\0" -"gouv.ml\0chukotka.ru\0" -"malopolska.pl\0" -"mansion.museum\0" -"iki.fi\0children.museum\0" -"cyber.museum\0rec.nf\0mo\xc3\xa5reke.no\0" -"to.it\0" -"hasvik.no\0" -"\xc3\xb8yer.no\0" -"arts.ro\0sc.ug\0" -"lib.ar.us\0" -"sc.tz\0cc.ms.us\0cc.nc.us\0" -"etc.br\0poznan.pl\0" -"cnt.br\0viking.museum\0" -"*.miyazaki.jp\0" -"melhus.no\0" -"skodje.no\0vevelstad.no\0" -"sc.us\0" -"upow.gov.pl\0" -"!city.fukuoka.jp\0brandywinevalley.museum\0natuurwetenschappen.museum\0tranby.no\0" -"bahn.museum\0msk.ru\0" -"delmenhorst.museum\0" -"russia.museum\0fuoisku.no\0" -"shell.museum\0" -"r\xc3\xa1isa.no\0" -"hs.kr\0udmurtia.ru\0" -"palermo.it\0" -"pilot.aero\0" -"tn.us\0" -"priv.hu\0" -"li.it\0" -"kr\xc3\xa5""anghke.no\0mosreg.ru\0" -"lib.fl.us\0" -"plants.museum\0" -"ulsan.kr\0national.museum\0" -"mil.ac\0!pref.nara.jp\0surgeonshall.museum\0" -"mil.ae\0santacruz.museum\0vi.us\0" -"wlocl.pl\0" -"mt.it\0napoli.it\0alaska.museum\0arts.nf\0" -"missoula.museum\0" -"rec.ro\0" -"mil.al\0" -"marburg.museum\0waw.pl\0" -"pharmaciens.km\0indianapolis.museum\0larsson.museum\0" -"cc.sd.us\0" -"mil.ba\0mobi\0" -"indianmarket.museum\0" -"recreation.aero\0padova.it\0" -"varese.it\0parti.se\0" -"mil.az\0" -"mil.bo\0!pref.kagoshima.jp\0khmelnitskiy.ua\0" -"rygge.no\0" -"os\xc3\xb8yro.no\0" -"mil.br\0" -"cs.it\0" -"austevoll.no\0fjell.no\0" -"mil.by\0" -"!pref.tokushima.jp\0org\0" -"mil.cn\0gs.svalbard.no\0" -"mil.co\0" -"pz.it\0lib.va.us\0\xd1\x80\xd1\x84\0" -"\xe4\xb8\xaa\xe4\xba\xba.hk\0ms.us\0nc.us\0k12.wi.us\0" -"s.bg\0drangedal.no\0" -"en.it\0" -"culturalcenter.museum\0" -"house.museum\0divttasvuotna.no\0" -"fhs.no\0" -"circus.museum\0" -"priv.at\0" -"mil.ec\0" -"ruovat.no\0" -"midsund.no\0vagan.no\0" -"casadelamoneda.museum\0" -"bristol.museum\0" -"and.museum\0" -"ascolipiceno.it\0computerhistory.museum\0vyatka.ru\0" -"uhren.museum\0" -"lahppi.no\0" -"*.yokohama.jp\0cody.museum\0lib.al.us\0" -"colonialwilliamsburg.museum\0indian.museum\0cc.ky.us\0" -"tp.it\0biev\xc3\xa1t.no\0" -"can.br\0royken.no\0" -"id.ir\0" -"mediocampidano.it\0tromso.no\0" -"kartuzy.pl\0k12.ok.us\0" -"*.saitama.jp\0stjohn.museum\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0" -"mil.ge\0trani-barletta-andria.it\0" -"lib.as.us\0" -"swiebodzin.pl\0cc.mt.us\0cc.nd.us\0" -"mil.gh\0" -"science-fiction.museum\0\xd9\x82\xd8\xb7\xd8\xb1\0" -"airtraffic.aero\0" -"konskowola.pl\0" -"scienceandhistory.museum\0nysa.pl\0sd.us\0" -"balestrand.no\0" -"oygarden.no\0" -"her\xc3\xb8y.nordland.no\0" -"!pref.ishikawa.jp\0strand.no\0" -"\xe7\xb5\x84\xe7\xbb\x87.hk\0mil.hn\0" -"gob.bo\0volda.no\0" -"losangeles.museum\0larvik.no\0" -"university.museum\0" -"cc.dc.us\0" -"mil.id\0" -"sorfold.no\0" -"watch-and-clock.museum\0" -"flor\xc3\xb8.no\0" -"nittedal.no\0oppeg\xc3\xa5rd.no\0" -"k12.ri.us\0" -"gob.cl\0" -"komi.ru\0" -"government.aero\0mil.in\0" -"mil.iq\0id.lv\0" -"culture.museum\0" -"id.ly\0" -"raholt.no\0" -"lubin.pl\0grozny.ru\0" -"kchr.ru\0" -"nikolaev.ua\0" -"lib.sd.us\0" -"de.com\0" -"mil.jo\0" -"*.kanagawa.jp\0gaular.no\0miasta.pl\0" -"bi.it\0rnu.tn\0uzhgorod.ua\0" -"idrett.no\0v\xc3\xa5gs\xc3\xb8y.no\0" -"wroclaw.pl\0" -"res.aero\0ne.jp\0mil.kg\0" -"\xc3\xa5mli.no\0" -"education.museum\0" -"dgca.aero\0" -"mil.km\0" -"trolley.museum\0" -"cci.fr\0r.se\0" -"archaeological.museum\0" -"monzaedellabrianza.it\0mil.kr\0" -"gob.es\0kvafjord.no\0ky.us\0" -"lecco.it\0" -"ct.it\0" -"magazine.aero\0" -"operaunite.com\0ne.kr\0" -"mil.kz\0skoczow.pl\0" -"nf.ca\0" -"western.museum\0" -"kunst.museum\0gaivuotna.no\0karpacz.pl\0spb.ru\0cc.id.us\0" -"slask.pl\0" -"youth.museum\0" -"adv.br\0campidanomedio.it\0!songfest.om\0" -"geelvinck.museum\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" -"mil.lv\0" -"fie.ee\0mil.mg\0mt.us\0nd.us\0k12.vt.us\0" -"t.bg\0ushuaia.museum\0" -"off.ai\0" -"irkutsk.ru\0" -"stor-elvdal.no\0tourism.tn\0" -"penza.ru\0" -"bj.cn\0\xe4\xb8\xad\xe5\x9b\xbd\0" -"civilwar.museum\0mil.mv\0opole.pl\0" -"nes.akershus.no\0" -"mil.my\0karelia.ru\0" -"como.it\0sande.vestfold.no\0" -"\xe4\xb8\xad\xe5\x9c\x8b\0" -"gob.hn\0lib.la.us\0" -"mil.no\0cc.wv.us\0" -"boleslawiec.pl\0" -"!pref.niigata.jp\0gs.sf.no\0dc.us\0k12.mi.us\0" -"museum\0dep.no\0kv\xc3\xa6nangen.no\0l\xc3\xa1hppi.no\0" -"film.museum\0" -"frei.no\0" -"notodden.no\0risor.no\0" -"messina.it\0" -"eidsberg.no\0" -"krakow.pl\0lib.mt.us\0lib.nd.us\0" -"rauma.no\0" -"mulhouse.museum\0" -"sibenik.museum\0grong.no\0mil.pe\0" -"budejju.no\0k12.nv.us\0" -"stavanger.no\0mil.ph\0" -"forli-cesena.it\0" -"naples.it\0cc.ne.us\0" -"s\xc3\xb8r-aurdal.no\0" -"mil.pl\0" -"vibo-valentia.it\0ski.museum\0siedlce.pl\0" -"bus.museum\0" -"tozsde.hu\0" -"!pref.shizuoka.jp\0santabarbara.museum\0" -"zhitomir.ua\0" -"pro.az\0" -"ne.pw\0" -"pro.br\0orkanger.no\0b\xc3\xb8.telemark.no\0" -"roma.it\0cc.ct.us\0" -"heritage.museum\0giske.no\0" -"!pref.kumamoto.jp\0prof.pr\0" -"*.kochi.jp\0" -"andria-barletta-trani.it\0*.toyama.jp\0sveio.no\0" -"id.us\0" -"bolt.hu\0" -"fetsund.no\0porsgrunn.no\0" -"iglesias-carbonia.it\0" -"sf.no\0" -"mil.ru\0" -"from.hr\0asnes.no\0mil.rw\0" -"alesund.no\0sos.pl\0" -"livorno.it\0" -"crafts.museum\0" -"aquila.it\0" -"vega.no\0" -"jewelry.museum\0" -"sk\xc3\xa1nit.no\0chita.ru\0" -"pro.ec\0" -"fortmissoula.museum\0j\xc3\xb8lster.no\0" -"pro\0mil.st\0" -"busan.kr\0lib.ga.us\0" -"dellogliastra.it\0" -"aosta.it\0chungnam.kr\0gob.mx\0" -"mil.sy\0k12.hi.us\0" -"mil.tj\0" -"ulan-ude.ru\0mil.to\0wv.us\0" -"luster.no\0volgograd.ru\0" -"pa.it\0kommunalforbund.se\0lib.tx.us\0" -"s.se\0" -"qsl.br\0" -"mil.tw\0" -"est.pr\0ens.tn\0" -"lib.id.us\0" -"mil.tz\0" -"uscountryestate.museum\0" -"agents.aero\0" -"\xc3\xb8vre-eiker.no\0ne.ug\0" -"pb.ao\0" -"gob.pa\0ne.tz\0" -"tur.br\0" -"mil.vc\0" -"or.at\0gob.pe\0" -"s\xc3\xb8r-fron.no\0" -"or.bi\0ne.us\0" -"u.bg\0gob.pk\0" -"stavern.no\0" -"brindisi.it\0" -"aknoluokta.no\0" -"!pref.kyoto.jp\0tydal.no\0" -"plc.ly\0muos\xc3\xa1t.no\0" -"or.ci\0hamaroy.no\0priv.pl\0" -"vestre-slidre.no\0gniezno.pl\0" -"\xe7\xae\x87\xe4\xba\xba.hk\0" -"andebu.no\0" -"nieruchomosci.pl\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" -"or.cr\0pro.ht\0bolzano.it\0" -"ct.us\0k12.md.us\0" -"za.org\0" -"!icnet.uk\0" -"localhistory.museum\0" -"firm.ht\0" -"lel.br\0tr.it\0kvanangen.no\0" -"sondre-land.no\0t\xc3\xb8nsberg.no\0vefsn.no\0" -"nature.museum\0yamal.ru\0" -"rv.ua\0" -"lans.museum\0lib.ne.us\0" +"*.okayama.jp\0" +"cymru.museum\0" +"chieti.it\0" +"lib.nv.us\0" +"wa.gov.au\0konin.pl\0tm.se\0" +"us.na\0dynathome.net\0" +"name.jo\0" +"!nacion.ar\0" +"trieste.it\0" +"ru.com\0se.com\0" +"co.kr\0" +"co.lc\0f.se\0" +"theater.museum\0ac.vn\0" +"\xc3\xb8rskog.no\0" +"port.fr\0" +"flog.br\0rahkkeravju.no\0" +"krakow.pl\0" +"coop\0" +"co.ma\0moareke.no\0" +"sogndal.no\0" +"co.ls\0" +"co.me\0skodje.no\0!statecouncil.om\0" +"mail.pl\0" +"educational.museum\0uhren.museum\0" "lur\xc3\xb8y.no\0" -"eu.com\0firm.in\0" -"hjelmeland.no\0" -"gs.tr.no\0" -"casino.hu\0essex.museum\0tourism.pl\0" -"rennesoy.no\0" -"priv.no\0" -"baths.museum\0mytis.ru\0" -"tingvoll.no\0" -"cc.az.us\0" -"sh.cn\0" -"!pref.miyazaki.jp\0s\xc3\xb8rfold.no\0" -"aurskog-holand.no\0malatvuopmi.no\0" -"lib.ct.us\0" -"cc.pa.us\0" -"pa.gov.pl\0" -"firm.co\0cc.de.us\0" -"nrw.museum\0" -"daejeon.kr\0livinghistory.museum\0" -"gildeskal.no\0lund.no\0" -"\xc3\xb8ksnes.no\0stavropol.ru\0" -"b\xc3\xa6rum.no\0r\xc3\xb8yrvik.no\0" -"osoyro.no\0" -"priv.me\0sula.no\0!parliament.uk\0" -"nationalheritage.museum\0" -"jaworzno.pl\0" -"dinosaur.museum\0" -"garden.museum\0trust.museum\0" -"turen.tn\0" -"kautokeino.no\0" -"pro.na\0" -"gorizia.it\0" -"siljan.no\0" -"or.id\0pro.mv\0" -"bieszczady.pl\0www.ro\0" -"lib.ee\0antiques.museum\0brasil.museum\0tr.no\0" -"aejrie.no\0" -"!pref.hokkaido.jp\0" -"schlesisches.museum\0" -"huissier-justice.fr\0or.it\0" -"t.se\0" -"environment.museum\0" -"vindafjord.no\0" -"edu.ac\0or.jp\0" -"tree.museum\0" -"groundhandling.aero\0edu.af\0" -"rochester.museum\0sanfrancisco.museum\0" -"ebiz.tw\0" -"kirovograd.ua\0" -"edu.al\0" -"edu.an\0\xc3\xa1k\xc5\x8boluokta.no\0v\xc3\xa5g\xc3\xa5.no\0" -"v.bg\0" -"edu.ba\0" -"edu.bb\0nesset.no\0" -"hornindal.no\0pro.pr\0" -"or.kr\0" -"az.us\0" -"edu.bh\0volkenkunde.museum\0" -"edu.bi\0" -"edu.az\0" -"b\xc3\xb8mlo.no\0" -"edu.bm\0" -"edu.bo\0tyumen.ru\0" -"edu.br\0" -"edu.bs\0pa.us\0" -"alto-adige.it\0whaling.museum\0" -"*.iwate.jp\0" -"edu.ci\0law.pro\0" -"edu.bz\0de.us\0" -"lib.ak.us\0" -"edu.cn\0" -"edu.co\0" -"laspezia.it\0" -"baidar.no\0" -"ts.it\0" -"or.na\0" -"edu.cu\0hotel.lk\0" -"show.aero\0or.mu\0" -"sandnes.no\0" -"museumcenter.museum\0" -"edu.dm\0kazan.ru\0" -"biz\0caltanissetta.it\0odessa.ua\0k12.oh.us\0" -"crimea.ua\0" -"research.aero\0lom.no\0" -"edu.ec\0florence.it\0clock.museum\0sshn.se\0" -"edu.ee\0game.tw\0" -"!pref.okinawa.jp\0" -"ilawa.pl\0" -"edu.dz\0indiana.museum\0" -"gs.jan-mayen.no\0" -"publ.pt\0" -"nom.ad\0" -"skanit.no\0gdansk.pl\0k12.pa.us\0" -"nom.ag\0edu.es\0" -"if.ua\0" -"pro.tt\0lib.de.us\0" -"environmentalconservation.museum\0cc.or.us\0" -"bern.museum\0nat.tn\0" -"rubtsovsk.ru\0" -"!educ.ar\0masoy.no\0" -"bologna.it\0" -"\xc3\xa5snes.no\0fhv.se\0" -"*.tottori.jp\0radoy.no\0" -"romskog.no\0" -"malbork.pl\0" -"olbiatempio.it\0" -"edu.ge\0" -"edu.gh\0" -"edu.gi\0" -"or.pw\0" -"hob\xc3\xb8l.no\0" -"nom.br\0edu.gn\0virginia.museum\0mbone.pl\0!nls.uk\0" -"seljord.no\0pro.vn\0" -"edu.gp\0" -"edu.gr\0" -"!uba.ar\0!pref.saitama.jp\0" -"greta.fr\0gs.aa.no\0kvinnherad.no\0" -"lib.sc.us\0" -"js.cn\0nom.co\0edu.hk\0" -"lesja.no\0" -"bl.it\0" -"edu.hn\0\xc3\xb8ystre-slidre.no\0mari-el.ru\0" -"hotel.hu\0" -"rindal.no\0" -"edu.ht\0" -"!pref.miyagi.jp\0" -"midtre-gauldal.no\0" -"xj.cn\0australia.museum\0" -"ab.ca\0salvadordali.museum\0olawa.pl\0" -"pc.it\0" -"u.se\0" -"edu.in\0b\xc3\xa1l\xc3\xa1t.no\0" -"ln.cn\0alta.no\0" -"chelyabinsk.ru\0" -"edu.iq\0" -"ontario.museum\0" +"sf.no\0" +"gb.com\0is-very-evil.org\0" +"edunet.tn\0" +"beardu.no\0" +"co.na\0" +"is-a-rockstar.com\0" +"nowaruda.pl\0" +"gr.it\0" +"per.la\0co.mu\0" +"marnardal.no\0" +"co.mw\0wolomin.pl\0" +"edu.ac\0" +"tas.gov.au\0" +"edu.af\0vlog.br\0!pref.niigata.jp\0cc.mn.us\0" +"co.nl\0gs.nt.no\0" +"co.no\0" +"gr.jp\0!city.kawasaki.jp\0" +"edu.al\0burghof.museum\0sunndal.no\0!omanpost.om\0" +"tempio-olbia.it\0stj\xc3\xb8rdal.no\0" +"edu.an\0" +"za.com\0" +"edu.ba\0" +"edu.bb\0natuurwetenschappen.museum\0" +"mining.museum\0kutno.pl\0" +"cechire.com\0" +"edu.bh\0kicks-ass.net\0" +"edu.bi\0memorial.museum\0nesodden.no\0" +"edu.az\0" +"genova.it\0" +"edu.bm\0sydney.museum\0" +"edu.bo\0barrel-of-knowledge.info\0" +"uvic.museum\0" +"edu.br\0" +"edu.bs\0" +"edu.bt\0" +"per.nf\0" +"co.pl\0isla.pr\0" +"mansion.museum\0is-an-engineer.com\0" +"edu.ci\0co.pn\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0" +"edu.bz\0\xe6\x94\xbf\xe5\xba\x9c.hk\0" +"arezzo.it\0" +"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0" +"kv.ua\0" +"edu.cn\0stjordal.no\0" +"edu.co\0amsterdam.museum\0pvt.k12.ma.us\0" +"schlesisches.museum\0cc.tn.us\0" +"consultant.aero\0co.pw\0" +"edu.cu\0jewishart.museum\0" +"!city.kyoto.jp\0" +"jelenia-gora.pl\0" +"ind.br\0edu.dm\0" +"edu.do\0le.it\0" +"edu.ec\0" +"edu.ee\0wallonie.museum\0" +"gs.fm.no\0" +"edu.eg\0" +"gangaviika.no\0" +"edu.dz\0magadan.ru\0" +"!pref.miyagi.jp\0americana.museum\0" +"ed.ao\0d.bg\0co.rs\0" +"b\xc3\xa1l\xc3\xa1t.no\0" +"royrvik.no\0" +"k12.co.us\0" +"co.rw\0" +"edu.es\0aejrie.no\0" +"ae.org\0" +"vb.it\0" +"ha.cn\0rv.ua\0from-dc.com\0" +"cc.az.us\0" +"stor-elvdal.no\0" +"plantation.museum\0co.st\0" +"7.bg\0co.th\0" +"trust.museum\0" +"edu.ge\0co.sz\0co.tj\0lib.hi.us\0selfip.org\0" +"for-better.biz\0" +"k12.mn.us\0" +"ed.ci\0edu.gh\0is-a-geek.org\0" +"edu.gi\0fl.us\0" +"student.aero\0" +"klepp.no\0szkola.pl\0" +"edu.gn\0veg\xc3\xa5rshei.no\0" +"co.tt\0is-a-anarchist.com\0" +"ar.com\0edu.gp\0is-a-bulls-fan.com\0" +"ed.cr\0meland.no\0" +"edu.gr\0co.ug\0" +"co.tz\0" +"per.sg\0" +"mragowo.pl\0" +"is-a-musician.com\0" +"edu.hk\0broadcast.museum\0" +"terni.it\0k12.wy.us\0" +"edu.hn\0cn.it\0co.us\0" +"inder\xc3\xb8y.no\0" +"edu.ht\0co.vi\0" +"stargard.pl\0co.uz\0" +"texas.museum\0cc.ut.us\0" +"seljord.no\0tromso.no\0" +"ecn.br\0" +"edu.in\0" +"lib.as.us\0" +"lib.ny.us\0is-slick.com\0" +"edu.iq\0k12.il.us\0" +"k12.tn.us\0" "edu.is\0" -"edu.it\0" -"b\xc3\xa5tsfjord.no\0" -"trysil.no\0or.th\0" -"utsira.no\0" -"nom.es\0edu.jo\0fhsk.se\0" -"bale.museum\0" -"w.bg\0" -"lillesand.no\0" -"edu.kg\0" -"amusement.aero\0" -"edu.ki\0" -"fauske.no\0or.ug\0" -"int.az\0askvoll.no\0eidskog.no\0cv.ua\0" -"algard.no\0" -"edu.km\0or.tz\0" -"nom.fr\0edu.kn\0" -"*.ibaraki.jp\0hoylandet.no\0" -"int.bo\0edu.kp\0" +"edu.it\0jewelry.museum\0monmouth.museum\0s\xc3\xb8rum.no\0" +"ens.tn\0" +"anthro.museum\0" +"fuel.aero\0" +"colonialwilliamsburg.museum\0" +"broker.aero\0" +"britishcolumbia.museum\0lucerne.museum\0" +"*.kitakyushu.jp\0gs.tm.no\0beiarn.no\0" +"e.se\0" +"entomology.museum\0servebbs.com\0" +"edu.jo\0" +"vik.no\0" +"slupsk.pl\0" +"laspezia.it\0" +"z.bg\0savannahga.museum\0stange.no\0snz.ru\0" +"newspaper.museum\0" +"asti.it\0edu.kg\0" +"h\xc3\xb8ylandet.no\0" +"ind.in\0edu.ki\0sarpsborg.no\0" +"ebiz.tw\0wi.us\0" +"daejeon.kr\0" +"edu.km\0sand\xc3\xb8y.no\0" +"edu.kn\0" +"edu.kp\0" "edu.la\0" -"si.it\0edu.lb\0travel.pl\0" -"edu.lc\0mx.na\0n\xc3\xa1vuotna.no\0ovre-eiker.no\0" -"aa.no\0!siemens.om\0" -"sciences.museum\0or.us\0" -"cat\0" -"edu.ky\0" -"int.ci\0edu.kz\0firm.ro\0cc.wy.us\0" -"edu.lk\0vaapste.no\0" -"!pref.tochigi.jp\0" -"int.co\0podlasie.pl\0" -"edu.lr\0" -"karikatur.museum\0jamal.ru\0" -"gjovik.no\0krager\xc3\xb8.no\0k12.az.us\0" -"edu.me\0" -"ud.it\0edu.lv\0entomology.museum\0" -"edu.mg\0moskenes.no\0" -"\xe6\x94\xbf\xe5\xba\x9c.hk\0edu.ly\0" -"stpetersburg.museum\0" -"edu.mk\0" -"edu.ml\0nordreisa.no\0" -"!pref.fukui.jp\0lib.ms.us\0lib.nc.us\0" -"edu.mn\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" -"fot.br\0edu.mo\0" -"iron.museum\0" -"asti.it\0annefrank.museum\0stv.ru\0cc.nh.us\0" +"air-traffic-control.aero\0edu.lb\0" +"edu.lc\0steiermark.museum\0" +"!rakpetroleum.om\0" +"edu.ky\0convent.museum\0" +"edu.kz\0czeladz.pl\0" +"edu.lk\0lib.vi.us\0" +"radio.br\0indiana.museum\0" +"int\0" +"fj.cn\0edu.lr\0" +"sd.cn\0midsund.no\0tr\xc3\xb8gstad.no\0" +"edu.me\0exeter.museum\0for-more.biz\0" +"edu.lv\0from-or.com\0" +"edu.mg\0!police.uk\0isa-geek.net\0" +"flight.aero\0salzburg.museum\0" +"edu.ly\0" +"edu.mk\0nsn.us\0" +"edu.ml\0" +"hu.com\0edu.mn\0mosj\xc3\xb8""en.no\0" +"edu.mo\0bomlo.no\0chernigov.ua\0" +"lib.sd.us\0" +"accident-investigation.aero\0store.nf\0" +"rieti.it\0" "edu.mv\0" -"lodi.it\0edu.mw\0edu.ng\0" -"gwangju.kr\0edu.mx\0" +"edu.mw\0edu.ng\0" +"edu.mx\0dyndns-wiki.com\0" "edu.my\0" -"soundandvision.museum\0" -"lenvik.no\0" -"ballooning.aero\0" -"name\0" -"jogasz.hu\0frogn.no\0" -"history.museum\0" -"consultant.aero\0edu.nr\0" -"manchester.museum\0" -"*.hiroshima.jp\0" -"pol.dz\0" -"*.tochigi.jp\0heimatunduhren.museum\0" -"!pref.kanagawa.jp\0" -"firm.nf\0edu.pa\0" -"coop.ht\0pc.pl\0" -"chicago.museum\0" -"vn.ua\0" +"ushistory.museum\0" +"art.museum\0" +"gliding.aero\0" +"aa.no\0" +"ed.jp\0trogstad.no\0" +"show.aero\0r\xc3\xa6lingen.no\0" +"edu.nr\0" +"eastcoast.museum\0" +"florence.it\0" +"chel.ru\0grozny.ru\0" +"bg.it\0" +"from-tx.com\0" +"surgeonshall.museum\0" +"brumunddal.no\0sk\xc3\xa1nit.no\0" +"manx.museum\0" +"edu.pa\0" "edu.pe\0" -"tana.no\0edu.pf\0" +"hawaii.museum\0edu.pf\0" "edu.ph\0" -"nom.km\0" -"travel.tt\0" -"edu.pk\0" -"experts-comptables.fr\0edu.pl\0bryansk.ru\0" -"edu.pn\0" -"evje-og-hornnes.no\0warszawa.pl\0" -"ac.ae\0" -"edu.pr\0" -"vaksdal.no\0edu.ps\0dni.us\0" -"po.gov.pl\0edu.pt\0" -"nordre-land.no\0vadso.no\0" -"rnrt.tn\0" -"sport.hu\0!pref.gifu.jp\0voss.no\0targi.pl\0" -"flesberg.no\0" -"photography.museum\0" -"modena.it\0tonsberg.no\0" -"ac.at\0" -"ac.be\0coop.br\0" -"services.aero\0" -"nom.mg\0" -"wielun.pl\0" -"jefferson.museum\0wy.us\0" -"pd.it\0ot.it\0neues.museum\0slattum.no\0" -"vdonsk.ru\0" -"ar.com\0edu.sa\0" -"\xc3\xa5l.no\0edu.sb\0" -"edu.rs\0edu.sc\0" -"ac.ci\0int.is\0edu.sd\0!tsk.tr\0" -"br\xc3\xb8nn\xc3\xb8ysund.no\0and\xc3\xb8y.no\0edu.ru\0" -"pol.ht\0" -"edu.rw\0edu.sg\0" -"gyeongnam.kr\0olecko.pl\0" -"ac.cn\0" -"graz.museum\0" -"coldwar.museum\0edu.sl\0" -"ac.cr\0" -"edu.sn\0" -"hamar.no\0" -"histoire.museum\0" -"!city.shizuoka.jp\0" -"edu.st\0" -"oceanographic.museum\0nh.us\0" -"x.bg\0" -"surnadal.no\0" -"fc.it\0costume.museum\0stalowa-wola.pl\0" -"valer.ostfold.no\0edu.sy\0" +"berlevag.no\0" +"science.museum\0edu.pk\0" +"edu.pl\0omsk.ru\0" +"*.kawasaki.jp\0sells-it.net\0" +"ass.km\0eidsvoll.no\0edu.pn\0" +"agro.pl\0legnica.pl\0" +"software.aero\0" +"eidsberg.no\0edu.pr\0" +"r\xc3\xa5holt.no\0edu.ps\0" +"valle.no\0edu.pt\0" +"gs.sf.no\0sel.no\0" +"ha.no\0" +"c.bg\0" +"unj\xc3\xa1rga.no\0" +"k12.pr.us\0" +"uscountryestate.museum\0" +"va.it\0" +"joshkar-ola.ru\0" +"tj.cn\0" +"arna.no\0" +"cn.com\0" +"medio-campidano.it\0oskol.ru\0" +"cagliari.it\0project.museum\0r\xc3\xb8ros.no\0" +"rennebu.no\0edu.sa\0" +"6.bg\0flanders.museum\0edu.sb\0" +"harstad.no\0edu.rs\0edu.sc\0" +"edu.sd\0" +"res.aero\0edu.ru\0" +"k12.ms.us\0k12.nc.us\0" +"karelia.ru\0edu.rw\0edu.sg\0" +"americanart.museum\0" +"midatlantic.museum\0" +"cn.ua\0" +"edu.sl\0" +"skanland.no\0" +"porsgrunn.no\0edu.sn\0" +"from-al.com\0" +"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0edu.st\0game-server.cc\0" +"nesna.no\0" +"online.museum\0edu.sy\0" "edu.tj\0" -"arq.br\0" -"aeroclub.aero\0odo.br\0pe.ca\0\xe7\xb6\xb2\xe7\xb5\xa1.cn\0bronnoysund.no\0nom.pa\0" +"podhale.pl\0" +"pg.it\0" "edu.to\0" -"paleo.museum\0nom.pe\0edu.ua\0" -"int.la\0trustee.museum\0forsand.no\0krasnoyarsk.ru\0" -"!pref.hyogo.jp\0" +"edu.ua\0mk.ua\0" +"enebakk.no\0" +"film.hu\0" "edu.tt\0" -"zarow.pl\0" -"edu.tw\0" -"nom.pl\0" -"community.museum\0kvitsoy.no\0" -"int.lk\0tychy.pl\0" -"k12.me.us\0" -"jondal.no\0edu.vc\0" -"illustration.museum\0" -"clinton.museum\0" -"tas.au\0es.kr\0" -"production.aero\0" -"rodoy.no\0" -"database.museum\0bodo.no\0" -"anthro.museum\0landes.museum\0edu.vn\0" -"nom.re\0" -"altai.ru\0" -"filatelia.museum\0" -"sk.ca\0lezajsk.pl\0" -"rockart.museum\0int.mv\0" -"int.mw\0herad.no\0" -"eti.br\0ac.gn\0" -"fedje.no\0nom.ro\0" -"money.museum\0" -"\xd9\x85\xd8\xb5\xd8\xb1\0" -"horten.no\0" -"gangaviika.no\0mielec.pl\0" -"uw.gov.pl\0" -"moma.museum\0" -"edu.ws\0" -"go.ci\0" -"tv.bo\0technology.museum\0" -"s\xc3\xb8ndre-land.no\0" -"tv.br\0" -"jor.br\0lib.dc.us\0" -"arboretum.museum\0" -"go.cr\0" -"artsandcrafts.museum\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" -"psc.br\0ac.id\0!city.chiba.jp\0" -"wa.au\0" -"rome.it\0" -"amli.no\0" -"ac.im\0lo.it\0" -"ac.in\0" -"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0durham.museum\0" -"ac.ir\0" -"torino.museum\0" -"loabat.no\0" -"com\0" -"nalchik.ru\0" +"ed.pw\0" +"de.com\0artdeco.museum\0database.museum\0edu.tw\0" "yakutia.ru\0" -"settlers.museum\0" -"!promocion.ar\0int.pt\0" -"union.aero\0" -"utah.museum\0" -"giehtavuoatna.no\0" -"ac.jp\0" -"air-traffic-control.aero\0" -"silk.museum\0usantiques.museum\0" -"bn.it\0" -"kalisz.pl\0" -"perm.ru\0" -"aoste.it\0bindal.no\0" -"coloradoplateau.museum\0k12.gu.us\0" -"frosinone.it\0forde.no\0" -"epilepsy.museum\0" -"olbia-tempio.it\0" -"journalist.aero\0ac.kr\0*.sch.uk\0" -"nic.im\0sciencesnaturelles.museum\0bedzin.pl\0" -"nic.in\0pe.it\0" -"w.se\0" -"!pref.okayama.jp\0" -"urn.arpa\0" -"cinema.museum\0" -"monza.it\0versailles.museum\0int.ru\0" -"andasuolo.no\0skj\xc3\xa5k.no\0chernovtsy.ua\0" -"nyc.museum\0int.rw\0paroch.k12.ma.us\0" -"ringerike.no\0" -"ac.ma\0" -"org.ac\0civilaviation.aero\0" -"rakkestad.no\0" -"org.ae\0ac.me\0" -"org.af\0" -"org.ag\0" -"org.ai\0stokke.no\0" -"airport.aero\0" +"judaica.museum\0" +"space-to-rent.com\0" +"mediocampidano.it\0" +"*.nagoya.jp\0lib.ar.us\0" +"lib.oh.us\0homeftp.net\0" +"siracusa.it\0" +"edu.vc\0" +"namsskogan.no\0ind.tn\0cc.fl.us\0" +"pruszkow.pl\0" +"airtraffic.aero\0" +"d.se\0" +"cci.fr\0edu.vn\0" +"va.no\0" +"satx.museum\0" +"y.bg\0kongsvinger.no\0!nawrastelecom.om\0" +"bjarkoy.no\0" +"rs.ba\0" +"istmein.de\0" +"cheltenham.museum\0" +"balat.no\0flora.no\0" +"national.museum\0" +"ntr.br\0" +"cc.co.us\0" +"kvits\xc3\xb8y.no\0notodden.no\0bytom.pl\0" +"evje-og-hornnes.no\0" +"rotorcraft.aero\0dellogliastra.it\0*.shiga.jp\0edu.ws\0" +"!pref.fukui.jp\0naklo.pl\0" +"museum\0" +"oystre-slidre.no\0belau.pw\0" +"est-le-patron.com\0" +"jessheim.no\0" +"skole.museum\0" +"sc.cn\0" +"fi.cr\0agdenes.no\0" +"austrheim.no\0" +"for-the.biz\0" +"meloy.no\0" +"unsa.ba\0vladivostok.ru\0" +"civilization.museum\0r\xc3\xa1isa.no\0" "finnoy.no\0" -"org.al\0" -"org.an\0y.bg\0habmer.no\0" -"stadt.museum\0holtalen.no\0" -"int.tj\0" -"org.ba\0gjerdrum.no\0" -"org.bb\0ascoli-piceno.it\0molde.no\0r\xc3\xb8st.no\0tysfjord.no\0" -"pe.kr\0rybnik.pl\0" +"equipment.aero\0" +"tas.edu.au\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0" +"rovigo.it\0" +"!pref.fukushima.jp\0stord.no\0" +"store.ro\0cc.wi.us\0" +"priv.hu\0carboniaiglesias.it\0kunst.museum\0" +"sveio.no\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0doomdns.org\0" +"ostroleka.pl\0" +"hole.no\0lib.or.us\0" +"k12.va.us\0" +"av.it\0c.la\0" +"contemporaryart.museum\0" +"rovno.ua\0" +"seaport.museum\0" +"kristiansand.no\0mypets.ws\0" +"lillehammer.no\0" +"store.st\0" +"h\xc3\xa1mm\xc3\xa1rfeasta.no\0z.se\0" +"ulsan.kr\0lib.ak.us\0" +"lib.ma.us\0" +"conf.lv\0turystyka.pl\0" +"lc.it\0dynalias.com\0" +"geology.museum\0" +"!city.hiroshima.jp\0westfalen.museum\0" +"jl.cn\0" +"space.museum\0" +"vgs.no\0" +"its.me\0artanddesign.museum\0" +"seoul.kr\0\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0" +"b.bg\0" +"adult.ht\0pesarourbino.it\0" +"bo.nordland.no\0" +"k12.de.us\0" +"iron.museum\0khakassia.ru\0" +"go.ci\0" +"pri.ee\0mantova.it\0dyndns.biz\0" +"va.us\0" +"myphotos.cc\0" +"b.br\0" +"skjerv\xc3\xb8y.no\0" +"go.cr\0" +"lincoln.museum\0kicks-ass.org\0" +"mielno.pl\0" +"tcm.museum\0" +"california.museum\0" +"5.bg\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0" +"navigation.aero\0association.museum\0" +"k12.az.us\0" +"luxembourg.museum\0stathelle.no\0k12.mt.us\0k12.nd.us\0" +"nikolaev.ua\0" +"fi.it\0cody.museum\0slattum.no\0" +"sd.us\0" +"yekaterinburg.ru\0traeumtgerade.de\0" +"freight.aero\0" +"halsa.no\0kuzbass.ru\0" +"express.aero\0pol.dz\0" +"priv.at\0etne.no\0rollag.no\0" +"gs.aa.no\0skanit.no\0" +"!mediaphone.om\0murmansk.ru\0est-a-la-masion.com\0" +"!nic.ar\0" +"trysil.no\0" +"s\xc3\xb8rreisa.no\0" +"verran.no\0" +"trani-andria-barletta.it\0" +"gov.nc.tr\0" +"skydiving.aero\0cl.it\0askim.no\0tynset.no\0" +"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0" +"sc.kr\0" +"oxford.museum\0is-a-liberal.com\0" +"clock.museum\0" +"beauxarts.museum\0" +"tokke.no\0" +"lib.ok.us\0" +"unjarga.no\0" +"s\xc3\xb8r-aurdal.no\0" +"!pref.tottori.jp\0" +"mi.it\0" +"kiev.ua\0" +"\xc3\xa5lesund.no\0storfjord.no\0" +"kvam.no\0" +"padua.it\0" +"baikal.ru\0c.se\0" +"kautokeino.no\0" +"paderborn.museum\0" +"x.bg\0" +"civilwar.museum\0" +"sandnes.no\0is-a-geek.net\0" +"pol.ht\0" +"monzaebrianza.it\0" +"vv.it\0" "go.id\0" -"ac.mu\0" -"ac.mw\0ac.ng\0" -"org.bh\0\xc3\xa5mot.no\0rana.no\0" -"org.bi\0" -"org.az\0belgorod.ru\0int.tt\0" -"ae.org\0" -"group.aero\0posts-and-telecommunications.museum\0" -"org.bm\0salerno.it\0" -"etnedal.no\0" -"org.bo\0*.hokkaido.jp\0donetsk.ua\0" -"ostroda.pl\0" -"org.br\0" -"org.bs\0" -"go.it\0h\xc3\xb8ylandet.no\0" -"zgorzelec.pl\0" -"org.bw\0" -"org.ci\0" -"org.bz\0vicenza.it\0resistance.museum\0" -"missile.museum\0" -"org.cn\0" -"org.co\0assassination.museum\0" +"!metro.tokyo.jp\0" +"microlight.aero\0arboretum.museum\0" +"fortworth.museum\0naamesjevuemie.no\0for-some.biz\0" +"indianapolis.museum\0research.museum\0www.ro\0" +"vegarshei.no\0nysa.pl\0mordovia.ru\0" +"venice.it\0freiburg.museum\0kragero.no\0" +"creation.museum\0tvedestrand.no\0verdal.no\0\xe5\x8f\xb0\xe6\xb9\xbe\0from-wy.com\0" +"go.it\0" +"hemne.no\0karmoy.no\0gets-it.net\0" +"naumburg.museum\0" +"!city.sendai.jp\0" +"civilisation.museum\0" +"mill.museum\0broke-it.net\0" +"!city.kitakyushu.jp\0" +"res.in\0" "go.jp\0" -"tv.it\0austrheim.no\0ac.pa\0" -"verbania.it\0" -"palace.museum\0" -"tmp.br\0int.vn\0" -"org.cu\0" -"paris.museum\0" -"media.aero\0hokksund.no\0" -"arts.museum\0gemological.museum\0hammerfest.no\0" -"k12.ny.us\0" -"org.dm\0hemsedal.no\0ringsaker.no\0sklep.pl\0" -"h\xc3\xa5.no\0cc.nj.us\0" -"rzeszow.pl\0" -"go.kr\0gjesdal.no\0ac.pr\0" -"org.ec\0" -"org.ee\0" -"media.museum\0" -"terni.it\0touch.museum\0zakopane.pl\0" -"journal.aero\0org.dz\0" -"incheon.kr\0" -"b\xc3\xa1hcavuotna.no\0" -"leksvik.no\0ulvik.no\0" -"plantation.museum\0" -"org.es\0loyalist.museum\0" -"gildesk\xc3\xa5l.no\0bytom.pl\0" -"bo.nordland.no\0" -"ambulance.aero\0iglesiascarbonia.it\0" -"tw.cn\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0" -"chocolate.museum\0" -"pittsburgh.museum\0" -"royrvik.no\0sor-odal.no\0ac.rs\0" -"kaluga.ru\0" -"org.ge\0erotica.hu\0ac.ru\0ac.se\0" -"org.gg\0leangaviika.no\0ac.rw\0" -"org.gh\0v\xc3\xa6r\xc3\xb8y.no\0" -"org.gi\0" -"jevnaker.no\0" -"org.gn\0tv.na\0leikanger.no\0" -"org.gp\0" -"ask\xc3\xb8y.no\0" -"org.gr\0wroc.pl\0" -"ad.jp\0" -"powiat.pl\0" -"tj\xc3\xb8me.no\0" -"coop.tt\0" -"ac.th\0" -"mragowo.pl\0ac.sz\0ac.tj\0" -"org.hk\0bo.it\0" +"pe.ca\0filatelia.museum\0imageandsound.museum\0\xc3\xb8ygarden.no\0" "philately.museum\0" -"org.hn\0" -"fet.no\0" -"axis.museum\0mansions.museum\0" -"wiki.br\0" -"org.ht\0" -"org.hu\0piacenza.it\0scotland.museum\0cpa.pro\0" -"ac.ug\0" -"coop.mv\0x.se\0" -"coop.mw\0ac.tz\0" -"bmd.br\0" -"org.im\0ralingen.no\0" -"org.in\0" -"cz.it\0lib.ia.us\0" -"org.iq\0" -"org.ir\0" -"org.is\0" -"nl.ca\0" -"org.je\0" -"childrensgarden.museum\0" -"kvits\xc3\xb8y.no\0go.pw\0" -"sokndal.no\0" -"ra.it\0grimstad.no\0" -"denmark.museum\0" -"ac.vn\0" -"ecn.br\0org.jo\0" -"bialystok.pl\0nj.us\0" -"z.bg\0bilbao.museum\0stargard.pl\0nic.tj\0" -"eisenbahn.museum\0" -"fe.it\0bryne.no\0vrn.ru\0" -"cc.wa.us\0" -"sex.hu\0skierva.no\0" -"org.kg\0" -"org.ki\0" -"org.km\0" -"org.kn\0khakassia.ru\0" -"org.kp\0" -"org.la\0" -"org.lb\0" -"org.lc\0" -"francaise.museum\0" -"panama.museum\0" -"rotorcraft.aero\0gateway.museum\0olkusz.pl\0" -"org.ky\0czeladz.pl\0ryazan.ru\0" -"org.kz\0" -"org.lk\0dyr\xc3\xb8y.no\0" -"raisa.no\0" -"dlugoleka.pl\0" -"org.ma\0" -"org.lr\0prochowice.pl\0" -"org.ls\0" -"org.me\0sandoy.no\0s\xc3\xb8r-varanger.no\0" -"org.lv\0" -"org.mg\0" -"tel\0go.th\0" -"org.ly\0" -"steam.museum\0go.tj\0" -"org.mk\0pasadena.museum\0jessheim.no\0lib.mn.us\0" -"org.ml\0" -"software.aero\0" -"org.mn\0" -"org.mo\0" -"*.fukui.jp\0decorativearts.museum\0" -"spy.museum\0org.na\0jorpeland.no\0" -"vads\xc3\xb8.no\0" -"org.mu\0building.museum\0gausdal.no\0" -"org.mv\0nannestad.no\0" -"org.mw\0org.ng\0go.ug\0" -"vr.it\0org.mx\0" -"org.my\0" -"go.tz\0" -"oppdal.no\0" -"uk.net\0" -"coop.km\0" -"*.kyoto.jp\0" -"sarpsborg.no\0org.nr\0" -"chernigov.ua\0" -"ha.cn\0no.com\0" -"space.museum\0" -"org.pa\0" -"*.ar\0" -"usgarden.museum\0" -"*.bd\0org.pe\0" -"*.au\0org.pf\0um.gov.pl\0" -"bio.br\0" -"org.ph\0" -"org.pk\0" -"fr\xc3\xa6na.no\0org.pl\0" -"nord-aurdal.no\0org.pn\0" -"*.bn\0handson.museum\0agrinet.tn\0" -"kviteseid.no\0" -"rel.ht\0virtuel.museum\0atm.pl\0org.pr\0" -"org.ps\0cherkassy.ua\0" -"org.pt\0wa.us\0" -"*.bt\0arendal.no\0magnitka.ru\0" -"depot.museum\0porsangu.no\0" -"laakesvuemie.no\0" -"sor-fron.no\0" +"eti.br\0galsa.no\0" +"gs.svalbard.no\0snasa.no\0from-ga.com\0" +"gda.pl\0" +"imperia.it\0" +"presse.km\0" +"philadelphiaarea.museum\0" +"go.kr\0" +"moskenes.no\0" +"!pref.aomori.jp\0" +"ringsaker.no\0" +"v\xc3\xa6r\xc3\xb8y.no\0" +"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0" +"gotdns.com\0" +"\xc3\xa5mli.no\0vefsn.no\0" +"notaires.km\0topology.museum\0" +"szex.hu\0leksvik.no\0" +"*.yamagata.jp\0siedlce.pl\0" +"newjersey.museum\0" +"no.it\0" +"moscow.museum\0travel\0is-a-teacher.com\0" +"ks.ua\0" +"from-ne.com\0" +"gs.va.no\0" +"y.se\0" +"is-a-designer.com\0" +"kaszuby.pl\0" +"youth.museum\0" +"presse.ml\0" +"macerata.it\0" +"alaska.museum\0bygland.no\0" +"tas.au\0bale.museum\0fam.pk\0" +"arts.museum\0" +"kr.it\0stavern.no\0palana.ru\0ks.us\0" +"vikna.no\0" +"loyalist.museum\0if.ua\0" +"parma.it\0" +"council.aero\0" +"schweiz.museum\0" +"club.aero\0reggio-calabria.it\0" +"a.bg\0" +"store.bb\0likes-pie.com\0" +"dr.na\0froya.no\0" +"town.museum\0" +"\xc3\xa5s.no\0" +"donetsk.ua\0" +"\xc3\xb8rsta.no\0dontexist.net\0" +"sx.cn\0" +"gdynia.pl\0" +"steinkjer.no\0" +"sc.ug\0" +"sc.tz\0" +"4.bg\0" +"glogow.pl\0" "heroy.more-og-romsdal.no\0" -"*.ck\0" -"!rakpetroleum.om\0" -"kr\xc3\xb8""dsherad.no\0mail.pl\0" -"mod.gi\0" -"gs.nl.no\0" -"mb.ca\0" -"pavia.it\0" -"civilisation.museum\0folldal.no\0" -"suli.hu\0" -"brumunddal.no\0" -"*.cy\0" -"pg.it\0troms\xc3\xb8.no\0" -"sex.pl\0y.se\0" -"org.ro\0" -"*.do\0" -"caserta.it\0org.sa\0" -"za.com\0halloffame.museum\0org.sb\0lviv.ua\0" -"mill.museum\0org.rs\0org.sc\0" -"org.sd\0" -"idv.hk\0!omanmobile.om\0org.ru\0org.se\0" -"langev\xc3\xa5g.no\0r\xc3\xa5holt.no\0starostwo.gov.pl\0" -"trani-andria-barletta.it\0org.sg\0" -"*.eg\0hvaler.no\0" -"*.ehime.jp\0" -"gmina.pl\0" -"bod\xc3\xb8.no\0org.sl\0" -"edu\0org.sn\0" -"org.so\0lib.wi.us\0" -"kommune.no\0" -"nome.pt\0" -"*.er\0namdalseid.no\0k12.wa.us\0" -"nm.cn\0org.st\0" -"*.et\0d\xc3\xb8nna.no\0" -"jewish.museum\0preservation.museum\0" -"slupsk.pl\0org.sy\0" -"art.br\0org.sz\0org.tj\0" -"ntr.br\0*.fj\0ski.no\0" -"*.fk\0rimini.it\0grajewo.pl\0" -"loppa.no\0" -"franziskaner.museum\0notteroy.no\0org.tn\0" -"org.to\0" -"nesoddtangen.no\0" -"org.ua\0" -"discovery.museum\0wloclawek.pl\0" -"lakas.hu\0org.tt\0" -"kurgan.ru\0" -"baltimore.museum\0nkz.ru\0org.tw\0" -"com.ac\0castle.museum\0" -"*.fukuoka.jp\0sandefjord.no\0varggat.no\0" -"com.af\0" -"com.ag\0" -"ato.br\0k12.nj.us\0" -"com.ai\0" -"city.hu\0oryol.ru\0" -"com.al\0nl.no\0mielno.pl\0cc.ma.us\0" -"org.vc\0" -"com.an\0g12.br\0" -"*.gt\0" -"*.gu\0" -"com.ba\0" -"com.bb\0americanart.museum\0" -"org.vi\0" +"corvette.museum\0sc.us\0" +"!british-library.uk\0" +"!pref.saitama.jp\0" +"muos\xc3\xa1t.no\0" +"go.pw\0" +"interactive.museum\0" +"mi.th\0" +"br\xc3\xb8nn\xc3\xb8ysund.no\0" +"lajolla.museum\0porsangu.no\0plo.ps\0bryansk.ru\0" +"pe.it\0amli.no\0" +"yamal.ru\0!parliament.uk\0" +"webhop.biz\0" +"cc.va.us\0" +"n\xc3\xa1vuotna.no\0" +"mi.us\0" +"dyn-o-saur.com\0" +"cc.sd.us\0" +"pe.kr\0nsk.ru\0b.se\0" +"aurland.no\0" +"gyeongbuk.kr\0" +"w.bg\0go.th\0" +"!promocion.ar\0laakesvuemie.no\0" +"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0go.tj\0lib.ky.us\0" +"k12.fl.us\0" +"foggia.it\0" +"sa.au\0juedisches.museum\0schoenbrunn.museum\0" +"trader.aero\0usgarden.museum\0selfip.biz\0" +"simbirsk.ru\0" +"lund.no\0" +"barcelona.museum\0" +"go.ug\0" +"granvin.no\0go.tz\0" +"portal.museum\0evenassi.no\0" +"judygarland.museum\0lancashire.museum\0lib.id.us\0" +"design.museum\0" +"walbrzych.pl\0" +"*.tokushima.jp\0" +"ibestad.no\0" +"aquarium.museum\0" +"sa.cr\0" +"erotika.hu\0" +"h\xc3\xa5.no\0" +"!pref.shimane.jp\0" +"costume.museum\0" +"hagebostad.no\0yuzhno-sakhalinsk.ru\0" +"mj\xc3\xb8ndalen.no\0" +"lind\xc3\xa5s.no\0" +"bergamo.it\0" +"sande.more-og-romsdal.no\0" +"priv.pl\0" +"exhibition.museum\0" +"from-pa.com\0" +"birthplace.museum\0" +"eigersund.no\0" +"vaapste.no\0!nic.tr\0dyndns-home.com\0" +"historichouses.museum\0" +"forsand.no\0" +"at.it\0" +"jolster.no\0" +"consulting.aero\0off.ai\0" +"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0" +"!pref.nagasaki.jp\0kr.ua\0!nhs.uk\0!nic.uk\0" +"design.aero\0" +"h\xc3\xb8yanger.no\0x.se\0" +"venezia.it\0" +"qld.au\0" +"fh.se\0" +"priv.no\0" +"lebesby.no\0" +"rendalen.no\0" +"lecce.it\0" +"bod\xc3\xb8.no\0" +"perso.ht\0farm.museum\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" +"gorizia.it\0" +"*.sapporo.jp\0" +"computer.museum\0lenvik.no\0" +"crafts.museum\0" +"columbus.museum\0chita.ru\0" +"ardal.no\0" +"lewismiller.museum\0station.museum\0" +"vologda.ru\0" +"lib.in.us\0" +"k12.dc.us\0lib.vt.us\0" +"id.ir\0" +"film.museum\0" +"genoa.it\0museet.museum\0forde.no\0" +"vaksdal.no\0" +"gs.jan-mayen.no\0" +"!pref.shiga.jp\0" +"magnitka.ru\0" +"us.com\0" +"gob.bo\0priv.me\0" +"3.bg\0" +"sciencehistory.museum\0" +"discovery.museum\0\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" +"tranby.no\0" +"andria-trani-barletta.it\0fg.it\0" +"sa.it\0" +"ck.ua\0from-ny.net\0" +"svizzera.museum\0larvik.no\0law.pro\0" +"sweden.museum\0" +"gob.cl\0" +"consulado.st\0cc.ks.us\0" +"nkz.ru\0" +"orskog.no\0" +"bc.ca\0" +"baidar.no\0" +"conference.aero\0" +"warmia.pl\0" +"bz.it\0" +"pd.it\0ot.it\0" +"selfip.info\0" +"gob.do\0ballangen.no\0" +"nm.cn\0" +"hoyanger.no\0" +"gob.ec\0nuoro.it\0id.lv\0" +"eun.eg\0" +"id.ly\0" +"salat.no\0" +"royken.no\0" +"!pref.hyogo.jp\0tysvar.no\0" +"!congresodelalengua3.ar\0" +"gob.es\0" +"iz.hr\0" +"avoues.fr\0" +"xj.cn\0masoy.no\0" +"sanfrancisco.museum\0cc.sc.us\0" +"office-on-the.net\0" +"a.se\0" +"v.bg\0!pref.ehime.jp\0" +"contemporary.museum\0" +"balsan.it\0" +"vt.it\0" +"fribourg.museum\0" +"*.kochi.jp\0" +"odo.br\0historisches.museum\0" +"caa.aero\0" +"!pref.ishikawa.jp\0" +"fredrikstad.no\0os.hordaland.no\0" +"fundacio.museum\0" +"bd.se\0" +"so.gov.pl\0" +"alta.no\0" +"selfip.com\0" +"freemasonry.museum\0" +"gob.hn\0" +"amusement.aero\0" +"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" +"s\xc3\xb8rfold.no\0" +"suwalki.pl\0cc.mi.us\0\xe4\xb8\xad\xe5\x9b\xbd\0" +"g\xc3\xa1ivuotna.no\0" +"bykle.no\0" +"culture.museum\0" +"\xc3\xa5krehamn.no\0" +"is-into-games.com\0" +"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0troandin.no\0" +"k12.la.us\0" +"hokksund.no\0\xe4\xb8\xad\xe5\x9c\x8b\0" +"pz.it\0is-an-actress.com\0" +"presse.ci\0gjerstad.no\0" +"qc.com\0chungbuk.kr\0" +"meraker.no\0" +"group.aero\0telekommunikation.museum\0skiptvet.no\0" +"portland.museum\0torsken.no\0" +"horology.museum\0" +"!pref.nara.jp\0" +"jamal.ru\0" +"fnd.br\0" +"barlettatraniandria.it\0frog.museum\0lib.ca.us\0" +"ketrzyn.pl\0" +"*.aichi.jp\0touch.museum\0" +"clinton.museum\0" +"\xe8\x87\xba\xe7\x81\xa3\0" +"vestnes.no\0" +"!pref.saga.jp\0rodoy.no\0" +"hemnes.no\0w.se\0" +"norddal.no\0ftpaccess.cc\0" "kunstsammlung.museum\0" +"hasvik.no\0" +"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" +"lib.al.us\0" +"la.us\0" +"!city.yokohama.jp\0" +"b\xc3\xa1jddar.no\0" +"siellak.no\0" +"jefferson.museum\0" +"h\xc3\xa1""bmer.no\0" +"presse.fr\0from-va.com\0" +"k12.ct.us\0" +"wildlife.museum\0" +"namsos.no\0id.us\0" +"koebenhavn.museum\0" +"from-oh.com\0" +"n\xc3\xb8tter\xc3\xb8y.no\0" +"boston.museum\0" +"gildeskal.no\0" +"gob.mx\0" +"notaires.fr\0berlin.museum\0" +"ethnology.museum\0" +"eid.no\0" +"lillesand.no\0" +"2.bg\0\xe5\x8f\xb0\xe7\x81\xa3\0" +"radoy.no\0" +"skj\xc3\xa5k.no\0" +"katowice.pl\0" +"hs.kr\0odessa.ua\0" +"slg.br\0" +"gob.pa\0" +"nl.ca\0vang.no\0" +"orsta.no\0gob.pe\0" +"university.museum\0" +"k12.wv.us\0" +"ci.it\0zagan.pl\0" +"pc.it\0gob.pk\0is-a-bruinsfan.org\0" +"airguard.museum\0" +"langev\xc3\xa5g.no\0" +"bjark\xc3\xb8y.no\0trondheim.no\0" +"giessen.museum\0" +"fetsund.no\0is-into-cars.com\0" +"turen.tn\0" +"home.dyndns.org\0" +"forli-cesena.it\0from-md.com\0" +"nationalfirearms.museum\0" +"k12.gu.us\0" +"aukra.no\0" +"osoyro.no\0" +"irc.pl\0" +"austevoll.no\0" +"orkdal.no\0" +"aeroclub.aero\0sr.gov.pl\0" +"marketplace.aero\0" +"endoftheinternet.org\0" +"\xe5\x85\xac\xe5\x8f\xb8.cn\0geelvinck.museum\0" +"tranibarlettaandria.it\0" +"u.bg\0is-a-linux-user.org\0" +"skjervoy.no\0vestre-slidre.no\0" +"bologna.it\0" +"vs.it\0vt.us\0" +"mil\0" +"oksnes.no\0" +"\xe5\x85\xac\xe5\x8f\xb8.hk\0perso.sn\0" +"aurskog-h\xc3\xb8land.no\0" +"blogdns.com\0" +"gjovik.no\0" +"chicago.museum\0" +"saskatchewan.museum\0" +"eu.com\0malvik.no\0from-ky.com\0" +"assedic.fr\0" +"pb.ao\0" +"fuettertdasnetz.de\0" +"*.fukushima.jp\0" +"or.at\0perso.tn\0" +"sv.it\0" +"dp.ua\0" +"monza-e-della-brianza.it\0" +"or.bi\0" +"sauda.no\0malopolska.pl\0" +"heimatunduhren.museum\0" +"can.br\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0" +"\xc3\xa5rdal.no\0" +"is-lost.org\0" +"family.museum\0" +"riik.ee\0" +"jor.br\0or.ci\0virtuel.museum\0" +"belgorod.ru\0" +"!mod.uk\0" +"svelvik.no\0" +"norfolk.museum\0" +"or.cr\0tran\xc3\xb8y.no\0" +"chuvashia.ru\0" +"insurance.aero\0surrey.museum\0" +"bjerkreim.no\0" +"ushuaia.museum\0askvoll.no\0" +"*.toyama.jp\0" +"bari.it\0" +"pc.pl\0mytis.ru\0" +"ar.it\0as.us\0" +"iris.arpa\0divttasvuotna.no\0arkhangelsk.ru\0nm.us\0" +"rep.kp\0" +"\xe7\xbd\x91\xe7\xb5\xa1.hk\0" +"leangaviika.no\0lindas.no\0" +"kr\xc3\xb8""dsherad.no\0spydeberg.no\0" +"urbino-pesaro.it\0paris.museum\0lib.me.us\0" +"ug.gov.pl\0" +"*.sendai.jp\0" +"iglesiascarbonia.it\0" +"from-mt.com\0from-nd.com\0" +"inderoy.no\0" +"from-ks.com\0groks-this.info\0" +"from.hr\0" +"hobby-site.org\0" +"decorativearts.museum\0" +"davvesiida.no\0" +"canada.museum\0" +"asn.lv\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0is-a-personaltrainer.com\0" +"h\xc3\xa1pmir.no\0endofinternet.net\0" +"erotica.hu\0" +"dontexist.org\0" +"chambagri.fr\0nome.pt\0" +"pordenone.it\0brussel.museum\0songdalen.no\0dielddanuorri.no\0ostroda.pl\0" +"sells-for-less.com\0" +"1.bg\0" +"bolt.hu\0" +"k12.nh.us\0" +"dlugoleka.pl\0" +"fe.it\0holt\xc3\xa5len.no\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0" +"ro.it\0andasuolo.no\0" +"vestvagoy.no\0" +"carraramassa.it\0" +"qh.cn\0" +"or.id\0nieruchomosci.pl\0" +"norilsk.ru\0cc.la.us\0readmyblog.org\0" +"press.aero\0nl.no\0" +"skedsmo.no\0olecko.pl\0" +"!omanmobile.om\0" +"ch.it\0stj\xc3\xb8rdalshalsen.no\0" +"asia\0or.it\0" +"aip.ee\0bodo.no\0" +"is-a-landscaper.com\0" +"is-a-libertarian.com\0" +"sande.m\xc3\xb8re-og-romsdal.no\0" +"cc.id.us\0" +"krasnoyarsk.ru\0" +"int.az\0" +"or.jp\0" +"piacenza.it\0" +"*.iwate.jp\0" +"int.bo\0" +"lib.mo.us\0forgot.her.name\0" +"sula.no\0k12.tx.us\0" +"ambulance.museum\0" +"lu.it\0me.it\0" +"!pref.yamanashi.jp\0" +"workinggroup.aero\0" +"int.ci\0ringebu.no\0sandefjord.no\0" +"zgrad.ru\0" +"gov.ac\0" +"is-an-artist.com\0" +"gov.ae\0or.kr\0" +"gov.af\0alto-adige.it\0asmatart.museum\0rochester.museum\0budejju.no\0" +"srv.br\0int.co\0" +"astronomy.museum\0" +"t.bg\0" +"gov.al\0reggio-emilia.it\0" +"medical.museum\0k12.ri.us\0" +"!retina.ar\0gov.ba\0askoy.no\0" +"gov.bb\0vr.it\0" +"gov.as\0" +"gov.bf\0bilbao.museum\0kms.ru\0" +"gov.bh\0gjerdrum.no\0sondre-land.no\0" +"\xd9\x82\xd8\xb7\xd8\xb1\0" +"gov.az\0city.hu\0" +"school.museum\0" +"gov.bm\0net\0rissa.no\0" +"aeroport.fr\0mad.museum\0" +"gov.bo\0hareid.no\0ostrowiec.pl\0" +"*.kyoto.jp\0" +"gov.br\0" +"gov.bs\0hamburg.museum\0" +"gov.bt\0gov.cd\0or.na\0" +"from-sd.com\0" +"te.it\0historicalsociety.museum\0" +"or.mu\0artgallery.museum\0" +"gov.by\0stalbans.museum\0jar.ru\0" +"gov.bz\0" +"campidano-medio.it\0" +"gov.cl\0missile.museum\0" +"gov.cm\0shacknet.nu\0" +"gov.cn\0" +"gov.co\0" +"v\xc3\xa5gan.no\0" +"posts-and-telecommunications.museum\0" +"cng.br\0frosta.no\0" +"andriabarlettatrani.it\0kvanangen.no\0" +"gov.cu\0" +"sigdal.no\0" +"gov.cx\0from-il.com\0" +"omaha.museum\0" +"gov.dm\0is-a-hard-worker.com\0" +"\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0" +"gov.do\0*.gifu.jp\0vladikavkaz.ru\0" +"sor-varanger.no\0" +"gov.ec\0cc.vt.us\0" +"gov.ee\0*.wakayama.jp\0kvafjord.no\0" +"gov.eg\0" +"health.vn\0" +"gov.dz\0zarow.pl\0" +"starostwo.gov.pl\0" +"from-me.org\0" +"cambridge.museum\0" +"jeonbuk.kr\0wroc.pl\0" +"md.ci\0ba.it\0aq.it\0labor.museum\0ar.us\0from-ri.com\0" +"wa.au\0" +"in-addr.arpa\0" +"yn.cn\0" +"vindafjord.no\0" +"andebu.no\0" +"or.pw\0u.se\0" +"ascoli-piceno.it\0" +"act.gov.au\0" +"pharmaciens.km\0balsfjord.no\0" +"barreau.bj\0soc.lk\0from-mo.com\0" +"!city.okayama.jp\0lib.md.us\0" +"from-ia.com\0" +"*.osaka.jp\0" +"gouv.fr\0gov.ge\0philadelphia.museum\0" +"saintlouis.museum\0" +"gov.gg\0wy.us\0" +"com.ac\0gov.gh\0ulvik.no\0" +"gov.gi\0" +"luzern.museum\0" +"com.af\0int.is\0" +"com.ag\0gs.oslo.no\0" +"com.ai\0gov.gn\0" +"historyofscience.museum\0" +"com.al\0" +"gov.gr\0" +"com.an\0" +"com.ba\0*.fukui.jp\0" +"com.bb\0" +"minnesota.museum\0lib.wi.us\0" +"is-gone.com\0" +"realestate.pl\0" +"gov.hk\0" "com.aw\0" -"flight.aero\0com.bh\0lib.mo.us\0org.vn\0" -"com.bi\0adygeya.ru\0" +"com.bh\0her\xc3\xb8y.nordland.no\0" +"com.bi\0aoste.it\0" "com.az\0" -"art.dz\0" -"com.bm\0" -"dr\xc3\xb8""bak.no\0" -"com.bo\0isla.pr\0" -"com.br\0" -"com.bs\0ustka.pl\0kuban.ru\0" -"press.aero\0" -"vs.it\0" -"meloy.no\0" -"*.il\0ulm.museum\0" -"com.by\0com.ci\0genoa.it\0" -"com.bz\0sn.cn\0" -"lib.or.us\0" -"santafe.museum\0org.ws\0" +"hyllestad.no\0varggat.no\0cc.as.us\0" +"com.bm\0amur.ru\0cc.nm.us\0" +"snillfjord.no\0pub.sa\0" +"com.bo\0" +"gov.ie\0" +"com.br\0gouv.ht\0" +"com.bs\0" +"com.bt\0crotone.it\0int.la\0sandnessj\xc3\xb8""en.no\0" +"0.bg\0*.sch.uk\0" +"or.th\0" +"gov.im\0verbania.it\0" +"com.by\0com.ci\0gov.in\0k12.nm.us\0" +"com.bz\0michigan.museum\0" +"*.nagasaki.jp\0elverum.no\0" +"gov.iq\0rn.it\0finland.museum\0manchester.museum\0" }; QT_END_NAMESPACE diff --git a/src/corelib/io/qurltlds_p.h.INFO b/src/corelib/io/qurltlds_p.h.INFO index 5781c2c..44f6608 100644 --- a/src/corelib/io/qurltlds_p.h.INFO +++ b/src/corelib/io/qurltlds_p.h.INFO @@ -9,8 +9,8 @@ Those arrays in qurltlds_p.h are derived from the Public Suffix List ([2]), which was originally provided by Jo Hermans . -The file qurltlds_p.h was last generated Friday, -November 19th 15:24 2010. +The file qurltlds_p.h was last generated Wednesday, +November 9th 12:20 2011 CET. ---- [1] list: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1 diff --git a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp index d1c376a..0125fc0 100644 --- a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp +++ b/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp @@ -417,6 +417,12 @@ void tst_QNetworkCookieJar::effectiveTLDs_data() QTest::newRow("yes7") << "org.ws" << true; QTest::newRow("yes8") << "co.uk" << true; QTest::newRow("yes9") << "wallonie.museum" << true; + QTest::newRow("yes10") << "dyndns-at-home.com" << true; + QTest::newRow("yes11") << "forgot.her.name" << true; + QTest::newRow("yes12") << "is-a-llama.com" << true; + QTest::newRow("yes13") << "gov.uk" << true; + QTest::newRow("yes14") << "manchester.museum" << true; + QTest::newRow("yes15") << "gov.ir" << true; QTest::newRow("no1") << "anything.com" << false; QTest::newRow("no2") << "anything.de" << false; -- cgit v0.12 From 68f32a3e4f447f86cad7f1fddbd566227a7bd00d Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Thu, 10 Nov 2011 10:59:15 +0100 Subject: Update supported platforms and remove commercial page. The supported platforms page conatined a lot of platforms that are untested for Qt 4.8, so those are removed. The platform notes had not been updated since 2009 and were therefore severely outdated. Nokia does not provide a commercial edition of Qt anymore. A user can find the link to purchasing Qt through the Qt Developer Network at http://developer.qt.nokia.com --- doc/src/development/developing-with-qt.qdoc | 42 +- doc/src/legal/commercialeditions.qdoc | 82 --- doc/src/platforms/compiler-notes.qdoc | 44 -- doc/src/platforms/platform-notes-rtos.qdoc | 368 ---------- doc/src/platforms/platform-notes.qdoc | 1000 --------------------------- doc/src/platforms/platform-notes.qdocinc | 0 doc/src/platforms/supported-platforms.qdoc | 413 +---------- doc/src/qt-webpages.qdoc | 4 - 8 files changed, 36 insertions(+), 1917 deletions(-) delete mode 100644 doc/src/legal/commercialeditions.qdoc delete mode 100644 doc/src/platforms/compiler-notes.qdoc delete mode 100644 doc/src/platforms/platform-notes-rtos.qdoc delete mode 100644 doc/src/platforms/platform-notes.qdoc delete mode 100644 doc/src/platforms/platform-notes.qdocinc diff --git a/doc/src/development/developing-with-qt.qdoc b/doc/src/development/developing-with-qt.qdoc index 59aae83..2f56151 100644 --- a/doc/src/development/developing-with-qt.qdoc +++ b/doc/src/development/developing-with-qt.qdoc @@ -75,39 +75,37 @@ \table \row - \o - \list \o \l {Calling Qt Functions From Unix Signal Handlers} - \o \l {Compiler Notes} + \o Workaround for using Unix signal handlers. + \row \o \l {Developing Qt Applications for Mac OS X} - \o \l {Known Issues} - \o \l {Platform and Compiler Notes} - \o \l {Platform and Compiler Notes - Symbian} - \o \l {ActiveX in Qt} - \o \l {Qt for Embedded Linux Classes} - \o \l {Qt for Embedded Platforms} - \o \l {Qt for Mac OS X - Specific Issues} - \o \l {Qt is Mac OS X Native} - \o \l {Supported Platforms} - \o \l {The qtmain Library} - \o \l {Window System Specific Notes} - \endlist - \o - \list - \o Workaround to make it work. - \o Information about the C++ compilers and tools used to build Qt. \o Information for developing Qt applications for Mac OS X + \row + \o \l {Known Issues} \o A summary of known issues in this Qt version at the time of release. - \o Information about the platforms on which Qt can be used. - \o Information about the state of support for the Symbian platform. + \row + \o \l {ActiveX in Qt} \o Qt API's for using ActiveX controls, servers, and COM. + \row + \o \l {Qt for Embedded Linux Classes} \o Classes that are specific to Qt for Embedded Linux. + \row + \o \l {Qt for Embedded Platforms} \o Documents related to Qt for Embedded Platforms. + \row + \o \l {Qt for Mac OS X - Specific Issues} \o A description of issues with Qt that are specific to Mac OS X. + \row + \o \l {Qt is Mac OS X Native} \o An explanation of Qt's native features on Mac OS X. + \row + \o \l {Supported Platforms} \o The platforms supported by Nokia for Qt. + \row + \o \l {The qtmain Library} \o Describes the use and license of the qtmain helper library. + \row + \o \l {Window System Specific Notes} \o Collections of notes about Qt implementations on different window systems. - \endlist \endtable */ diff --git a/doc/src/legal/commercialeditions.qdoc b/doc/src/legal/commercialeditions.qdoc deleted file mode 100644 index 9d7ac6b..0000000 --- a/doc/src/legal/commercialeditions.qdoc +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page commercialedition.html - \title Qt Commercial Edition - \ingroup licensing - \brief Information about the license and features of the Commercial Edition. - - Qt can be used to develop closed source software if you obtain a commercial - license. - - If you want to develop Free or Open Source software for release using a recognized - Open Source license, you can use the \l{Open Source Versions of Qt}. - - The following table is a summary of the licenses under which Qt is made available. - - \table - \row \o \bold{Qt Commercial Developer License} - \o The Qt Commercial Developer License is the appropriate version to use for the - development of proprietary and/or commercial software where the developer does not - wish to share or distribute any source code of the Qt libraries or otherwise comply - with the terms of the \l{GNU Lesser General Public License (LGPL)}{GNU Lesser General - Public License version 2.1} or \l{GNU General Public License (GPL)}{GNU GPL version - 3.0}. - \row \o \bold{Qt GNU LGPL v. 2.1} - \o This version of Qt is appropriate for the development of Qt applications - (proprietary or open source) provided you can comply with the terms and conditions - contained in the \l{GNU Lesser General Public License (LGPL)}{GNU LGPL version 2.1}. - \row \o \bold{Qt GNU GPL v. 3.0} - \o This version of Qt is appropriate for the development of Qt applications where - you wish to use such applications in combination with software subject to the terms - of the GNU General Public License version 3.0 or where you are otherwise willing to - comply with the terms of the - \l{GNU General Public License (GPL)}{GNU General Public License version 3.0}. - \endtable - - Please see the \l{Supported Platforms}{list of supported - platforms} for up-to-date information about the various platforms - and compilers that Qt supports. - - On the Qt Web site, you can find a - \l{Qt Licensing Overview} and information on \l{Qt License Pricing} - for commercial editions of Qt and other Qt-related products. - - \section1 Purchasing and Sales Information - - To purchase, please visit the \l{How to Order}{online order form}. - - For further information and assistance, please contact the Qt sales team - via one of the following channels: - - \table - \row \o Web: \o \bold{http://qt.nokia.com/contact} - \row \o Phone, U.S. office (for sales in North America): \o \bold{1-408-220-9020} - \row \o Phone, Norway office (for sales in the rest of the world): \o \bold{+47 21 60 48 00} - \endtable -*/ diff --git a/doc/src/platforms/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc deleted file mode 100644 index be149a9..0000000 --- a/doc/src/platforms/compiler-notes.qdoc +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page compiler-notes.html - \ingroup platform-specific - \title Compiler Notes - \brief Information about the C++ compilers and tools used to build Qt. - - This page used to contain information about the C++ compilers and tools - used to build Qt on various platforms. This information is now maintained - in the \l{Platform and Compiler Notes} for each platform. - - Please refer to the \l{Supported Platforms} page for information about the - status of each platform. - - If you have anything to add to this list or any of the platform or - compiler-specific pages, please submit it via the \l{Bug Report Form} - or through the \l{Public Qt Repository}. -*/ diff --git a/doc/src/platforms/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc deleted file mode 100644 index dd72016..0000000 --- a/doc/src/platforms/platform-notes-rtos.qdoc +++ /dev/null @@ -1,368 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page platform-notes-vxworks.html - \title Platform and Compiler Notes - VxWorks - \contentspage Platform and Compiler Notes - \target VxWorks - - \note VxWorks is a community supported platform. See the - \l{Supported Platforms} page for more information. - - This page contains information about the Qt for VxWorks port. More - information about the combinations of platforms and compilers supported - by Qt can be found on the \l{Supported Platforms} page. - - \tableofcontents - - \section1 Supported Versions - - Qt has been tested on WindRiver VxWorks 6.7 in kernel mode using the - vendor supplied GCC compiler, targetting both the x86 simulator - (simpentium) and Power-PC devices (ppc). - VxWorks' RTP mode is currently not supported. - - \section1 Limitations - - The VxWorks kernel has an optional POSIX compatibility layer, but this - layer does not implement all POSIX functionality needed for a complete - Qt port. - - \table - \header \o Function \o Notes - \row \o QProcess - \o Not available - VxWorks has no concept of processes. - \row \o QSharedMemory - \o Not available - VxWorks has only a global, flat address space. - \row \o QSystemSemaphore - \o Not available - VxWorks has no concept of processes. - \row \o QLibrary - \o QLibrary is only a small stub to make it possible to build - static plugins. - \row \o QCoreApplication - \o Can only be instantiated once. Qt's Q(CoreE)Application is - tightly coupled to one address space and process, while VxWorks - only supports one global address space and has no concept of - processes. - \row \o Phonon - \o There is no standard audio backend, which could be integrated into Phonon. - \row \o Qt3Support - \o The Qt3Support library is not available on VxWorks. - - \endtable - - \section1 Build Instructions - - Qt for VxWorks needs to be \l{Cross-Compiling Qt for Embedded Linux - Applications}{cross-compiled} on a Linux host. \c configure and \c make - the build like you would with a standard \l{Cross-Compiling Qt for - Embedded Linux Applications}{embedded Linux cross build}. Building the - VxWorks simulator would be done like this: - - \code - /configure -xplatform unsupported/vxworks-simpentium-g++ -embedded vxworks -exceptions -no-gfx-linuxfb -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty - make - \endcode - - \list - \o \c{-xplatform unsupported/qws/vxworks-simpentium-g++} - selects the x86 simulator mkspec for VxWorks - \o \c{-embedded vxworks} - builds the embedded version of Qt and sets the architecture to VxWorks - \o \c{-exceptions} - see General Notes below - \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp}, \c{-no-mouse-pc} and \c{-no-kbd-tty} are Linux specific and won't work on VxWorks - \endlist - - \section1 General Notes - - \list - - \o Configuring with \c{-exceptions} is necessary, because the VxWorks - 6.7 g++ headers require exceptions to be enabled when compiling C++ - code. - - \o Configure's \c{-xplatform} can be any of - \c{unsupported/vxworks-(simpentium|ppc)-(g++|dcc)}, but \c{dcc} - (WindRiver DIAB compiler) has not yet tested been tested with Qt 4.6 and - VxWorks 6.7. - - \o Building shared libraries with \c{-shared} (the default) doesn't - really build shared libraries, like e.g. on Linux, since these are not - supported by VxWorks. Instead, qmake will created partially linked - objects, that can be loaded at runtime with \c{ld}. - - \o Creating static builds with \c{-static} is fully supported. - - \o "Munching" (generating constructors/destructors for static C++ - objects) is done automatically by a special qmake extension (for both - shared libraries and executables) - - \o VxWorks does not have a file system layer, but the low level storage - drivers have to supply a file system like interface to the applications. - Since each driver implements a different subset of the functionality - supported by this interface, Qt's file system auto-tests show wildly - differing results running on different "file systems". The best results - can be achieved when running on a (writable) NFS mount, since that - provides the most Unix-ish interface. The worst results come from the - FTP file system driver, which may crash when accessed by a - \c{QFileInfo}. - - \o Keep in mind that VxWorks doesn't call your \c{main()} function with - the standard \c{argc}/\c{argv} parameters. So either add a special - \c{vxmain()} function or use a tool like \c{callmain} to translate - VxWorks' commandline arguments to an \c{argc}/\c{argv} array. - - \o Some example will fail to build, due to some missing dependencies - (e.g. shared memory) - this will be fixed in a later release. - - \endlist -*/ - -/*! - \page platform-notes-qnx.html - \title Platform and Compiler Notes - QNX - \contentspage Platform and Compiler Notes - \target QNX - - \note QNX is a community supported platform. See the - \l{Supported Platforms} page for more information. - - This page contains information about the Qt for QNX port. More - information about the combinations of platforms and compilers supported - by Qt can be found on the \l{Supported Platforms} page. - - Note that Qt for QNX is currently based on \l{Qt for Embedded Linux}, which - contains its own windowing system. Mixing QNX's Photon environment with - Qt for QNX is currently not possible. Building Qt for QNX with Photon's - X11 embedded server is not recommended due to missing support for X11 extensions, - resulting in poor rendering quality. - - Qt for QNX contains screen and input drivers based on QNX's - \c devi-hid and \c io-display. For more information, check the class documentation - for QQnxScreen, QWSQnxKeyboardHandler and QQnxMouseHandler. See the - \l{Porting Qt for Embedded Linux to a New Architecture} document for information - on how to add custom screen or input drivers. - - \tableofcontents - - \section1 Supported Versions - - Qt has been tested on QNX 6.5 on i386, ARM/ARM-v7 and PowerPC targets with QNX's default - gcc compiler. - - \section1 Limitations - - Some of Qt's functionality is currently not available on QNX: - - \table - \header \o Function \o Notes - \row \o Phonon - \o There is no standard audio backend, which could be integrated into Phonon. - \row \o QtMultimedia - \o There is no standard backend, which could be integrated into QtMultimedia. - \row \o QtDBus - \o The the QtDBus library is not available on QNX. - \row \o Qt3Support - \o The Qt3Support library is not available on QNX. - \endtable - - \section1 Build Instructions - - Qt for QNX needs to be built either on a QNX system, or \l{Cross-Compiling Qt - for Embedded Linux Applications}{cross-compiled} on a Linux host. In either - case, The QNX Software Development Platform must be installed. - - Example configure line for cross-compiling Qt for QNX on a Linux host for an - i386 QNX target: - - \code - configure -xplatform unsupported/qws/qnx-i386-g++ -embedded x86 -no-gfx-linuxfb -no-mouse-linuxtp -no-kbd-tty -no-qt3support -qt-mouse-qnx -qt-kbd-qnx -qt-gfx-qnx -depths 16,24,32,generic -no-exceptions - \endcode - - \list - \o \c{-xplatform unsupported/qws/qnx-i386-g++} - selects the i386-g++ mkspec for QNX - \o \c{-embedded x86} - builds the embedded version of Qt and sets the architecture to i386 - \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp} and \c{-no-kbd-tty} are Linux specific and won't work on QNX - \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on QNX - \o \c{-no-exceptions} - reduces the size of the library by disabling exception support - \o \c{-qt-mouse-qnx} - enables the \c{devi-hid} based mouse driver - \o \c{-qt-kbd-qnx} - enables the \c{devi-hid} based keyboard driver - \o \c{-qt-gfx-qnx} - enables the \c{io-graphics} based screen driver - \o \c{-depths 16,24,32,generic} - enables all modes supported by the QNX screen driver - \endlist - - \section1 General Notes - - \list - \o To enable the QNX screen and input drivers, \c{io-display} needs to be - up and running. The \c devi-hid based Qt input drivers require \c devi-hid to run - in resource mode without Photon support. To enable a standard mouse and keyboard - combination, run \c devi-hid as follows: \c{/usr/photon/bin/devi-hid -Pr kbd mouse}. - Note that your current shell will not accept keyboard and mouse input anymore after - running that command, so run it either from a script that launches a Qt application - afterwards, or make sure to have remote login available to launch a Qt application. - In addition, the \c QWS_DISPLAY, \c QWS_MOUSE_PROTO and \c QWS_KEYBOARD environment - variables should all be set to \c{qnx} before running a Qt application. - - \o The 3rd party TIFF library currently doesn't build due to the missing \c inflateSync - symbol from QNX's \c{libz.so.2}. Workarounds would be to manually replace QNX's libz - with a newer version, or disable the TIFF plugin entierly by appending - \c{QT_CONFIG += no-tiff} to \c{.qmake.cache} after configuring Qt. - - \o Some of the tools, examples and demos do not compile due to dependencies on classes - that are not available on QNX. - \endlist - - \section1 Platform Regressions - - Qt for QNX's behavior is mostly identical with \l{Qt for Embedded Linux}. However, - some regressions were spotted in QDateTime computation around year 0 and year 1970, - which have been tracked back to faulty time zone data on some QNX versions. - - QString::localeAwareCompare() only works for C locale. - - QTranslator's default locale-based fallback mechanism doesn't work. - - QSystemSemaphore: Due to POSIX semaphores limitations, the semaphore operations aren't - automatically undone when the process terminates. This potentially may lead to unexpected - lock-ups in applications which does use the SysV semaphores behavior. -*/ - -/*! - \page platform-notes-integrity.html - \title Platform Notes - INTEGRITY - \contentspage Platform Notes - \target INTEGRITY - - \note INTEGRITY is a community supported platform. See the - \l{Supported Platforms} page for more information. - - This page contains information about the Qt for INTEGRITY port. More - information about the combinations of platforms and compilers supported - by Qt can be found on the \l{Supported Platforms} page. - - Note that Qt for INTEGRITY is currently based on \l{Qt for Embedded Linux}, - which contains its own windowing system. - - Qt for INTEGRITY contains experimental screen and input drivers based on the - gh_FB Framebuffer API for graphics, a Connection-based mouse and keyboard - support. For information about these drivers, please refer to Green Hills - Software standard support. - - \tableofcontents - - \section1 Supported Versions - - Qt has been tested on INTEGRITY 10 on various PowerPC, ARM and x86 targets. - On some platforms a native graphics FrameBuffer driver is available and has - then been used for testing. On all other platforms, the default FrameBuffer - VNC driver is used. - - \section1 Limitations - - Some of Qt's functionality is currently not available on INTEGRITY: - - \table - \header \o Function \o Notes - \row \o QProcess - \o Not implemented. Volunteers welcome. - \row \o QSharedMemory - \o Not available - INTEGRITY doesn't support SYSV style shared memory. - \row \o QSystemSemaphore - \o Not available - INTEGRITY doesn't support SYSV style system semaphores. - \row \o QWS Multi Process - \o QT_NO_QWS_MULTIPROCESS is always on due to missing shared memory support. - \row \o Phonon - \o There is no standard audio backend. - \row \o Qt3Support - \o The Qt3Support library is not available on INTEGRITY. - \row \o QtScript - \o Not available - INTEGRITY's mmap() doesn't support allocating memory. - \endtable - - \section1 Build Instructions - - Qt for INTEGRITY can be built on either a Linux or Windows (with cygwin) host. - In both cases, a standard installation of INTEGRITY is required, with the - addition of the FrameBuffer API. - - Example configure line for cross-compiling Qt for INTEGRITY for an - ARM INTEGRITY target: - - \code - ./configure --hostprefix=$PWD -embedded integrity -xplatform unsupported/qws/integrity-arm-cxarm -static -qt-kbd-integrity -qt-mouse-integrity -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty -qt-gfx-integrityfb -no-qt3support -no-gfx-linuxfb -no-glib -no-openssl -no-largefile -little-endian -arch integrity -prefix / -opensource -no-feature-QWS_MULTIPROCESS -no-feature-SHAREDMEMORY -no-feature-PROCESS -no-feature-SYSTEMSEMAPHORE -no-feature-PRINTER -no-feature-QWS_QPF2 -no-libtiff -no-exceptions -no-scripttools - \endcode - - \list - \o \c{--hostprefix=$PWD} - specifies the current directory as the base source for Qt - \o \c{-arch integrity} - sets the architecture to INTEGRITY (for atomic operations) - \o \c{-embedded integrity} - builds the embedded version of Qt and sets the architecture to INTEGRITY - \o \c{-xplatform unsupported/qws/integrity-arm-cxarm} - selects the arm-cxarm mkspec for INTEGRITY - \o \c{-static} - specifies a static build of Qt - \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp}, \c{-no-mouse-pc} and \c{-no-kbd-tty} are Linux specific and won't work on INTEGRITY - \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on INTEGRITY - \o \c{-no-exceptions} - reduces the size of the library by disabling exception support - \o \c{-no-openssl} - disable support for OpenSSL - \o \c(-no-libtiff} - disable support for libTIFF - \o \c{-no-glib} - disable support for unavailable Glib - \o \c{-no-largefile} - disable support for large (> 2TB) files - \o \c{-no-scripttools} - disable support for QtScript tools - \o \c{-qt-gfx-integrity} - enables the experimental gh_FB based display driver - \o \c{-qt-mouse-integrity} - enables the experimental Connection-based mouse driver - \o \c{-qt-kbd-integrity} - enables the experimental Connection-based keyboard driver - \endlist - - The above script will generate MULTI .gpj Project files, not Makefiles. The - main benefit of using these project files is automatic dependency checking, - but this also provides an organization known to INTEGRITY customers. - For Qt libraries, the top-level file is projects.gpj. - - \section1 General Notes - - \list - \o Before you run the above configure line, you may want to modify the values - of INTEGRITY_DIR and INTEGRITY_BSP in unsupported/qws/integrity-arm-cxarm/qmake.conf. - If you do not do this, you will have to modify the resulting generated projects.gpj - - \o Compilation of native preprocessing tools (moc, rcc, uic) is not automatic. From - a Linux shell or a MingWin shell, you can run the following command to compile these tools : - \code - cd src/tools/bootstrap && make && cd ../rcc && make && cd ../moc && make && cd ../uic && make && cd ../../.. - \endcode - - \o GIF and TIFF support are currently not enabled. - - \o Default .int files are generated. You may want to modify the amount of heap assigned - to each example by modifying the HeapSize declaration in the specific example .int file. - - \o Some of the tools, examples and demos do not compile due to dependencies on QProcess - or other classes that are not available on INTEGRITY. - - \endlist - - \section1 Platform Regressions - -*/ diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc deleted file mode 100644 index f177cd7..0000000 --- a/doc/src/platforms/platform-notes.qdoc +++ /dev/null @@ -1,1000 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \group platform-specific - \title Platform-Specific Documentation - \brief Documents describing platform-specific features of Qt. - - These documents describe platform-specific features provided by Qt, and - discuss issues related to particular platforms and environments. - - \generatelist{related} -*/ - -/*! - \page platform-notes.html - \ingroup platform-specific - \title Platform and Compiler Notes - \brief Information about the platforms on which Qt can be used. - - This page contains information about the platforms Qt is currently known - to run on, with links to platform-specific notes, including any known bugs - or incompatibilities. - - Information about the combinations of platforms and compilers - supported by Qt can be found on the \l{Supported Platforms} page. - - \list - \o \l{Platform and Compiler Notes - X11} - \tableofcontents{1 Platform and Compiler Notes - X11} - \o \l{Platform and Compiler Notes - Windows} - \tableofcontents{1 Platform and Compiler Notes - Windows} - \o \l{Platform and Compiler Notes - Mac OS X} - \tableofcontents{1 Platform and Compiler Notes - Mac OS X} - \o \l{Platform and Compiler Notes - Symbian} - \tableofcontents{1 Platform and Compiler Notes - Symbian} - \o \l{Platform and Compiler Notes - Embedded Linux} - \tableofcontents{1 Platform and Compiler Notes - Embedded Linux} - \o \l{Platform and Compiler Notes - Windows CE} - \tableofcontents{1 Platform and Compiler Notes - Windows CE} - \o \l{Platform and Compiler Notes - QNX} - \tableofcontents{1 Platform and Compiler Notes - QNX} - \o \l{Platform and Compiler Notes - VxWorks} - \tableofcontents{1 Platform and Compiler Notes - VxWorks} - \endlist - - \section1 General Compiler Notes - - \section2 Supported Features - - Not all compilers used to build Qt are able to compile all modules. The following table - shows the compiler support for five modules that are not uniformly available for all - platforms and compilers. - - \table - \header \o Compiler \o{5,1} Features - \header \o \o Concurrent \o XmlPatterns \o WebKit(*) \o CLucene \o Phonon - \row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X} - \row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} - \row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X} - \row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X} - \row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} - \row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X} - \row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} - \row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X} - \row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} - \endtable - - * WebKit is only supported as a dynamically built library. Static linkage is not supported. - - \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64) - - This compiler is known to miscompile some parts of Qt when doing a - release build. There are several workarounds: - - \list 1 - \o Use a debug build instead. - \o For each miscompilation encountered, recompile the file, removing the \c{-O2} option. - \o Add \c{-fno-gcse} to the - \l{qmake Variable Reference#QMAKE_CXXFLAGS_RELEASE}{QMAKE_CXXFLAGS_RELEASE} qmake - variable. - \endlist - - \section2 GCC 4.0.0 - - The released package of the compiler has some bugs that lead to - miscompilations. We recommend using GCC 4.0.1 or later, or to use - a recent CVS snapshot of the GCC 4.0 branch. The version of GCC - 4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work - with Qt for Mac OS X. - - \section2 Intel C++ Compiler - - Qt supports the Intel C++ compiler on both Windows and Linux. - However, there are a few issues on Linux; see - \l{Platform and Compiler Notes - X11#Intel C++ Compiler for Linux}{Intel C++ Compiler for Linux} - for details. - - \section1 Feedback and Corrections - - If you have anything to add to this list or any of the platform or - compiler-specific pages, please submit it via the \l{Bug Report Form} - or through the \l{Public Qt Repository}. -*/ - -/*! - \page platform-notes-x11.html - \title Platform and Compiler Notes - X11 - \contentspage Platform and Compiler Notes - - This page contains information about the X11 platforms Qt is currently - known to run on, with links to platform-specific notes. More information - about the combinations of platforms and compilers supported by Qt can be - found on the \l{Supported Platforms} page. - - \tableofcontents - - \target AIX - \section1 AIX - 5.2 - - Qt has been tested on AIX 5.2, using the xlC compiler. - - \table - \header \o Compiler \o Notes - \row \o xlC - \o If Qt is built correctly but all symbols are reported to be missing - when you link an application, your makeC++SharedLib script might be out - of date. Make sure you have the latest version from the - \l{http://www-306.ibm.com/software/awdtools/vacpp/support/}{IBM website}. - \row \o GCC - \o We have tested earlier versions of Qt 4 successfully with GCC version - 3.3 and above. Some versions of GCC may fail to link Qt with a "TOC overflow" - message. - Fix this by upgrading to the latest maintenance release of the dynamic - linker. On AIX this is bos.rte.bind_cmds.4.1.5.3 or later. - Some versions of GCC may fail to build Qt with STL and large-file support - enabled, due to - \l{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9551}{a bug in GCC}. - Fix this by upgrading to the latest maintenance release of the compiler. - It is also possible to work around this problem by running configure with - either \c{-no-stl} or \c{-no-largefile}. - \endtable - - \section2 IBM xlC - - The makeC++SharedLib utility must be in your PATH and be up to date to - build shared libraries. From IBM's - \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX} - Redbook: - - \list - \o "The second step is to use the makeC++SharedLib command to create the - shared object. The command has many optional arguments, but in its - simplest form, can be used as follows:" - \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1 - \o "The full path name to the command is not required; however, to avoid - this, you will have to add the directory in which it is located to - your PATH environment variable. The command is located in the - /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX, - Version 5 compiler." - \endlist - - \section2 VisualAge C++ for AIX, Version 6.0 - - Make sure you have the - \l{http://www-1.ibm.com/support/search.wss?rs=32&tc=SSEP5D&dc=D400}{latest upgrades} - installed. - - \target FreeBSD - \section1 FreeBSD - 6.0-RELEASE - - \note FreeBSD is a community supported platform. See the - \l{Supported Platforms} page for more information. - - The system compiler on FreeBSD 4.x is GCC 2.95.4, which is not - officially supported by Qt 4. We develop using and recommend - ports/lang/gcc34. You will need to run configure with the - \c{-platform freebsd-g++34} arguments. Optionally, you may use - ports/lang/icc. - - The system compiler on FreeBSD 5.x and 6.x is GCC 3.4.4, which should be - sufficient to build Qt. You do not need to add any special arguments when - running configure. Optionally, you may use ports/lang/icc. - - Note that we do not actively test FreeBSD 4.x and 5.x. Our developers - migrated to 6.x after the Qt 4 launch. FreeBSD-CURRENT is not supported. - - \section1 HP-UX - - Qt supports HP-UX on both PA-RISC and the Itanium (IA64) architectures. - - \section2 PA-RISC - B.11.11 or later - - You can configure Qt for aCC in 32 and 64 bit mode (hpux-acc-64 or - hpux-acc-32), or GCC in 32 bit mode (hpux-g++). The default platform is - hpux-acc-32. The minimum required version for aCC (HP ANSI C++) on PA-RISC - is A.03.57. The supported GCC compiler is GCC 3.4.3. - - \section2 Itanium - B.11.23 or later - - You can configure Qt for aCC in 32 and 64 bit mode (hpuxi-acc-64 or - hpuxi-acc-32). GCC is currently unsupported. The default platform is - hpuxi-acc-64. The minimum required version for aCC (HP ANSI C++) on - Itanium is A.06.12. - - \section2 HP ANSI C++ (aCC) - - The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The - hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10. - - \section2 GCC - - The hpux-g++ platform is tested with GCC 3.4.4. - - \section2 OpenGL Support - - Qt's \l{QtOpenGL}{OpenGL} module requires GLX 1.3 or later to be installed. - This is available for HP-UX 11i - see the - \l{http://docs.hp.com/en/5992-2331/ch04s02.html}{Graphics and Technical Computing Software} - section of the release notes for more information. - - \target IRIX - \section1 IRIX - 6.5.x - - \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page - and Qt's Software's online \l{Platform Support Policy} page for details.} - - Unpackaging and IRIX tar: - Because of long filenames some files will be cut off incorrectly with IRIX - tar. Please use GNU tar to unpack Qt packages. - - \section2 MIPSpro - - Qt 4.4.x requires MIPSpro version 7.4.2m. - - Note that MIPSpro version 7.4.4m is currently not supported, since it has - introduced a number of problems that have not yet been resolved. - We recommend using 7.4.2m for Qt development. However, please note the - unsupported status of this platform. - - \section1 Linux - - There are no known problems with using Qt on production versions of - Linux/x86, Linux/ppc, Linux/amd64 and Linux/ia64 (including Altix(R)). - - For the GCC compiler, please also see the relevant - \l{Platform and Compiler Notes#General Compiler Notes}{General Compiler Notes}. - - \section2 Installation problems - - See also the \l{Installation FAQ}. - - If you experience problems when installing new open source versions of Qt - versions, try to use the open source Qt archives (e.g., RPM) - provided by your Linux distribution. If you need to install the source (.tgz) - archive, be aware that you will probably end up with two different - versions of the Qt library installed on your system, which will probably - lead to link errors, like this: - \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 0 - Fix this by removing the old version of the library. - - If you have problems installing open source versions of Qt - provided by your Linux distribution (e.g., RPM), please consult the - maintainers of the distribution, not us. - - Some RPM versions have problems installing some of the Qt RPM archives - where installation stops with an error message warning about a - "Failed Dependency". Use the \c{--nodeps} option to \c rpm to workaround - this problem. - - \section2 Intel C++ Compiler for Linux - - Nokia currently tests the following compilers: - - \list - - \o Intel(R) C++ Compiler for applications running on IA-32, - Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017 - - \o Intel(R) C++ Compiler for applications running on Intel(R) 64, - Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017 - - \endlist - - We do not currently test the IA-64 (Itanium) compiler. - - \section2 Known Issues with Intel C++ Compiler for Linux - - \list - - \o Precompiled header support does not work in version 10.0.025 - and older. For these compilers, you should configure Qt with - -no-pch. Precompiled header support works properly in version - 10.0.026 and later. - \o Version 10.0.026 for Intel 64 is known to miscompile qmake when - building in release mode. For now, configure Qt with - -debug. Version 10.1.008 and later can compile qmake in release - mode. - \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are - known crash with "(0): internal error: 0_47021" when compiling - QtXmlPatterns, QtWebKit, and Designer in release mode. Version - 10.1.017 compiles these modules correctly in release mode. - \endlist - - \target Solaris - \section1 Solaris - 9 or later - - \section2 Unpackaging and Solaris tar - - On some Solaris systems, both Solaris tar and GNU tar have been reported - to truncate long filenames. We recommend using star instead - (http://star.berlios.de). - - Please note that WebKit is not supported for Solaris, regardless of - which compiler is used. - - \section2 CC - - See the notes for \l{Forte Developer / Sun Studio}. - - \section2 GCC - - Please use GCC 3.4.2 or later. - - Do not use GCC with Sun's assembler/linker, this will result in link-time - errors in shared libraries. Use GNU binutils instead. - - GCC 3.2.* is known to miscompile Qt due to an optimizer bug that will - cause the resulting binaries to hang. - - \section2 Forte Developer / Sun Studio - - Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to - \l{Sun Studio Patches} page on Sun's Web site to download - the latest patches for your Sun compiler. - - Please note that Qt 4.6 is stricter in its STL requirements and - that the default STL implementation used by Sun CC does not pass - those requirements. This does not affect binary compatibility and - you can continue to use STL in your own code, but Qt's - STL-compatibility functions will be disabled. - - Sun CC ships with a secondary STL implementation (called stlport4) - which is standards-compliant and can be used by Qt. You can enable - it by passing the -library=stlport4 option to the compiler. Note - that this does not affect Qt's binary compatibility, but it may - affect that of other libraries and programs that use STL. - - \section2 Sun WorkShop 5.0 - - Sun WorkShop 5.0 is not supported with Qt 4. -*/ - -/*! - \page platform-notes-windows.html - \title Platform and Compiler Notes - Windows - \contentspage Platform and Compiler Notes - - This page contains information about the Windows platforms Qt is currently - known to run on, with links to platform-specific notes. More information - about the combinations of platforms and compilers supported by Qt can be - found on the \l{Supported Platforms} page. - - \tableofcontents - - \section1 Windows Vista - - At the time Qt %VERSION% was released, there were no known Vista-specific issues. - - \target Windows NT - \section1 Windows XP, Windows 2000 and Windows NT - - \section2 Installation location - - Installing Qt into a directory with spaces, e.g. C:\\Program Files, may - cause linker errors like the following: - \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 2 - - Install Qt into a subdirectory without spaces to avoid this problem. - - \section2 Possible GL conflict - - There is a known issue with running Microsoft NetMeeting, Lotus SameTime - and other applications that require screen grabbing while direct - rendering is enabled. Other GL-applications may not work as expected, - unless direct rendering is disabled. - - \section2 GCC (MinGW) - - We have tested Qt with this compiler on Windows XP. - The minimal version of MinGW supported is GCC 4.4. - - \note For users of the MinGW binary package: This package is now - based on MinGW 4.4. The installer no longer offers to download - MinGW for you, but rather offers to use a version of MinGW that - you already have installed on your machine. You just tell the - installer which directory MinGW is installed in. If you don't - already have MinGW 4.4 installed, you can download a .zip archive - from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip}{FTP - site}. This archive provides fixes to MinGW and support for - missing API, See the _patches directory in the archive for - details. - - \note A MinGW installation is only needed to build against the - binary package, not to run the pre-compiled binaries that are in - the package. - - \section2 Intel C++ Compiler (Windows, Altix) - - Qt 4 has been tested successfully with: - - \list - \o Windows - Intel(R) C++ Compiler for 32-bit applications, - Version 9.1.040. - \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based - applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030 - \endlist - - We currently only test the Intel compiler on 32-bit Windows versions. - - \section2 Visual Studio (Windows) - - We do most of our Windows development on Windows XP, using Microsoft - Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit - versions). - - Qt works with the Standard Edition, the Professional Edition and Team - System Edition of Visual Studio 2005. - - In order to use Qt with the Visual Studio 2005/2008 Express Edition you need - to download and install the platform SDK. Due to limitations in the - Express Edition it is not possible for us to install the Qt Visual - Studio Integration. You will need to use our command line tools to - build Qt applications with this edition. - - The Visual C++ Linker doesn't understand filenames with spaces (as in - \c{C:\Program files\Qt\}) so you will have to move it to another place, - or explicitly set the path yourself; for example: - - \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0 - - If you are experiencing strange problems with using special flags that - modify the alignment of structure and union members (such as \c{/Zp2}) - then you will need to recompile Qt with the flags set for the - application as well. - - If you're using Visual Studio .NET (2002) Standard Edition, you should be - using the Qt binary package provided, and not the source package. - As the Standard Edition does not optimize compiled code, your compiled - version of Qt would perform suboptimally with respect to speed. - - With Visual Studio 2005 Service Pack 1 a bug was introduced which - causes Qt not to compile, this has been fixed with a hotfix available - from Microsoft. See this - \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry} - for more information. - - There currently is a problem when compiling Qt with Visual Studio 2010 for 64-bit. - Its optimizer causes trouble and generates code that crashes for the release builds. - To avoid the crashes, You need to apply the hotfix in the following article - http://support.microsoft.com/kb/2280741. -*/ - -/*! - \page platform-notes-mac.html - \title Platform and Compiler Notes - Mac OS X - \contentspage Platform and Compiler Notes - - This page contains information about the Mac OS X versions Qt is currently - known to run on, with links to platform-specific notes. More information - about the combinations of platforms and compilers supported by Qt can be - found on the \l{Supported Platforms} page. - - \tableofcontents - - \section1 General Information - - Qt 4.6 applications can only be deployed on Mac OS X 10.4 (Tiger) - and higher. - - Qt 4.4 and Qt 4.5 development is only supported on Mac OS X 10.4 and up. - Applications built against these version of Qt can be deployed on Mac OS X - 10.3, but cannot be developed on that version of the operating system due - to compiler issues. - - Qt 4.3 has been tested to run on Mac OS X 10.3.9 and up. See notes on - the binary package for more information. - - Qt 4.1 has been tested to run on Mac OS X 10.2.8 and up. Qt 4.1.4 is the - last release to work with Mac OS X 10.2. - - \section2 Required GCC version - - Apple's GCC 4 that is shipped with the Xcode Tools for both Mac OS X 10.4 - and 10.5 will compile Qt. There is preliminary support for GCC 4.2 which - is included with Xcode Tools 3.1+ (configurable with - \c{-platform macx-g++42}). - - Please use the latest GCC 3.3 from Apple or a later version of GCC 3. - The GCC 3.3 that is provided with Xcode 1.5 is known to generate bad code. - Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}. - - \section2 Binary Package - - The binary package requires that you have your .qt-license file in your - home directory. Installer.app cannot complete without a valid .qt-license - file. Evaluation users of Qt will have information about how to create - this file in the email they receive. - - The binary package was built on Mac OS X 10.4 with Xcode Tools 2.1 - (GCC 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (GCC 4.0.1) for Qt 4.1.1-4.1.4 - and Xcode Tools 2.3 for 4.2.0. It will only link executables built - against 10.4 (or a 10.4 SDK). You should be able to run applications - linked against these frameworks on Mac OS X 10.3.9 and Mac OS X 10.4+. - If you require a different configuration, you will have to use the - source package and build with GCC 3.3. - - \section2 Mac OS X on Intel hardware - - Qt 4 fully supports both the Intel and PowerPC architectures on the Mac. - As of Qt 4.1 it is possible to support the Intel architecture by - creating Universal Binaries with qmake. As of Qt 4.1 it is possible to - build Qt as a set of universal binaries and frameworks from configure by - adding these extra flags: - - \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 3 - - If you are building on Intel hardware you can omit the sdk parameter, but - PowerPC hardware requires it. - - You can also generate universal binaries using qmake. Simply add these - lines to your .pro file: - - \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 4 - - \section2 Build Issues - - If Qt does not build upon executing make, and fails with an error message - such as - - \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 5 - - this could be an indication you have upgraded your version of Mac OS X - (e.g. 10.3 to 10.4), without upgrading your Developer Tools (Xcode Tools). - These must match in order to successfully compile files. - - Please be sure to upgrade both simultaneously. If problems still occur, - contact support. - - \section2 Fink - - If you have installed the Qt for X11 package from \l{Fink}, - it will set the QMAKESPEC environment variable to darwin-g++. This will - cause problems when you build the Qt for Mac OS X package. To fix this, simply - unset your QMAKESPEC or set it to macx-g++ before you run configure. - You need to have a fresh Qt distribution (make confclean). - - \section2 MySQL and Mac OS X - - There seems to be a issue when both -prebind and -multi_module are - defined when linking static C libraries into dynamic library. If you - get the following error message when linking Qt: - - \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 6 - - re-link Qt using -single_module. This is only a problem when building the - MySQL driver into Qt. It does not affect plugins or static builds. - - \section2 Qt and Precompiled Headers (PCH) - - Starting with Qt 3.3.0 it is possible to use precompiled headers. They - are not enabled by default as it appears that some versions of Apple's - GCC and make have problems with this feature. If you want to use - precompiled headers when building the Qt source package, specify the - -pch option to configure. If, while using precompiled headers, you - encounter an internal compile error, try removing the -include header - statement from the compile line and trying again. If this solves the - problem, it probably is a good idea to turn off precompiled headers. - Also, consider filing a bug report with Apple so that they can - improve support for this feature. - - \section2 Attributes - The following lists a set of useful attributes that can be used to tweak applications - on Mac: - - Qt::AA_MacPluginApplication, Qt::AA_DontUseNativeMenuBar, Qt::AA_MacDontSwapCtrlAndMeta - Qt::WA_MacNoClickThrough, Qt::WA_MacOpaqueSizeGrip, Qt::WA_MacShowFocusRect, - Qt::WA_MacNormalSize, Qt::WA_MacSmallSize, Qt::WA_MacMiniSize, Qt::WA_MacVariableSize, - Qt::WA_MacBrushedMetal, Qt::WA_MacAlwaysShowToolWindow, Qt::WA_MacFrameworkScaled, - Qt::WA_MacNoShadow, Qt::Sheet, Qt::Drawer, Qt::MacWindowToolBarButtonHint, - QMainWindow::unifiedTitleAndToolBarOnMac, WA_MacNoCocoaChildWindow - - \section2 Mixing Qt with native code - Two classes are awailable for either adding native Cocoa views/controls - inside a Qt application, or the opposite, embedding Qt into a native - Cocoa application: - - QMacCocoaViewContainer, QMacNativeWidget - - \section3 Using native Cocoa panels - Launching native Cocoa panels from within a Qt application can sometimes - be problematic. The reason is that Qt's event dispatcher is more flexible - than what Cocoa offers, and lets the user spin the event dispatcher (and - running QEventLoop::exec) without having to think about whether or not modal - dialogs are showing on screen (which is a difference to Cocoa). Therefore - we need to do special bookkeeping in Qt to handle this correctly, which - unfortunately make mixing in native panels hard. The best way at the moment - to do this, is to follow the pattern below, where we post the call to the - function with native code rather than calling it directly. Then we know that - Qt has cleanly updated any pending event loop recursions before the native - panel is shown: - - \code - #include - - class NativeProxyObject : public QObject - { - Q_OBJECT - public slots: - void execNativeDialogLater() - { - QMetaObject::invokeMethod(this, "execNativeDialogNow", Qt::QueuedConnection); - } - - void execNativeDialogNow() - { - NSRunAlertPanel(@"A Native dialog", @"", @"OK", @"", @""); - } - - }; - - #include "main.moc" - - int main(int argc, char **argv){ - QApplication app(argc, argv); - NativeProxyObject proxy; - QPushButton button("Show native dialog"); - QObject::connect(&button, SIGNAL(clicked()), &proxy, SLOT(execNativeDialogLater())); - button.show(); - return app.exec(); - } - - \endcode -*/ - -/*! - \page platform-notes-windows-ce.html - \title Platform and Compiler Notes - Windows CE - \contentspage Platform and Compiler Notes - - This page contains information about the Windows CE and Windows Mobile - platforms Qt is currently known to run on, with links to platform-specific - notes. More information about the combinations of platforms and compilers - supported by Qt can be found on the \l{Supported Platforms} page. -*/ - -/*! - \page platform-notes-symbian.html - \title Platform and Compiler Notes - Symbian - \contentspage Platform and Compiler Notes - \ingroup platform-specific - \brief Information about the state of support for the Symbian platform. - - This page describes implementation details regarding the Qt for Symbian port. To get - started with application development for Symbian devices, read the \l - {http://doc.qt.nokia.com/qtcreator/creator-developing-symbian.html} - {Connecting Symbian Devices} document. - - \section1 Source Compatibility - - Qt for Symbian provides the same level of source compatibility guarantee as - given for other platforms. That is, a program which compiles against a given - version of Qt for Symbian will also compile against all future versions of the - same major release. - - \section1 Binary Compatibility - - As with every supported platform, Qt strives to maintain application - behavior and binary compatibility throughout the lifetime of the Qt 4.x - major version and on the \l {Supported Devices}{Symbian devices that support Qt}. - Symbian support in Qt SDK and Ovi Store were introduced with Qt 4.6. Each Qt - release contains bug fixes that might change the API behavior and thereby - affect application compatibility. - - In addition, Symbian devices have different input methods, such as different - keyboard styles or touch input, screen sizes, memory, and CPU and GPU - capabilities. Therefore, you must test applications on specific target - devices to ensure compatibility. In order to build applications that are - supported also on earlier devices, select the target in Qt SDK carefully. - Generally, an earlier target (such as S60 5th Edition) is supported on a - larger number of devices than a later target (such as Symbian Belle). - - \target Supported Devices - \section1 Supported Devices - - The \l {http://developer.qt.nokia.com/wiki/support_for_Symbian}{Support for Symbian} document - details the Qt support on different Symbian devices. - - The \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian#Supported_Devices} - {Nokia Smart Installer for Symbian} document lists how Qt is supported on - different Symbian devices through Smart Installer. - - Qt versions are supported by Symbian devices as follows: - \list - \o Qt 4.6 is supported by S60 3rd Edition feature pack 1 and newer devices - through \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Smart Installer}. - \o Qt 4.7.3 is supported by S60 5th Edition and newer devices - through \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Smart Installer}. - \endlist - - Symbian devices have a pre-installed Qt support as follows: - \list - \o Symbian Anna: Qt 4.7.3 in C: drive. Note that Qt 4.7.4 is supported in Symbian Anna - through \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Smart Installer}. - \o Symbian Belle: Qt 4.7.4 in device firmware (ROM). - \endlist - - - \section1 Functionality Support - - The following technologies and classes are not supported: - \list - \o QtConcurrent - \o QtDBus - \o \l {http://doc.qt.nokia.com/4.8/printing.html}{Printing support} - \o Qt3Support - \endlist - - The following technologies have limited support: - - - \table - \header \o Module - \o Note - \row \o QtSql - \o The supported drivers are SQLite and QSYMSQL. - \row \o QtMultimedia - \o For support details see \l {Multimedia Support} section. - \row \o QtGui - \o QtGui's widgets are deprecated (i.e. they are available but not - recommended to use) in the Symbian port. It is recommended to use \l - {http://doc.qt.nokia.com/qt-components-symbian-1.1/symbian-components-functional.html} - {Qt Quick Components for Symbian} instead, because they provide - better look and feel on Symbian devices. - - Moreover, the following classes of QtGui \bold {should not - be used} in a Symbian application: - - \list - \o QFileDialog with the \c DontUseNativeDialog option - \o QColorDialog with the \c DontUseNativeDialog option - \o QFontDialog - \o QWizard - \o QCalendarWidget - \o QDateTimeEdit - \o QMdiArea - \o QDockWidget - \o QMdiSubWindow - \o QPrintPreviewWidget - \endlist - - QScrollArea: The scrolling and focus handling of QScrollArea's all - scrollable widgets, for example QListView, differs from native Avkon - list widgets' one. Native Avkon scrollable components support - touch-gesture-based scrolling by dragging and flicking the UI - component but this functionality is not implemented in Qt widgets. - Scrolling by dragging and flicking works also in Qt Quick Components - that implements the \l - {http://www.developer.nokia.com/Resources/Library/Symbian_Design_Guidelines/} - {Symbian design guidelines}. - - \endtable - - \section1 Compiler Notes - - For the application development the necessary compiler toolchain is included in \l - {http://qt.nokia.com/downloads}{Qt SDK}. For instructions compiling Qt - itself see the \l - {http://doc.qt.nokia.com/stable/install-symbian.html} - {Installing Qt for the Symbian platform} document. - - \section1 Known Issues - - Known issues can be found by visiting the - \l{http://qt.gitorious.org/qt/pages/QtKnownIssues}{wiki page} with an - up-to-date list of known issues, and the list of bugs can be found by - \l{http://bugreports.qt.nokia.com/browse/QTBUG/component/19171}{browsing} the - S60 component in Qt's public task tracker, located at - \l{http://bugreports.qt.nokia.com/}{http://bugreports.qt.nokia.com/}. - - For information about mixing exceptions with Symbian leaves, see - \l{Exception Safety with Symbian}. - - \section1 Required Capabilities - - The Qt libraries are typically signed with \c{All -TCB} capabilites but - that does not mean your Qt application needs to be signed with the same - capabilities to function properly. The capabilities your application needs - to function properly depends on which parts of Qt you use. - In a Qt application Symbian capabilities are defined in the - \l {http://doc.qt.nokia.com/4.8/qmake-variable-reference.html#target-capability} - {TARGET.CAPABILITY} qmake variable in the project file. - Here is an overview for which capabilities may be needed when using different modules: - - \table - \header \o Module - \o Required Symbian Capability - \row \o QtCore - \o \c PowerMgmt if QProcess::kill(...) or QProcess::terminate(...) is called. - \row \o QtCore - \o \c AllFiles when \l{http://wiki.forum.nokia.com/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.} - \row \o QtDeclarative - \o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified. - \row \o QtNetwork - \o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified. - \row \o QtNetwork - \o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list - (for example those added by the user or stored in the SIM card), - without this capability only the CA certs built into the phone are used. - \row \o QtMultimedia - \o \c UserEnvironment if QAudioInput is used. - \row \o QtWebKit - \o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified. - \endtable - - \note Some modules rely on other modules. E.g. QtWebkit and QtDeclarative - depend on QtNetwork and therefore any application that - depends on these modules is also likely to need \c NetworkServices capability. - - For more information see the documentation of the individual Qt classes. If - a class does not mention Symbian capabilities, it requires none. - - \target Multimedia Support - \section1 Multimedia Support - - Qt Mobility provides a high-level API for multimedia functionality with - \l{http://doc.qt.nokia.com/qtmobility/multimedia.html}{QtMultimediaKit}. - In addition, Qt provides the low-level \l {QtMultimedia}{QtMultimedia} - module that is internally used by the QtMultimediaKit. For more information - on developing multimedia applications for Symbian devices, see - \l {http://www.developer.nokia.com/info/sw.nokia.com/id/4abf12e7-72d8-45ef-b1a2-46184abe18ba/Guide_for_Qt_Multimedia_Developers.html} - {Guide for Qt Multimedia Developers}. - - Moreover, there is a third multimedia-related module called Phonon. Qt - provides two backends for the Phonon module in Symbian: \i MMF and \i Helix. - - Note that Phonon is a legacy module and the QtMultimediaKit module is - replacing Phonon in Qt 5. Although Phonon is supported in Symbian for - backwards compatibility and there is no plan to remove Phonon from Symbian - any new applications should use QtMultimediaKit in Symbian using Qt 4.7 - bundle. The QtMultimediaKit feature set is comparable to that in Phonon. - - The following applies to Phonon: - \list - \o MMF Phonon backend supports video and sound playback through Symbian's - Multimedia Framework, MMF. Phonon's video playback may show artifacts when - the video is moved or resized (for instance, during device orientation - changes from portrait to landscape and vice versa). This problem is present - on S60 5th Edition and earlier versions, as well as in Symbian Anna devices. - \o The audio and video formats that Phonon supports depends on what support - the platform provides for MMF. The emulator is known to have limited - codec support. - \o In addition, there exists a backend for the Helix framework. However, since - it is not shipped with Qt, its availability depends on the Symbian platform - in use. If the MFF plugin fails to load, the Helix plugin, if present on the - device, will be loaded instead. - \endlist - - \section1 Hardware Accelerated Rendering - - The default graphics system on Symbian Anna is OpenVG, which uses OpenVG - hardware to accelerate \l QPainter functions. There are a few exceptions, - where Qt will use software rendering fallback. - - Devices like the N8 and C7 only have 32Mb of GPU memory and limited support - for EGL surface transparency. These devices can be identified by querying - the\c GL_RENDERER or \c VG_RENDERER string which evaluates to \c {VideoCore III}. - On these devices, Qt will use software rendering in cases listed below. - - \list - \o Translucent windows - \o Dialogs - \o Popups - \endlist - - \section1 OpenGL Support in Symbian - - Qt 4.7 introduces the \l {QtOpenGL} module. QtOpenGL is - supported on devices which support OpenGL ES 2.0. Symbian platforms prior - to Symbian Anna (and Symbian^3) are not supported. - - \l QGLWidget usage as a \l QGraphicsView viewport is not recommended on - Symbian. The OpenVG graphics system is not able to manage OpenGL graphics - resources. Also, a QGLWidget object is not able to release its GPU resources - when the application goes to the background. If OpenGL functionality is - needed, \l { http://doc.qt.nokia.com/4.7-snapshot/qapplication.html#setGraphicsSystem} - {OpenGL graphics system} usage is recommended. If an application - decides to use QGLWidget, then it is the application's responsibility to - destroy and release QGLWidget and related OpenGL resources when the - application goes to the background. Otherwise, the \l{Graphics Out Of Memory monitor} - may decide to kill the application as it consumes GPU resources while in the - background. - - \note \l QGLBuffer, \l QGLFramebufferObject, \l QGLPixelBuffer, \l - QGLShader, and \l QGLShaderProgram are direct GPU resources and it is the - application's responsibility to manage them. - - \section1 UI Performance in S60 3rd and 5th Edition Devices - - Qt uses the QPainter class to perform low-level painting on widgets and - other paint devices. QPainter provides functions to draw complex shapes, - aligned text and pixmaps. It can also do vector path clipping, coordinate - transformations and Porter-Duff composition. If the underlying graphics - architecture does not support all of these operations then Qt uses the - raster graphics system for rendering. - - In Symbian Anna (and Symbian^3) Qt uses hardware accelerated graphics as explained above. - This is enabled by \l - {http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.html} - {ScreenPlay Graphics Architecture} in these devices. - - Most of the Symbian S60 3rd and 5th Edition devices have a - graphics architecture that does not have native support for all functions - provided by QPainter. In these \l - {http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.html} - {non-ScreenPlay} devices Qt uses the raster - graphics system by default that has a performance penalty compared - to native Symbian rendering. - - In order to be able to perform all functions provided by QPainter, the - raster graphics system needs to have pixel level framebuffer access. To - make this possible in non-ScreenPlay devices Qt has to create an - additional offscreen buffer that is the target for all Qt rendering - operations. Qt renders the widget tree to the offscreen buffer and the - offscreen buffer is blitted to the framebuffer via Symbian Window Server. - - The following table shows the rendering stacks of native Symbian and Qt in - \l {http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.html} - {non-ScreenPlay devices}. - - \table - \header \o Symbian - \o Qt - \row \o \image symbian-rendering-stack-non-screenplay.png - \o \image symbian-qt-rendering-stack-non-screenplay.png - \endtable - - The following diagrams show a simplified sequence of drawing a pixmap in - a non-ScreenPlay device. - - \table - \header \o Symbian - \row \o \image symbian-draw-pixmap-sequence.png - \endtable - - \table - \header \o Qt - \row \o \image symbian-qt-draw-pixmap-sequence.png - \endtable - - When compared to a native Symbian application, Qt does an additional blit - to the offscreen buffer before drawing to the framebuffer. That is the - performance penalty which needs to be paid to get all functionality - provided by QPainter in non-ScreenPlay architecture. -*/ - -/*! - \page platform-notes-embedded-linux.html - \title Platform and Compiler Notes - Embedded Linux - \contentspage Platform and Compiler Notes - - This page contains information about the Embedded Linux platforms Qt is - currently known to run on, with links to platform-specific notes. More - information about the combinations of platforms and compilers supported - by Qt can be found on the \l{Supported Platforms} page. -*/ diff --git a/doc/src/platforms/platform-notes.qdocinc b/doc/src/platforms/platform-notes.qdocinc deleted file mode 100644 index e69de29..0000000 diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc index 92bf12d..a3fc390 100644 --- a/doc/src/platforms/supported-platforms.qdoc +++ b/doc/src/platforms/supported-platforms.qdoc @@ -49,8 +49,6 @@ - Requirements for developing with Qt on Windows. \o \l{Installing Qt for Windows}{Installing Qt for Windows} - Build Qt for Windows development. - \o \l{Platform and Compiler Notes - Windows}{Platform and Compiler Notes - Windows} - - Windows platform specific notes. \o \l{Getting Started Guides}{Getting started} - Getting started developing for Windows \endlist @@ -135,8 +133,6 @@ - Software required to run Qt on Linux/X11. \o \l{Installing Qt for X11 Platforms}{Installing Qt for X11 Platforms} - Build Qt for Linux/X11 development. - \o \l{Platform and Compiler Notes - X11}{Platform and Compiler Notes - X11} - - Platform specific notes. \o \l{Getting Started Guides}{Getting started} \endlist @@ -223,8 +219,6 @@ - Software required to run Qt on Mac OS X. \o \l{Installing Qt for X11 Platforms}{Installing Qt for X11 Platforms} - Build Qt for Mac OS X development. - \o \l{Platform and Compiler Notes - Mac OS X}{Platform and Compiler Notes - Mac OS X} - - Platform specific notes. \o \l{Getting Started Guides}{Getting started} \endlist @@ -285,82 +279,6 @@ \note Qt also provides support for 64-bit applications on top of Cocoa APIs. */ /*! - \page windowsCE-Mobile-support.html - \title Support for Windows CE and Windows Mobile - \brief Platform support for Windows CE and Windows Mobile. - \ingroup platform-specific - \ingroup platform-details - - \section1 Qt on Windows CE and Windows Mobile - - Qt is a C++ application and UI framework. You can use Qt to write - rich and high performance applications using an intuitive API - available for a wide range of devices. Use the code from one single - code-base and rebuild for all \l{Supported Platforms}{supported - Windows CE/Mobile versions as well as other other platforms}. - - Supporting most existing Windows CE configurations and with minimal - hardware dependencies, Qt is easy to build even for custom hardware - configurations. Unused components and features can even be compiled out. - - \section1 Getting Started on Windows CE/Mobile - - \list - \o \l{Supported Platforms}{Supported Windows CE/Mobile platforms} - - Qt supports a wide range of Windows CE/Mobile platform variants. - \o \l{Qt for Windows CE Requirements}{Qt for Windows CE/Mobile - Requirements} - Software required to run Qt on Windows CE/Mobile. - \o \l{Installing Qt for Windows CE}{Installing Qt for - Windows CE/Mobile Platforms} - Build Qt for Windows CE/Mobile - development. - \o \l{Platform and Compiler Notes - Windows CE}{Platform and - Compiler Notes - Windows CE/Mobile} - Platform specific notes. - \o \l{Getting Started Guides}{Getting started} - \endlist - - \section1 Key Features for Windows CE/Mobile Development - - On top of all the tools and API and class libraries that Qt offers, - Qt for Windows CE provides you with added functionality for an - optimized embedded development environment. - - \section2 Native and Customizable Look and Feel - - Windows Mobile and Windows CE styles are available with Qt. At runtime, - Qt applications will detect which style to use. The look and feel of - your applications can also be easily customized in a fraction of - the time and lines of code required for traditional UI styling with - Qt Style Sheets. - - \section2 Advanced Text Layout Engine - - Qt for Windows CE supports TrueType and raster fonts. Qt also has - extended Unicode support and right-to-left languages. Qt's rich text - engine adds capabilities for complex text layouts including tables, - path tracing and text which flows around shapes. - - \section2 Qt for Windows CE/Mobile also provide support for: - - \list - \o Graphics Acceleration using \l{Qt for Windows CE and OpenGL - ES}{OpenGL ES} - \o \l{Graphics View Framework}{2D graphics canvas} capable of - handling millions of items. - \o \l{Qt Designer Manual}{Qt Designer} for GUI layout and - forms builder. - \o \l{Qt Linguist Manual}{Qt Linguist} provides internationalization - and translation features. - \endlist - - Applications created with Qt for Windows CE/Mobile can be ported to - Symbian, Maemo and any other OS that Qt supports. - - Additional \l{Cross-Platform and Platform-Specific Development} - information. - -*/ - -/*! \page embeddedLinux-support.html \title Support for Embedded Linux \brief Platform support for Embedded Linux. @@ -378,6 +296,8 @@ one single code-base and rebuild for all \l{Supported Platforms} {supported platforms}. + \note Qt on Embedded Linux will not exist as a separate platform for Qt 5.0. + \section1 Getting Started on Embedded Linux \list @@ -387,8 +307,6 @@ Requirements} - Software required to run Qt on Embedded Linux. \o \l{Installing Qt for Embedded Linux}{Installing Qt for Embedded Linux} - Build Qt for development on Embedded Linux. - \o \l{Platform and Compiler Notes - Embedded Linux}{Platform and - Compiler Notes - Embedded Linux} - Platform specific notes. \o \l{Getting Started Guides}{Getting started} \endlist @@ -437,248 +355,6 @@ */ /*! - \page symbian-support.html - \title Support for Symbian - \brief Platform support for Symbian. - \ingroup platform-specific - \ingroup platform-details - - \section1 Qt on Symbian - - Qt provides support for the Symbian platform with integration - to the S60 framework. If you are developing apps for the Symbian, - Maemo or MeeGo platforms in most cases, you can use Qt under the - free LGPL licensing option. Qt is cross-platform, and that means - that you can use the code from one single code-base and rebuild - for all \l{Supported Platforms}{supported platforms}. - - \section1 Getting Started on Symbian - - \list - \o \l{Supported Platforms}{Supported platform} - - Details on the Qt support for Symbian. - \o \l{Qt for the Symbian platform Requirements}{Qt for the - Symbian platform Requirements} - Software required to run Qt - on Symbian. - \o \l{Installing Qt for the Symbian platform}{Installing Qt - for the Symbian platform} - Build Qt for Symbian development. - \o \l{Platform and Compiler Notes - Symbian}{Platform Notes - Symbian} - - Platform specific notes. - \o \l{Getting Started Guides}{Getting started} - \o \l{Qt Quick Components for Symbian 1.1}{Qt Quick Components for Symbian} - - provides a QML component set for the Symbian^3 platform - \endlist - - \section1 Key Features for Symbian Development - - On top of all the tools and the API and class libraries that Qt - offers, Qt provides you with added functionality for an optimized - Symbian development experience. - - \section2 Native Look and Feel - - Qt will detect which theme the phone is running and applies the - style at runtime to your Qt application. The look and feel of your - applications can also be easily customized in a fraction of the - time and lines of code required for traditional UI styling with - Qt Style Sheets. - - The \l{Qt Quick Components for Symbian 1.1}{Qt Quick Components for Symbian 1.1} - provides a native QML component set. - - \section2 Graphics Features - - Qt for Symbian contains a powerful paint engine that provides - features such as anti, aliasing, gradients, curves and transparency. - It also has animation support with timelines and easing curves. It - is already targeting future device technology by supporting hardware - acceleration using OpenVG. - - \section2 Device Configurations - - Using Qt for Symbian all supported Symbian devices provides automatic - support for swiching between landscape and portrait mode, different - screen resolutions as well as touch screen and key pad input. - - \section2 Cross-Platform Development using Qt Creator - - \l{http://doc.qt.nokia.com/qtcreator-snapshot/index.html}{Qt Creator} is - a complete Cross-platform IDE included in the Qt SDK. The IDE allows - programmers to create, build, debug and run Qt applications accross all - supported platforms. - - \section3 Licensing - - Qt for Symbian is available under the Qt Commercial License, the LGPL - v. 2.1 "LGPL") and the GPL v. 3.0. Symbian currently licenses their - software products under either the Symbian Foundation License or the - Eclipse Public License ("EPL"). While the LGPL and the EPL are not - compatible and may not be combined on a file-by-file basis, they may - be used in a common environment provided that the interaction between - Qt and Symbian is limited to: dynamic linking, inter-process - communication and data exchange. Therefore, most Symbian developers - can use Qt for Symbian under the LGPL. - - Additional \l{Cross-Platform and Platform-Specific Development} - information. - -*/ -/*! - \page maemo-support.html - \title Support for Maemo - \brief Platform support for Maemo. - \ingroup platform-specific - \ingroup platform-details - - \section1 Qt on Maemo - - Qt is a comprehensive application and UI framework for developing - Maemo applications that can also be deployed across major - device and desktop operating systems without rewriting the source code. - If you are developing apps for the Symbian, Mameo platforms - in most cases, you can use Qt under the free LGPL licensing option. - Qt is cross-platform, and that means that you can use the code from - one single code-base and rebuild for all \l{Supported Platforms} - {supported platforms}. Maemo 6 is now MeeGo. - - \section1 Getting Started on Maemo - \list - \o \l{Supported Platforms}{Supported Maemo platforms} - - Qt support for Maemo versions. - \omit - \o \l{Qt for Maemo Requirements}{Qt for Maemo - Requirements} - Software required to run Qt on Maemo. - \o \l{Installing Qt for Maemo}{Installing Qt for - Maemo} - Build Qt for Maemo development. - \o \l{Platform and Compiler Notes - Maemo}{Platform and - Compiler Notes - Maemo} - Platform specific notes. - \endomit - \o \l{Getting Started Guides}{Getting started} - \endlist - - \section1 Key Features for Maemo Development - - \section2 Native Look and Feel - - Qt will detect which theme the device is running and applies the - style at runtime to your Qt application. Widgets are optimized - for touch screen usage. - - \section2 Graphics Features - - Qt for Maemo provides a powerful paint engine that cotain - features such as anti aliasing, gradients, curves and transparency. - It also has animation support with timelines and easing curves. Qt - for Maemo also supports hardware acceleration using ARM NEON - and OpenGL ES 2.0. - - \section2 Device Configurations - - Applications developed with Qt for Maemo will across all - supported Maemo devices provide automatic support for switching - between landscape and portrait mode. They will support input methods, - including predictive text input and on-screen keyboard. The - applications will also have support for one finger touch events and - gestures, and have configurable kinetic scrolling. - - \section2 Maemo - Linux/X11 - - Qt supports a wide range of X11 platform variants, such as: Solaris, - AIX, HP-UX, Maemo 5 and MeeGo. Qt for Maemo contains all Qt modules - and features the same functionality as the Qt on X11 version. - - \section2 Cross-Platform Development using Qt Creator - - \l{http://doc.qt.nokia.com/qtcreator-snapshot/index.html}{Qt Creator} is - a complete Cross-platform IDE included in the Qt SDK. The IDE allows - programmers to create, build, debug and run Qt applications accross all - supported platforms. - - Additional \l{Cross-Platform and Platform-Specific Development} - information. -*/ - -/*! - - \page meego-support.html - \title Support for MeeGo - \brief Platform support for MeeGo. - \ingroup platform-specific - \ingroup platform-details - - \section1 Qt on MeeGo - - Qt is a comprehensive application and UI framework for developing - MeeGo applications that can also be deployed across major - device and desktop operating systems without rewriting the source code. - If you are developing apps for the Symbian, MeeGo platforms - in most cases, you can use Qt under the free LGPL licensing option. - Qt is cross-platform, and that means that you can use the code from - one single code-base and rebuild for all \l{Supported Platforms} - {supported platforms}. - - \section1 Getting Started on MeeGo - - \list - \o \l{Supported Platforms}{Supported MeeGo platforms} - - Qt support for MeeGo versions. - \omit - \o \l{Qt for MeeGo Requirements}{Qt for MeeGo - Requirements} - Software required to run Qt on MeeGo. - \o \l{Installing Qt for MeeGo}{Installing Qt for - MeeGo} - Build Qt for MeeGo development. - \o \l{Platform and Compiler Notes - MeeGo}{Platform and - Compiler Notes - MeeGo} - Platform specific notes. - \endomit - \o \l{Getting Started Guides}{Getting started} - \endlist - - \section1 Key Features for MeeGo Development - - \section2 Native Look and Feel - - Qt will detect which theme the device is running and applies the - style at runtime to your Qt application. Widgets are optimized - for touch screen usage. - - \section2 Graphics Features - - Qt for MeeGo provides a powerful paint engine that cotain - features such as anti aliasing, gradients, curves and transparency. - It also has animation support with timelines and easing curves. Qt - for MeeGo also supports hardware acceleration using ARM NEON, x86, - and OpenGL ES 2.0. - - \section2 Device Configurations - - Qt is the foundation of MeeGo UI and application development and - therefore Qt will be present in all upcoming MeeGo devices. Qt - can provide automatic support for: - \list - \o Switching between landscape and portrait mode - \o Input Methods, including predictive text input and on-screen - keyboard - \o Configurable kinetic scrolling - \endlist - - \section2 Maemo - Linux/X11 - - Qt supports a wide range of X11 platform variants, such as: Solaris, - AIX, HP-UX, Maemo 5 and MeeGo. Qt for MeeGo contains all Qt modules - and features the same functionality as the Qt on X11 version. - - \section2 Cross-Platform Development using Qt Creator - - \l{http://doc.qt.nokia.com/qtcreator-snapshot/index.html}{Qt Creator} is - a complete Cross-platform IDE included in the Qt SDK. The IDE allows - programmers to create, build, debug and run Qt applications accross all - supported platforms. - - Additional \l{Cross-Platform and Platform-Specific Development} - information. -*/ - -/*! \page supported-platforms.html \title Supported Platforms \brief The platforms supported by Nokia for Qt. @@ -697,26 +373,21 @@ \o {2,1} Qt Cross Platform Support \header \o {1,1} Desktop - \o {1,1} Mobile/Embedded + \o {1,1} Embedded \row \o \l{Support for Windows}{Windows} - \o \l{Support for Windows CE and Windows Mobile}{Windows CE and Windows Mobile} + \o \l{Support for Embedded Linux}{Embedded Linux} \row \o \l{Support for Linux/X11}{Linux/X11} - \o \l{Support for Embedded Linux}{Embedded Linux} \row \o \l{Support for Mac OS X}{Mac OS X} - \o \l{Support for Symbian}{Symbian} - \row - \o\l{Support for MeeGo}{MeeGo} - \o\l{Support for Maemo}{Maemo} \endtable \section1 Supported Platform Details The Qt team strives to provide support for the platforms most frequently used by Qt users. We have designed our internal testing procedure to - divide platforms into three test categories (Tier 1, Tier 2 and Tier 3) in order + divide platforms into three test categories (Tier 1 and Tier 2) in order to prioritize internal testing and development resources so that the most frequently used platforms are subjected to our most rigorous testing processes. @@ -743,30 +414,16 @@ \table \header \o Platform \o Compilers - \row \o Linux (32 and 64-bit) - \o gcc 4.2 - \row \o Microsoft Windows XP - \o gcc 4.4 (MinGW) (32-bit), MSVC 2005 (32 and 64-bit) - \row \o Microsoft Windows Vista - \o MSVC 2005, 2008 - \row \o Microsoft Windows Vista 64bit - \o MSVC 2008 - \row \o Microsoft Windows 7 + \row \o Ubuntu Linux 10.04 (32-bit) + \o As provided by Ubuntu + \row \o Microsoft Windows 7 (32-bit) \o MSVC 2008 - \row \o Apple Mac OS X 10.6 "Snow Leopard" + \row \o Microsoft Windows 7 (64-bit) + \o MSVC 2010 SP1 + \row \o Apple Mac OS X 10.6 "Snow Leopard" (64-bit) \o As provided by Apple - \row \o Apple Mac OS X 10.5 "Leopard" x86_64 (Cocoa 32 and 64bit) + \row \o Apple Mac OS X 10.7 "Lion" (64-bit) \o As provided by Apple - \row \o Embedded Linux QWS (ARM) - \o gcc (\l{http://www.codesourcery.com/}{Codesourcery version)} - \row \o Windows CE 5.0 (ARMv4i, x86, MIPS) - \o MSVC 2005 WinCE 5.0 Standard (x86, pocket, smart, mipsii) - \row \o Maemo 5(Linux, ARM, X11) - \o gcc (\l{http://www.scratchbox.org/}{Scratchbox)} - \row \o MeeGo (Linux, ARM, X11) - \o gcc (\l{http://www.scratchbox.org/}{Scratchbox)} - \row \o Symbian (Symbian/S60 5.0) - \o RVCT 2.2 [build 686 or later], WINSCW 3.2.5 [build 482 or later], GCCE (for applications) \endtable \section1 Tier 2 Platforms @@ -779,47 +436,18 @@ \table \header \o Platform \o Compilers - \row \o Windows 7 - \o MSVC 2010 - \row \o Apple Mac OS X 10.4 "Tiger" (Carbon) - \o As provided by Apple - \row \o Apple Mac OS X 10.5 "Leopard" (Carbon) - \o As provided by Apple - \row \o HPUXi 11.23 - \o aCC 6.10 - \row \o Solaris 10 UltraSparc - \o Sun Studio 12 - \row \o AIX 6 - \o Power5 xlC 7 - \row \o Microsoft Windows XP - \o Intel Compiler - \row \o Linux - \o Intel Compiler - \row \o Embedded Linux QWS (Mips, PowerPC) - \o gcc (\l{http://www.codesourcery.com/}{Codesourcery version)} - \row \o Embedded Linux X11 (ARM) - \o gcc (\l{http://www.scratchbox.org/}{Scratchbox)} - \row \o Windows CE 5.0 (ARMv4i, x86, MIPS) - \o MSVC 2005 WinCE 5.0 Standard (x86, pocket, smart, mipsii) - \row \o Windows Embedded CE 6.0 (ARMv4i, x86, MIPS) - \o MSVC 2008 WinCE Embedded 6.0 Professional - \row \o Symbian (Symbian/S60 3.1, 3.2) - \o RVCT 2.2 [build 686 or later], WINSCW 3.2.5 [build 482 or later], GCCE (for applications) + \row \o Ubuntu Linux 10.04 QWS (x86 32-bit) + \o As provided by Ubuntu + \row \o Ubuntu Linux 10.04 (32-bit) + \o Intel Compiler [version 12] \endtable - \note The PPC architecture on Mac has been downgraded from tier 1 to tier 2 for 4.7. - \section1 Tier 3 Platforms (Not Supported by Nokia) All platforms not specifically listed above are not supported by Nokia. Nokia does not run its unit test suite or perform any other internal tests on platforms not listed above. - Even though some Tier 3 platforms are available under the Qt Commercial License, - technical support is not included in that license. - However, \l{How to Order}{contact our sales team} to find out about the - availability of other services for those platforms. - Qt users should note, however, that there may be various open source projects, community users and/or Qt partners who are able to provide assistance with platforms not supported by Nokia. @@ -832,13 +460,4 @@ warranties and conditions, either express or implied, including, but not limited to, implied warranties of merchantability, fitness for a particular purpose, title and non-infringement with regard to the Licensed Software. - - \section1 Planned Changes for Qt 4.8 - - The following changes to the list of supported platforms are at time of publishing - planned for Qt 4.8: - - \list - \o Plans not yet released - \endlist */ diff --git a/doc/src/qt-webpages.qdoc b/doc/src/qt-webpages.qdoc index 394850f..271fa18 100644 --- a/doc/src/qt-webpages.qdoc +++ b/doc/src/qt-webpages.qdoc @@ -117,10 +117,6 @@ \title Qt License Pricing */ /*! - \externalpage http://qt.nokia.com/about/contact-us - \title How to Order -*/ -/*! \externalpage http://doc.qt.nokia.com/supported-platforms.html \title Platform Support Policy */ -- cgit v0.12 From 4fffdabc948ff6afc6008d4cb723a6a2e10eef79 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 10 Nov 2011 11:36:04 +0100 Subject: Compile fix for Mac OS X 10.7 with 10.6 sdk Since it is an example it is cleaner to just include the header file as it will be available on other platforms anyway. Also ensured that the Qt includes were first before the system ones. Task-number: QTBUG-22641 Merge-request: 1462 Reviewed-by: Oswald Buddenhagen --- examples/opengl/cube/mainwidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/opengl/cube/mainwidget.cpp b/examples/opengl/cube/mainwidget.cpp index 1116526..482c78e 100644 --- a/examples/opengl/cube/mainwidget.cpp +++ b/examples/opengl/cube/mainwidget.cpp @@ -46,10 +46,10 @@ #include #include +#include #include - -#include +#include MainWidget::MainWidget(QWidget *parent) : QGLWidget(parent), -- cgit v0.12 From 122fa6b53c33364a4687919191e55899acb43797 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 10 Nov 2011 12:43:51 +0100 Subject: fix gdb_dwarf_index.prf for applications, take two Handle the case of an empty DESTDIR. Done-with: ossi --- mkspecs/features/unix/gdb_dwarf_index.prf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/unix/gdb_dwarf_index.prf b/mkspecs/features/unix/gdb_dwarf_index.prf index 7771ed4..e3f79cd 100644 --- a/mkspecs/features/unix/gdb_dwarf_index.prf +++ b/mkspecs/features/unix/gdb_dwarf_index.prf @@ -4,12 +4,13 @@ QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } && QMAKE_GDB_DIR = . } else { - QMAKE_GDB_DIR = $(DESTDIR) + QMAKE_GDB_INDEX = { test -n \"$(DESTDIR)\" && DESTDIR=\"$(DESTDIR)\" || DESTDIR=.; } && + QMAKE_GDB_DIR = \$\$DESTDIR } QMAKE_GDB_INDEX += \ test \$\$(gdb --version | sed -e \'s,[^0-9]\\+\\([0-9]\\)\\.\\([0-9]\\).*,\\1\\2,;q\') -gt 72 && \ - gdb --nx --batch --quiet -ex \'set confirm off\' -ex \'save gdb-index $$QMAKE_GDB_DIR\' -ex quit \'$(TARGET)\' && \ + gdb --nx --batch --quiet -ex \'set confirm off\' -ex \"save gdb-index $$QMAKE_GDB_DIR\" -ex quit \'$(TARGET)\' && \ test -f $(TARGET).gdb-index && \ $$QMAKE_OBJCOPY --add-section \'.gdb_index=$(TARGET).gdb-index\' --set-section-flags \'.gdb_index=readonly\' \'$(TARGET)\' \'$(TARGET)\' && \ $$QMAKE_DEL_FILE $(TARGET).gdb-index || true -- cgit v0.12 From 72e61b127470b044e370af7017fa8a5b0538244f Mon Sep 17 00:00:00 2001 From: Tero Ahola Date: Thu, 10 Nov 2011 16:24:14 +0100 Subject: Fix QProgressBar causing timer event spam On Windows you will get a lot of timer events if you use QProgressBar widget. This is because QWindowsStyle uses a timer to animate a progress bar with unknown state (min and max values both zero). The issue was fixed by starting the timer only if needed. Task-number: QTBUG-10501 Reviewed-by: Friedemann Kleint --- src/gui/styles/qwindowsstyle.cpp | 56 ++++++++++++++++++++++++---------------- src/gui/styles/qwindowsstyle_p.h | 4 ++- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/gui/styles/qwindowsstyle.cpp b/src/gui/styles/qwindowsstyle.cpp index 2244c11..6ab29b9 100644 --- a/src/gui/styles/qwindowsstyle.cpp +++ b/src/gui/styles/qwindowsstyle.cpp @@ -133,6 +133,26 @@ QWindowsStylePrivate::QWindowsStylePrivate() startTime.start(); } +void QWindowsStylePrivate::startAnimation(QObject *o, QProgressBar *bar) +{ + if (!animatedProgressBars.contains(bar)) { + animatedProgressBars << bar; + if (!animateTimer) { + Q_ASSERT(animationFps > 0); + animateTimer = o->startTimer(1000 / animationFps); + } + } +} + +void QWindowsStylePrivate::stopAnimation(QObject *o, QProgressBar *bar) +{ + animatedProgressBars.removeAll(bar); + if (animatedProgressBars.isEmpty() && animateTimer) { + o->killTimer(animateTimer); + animateTimer = 0; + } +} + // Returns true if the toplevel parent of \a widget has seen the Alt-key bool QWindowsStylePrivate::hasSeenAlt(const QWidget *widget) const { @@ -150,10 +170,8 @@ void QWindowsStyle::timerEvent(QTimerEvent *event) if (event->timerId() == d->animateTimer) { Q_ASSERT(d->animationFps> 0); d->animateStep = d->startTime.elapsed() / (1000 / d->animationFps); - foreach (QProgressBar *bar, d->bars) { - if ((bar->minimum() == 0 && bar->maximum() == 0)) - bar->update(); - } + foreach (QProgressBar *bar, d->animatedProgressBars) + bar->update(); } #endif // QT_NO_PROGRESSBAR event->ignore(); @@ -215,29 +233,23 @@ bool QWindowsStyle::eventFilter(QObject *o, QEvent *e) break; #ifndef QT_NO_PROGRESSBAR case QEvent::StyleChange: + case QEvent::Paint: case QEvent::Show: if (QProgressBar *bar = qobject_cast(o)) { - if (!d->bars.contains(bar)) { - d->bars << bar; - if (d->bars.size() == 1) { - Q_ASSERT(d->animationFps> 0); - if (d->animateTimer == 0) - d->animateTimer = startTimer(1000 / d->animationFps); - } - } + // Animation by timer for progress bars that have their min and + // max values the same + if (bar->minimum() == bar->maximum()) + d->startAnimation(this, bar); + else + d->stopAnimation(this, bar); } break; case QEvent::Destroy: case QEvent::Hide: - // reinterpret_cast because there is no type info when getting - // the destroy event. We know that it is a QProgressBar. - if (QProgressBar *bar = reinterpret_cast(o)) { - d->bars.removeAll(bar); - if (d->bars.isEmpty() && d->animateTimer) { - killTimer(d->animateTimer); - d->animateTimer = 0; - } - } + // Do static_cast because there is no type info when getting + // the destroy event. We know that it is a QProgressBar, since + // we only install a widget event filter for QScrollBars. + d->stopAnimation(this, static_cast(o)); break; #endif // QT_NO_PROGRESSBAR default: @@ -343,7 +355,7 @@ void QWindowsStyle::unpolish(QWidget *widget) if (QProgressBar *bar=qobject_cast(widget)) { Q_D(QWindowsStyle); widget->removeEventFilter(this); - d->bars.removeAll(bar); + d->stopAnimation(this, bar); } #endif } diff --git a/src/gui/styles/qwindowsstyle_p.h b/src/gui/styles/qwindowsstyle_p.h index b9f39a0..1e517e9 100644 --- a/src/gui/styles/qwindowsstyle_p.h +++ b/src/gui/styles/qwindowsstyle_p.h @@ -71,13 +71,15 @@ class QWindowsStylePrivate : public QCommonStylePrivate Q_DECLARE_PUBLIC(QWindowsStyle) public: QWindowsStylePrivate(); + void startAnimation(QObject *o, QProgressBar *bar); + void stopAnimation(QObject *o, QProgressBar *bar); bool hasSeenAlt(const QWidget *widget) const; bool altDown() const { return alt_down; } bool alt_down; QList seenAlt; int menuBarTimer; - QList bars; + QList animatedProgressBars; int animationFps; int animateTimer; QElapsedTimer startTime; -- cgit v0.12 From b1998f4f59c3b10700963b2d13a17a0cc77ef665 Mon Sep 17 00:00:00 2001 From: Tero Ahola Date: Thu, 10 Nov 2011 16:40:47 +0100 Subject: Repaint QProgressBar when minimum or maximum changed The implementation of QProgressBar::setMinimum and setMaximum did not repaint the widget. This caused the widget to be shown incorrectly in case you call setMinimum or setMaximum but not setValue. Task-number: QTBUG-22121 Reviewed-by: Friedemann Kleint --- src/gui/widgets/qprogressbar.cpp | 14 +++++++--- tests/auto/qprogressbar/tst_qprogressbar.cpp | 39 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/gui/widgets/qprogressbar.cpp b/src/gui/widgets/qprogressbar.cpp index 1b0a1a1..c583a78 100644 --- a/src/gui/widgets/qprogressbar.cpp +++ b/src/gui/widgets/qprogressbar.cpp @@ -341,11 +341,17 @@ int QProgressBar::value() const void QProgressBar::setRange(int minimum, int maximum) { Q_D(QProgressBar); - d->minimum = minimum; - d->maximum = qMax(minimum, maximum); - if ( d->value <(d->minimum-1) || d->value > d->maximum) - reset(); + if (minimum != d->minimum || maximum != d->maximum) { + d->minimum = minimum; + d->maximum = qMax(minimum, maximum); + + if (d->value < (d->minimum - 1) || d->value > d->maximum) + reset(); + else + update(); + } } + /*! \property QProgressBar::textVisible \brief whether the current completed percentage should be displayed diff --git a/tests/auto/qprogressbar/tst_qprogressbar.cpp b/tests/auto/qprogressbar/tst_qprogressbar.cpp index 04b7ce7..878cce8 100644 --- a/tests/auto/qprogressbar/tst_qprogressbar.cpp +++ b/tests/auto/qprogressbar/tst_qprogressbar.cpp @@ -63,6 +63,7 @@ private slots: void text(); void format(); void setValueRepaint(); + void setMinMaxRepaint(); void sizeHint(); void formatedText_data(); void formatedText(); @@ -216,6 +217,44 @@ void tst_QProgressBar::setValueRepaint() } } +void tst_QProgressBar::setMinMaxRepaint() +{ + ProgressBar pbar; + pbar.setMinimum(0); + pbar.setMaximum(10); + pbar.setFormat("%v"); + pbar.show(); + QTest::qWaitForWindowShown(&pbar); + + QApplication::processEvents(); + + // No repaint when setting minimum to the current minimum + pbar.repainted = false; + pbar.setMinimum(0); + QTest::qWait(50); + QTRY_VERIFY(!pbar.repainted); + + // No repaint when setting maximum to the current maximum + pbar.repainted = false; + pbar.setMaximum(10); + QTest::qWait(50); + QTRY_VERIFY(!pbar.repainted); + + // Repaint when setting minimum + for (int i = 9; i >= 0; i--) { + pbar.repainted = false; + pbar.setMinimum(i); + QTRY_VERIFY(pbar.repainted); + } + + // Repaint when setting maximum + for (int i = 0; i < 10; ++i) { + pbar.repainted = false; + pbar.setMaximum(i); + QTRY_VERIFY(pbar.repainted); + } +} + void tst_QProgressBar::sizeHint() { ProgressBar bar; -- cgit v0.12 From b0c09896a239197411027e773214a2635744695c Mon Sep 17 00:00:00 2001 From: jahonkon Date: Fri, 11 Nov 2011 10:07:42 +0100 Subject: Fix QDateEdit calendar pop-up having wrong date When the calendar pops up it moves the date to maximum instead of keeping the current date. Problem was caused by QCalendarPopup signalling date change to QDateTimeEdit during internal date synchronization from QDateTimeEdit to QCalendarPopup. Task-number: QTBUG-11422 Reviewed-by: Friedemann Kleint Reviewed-by: Jarek Kobus --- src/gui/widgets/qdatetimeedit.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/widgets/qdatetimeedit.cpp b/src/gui/widgets/qdatetimeedit.cpp index d9ff8a6..62c6e20 100644 --- a/src/gui/widgets/qdatetimeedit.cpp +++ b/src/gui/widgets/qdatetimeedit.cpp @@ -2532,8 +2532,10 @@ void QDateTimeEditPrivate::syncCalendarWidget() { Q_Q(QDateTimeEdit); if (monthCalendar) { + const bool sb = monthCalendar->blockSignals(true); monthCalendar->setDateRange(q->minimumDate(), q->maximumDate()); monthCalendar->setDate(q->date()); + monthCalendar->blockSignals(sb); } } -- cgit v0.12 From 054fa68b6ae852e84f2d44a73260b4282286f5ab Mon Sep 17 00:00:00 2001 From: jahonkon Date: Fri, 11 Nov 2011 10:59:47 +0100 Subject: Fix QPlainTextEdit when using Qt::TextSelectableByKeyboard flag It is not possible to select text with keyboard when specifying only Qt::TextSelectableByKeyboard flag. Task-number: QTBUG-18952 Reviewed-by: Friedemann Kleint --- src/gui/text/qtextcontrol.cpp | 7 ++----- src/gui/widgets/qplaintextedit.cpp | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp index 5babbc2..ffcd90b 100644 --- a/src/gui/text/qtextcontrol.cpp +++ b/src/gui/text/qtextcontrol.cpp @@ -2029,10 +2029,7 @@ void QTextControlPrivate::focusEvent(QFocusEvent *e) #endif ))) { #endif - cursorOn = (interactionFlags & Qt::TextSelectableByKeyboard); - if (interactionFlags & Qt::TextEditable) { - setBlinkingCursorEnabled(true); - } + setBlinkingCursorEnabled(interactionFlags & (Qt::TextEditable | Qt::TextSelectableByKeyboard)); #ifdef QT_KEYPAD_NAVIGATION } #endif @@ -2808,7 +2805,7 @@ void QTextControl::setTextInteractionFlags(Qt::TextInteractionFlags flags) d->interactionFlags = flags; if (d->hasFocus) - d->setBlinkingCursorEnabled(flags & Qt::TextEditable); + d->setBlinkingCursorEnabled(flags & (Qt::TextEditable | Qt::TextSelectableByKeyboard)); } Qt::TextInteractionFlags QTextControl::textInteractionFlags() const diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp index f2fca8f..3b2c8fd 100644 --- a/src/gui/widgets/qplaintextedit.cpp +++ b/src/gui/widgets/qplaintextedit.cpp @@ -1900,7 +1900,7 @@ void QPlainTextEdit::paintEvent(QPaintEvent *e) } } - bool drawCursor = (editable + bool drawCursor = ((editable || (textInteractionFlags() & Qt::TextSelectableByKeyboard)) && context.cursorPosition >= blpos && context.cursorPosition < blpos + bllen); -- cgit v0.12 From 00020eed3fa948f69cfa776e92121edec6f975cc Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Fri, 11 Nov 2011 12:10:22 +0100 Subject: Don't directly access QList contents The existing code doesn't work on 64bit machines. We must first convert the list into a QVector, which guarantees that elements are laid out correctly as an array. Merge-request: 1467 Reviewed-by: thiago --- src/dbus/qdbuspendingcall.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp index ea84742..2278db4 100644 --- a/src/dbus/qdbuspendingcall.cpp +++ b/src/dbus/qdbuspendingcall.cpp @@ -180,9 +180,12 @@ bool QDBusPendingCallPrivate::setReplyCallback(QObject *target, const char *memb if (metaTypes.at(count) == QDBusMetaTypeId::message) --count; - // QList is actually a vector - // kids, don't try this at home - setMetaTypes(count, count ? &metaTypes.at(1) : 0); + if (count == 0) { + setMetaTypes(count, 0); + } else { + QVector types = QVector::fromList(metaTypes); + setMetaTypes(count, types.constData() + 1); + } return true; } -- cgit v0.12 From cb2d647c1d4c01f3ab6131d7044b5afff2e5a434 Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Fri, 11 Nov 2011 12:27:43 +0100 Subject: Russian translation update Merge-request: 2715 Reviewed-by: Oswald Buddenhagen --- translations/qt_ru.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index 348b1ce..aebbac2 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -1816,14 +1816,6 @@ to QDeclarativeImportDatabase - cannot load module "%1": File name case mismatch for "%2" - невозможно загрузить модуль «%1»: Регистр имени файла не соответствует «%2» - - - module "%1" definition "%2" not readable - невозможно прочитать определение «%2» модуля «%1» - - plugin cannot be loaded for module "%1": %2 не удалось загрузить плагин для модуля «%1»: %2 @@ -1876,8 +1868,8 @@ to не является типом - File name case mismatch for "%2" - Регистр имени файла не соответствует «%2» + File name case mismatch for "%1" + Регистр имени файла не соответствует «%1» @@ -4977,7 +4969,11 @@ Please choose a different file name. bad lookahead syntax - неправильный предварительный синтаксис + неправильный синтаксис lookahead + + + lookbehinds not supported, see QTBUG-2371 + lookbehind не поддерживается, см. QTBUG-2371 bad repetition syntax -- cgit v0.12 From d8213cbff66784a3e1132e278d608500f88975f2 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Wed, 26 Oct 2011 14:45:50 +0100 Subject: HTTP proxy engine - accept standard Connection header The Proxy-Connection header is a non standard header, but is widely used so forming a de-facto standard. Some proxies use the official Connection header, so we should check for that in responses. Otherwise https connections over http proxy fail in case the proxy sends "Connection: close" with the 407 reply. Task-number: QTBUG-22177 Change-Id: If6cfa4ebb7ac9d97d65b6ddcc8257aee20ac0448 Reviewed-by: Peter Hartmann (cherry picked from commit 0ad18e18d1223b173d4a0d374b70ec08c3b22b11) --- src/network/socket/qhttpsocketengine.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp index 5c672ec..b62bc05 100644 --- a/src/network/socket/qhttpsocketengine.cpp +++ b/src/network/socket/qhttpsocketengine.cpp @@ -614,6 +614,10 @@ void QHttpSocketEngine::slotSocketReadNotification() bool willClose; QString proxyConnectionHeader = responseHeader.value(QLatin1String("Proxy-Connection")); + // Although most proxies use the unofficial Proxy-Connection header, the Connection header + // from http spec is also allowed. + if (proxyConnectionHeader.isEmpty()) + proxyConnectionHeader = responseHeader.value(QLatin1String("Connection")); proxyConnectionHeader = proxyConnectionHeader.toLower(); if (proxyConnectionHeader == QLatin1String("close")) { willClose = true; -- cgit v0.12 From 425272e7405eed077cb65a101d5dd1fafc4b11d2 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 10 Nov 2011 17:16:25 +0000 Subject: Fix warning when using QXmlInputSource with non opened QIODevice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Calling setTextModeEnabled on a QIODevice that is not open generates a warning as a result of QTBUG-20905. Previously, it caused incorrect behaviour when called with true. Now only call it if the QIODevice passed in is already opened. If not open, then it is opened by the xml reader without text mode, so there is no difference in behaviour. xml autotests still pass, although this removes several QWARN messages from the qdom autotest. Task-number: QTBUG-22659 Change-Id: Ie3137e44fe776bff6371ebd008428110168717ec Reviewed-by: João Abecasis (cherry picked from commit d457f148cf1efbea3db5fdc87c418cc9647e2baf) --- src/xml/sax/qxml.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp index 0c7f2ab..c4c5f0c 100644 --- a/src/xml/sax/qxml.cpp +++ b/src/xml/sax/qxml.cpp @@ -1321,7 +1321,8 @@ QXmlInputSource::QXmlInputSource(QIODevice *dev) { init(); d->inputDevice = dev; - d->inputDevice->setTextModeEnabled(false); + if (dev->isOpen()) + d->inputDevice->setTextModeEnabled(false); } #ifdef QT3_SUPPORT -- cgit v0.12 From 22c7a2f69e833789e9b5613f809ea43561624482 Mon Sep 17 00:00:00 2001 From: Tero Ahola Date: Fri, 11 Nov 2011 13:03:02 +0100 Subject: Mac: Fix the color of check marks in menus with stylesheet Task-number: QTBUG-16989 Reviewed-by: Friedemann Kleint Reviewed-by: Morten Johan Sorvig Reviewed-by: Eike Ziller --- src/gui/styles/qmacstyle_mac.mm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index 1c1713c..8f0e602 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -2920,10 +2920,14 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai QVector a(2); a << QLineF(x1, y1, x2, y2); a << QLineF(x2, y2, x3, y3); - if (opt->palette.currentColorGroup() == QPalette::Active) - p->setPen(QPen(Qt::white, 3)); - else + if (opt->palette.currentColorGroup() == QPalette::Active) { + if (opt->state & State_On) + p->setPen(QPen(opt->palette.highlightedText().color(), 3)); + else + p->setPen(QPen(opt->palette.text().color(), 3)); + } else { p->setPen(QPen(QColor(100, 100, 100), 3)); + } p->save(); p->setRenderHint(QPainter::Antialiasing); p->drawLines(a); -- cgit v0.12 From d278a522dc65046ad7215c333a4a1bf00c12196a Mon Sep 17 00:00:00 2001 From: Sami Rosendahl Date: Fri, 11 Nov 2011 13:17:54 +0100 Subject: Fix crash in QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd If a HTTP server responds with gzip-encoded empty content without defining Content-Length in the response header QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd will crash because it calls zlib inflateEnd for an uninitialized stream. - Fixed the crash by adding a check if the stream is initialized to gunzipBodyPartiallyEnd. - Added a regression test tst_QNetworkReply::nb279420gzipNoContentLengthEmptyContentDisconnect PMO 279420 Task-number: QTBUG-22660 Signed-off-by: Sami Rosendahl Merge-request: 1465 Reviewed-by: Peter Hartmann --- src/network/access/qhttpnetworkreply.cpp | 6 ++++-- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp index 129e2c6..b926afe 100644 --- a/src/network/access/qhttpnetworkreply.cpp +++ b/src/network/access/qhttpnetworkreply.cpp @@ -442,8 +442,10 @@ int QHttpNetworkReplyPrivate::gunzipBodyPartially(QByteArray &compressed, QByteA void QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd() { - inflateEnd(&inflateStrm); - initInflate = false; + if (initInflate) { + inflateEnd(&inflateStrm); + initInflate = false; + } } #endif diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 7e5b365..28832b2 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -332,6 +332,7 @@ private Q_SLOTS: void qtbug15311doubleContentLength(); void qtbug18232gzipContentLengthZero(); + void nb279420gzipNoContentLengthEmptyContentDisconnect(); void synchronousRequest_data(); void synchronousRequest(); @@ -5307,6 +5308,28 @@ void tst_QNetworkReply::qtbug18232gzipContentLengthZero() QCOMPARE(reply->readAll(), QByteArray()); } +// Reproduced a crash in QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd +// where zlib inflateEnd was called for uninitialized zlib stream +void tst_QNetworkReply::nb279420gzipNoContentLengthEmptyContentDisconnect() +{ + // Response with no Content-Length in header and empty content + QByteArray response("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\n\r\n"); + MiniHttpServer server(response); + server.doClose = true; + + QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); + QNetworkReplyPtr reply = manager.get(request); + + connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::NoError); + QCOMPARE(reply->size(), qint64(0)); + QVERIFY(!reply->header(QNetworkRequest::ContentLengthHeader).isValid()); + QCOMPARE(reply->readAll(), QByteArray()); +} + void tst_QNetworkReply::synchronousRequest_data() { QTest::addColumn("url"); -- cgit v0.12 From 371617983a7640a42d74db9c17f7ac3c9c22d29d Mon Sep 17 00:00:00 2001 From: Sami Rosendahl Date: Fri, 11 Nov 2011 13:29:38 +0100 Subject: Fix crash in QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd If a HTTP server responds with gzip-encoded empty content without defining Content-Length in the response header QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd will crash because it calls zlib inflateEnd for an uninitialized stream. - Fixed the crash by adding a check if the stream is initialized to gunzipBodyPartiallyEnd. - Added a regression test tst_QNetworkReply::nb279420gzipNoContentLengthEmptyContentDisconnect PMO 279420 Task-number: QTBUG-22660 Signed-off-by: Sami Rosendahl Merge-request: 1465 Reviewed-by: Peter Hartmann --- src/network/access/qhttpnetworkreply.cpp | 6 ++++-- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp index 6173b39..3dc8b2f 100644 --- a/src/network/access/qhttpnetworkreply.cpp +++ b/src/network/access/qhttpnetworkreply.cpp @@ -472,8 +472,10 @@ int QHttpNetworkReplyPrivate::gunzipBodyPartially(QByteArray &compressed, QByteA void QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd() { - inflateEnd(&inflateStrm); - initInflate = false; + if (initInflate) { + inflateEnd(&inflateStrm); + initInflate = false; + } } #endif diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 9df820a..14ad6a9 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -368,6 +368,7 @@ private Q_SLOTS: void qtbug15311doubleContentLength(); void qtbug18232gzipContentLengthZero(); + void nb279420gzipNoContentLengthEmptyContentDisconnect(); void synchronousRequest_data(); void synchronousRequest(); @@ -6139,6 +6140,28 @@ void tst_QNetworkReply::qtbug18232gzipContentLengthZero() QCOMPARE(reply->readAll(), QByteArray()); } +// Reproduced a crash in QHttpNetworkReplyPrivate::gunzipBodyPartiallyEnd +// where zlib inflateEnd was called for uninitialized zlib stream +void tst_QNetworkReply::nb279420gzipNoContentLengthEmptyContentDisconnect() +{ + // Response with no Content-Length in header and empty content + QByteArray response("HTTP/1.0 200 OK\r\nContent-Encoding: gzip\r\n\r\n"); + MiniHttpServer server(response); + server.doClose = true; + + QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); + QNetworkReplyPtr reply = manager.get(request); + + connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::NoError); + QCOMPARE(reply->size(), qint64(0)); + QVERIFY(!reply->header(QNetworkRequest::ContentLengthHeader).isValid()); + QCOMPARE(reply->readAll(), QByteArray()); +} + void tst_QNetworkReply::synchronousRequest_data() { QTest::addColumn("url"); -- cgit v0.12 From ee3f763f3642d1a098e6293fbc586b34a3e6e8be Mon Sep 17 00:00:00 2001 From: Mikko Knuutila Date: Fri, 11 Nov 2011 14:15:29 +0100 Subject: Added base 10 to be used with QIntValidator. Fixes an error in QIntValidator, which occurred because locale.toInt() was missing a parameter for base value and this led it to presume wrongly that a base 8 is in use. Task-number: QTBUG-21602 Reviewed-by: Friedemann Kleint --- src/gui/widgets/qvalidator.cpp | 3 ++- tests/auto/qintvalidator/tst_qintvalidator.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp index b32bea8..4362f2b 100644 --- a/src/gui/widgets/qvalidator.cpp +++ b/src/gui/widgets/qvalidator.cpp @@ -400,8 +400,9 @@ QValidator::State QIntValidator::validate(QString & input, int&) const qlonglong entered = QLocalePrivate::bytearrayToLongLong(buff.constData(), 10, &ok, &overflow); if (overflow || !ok) return Invalid; + if (entered >= b && entered <= t) { - locale().toInt(input, &ok); + locale().toInt(input, &ok, 10); return ok ? Acceptable : Intermediate; } diff --git a/tests/auto/qintvalidator/tst_qintvalidator.cpp b/tests/auto/qintvalidator/tst_qintvalidator.cpp index d537635..7e36093 100644 --- a/tests/auto/qintvalidator/tst_qintvalidator.cpp +++ b/tests/auto/qintvalidator/tst_qintvalidator.cpp @@ -168,6 +168,15 @@ void tst_QIntValidator::validate_data() QTest::newRow("8.9") << -1 << 100 << QString("5") << ACC; QTest::newRow("8.10") << -1 << 100 << QString("+") << INT; QTest::newRow("8.11") << -1 << 100 << QString("+50") << ACC; + + QTest::newRow("9.0") << -10 << 10 << QString("000") << ACC; + QTest::newRow("9.1") << -10 << 10 << QString("008") << ACC; + QTest::newRow("9.2") << -10 << 10 << QString("-008") << ACC; + QTest::newRow("9.3") << -10 << 10 << QString("00010") << ACC; + QTest::newRow("9.4") << -10 << 10 << QString("-00010") << ACC; + QTest::newRow("9.5") << -10 << 10 << QString("00020") << INV; + QTest::newRow("9.6") << -10 << 10 << QString("-00020") << INV; + } void tst_QIntValidator::validateArabic() -- cgit v0.12 From df819cfe17f6dfd089096063524932fc4975804f Mon Sep 17 00:00:00 2001 From: Markku Heikkila Date: Fri, 11 Nov 2011 14:35:23 +0100 Subject: Fixed wrong QGroupBox check state Handle mouserelease only if mouse is pressed in QGroupBox. Task-number: QTBUG-19170 Reviewed-by: Friedemann Kleint --- src/gui/widgets/qgroupbox.cpp | 4 ++++ tests/auto/qgroupbox/tst_qgroupbox.cpp | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/gui/widgets/qgroupbox.cpp b/src/gui/widgets/qgroupbox.cpp index 56fb2dd..db068cf 100644 --- a/src/gui/widgets/qgroupbox.cpp +++ b/src/gui/widgets/qgroupbox.cpp @@ -733,6 +733,10 @@ void QGroupBox::mouseReleaseEvent(QMouseEvent *event) } Q_D(QGroupBox); + if (!d->overCheckBox) { + event->ignore(); + return; + } QStyleOptionGroupBox box; initStyleOption(&box); QStyle::SubControl released = style()->hitTestComplexControl(QStyle::CC_GroupBox, &box, diff --git a/tests/auto/qgroupbox/tst_qgroupbox.cpp b/tests/auto/qgroupbox/tst_qgroupbox.cpp index f1388bc..f3d26ef 100644 --- a/tests/auto/qgroupbox/tst_qgroupbox.cpp +++ b/tests/auto/qgroupbox/tst_qgroupbox.cpp @@ -83,6 +83,7 @@ private slots: void toggledVsClicked(); void childrenAreDisabled(); void propagateFocus(); + void task_QTBUG_19170_ignoreMouseReleseEvent(); private: bool checked; @@ -473,5 +474,27 @@ void tst_QGroupBox::propagateFocus() QTRY_COMPARE(qApp->focusWidget(), static_cast(&lineEdit)); } +void tst_QGroupBox::task_QTBUG_19170_ignoreMouseReleseEvent() +{ + QGroupBox box; + box.setCheckable(true); + box.setChecked(false); + box.setTitle("This is a test for QTBUG-19170"); + box.show(); + + QStyleOptionGroupBox option; + option.initFrom(&box); + option.subControls = QStyle::SubControls(QStyle::SC_All); + QRect rect = box.style()->subControlRect(QStyle::CC_GroupBox, &option, + QStyle::SC_GroupBoxCheckBox, &box); + + QTest::mouseClick(&box, Qt::LeftButton, 0, rect.center()); + QCOMPARE(box.isChecked(), true); + + box.setChecked(false); + QTest::mouseRelease(&box, Qt::LeftButton, 0, rect.center()); + QCOMPARE(box.isChecked(), false); +} + QTEST_MAIN(tst_QGroupBox) #include "tst_qgroupbox.moc" -- cgit v0.12 From f322c563baabab704044810373041d99a2b03a6f Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Sun, 13 Nov 2011 13:29:38 +0100 Subject: Remove font that may not exists in some OS X systems --- tests/auto/qfontdatabase/tst_qfontdatabase.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp index 15be776..7bbd32d 100644 --- a/tests/auto/qfontdatabase/tst_qfontdatabase.cpp +++ b/tests/auto/qfontdatabase/tst_qfontdatabase.cpp @@ -285,7 +285,6 @@ void tst_QFontDatabase::localizedFonts() QFontDatabase db; QVERIFY(db.hasFamily(QString::fromUtf8("ヒラギノ明朝 Pro"))); - QVERIFY(db.hasFamily(QString::fromUtf8("华文宋体"))); QVERIFY(!db.hasFamily(QString::fromUtf8("NotValidFont"))); } #endif -- cgit v0.12 From 0792215fa8d227617a2080af9f12fd7f486b87d6 Mon Sep 17 00:00:00 2001 From: Mikko Knuutila Date: Mon, 14 Nov 2011 10:18:21 +0100 Subject: Fix for the button size calculation in qmessagebox.cpp Actually use the calculated size for needed space instead of just ignoring the return value. Task-number: QTBUG-16315 Reviewed-by: Friedemann Kleint --- src/gui/dialogs/qmessagebox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index 149e267..ba00cd8 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -153,7 +153,7 @@ public: expandedTo(QApplication::globalStrut()); opt.text = label(HideLabel); sz = fm.size(Qt::TextShowMnemonic, opt.text); - ret.expandedTo(style()->sizeFromContents(QStyle::CT_PushButton, &opt, sz, this). + ret = ret.expandedTo(style()->sizeFromContents(QStyle::CT_PushButton, &opt, sz, this). expandedTo(QApplication::globalStrut())); return ret; } -- cgit v0.12 From 11a6d868b5613dd7fdbef02198aaf9566fcd1f17 Mon Sep 17 00:00:00 2001 From: Mikko Knuutila Date: Mon, 14 Nov 2011 10:18:22 +0100 Subject: Fix for QMessageBox's autotest. Mnemonic shortcut caused string comparison to fail. Task-number: QTBUG-22119 Reviewed-by: Friedemann Kleint --- tests/auto/qmessagebox/tst_qmessagebox.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/auto/qmessagebox/tst_qmessagebox.cpp b/tests/auto/qmessagebox/tst_qmessagebox.cpp index ed085ce..06e242c 100644 --- a/tests/auto/qmessagebox/tst_qmessagebox.cpp +++ b/tests/auto/qmessagebox/tst_qmessagebox.cpp @@ -720,7 +720,8 @@ void tst_QMessageBox::detailsButtonText() QAbstractButton* btn = NULL; foreach(btn, list) { if (btn && (btn->inherits("QPushButton"))) { - if (btn->text() != QMessageBox::tr("OK") && btn->text() != QMessageBox::tr("Show Details...")) { + if (btn->text().remove("&") != QMessageBox::tr("OK") + && btn->text() != QMessageBox::tr("Show Details...")) { QFAIL(qPrintable(QString("Unexpected messagebox button text: %1").arg(btn->text()))); } } -- cgit v0.12 From 26fcd5356a25e092758a75aa4a5e5ef33fb5d926 Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Mon, 14 Nov 2011 13:18:07 +0100 Subject: Increase qdoc3 stack size when using MSVC to 4M. When running 'make docs' on Win7 with MSVC2010 64bit debug qdoc will crash from a stack overflow. The stack overflow occurs when sorting the list of nodes in the internal qdoc tree. This patch circumvents the stack overflow crash by increasing the stack size from the standard 1M to 4M. Reviewed-by: Friedemann Kleint --- tools/qdoc3/qdoc3.pro | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro index bb5ff83..254ba92 100644 --- a/tools/qdoc3/qdoc3.pro +++ b/tools/qdoc3/qdoc3.pro @@ -15,6 +15,11 @@ qdoc_bootstrapped { CONFIG -= debug_and_release_target } +# Increase the stack size on MSVC to 4M to avoid a stack overflow +win32-msvc*:{ +    QMAKE_LFLAGS += /STACK:\"4194304\" +} + !isEmpty(QT_BUILD_TREE):DESTDIR = $$QT_BUILD_TREE/bin #CONFIG += debug build_all:!build_pass { -- cgit v0.12 From f41964b2c24f4aa2c6659f2038b87e7c4b33d530 Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Mon, 14 Nov 2011 15:00:55 +0100 Subject: Update the supported platforms page. Windows XP, Win7 32-bit and Mac 106 Cocoa were missing from the supported platforms table. --- doc/src/platforms/supported-platforms.qdoc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc index a3fc390..55ba94b 100644 --- a/doc/src/platforms/supported-platforms.qdoc +++ b/doc/src/platforms/supported-platforms.qdoc @@ -416,9 +416,11 @@ \o Compilers \row \o Ubuntu Linux 10.04 (32-bit) \o As provided by Ubuntu + \row \o Microsoft Windows XP SP3 (32-bit) + \o MSVC 2008 \row \o Microsoft Windows 7 (32-bit) \o MSVC 2008 - \row \o Microsoft Windows 7 (64-bit) + \row \o Microsoft Windows 7 (32-bit) \o MSVC 2010 SP1 \row \o Apple Mac OS X 10.6 "Snow Leopard" (64-bit) \o As provided by Apple @@ -440,6 +442,8 @@ \o As provided by Ubuntu \row \o Ubuntu Linux 10.04 (32-bit) \o Intel Compiler [version 12] + \row \o Apple Mac OS X 10.6 "Snow Leopard" Cocoa (32-bit) + \o As provided by Apple \endtable \section1 Tier 3 Platforms (Not Supported by Nokia) -- cgit v0.12 From 261bbb12003dab0e45b5814f85dd74aa64bcfb79 Mon Sep 17 00:00:00 2001 From: Tero Ahola Date: Mon, 14 Nov 2011 15:27:01 +0100 Subject: Fixed memory leak in Windows Vista style widgets The animations are now deleted in destruction of the Vista style. With the previous implementation the animations were not deleted for instance if you move mouse cursor off from a widget with hover animation (like QPushButton). Task-number: QTBUG-21532 Reviewed-by: Friedemann Kleint --- src/gui/styles/qwindowsvistastyle.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/styles/qwindowsvistastyle.cpp b/src/gui/styles/qwindowsvistastyle.cpp index 5525468..8051014 100644 --- a/src/gui/styles/qwindowsvistastyle.cpp +++ b/src/gui/styles/qwindowsvistastyle.cpp @@ -2508,6 +2508,7 @@ QWindowsVistaStylePrivate::QWindowsVistaStylePrivate() : QWindowsVistaStylePrivate::~QWindowsVistaStylePrivate() { + qDeleteAll(animations); delete m_treeViewHelper; } -- cgit v0.12 From 3b2bd144b7873daf2e7119248dbac7c0f0253993 Mon Sep 17 00:00:00 2001 From: Pasi Matilainen Date: Mon, 14 Nov 2011 15:39:25 +0100 Subject: Fix QDockWidget titlebar button positioning on Mac OS X Move the QDockWidget close and float buttons from the right end of the dock widget title bar to the left end to avoid Mac App Store rejection. Task-number: QTBUG-19493 Reviewed-by: Friedemann Kleint --- src/gui/styles/qmacstyle_mac.mm | 101 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index 8f0e602..4d6252f 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -4552,6 +4552,107 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt, rect.setTop(rect.top() + SIZE(6 /* AHIG */, 3 /* guess */, 2 /* AHIG */)); } break; +#ifndef QT_NO_DOCKWIDGET + case SE_DockWidgetCloseButton: + case SE_DockWidgetFloatButton: + case SE_DockWidgetTitleBarText: + case SE_DockWidgetIcon: { + int iconSize = proxy()->pixelMetric(PM_SmallIconSize, opt, widget); + int buttonMargin = proxy()->pixelMetric(PM_DockWidgetTitleBarButtonMargin, opt, widget); + QRect srect = opt->rect; + + const QStyleOptionDockWidget *dwOpt + = qstyleoption_cast(opt); + bool canClose = dwOpt == 0 ? true : dwOpt->closable; + bool canFloat = dwOpt == 0 ? false : dwOpt->floatable; + const QStyleOptionDockWidgetV2 *v2 + = qstyleoption_cast(opt); + bool verticalTitleBar = v2 == 0 ? false : v2->verticalTitleBar; + + // If this is a vertical titlebar, we transpose and work as if it was + // horizontal, then transpose again. + if (verticalTitleBar) { + QSize size = srect.size(); + size.transpose(); + srect.setSize(size); + } + + do { + int right = srect.right(); + int left = srect.left(); + + QRect closeRect; + if (canClose) { + QSize sz = standardIcon(QStyle::SP_TitleBarCloseButton, + opt, widget).actualSize(QSize(iconSize, iconSize)); + sz += QSize(buttonMargin, buttonMargin); + if (verticalTitleBar) + sz.transpose(); + closeRect = QRect(left, + srect.center().y() - sz.height()/2, + sz.width(), sz.height()); + left = closeRect.right() + 1; + } + if (sr == SE_DockWidgetCloseButton) { + rect = closeRect; + break; + } + + QRect floatRect; + if (canFloat) { + QSize sz = standardIcon(QStyle::SP_TitleBarNormalButton, + opt, widget).actualSize(QSize(iconSize, iconSize)); + sz += QSize(buttonMargin, buttonMargin); + if (verticalTitleBar) + sz.transpose(); + floatRect = QRect(left, + srect.center().y() - sz.height()/2, + sz.width(), sz.height()); + left = floatRect.right() + 1; + } + if (sr == SE_DockWidgetFloatButton) { + rect = floatRect; + break; + } + + QRect iconRect; + if (const QDockWidget *dw = qobject_cast(widget)) { + QIcon icon; + if (dw->isFloating()) + icon = dw->windowIcon(); + if (!icon.isNull() + && icon.cacheKey() != QApplication::windowIcon().cacheKey()) { + QSize sz = icon.actualSize(QSize(rect.height(), rect.height())); + if (verticalTitleBar) + sz.transpose(); + iconRect = QRect(right - sz.width(), srect.center().y() - sz.height()/2, + sz.width(), sz.height()); + right = iconRect.left() - 1; + } + } + if (sr == SE_DockWidgetIcon) { + rect = iconRect; + break; + } + + QRect textRect = QRect(left, srect.top(), + right - left, srect.height()); + if (sr == SE_DockWidgetTitleBarText) { + rect = textRect; + break; + } + } while (false); + + if (verticalTitleBar) { + rect = QRect(srect.left() + rect.top() - srect.top(), + srect.top() + srect.right() - rect.right(), + rect.height(), rect.width()); + } else { + rect = visualRect(opt->direction, srect, rect); + } + break; + } +#endif default: rect = QWindowsStyle::subElementRect(sr, opt, widget); break; -- cgit v0.12 From fba5fce6723a739aec73ef5184ccb6cc425402fe Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 14 Nov 2011 16:26:15 +0100 Subject: Revert "Improved performance of mapFromGlobal/mapToGlobal on X11" The change introduces problems with Unity's global menu bar. Task-number: QTBUG-22420 Reviewed-by: denis This reverts commit cdd776a91e65bf5c30cea1bab9823134a3f797d0. --- src/gui/kernel/qwidget_x11.cpp | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index f99cc2c..52e3046 100644 --- a/src/gui/kernel/qwidget_x11.cpp +++ b/src/gui/kernel/qwidget_x11.cpp @@ -1336,40 +1336,12 @@ QPoint QWidgetPrivate::mapFromGlobal(const QPoint &pos) const QPoint QWidget::mapToGlobal(const QPoint &pos) const { Q_D(const QWidget); - QPoint offset = data->crect.topLeft(); - const QWidget *w = this; - const QWidget *p = w->parentWidget(); - while (!w->isWindow() && p) { - w = p; - p = p->parentWidget(); - offset += w->data->crect.topLeft(); - } - - const QWidgetPrivate *wd = w->d_func(); - QTLWExtra *tlw = wd->topData(); - if (!tlw->embedded) - return pos + offset; - return d->mapToGlobal(pos); } QPoint QWidget::mapFromGlobal(const QPoint &pos) const { Q_D(const QWidget); - QPoint offset = data->crect.topLeft(); - const QWidget *w = this; - const QWidget *p = w->parentWidget(); - while (!w->isWindow() && p) { - w = p; - p = p->parentWidget(); - offset += w->data->crect.topLeft(); - } - - const QWidgetPrivate *wd = w->d_func(); - QTLWExtra *tlw = wd->topData(); - if (!tlw->embedded) - return pos - offset; - return d->mapFromGlobal(pos); } -- cgit v0.12 From ec6d7694f72498d1b156bb0ae8d305e01931f7b2 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 14 Nov 2011 16:21:38 +0100 Subject: HTTP: blacklist server for pipelining that server was found out not to support HTTP pipelining. tested manually; for more information see the task. Reviewed-by: Markus Goetz Task-number: QTBUG-21369 --- src/network/access/qhttpnetworkconnectionchannel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 15fda34..b9db7fe 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -788,6 +788,7 @@ void QHttpNetworkConnectionChannel::detectPipeliningSupport() && (!serverHeaderField.contains("Netscape-Enterprise/3.")) // this is adpoted from the knowledge of the Nokia 7.x browser team (DEF143319) && (!serverHeaderField.contains("WebLogic")) + && (!serverHeaderField.startsWith("Rocket")) // a Python Web Server, see Web2py.com ) { pipeliningSupported = QHttpNetworkConnectionChannel::PipeliningProbablySupported; } else { -- cgit v0.12 From a32bfdef6d6b45c916f143dcf8495a2e102c3eec Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 14 Nov 2011 17:11:00 +0100 Subject: network auto tests: add QNetworkReply test for pipelining Reviewed-by: Markus Goetz Task-number: QTBUG-21369 --- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 14ad6a9..371ac57 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -168,6 +168,7 @@ public Q_SLOTS: void gotError(); void authenticationRequired(QNetworkReply*,QAuthenticator*); void proxyAuthenticationRequired(const QNetworkProxy &,QAuthenticator*); + void pipeliningHelperSlot(); #ifndef QT_NO_OPENSSL void sslErrors(QNetworkReply*,const QList &); @@ -380,6 +381,7 @@ private Q_SLOTS: void dontInsertPartialContentIntoTheCache(); void synchronousAuthenticationCache(); + void pipelining(); // NOTE: This test must be last! void parentingRepliesToTheApp(); @@ -6446,6 +6448,43 @@ void tst_QNetworkReply::synchronousAuthenticationCache() } } +void tst_QNetworkReply::pipelining() +{ + QString urlString("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/echo.cgi?"); + QList replies; + for (int a = 0; a < 20; a++) { + QNetworkRequest request(urlString + QString::number(a)); + request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, QVariant(true)); + replies.append(manager.get(request)); + connect(replies.at(a), SIGNAL(finished()), this, SLOT(pipeliningHelperSlot())); + } + QTestEventLoop::instance().enterLoop(20); + QVERIFY(!QTestEventLoop::instance().timeout()); +} + +void tst_QNetworkReply::pipeliningHelperSlot() { + static int a = 0; + + // check that pipelining was used in at least one of the replies + static bool pipeliningWasUsed = false; + QNetworkReply *reply = qobject_cast(sender()); + bool pipeliningWasUsedInReply = reply->attribute(QNetworkRequest::HttpPipeliningWasUsedAttribute).toBool(); + if (pipeliningWasUsedInReply) + pipeliningWasUsed = true; + + // check that the contents match (the response to echo.cgi?3 should return 3 etc.) + QString urlQueryString = reply->url().queryItems().at(0).first; + QString content = reply->readAll(); + QVERIFY2(urlQueryString == content, "data corruption with pipelining detected"); + + a++; + + if (a == 20) { // all replies have finished + QTestEventLoop::instance().exitLoop(); + QVERIFY2(pipeliningWasUsed, "pipelining was not used in any of the replies when trying to test pipelining"); + } +} + // NOTE: This test must be last testcase in tst_qnetworkreply! void tst_QNetworkReply::parentingRepliesToTheApp() { -- cgit v0.12 From ee60e9c88c43cc33dc94a4cec79c62ffdf02ce58 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Tue, 15 Nov 2011 14:01:13 +1000 Subject: Fix focusScopeItemChange setting crash Delay focusScopeItemChange to after reparenting, to prevent an invalid focusScopeItem pointer crash. Task-number: QTBUG-21640 Reviewed-by: Martin Jones --- src/gui/graphicsview/qgraphicsitem.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 466cc47..9e1fd09 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -1157,7 +1157,6 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q if (q_ptr == fsi || q_ptr->isAncestorOf(fsi)) { parentFocusScopeItem = fsi; p->d_ptr->focusScopeItem = 0; - fsi->d_ptr->focusScopeItemChange(false); } break; } @@ -1259,6 +1258,10 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q if (!inDestructor && (transformData || (newParent && newParent->d_ptr->transformData))) transformChanged(); + // Reparenting is finished, now safe to notify the previous focusScopeItem about changes + if (parentFocusScopeItem) + parentFocusScopeItem->d_ptr->focusScopeItemChange(false); + // Restore the sub focus chain. if (subFocusItem) { subFocusItem->d_ptr->setSubFocus(newParent); -- cgit v0.12 From 32e931b40edf4dc53424f3435d22f5c6419182f5 Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Mon, 14 Nov 2011 11:57:21 +1000 Subject: Properly protect access to pixmap reader thread with mutex Previously, access to the data from the reader thread wasn't guarded properly, causing a crash when the reader thread was deleted prior to QDeclarativePixmapData (which then attempted to dereference the thread pointer to cancel the request), or in the case where a QDeclarativePixmapData was deleted after its QDeclarativePixmapReply was removed from the jobs queue but prior to processing. Reviewed-by: Martin Jones Task-number: QTBUG-22125 --- src/declarative/util/qdeclarativepixmapcache.cpp | 57 ++++++++++++++++------ .../qdeclarativeimage/data/qtbug_22125.qml | 44 +++++++++++++++++ .../qdeclarativeimage/tst_qdeclarativeimage.cpp | 41 ++++++++++++++++ 3 files changed, 126 insertions(+), 16 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeimage/data/qtbug_22125.qml diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index 3557425..b23ac73 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -90,8 +90,9 @@ public: ~QDeclarativePixmapReply(); QDeclarativePixmapData *data; - QDeclarativePixmapReader *reader; + QDeclarativeEngine *engineForReader; // always access reader inside readerMutex. QSize requestSize; + QUrl url; bool loading; int redirectCount; @@ -147,6 +148,7 @@ public: void cancel(QDeclarativePixmapReply *rep); static QDeclarativePixmapReader *instance(QDeclarativeEngine *engine); + static QDeclarativePixmapReader *existingInstance(QDeclarativeEngine *engine); protected: void run(); @@ -176,6 +178,7 @@ private: static int downloadProgress; static int threadNetworkRequestDone; static QHash readers; +public: static QMutex readerMutex; }; @@ -326,6 +329,22 @@ QDeclarativePixmapReader::~QDeclarativePixmapReader() readers.remove(engine); readerMutex.unlock(); + mutex.lock(); + // manually cancel all outstanding jobs. + foreach (QDeclarativePixmapReply *reply, jobs) { + delete reply; + } + jobs.clear(); + QList activeJobs = replies.values(); + foreach (QDeclarativePixmapReply *reply, activeJobs) { + if (reply->loading) { + cancelled.append(reply); + reply->data = 0; + } + } + if (threadObject) threadObject->processJobs(); + mutex.unlock(); + eventLoopQuitHack->deleteLater(); wait(); } @@ -433,9 +452,8 @@ void QDeclarativePixmapReader::processJobs() if (!jobs.isEmpty() && replies.count() < IMAGEREQUEST_MAX_REQUEST_COUNT) { QDeclarativePixmapReply *runningJob = jobs.takeLast(); runningJob->loading = true; - - QUrl url = runningJob->data->url; - QSize requestSize = runningJob->data->requestSize; + QUrl url = runningJob->url; + QSize requestSize = runningJob->requestSize; locker.unlock(); processJob(runningJob, url, requestSize); locker.relock(); @@ -459,7 +477,6 @@ void QDeclarativePixmapReader::processJob(QDeclarativePixmapReply *runningJob, c errorCode = QDeclarativePixmapReply::Loading; errorStr = QDeclarativePixmap::tr("Failed to get image from provider: %1").arg(url.toString()); } - mutex.lock(); if (!cancelled.contains(runningJob)) runningJob->postReply(errorCode, errorStr, readSize, image); mutex.unlock(); @@ -487,10 +504,8 @@ void QDeclarativePixmapReader::processJob(QDeclarativePixmapReply *runningJob, c QNetworkRequest req(url); req.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); QNetworkReply *reply = networkAccessManager()->get(req); - QMetaObject::connect(reply, replyDownloadProgress, runningJob, downloadProgress); QMetaObject::connect(reply, replyFinished, threadObject, threadNetworkRequestDone); - replies.insert(reply, runningJob); } } @@ -498,22 +513,27 @@ void QDeclarativePixmapReader::processJob(QDeclarativePixmapReply *runningJob, c QDeclarativePixmapReader *QDeclarativePixmapReader::instance(QDeclarativeEngine *engine) { - readerMutex.lock(); + // XXX NOTE: must be called within readerMutex locking. QDeclarativePixmapReader *reader = readers.value(engine); if (!reader) { reader = new QDeclarativePixmapReader(engine); readers.insert(engine, reader); } - readerMutex.unlock(); return reader; } +QDeclarativePixmapReader *QDeclarativePixmapReader::existingInstance(QDeclarativeEngine *engine) +{ + // XXX NOTE: must be called within readerMutex locking. + return readers.value(engine, 0); +} + QDeclarativePixmapReply *QDeclarativePixmapReader::getImage(QDeclarativePixmapData *data) { mutex.lock(); QDeclarativePixmapReply *reply = new QDeclarativePixmapReply(data); - reply->reader = this; + reply->engineForReader = engine; jobs.append(reply); // XXX if (threadObject) threadObject->processJobs(); @@ -692,7 +712,7 @@ void QDeclarativePixmapStore::flushCache() } QDeclarativePixmapReply::QDeclarativePixmapReply(QDeclarativePixmapData *d) -: data(d), reader(0), requestSize(d->requestSize), loading(false), redirectCount(0) +: data(d), engineForReader(0), requestSize(d->requestSize), url(d->url), loading(false), redirectCount(0) { if (finishedIndex == -1) { finishedIndex = QDeclarativePixmapReply::staticMetaObject.indexOfSignal("finished()"); @@ -750,8 +770,14 @@ void QDeclarativePixmapData::release() if (refCount == 0) { if (reply) { - reply->reader->cancel(reply); + QDeclarativePixmapReply *cancelReply = reply; + reply->data = 0; reply = 0; + QDeclarativePixmapReader::readerMutex.lock(); + QDeclarativePixmapReader *reader = QDeclarativePixmapReader::existingInstance(cancelReply->engineForReader); + if (reader) + reader->cancel(cancelReply); + QDeclarativePixmapReader::readerMutex.unlock(); } if (pixmapStatus == QDeclarativePixmap::Ready) { @@ -1013,13 +1039,12 @@ void QDeclarativePixmap::load(QDeclarativeEngine *engine, const QUrl &url, const if (!engine) return; - QDeclarativePixmapReader *reader = QDeclarativePixmapReader::instance(engine); - d = new QDeclarativePixmapData(url, requestSize); if (options & QDeclarativePixmap::Cache) d->addToCache(); - - d->reply = reader->getImage(d); + QDeclarativePixmapReader::readerMutex.lock(); + d->reply = QDeclarativePixmapReader::instance(engine)->getImage(d); + QDeclarativePixmapReader::readerMutex.unlock(); } else { d = *iter; d->addref(); diff --git a/tests/auto/declarative/qdeclarativeimage/data/qtbug_22125.qml b/tests/auto/declarative/qdeclarativeimage/data/qtbug_22125.qml new file mode 100644 index 0000000..8588028 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/qtbug_22125.qml @@ -0,0 +1,44 @@ +import QtQuick 1.1 + +Item { + id: root + width: 800 + height: 800 + + GridView { + anchors.fill: parent + delegate: Image { + source: imagePath; + asynchronous: true + smooth: true + width: 200 + height: 200 + } + model: ListModel { + ListElement { + imagePath: "http://127.0.0.1:14451/big256.png" + } + ListElement { + imagePath: "http://127.0.0.1:14451/big256.png" + } + ListElement { + imagePath: "http://127.0.0.1:14451/big256.png" + } + ListElement { + imagePath: "http://127.0.0.1:14451/colors.png" + } + ListElement { + imagePath: "http://127.0.0.1:14451/colors1.png" + } + ListElement { + imagePath: "http://127.0.0.1:14451/big.jpeg" + } + ListElement { + imagePath: "http://127.0.0.1:14451/heart.png" + } + ListElement { + imagePath: "http://127.0.0.1:14451/green.png" + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp index a35d69a..f67c5b5 100644 --- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp +++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp @@ -94,6 +94,7 @@ private slots: void resetSourceSize(); void testQtQuick11Attributes(); void testQtQuick11Attributes_data(); + void readerCrash_QTBUG_22125(); private: template @@ -762,6 +763,46 @@ void tst_qdeclarativeimage::testQtQuick11Attributes_data() << ":1 \"Image.cache\" is not available in QtQuick 1.0.\n"; } +void tst_qdeclarativeimage::readerCrash_QTBUG_22125() +{ + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + server.serveDirectory(SRCDIR "/data/", TestHTTPServer::Delay); + + { + QDeclarativeView view(QUrl::fromLocalFile(SRCDIR "/data/qtbug_22125.qml")); + view.show(); + qApp->processEvents(); + qApp->processEvents(); + // shouldn't crash when the view drops out of scope due to + // QDeclarativePixmapData attempting to dereference a pointer to + // the destroyed reader. + } + + // shouldn't crash when deleting cancelled QDeclarativePixmapReplys. + QTest::qWait(1000); + qApp->processEvents(QEventLoop::DeferredDeletion); + } + + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + server.serveDirectory(SRCDIR "/data/"); + + { + QDeclarativeView view(QUrl::fromLocalFile(SRCDIR "/data/qtbug_22125.qml")); + view.show(); + qApp->processEvents(); + QTest::qWait(1000); + qApp->processEvents(); + // shouldn't crash when the view drops out of scope due to + // the reader thread accessing self-deleted QDeclarativePixmapReplys. + } + qApp->processEvents(); + } +} + /* Find an item with the specified objectName. If index is supplied then the item must also evaluate the {index} expression equal to index -- cgit v0.12 From 9be94925138d11f9a2f191f9676665eb8f3e6d3a Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 19 May 2011 11:42:31 +1000 Subject: tests: allow unstable tests to be marked with CONFIG+=insignificant_test Marking a test with CONFIG+=insignificant_test will cause the exit code of the test to be discarded during `make check'. This is intended to be used for tests which are valuable to run, but are known to be unstable and are not feasible to immediately fix. Reviewed-by: Jason McDonald Change-Id: I50a712c33c2ebb0af39f1ea0bf2adef7f0936425 (cherry picked from commit b0a5a988900b777cb08012408eb108512a3e873b) --- mkspecs/features/testcase.prf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf index 7a7c9e3..eb0aa9f 100644 --- a/mkspecs/features/testcase.prf +++ b/mkspecs/features/testcase.prf @@ -38,6 +38,10 @@ embedded: check.commands += -qws # Allow for custom arguments to tests check.commands += $(TESTARGS) + +# If the test is marked as insignificant, discard the exit code +insignificant_test:check.commands = -$${check.commands} + QMAKE_EXTRA_TARGETS *= check !debug_and_release|build_pass { -- cgit v0.12 From ed4d47fde11bf1bded55394358b19ceedb1d5768 Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Mon, 14 Nov 2011 21:56:40 +0000 Subject: Add the ability to do unsafe SSL renegotiation as a fallback. This commit adds the ability to perform legacy SSL renegotiation as a fallback via QSsl::SslOptions. This is something that used to work, but has been disabled by default in newer versions of openssl. The need for this has been reported by users (eg. in QTBUG-14983). Change-Id: I5b80f3ffd07e0c5faddc469f6a8f857bac5740f7 Reviewed-by: Corentin Chary Reviewed-by: Peter Hartmann (cherry picked from commit 75b2a4960b753766ea2eec4dbd34c67733ca8089) --- src/network/ssl/qssl.cpp | 8 +++++++- src/network/ssl/qssl.h | 3 ++- src/network/ssl/qsslconfiguration.cpp | 2 +- src/network/ssl/qsslconfiguration_p.h | 3 ++- src/network/ssl/qsslsocket_openssl.cpp | 8 ++++++++ tests/manual/qssloptions/main.cpp | 3 +++ 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/network/ssl/qssl.cpp b/src/network/ssl/qssl.cpp index b556328..01297c9 100644 --- a/src/network/ssl/qssl.cpp +++ b/src/network/ssl/qssl.cpp @@ -141,9 +141,15 @@ QT_BEGIN_NAMESPACE \value SslOptionDisableServerNameIndication Disables the SSL server name indication extension. When enabled, this tells the server the virtual host being accessed allowing it to respond with the correct certificate. + \value SslOptionDisableLegacyRenegotiation Disables the older insecure + mechanism for renegotiating the connection parameters. When enabled, this + option can allow connections for legacy servers, but it introduces the + possibility that an attacker could inject plaintext into the SSL session. By default, SslOptionDisableEmptyFragments is turned on since this causes - problems with a large number of servers, but the other options are disabled. + problems with a large number of servers. SslOptionDisableLegacyRenegotiation + is also turned on, since it introduces a security risk. The other options + are turned off. Note: Availability of above options depends on the version of the SSL backend in use. diff --git a/src/network/ssl/qssl.h b/src/network/ssl/qssl.h index 453d4da..571aa1f 100644 --- a/src/network/ssl/qssl.h +++ b/src/network/ssl/qssl.h @@ -87,7 +87,8 @@ namespace QSsl { SslOptionDisableEmptyFragments = 0x01, SslOptionDisableSessionTickets = 0x02, SslOptionDisableCompression = 0x04, - SslOptionDisableServerNameIndication = 0x08 + SslOptionDisableServerNameIndication = 0x08, + SslOptionDisableLegacyRenegotiation = 0x10 }; Q_DECLARE_FLAGS(SslOptions, SslOption) } diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index e24076e..727130b 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -201,7 +201,7 @@ bool QSslConfiguration::isNull() const d->privateKey.isNull() && d->peerCertificate.isNull() && d->peerCertificateChain.count() == 0 && - d->sslOptions == 0); + d->sslOptions == QSsl::SslOptionDisableEmptyFragments|QSsl::SslOptionDisableLegacyRenegotiation); } /*! diff --git a/src/network/ssl/qsslconfiguration_p.h b/src/network/ssl/qsslconfiguration_p.h index b83edb9..a711eeb 100644 --- a/src/network/ssl/qsslconfiguration_p.h +++ b/src/network/ssl/qsslconfiguration_p.h @@ -82,7 +82,8 @@ public: QSslConfigurationPrivate() : protocol(QSsl::SecureProtocols), peerVerifyMode(QSslSocket::AutoVerifyPeer), - peerVerifyDepth(0) + peerVerifyDepth(0), + sslOptions(QSsl::SslOptionDisableEmptyFragments|QSsl::SslOptionDisableLegacyRenegotiation) { } QSslCertificate peerCertificate; diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 3942209..5f520f7 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -298,6 +298,14 @@ init_context: else options &= ~SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS; +#ifdef SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION + // This option is disabled by default, so we need to be able to clear it + if (configuration.sslOptions & QSsl::SslOptionDisableLegacyRenegotiation) + options &= ~SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION; + else + options |= SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION; +#endif + #ifdef SSL_OP_NO_TICKET if (configuration.sslOptions & QSsl::SslOptionDisableSessionTickets) options |= SSL_OP_NO_TICKET; diff --git a/tests/manual/qssloptions/main.cpp b/tests/manual/qssloptions/main.cpp index 6f2f361..727ad23 100644 --- a/tests/manual/qssloptions/main.cpp +++ b/tests/manual/qssloptions/main.cpp @@ -56,6 +56,7 @@ int main(int argc, char **argv) out << "disable_session_tickets" << endl; out << "disable_compression" << endl; out << "disable_sni" << endl; + out << "enable_unsafe_reneg" << endl; return 1; } @@ -75,6 +76,8 @@ int main(int argc, char **argv) config.setSslOption(QSsl::SslOptionDisableCompression, true); else if (option == QLatin1String("disable_sni")) config.setSslOption(QSsl::SslOptionDisableServerNameIndication, true); + else if (option == QStringLiteral("enable_unsafe_reneg")) + config.setSslOption(QSsl::SslOptionDisableLegacyRenegotiation, false); } QSslConfiguration::setDefaultConfiguration(config); -- cgit v0.12 From f94eea0176e7ecd2c9c6a748259e08a4361d9478 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:11 +0100 Subject: Resolve atomic operations issues on INTEGRITY. Now passes atomicpointer autotest successfully. Merge-request: 1438 Reviewed-by: Harald Fernengel --- src/corelib/arch/qatomic_integrity.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/corelib/arch/qatomic_integrity.h b/src/corelib/arch/qatomic_integrity.h index f957297..c72a48d 100644 --- a/src/corelib/arch/qatomic_integrity.h +++ b/src/corelib/arch/qatomic_integrity.h @@ -203,7 +203,7 @@ inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd) template Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetOrdered(T *expectedValue, T *newValue) { - return TestAndSet((Address*)&_q_value, qt_addr(expectedValue), qt_addr(newValue)) == Success; + return TestAndSet(reinterpret_cast
(const_cast(&_q_value)), qt_addr(expectedValue), qt_addr(newValue)) == Success; } template @@ -231,7 +231,7 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreOrdered(T *newValue) { Address old_val; do { - old_val = *reinterpret_cast
(const_cast(newValue)); + old_val = *reinterpret_cast
(const_cast(_q_value)); } while (TestAndSet(reinterpret_cast
(const_cast(&_q_value)), old_val, qt_addr(newValue)) != Success); return reinterpret_cast(old_val); } @@ -259,7 +259,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndStoreRelease(T *newValue) template Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddOrdered(qptrdiff valueToAdd) { - AtomicModify(qt_p2addr(&_q_value), qt_addr(_q_value), qt_addr(_q_value) + valueToAdd * sizeof(T)); + Address old_value; + AtomicModify(reinterpret_cast(&_q_value), &old_value, 0, valueToAdd * sizeof(T)); return _q_value; } -- cgit v0.12 From 7793fe4290ac7d34b7fb219b7f0624d1c5ad5f0e Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:12 +0100 Subject: Change the overload from write() to writeMakefile() in INTEGRITY generator This way, INTEGRITY-specific generation is only called in Makefile mode. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 2 +- qmake/generators/integrity/gbuild.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index f9fdb38..df246cd 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -64,7 +64,7 @@ GBuildMakefileGenerator::GBuildMakefileGenerator() : MakefileGenerator() } bool -GBuildMakefileGenerator::write() +GBuildMakefileGenerator::writeMakefile(QTextStream &text) { QStringList tmp; QString filename(Option::output.fileName()); diff --git a/qmake/generators/integrity/gbuild.h b/qmake/generators/integrity/gbuild.h index 0927a2e..6f9a5c0 100644 --- a/qmake/generators/integrity/gbuild.h +++ b/qmake/generators/integrity/gbuild.h @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE class GBuildMakefileGenerator : public MakefileGenerator { - virtual bool write(); + virtual bool writeMakefile(QTextStream &text); QString projectSuffix() const { return QString(".gpj"); }; QString writeOne(QString filename, QString pathtoremove = ""); -- cgit v0.12 From 70c4230cbc0ce06d54e2451d9300dd855280ae33 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:13 +0100 Subject: Make applications start by default (StartIt True). Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index df246cd..48bd57f 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -141,6 +141,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) ti << "\tHeapSize\t0x00D00000" << "\n"; ti << "\tTask\tInitial" << "\n"; ti << "\t\tStackSize\t0x30000" << "\n"; + ti << "\t\tStartIt\tTrue" << "\n"; ti << "\tEndTask" << "\n"; ti << "EndAddressSpace" << "\n"; ti.flush(); -- cgit v0.12 From 96f9dd665f0bd56fc39a327481ba440c6d8450bd Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:14 +0100 Subject: Clean up generated linker file for the shared library case. Generated linker file was not looking good, now much better. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index 48bd57f..fcadec0 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -189,26 +189,28 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) tl << "}\n" "-sec\n" "{\n" - " .picbase __INTEGRITY_LibCBaseAddress :\n" + " .picbase __INTEGRITY_LibCBaseAddress :\n" " .text :\n" - " .syscall :\n" + " .syscall :\n" " .intercall :\n" " .interfunc :\n" - " .secinfo :\n" - " .rodata align(16) :\n" - " .fixaddr :\n" - " .fixtype :\n" + " .secinfo :\n" + " .rodata align(16) :\n" + " .fixaddr :\n" + " .fixtype :\n" " .rombeg :\n" " .textchecksum :\n" " // The above sections may be large. Leave a bigger gap for large pages.\n" - " .pidbase align(__INTEGRITY_MaxPageAlign) :\n" + " .pidbase align(__INTEGRITY_MaxPageAlign) :\n" " .sdabase :\n" " .data :\n" " .toc :\n" " .opd :\n" " .datachecksum :\n" - " .bss align(__INTEGRITY_MinPageAlign) :\n" - " .heap :\n" + " .sbss : \n" + " .bss align(__INTEGRITY_MinPageAlign) :\n" + " .argsection(__INTEGRITY_MaxPageAlign) :\n" + " .heap : \n" "}\n"; tl.flush(); dllbase += DLLOFFSET; -- cgit v0.12 From ef2f939effb8e0684b5832eb03c71b1427437526 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:16 +0100 Subject: Do not generate -D defines for project types. Options are implicitly inherited from project to subprojects and applications, so there is no need to respecify them. Worse, if an app/lib disables an option, the project might still have the define enabled, forcing it also onto the app/lib. This prevents double-define or this kind of conflict. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index fcadec0..658bb3c 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -273,7 +273,8 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) } t << "\n"; - t << varGlue("DEFINES", "\t-D", "\n\t-D", "\n"); + if (project->first("TEMPLATE") != "project") + t << varGlue("DEFINES", "\t-D", "\n\t-D", "\n"); t << "\t-I.\n\t-I" << specdir() << "\n"; t << varGlue("INCLUDEPATH", "\t-I", "\n\t-I", "\n"); -- cgit v0.12 From ddca33b935b411442a17614f622fdd18846e3a7a Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:17 +0100 Subject: Instead of translating / into _, check if subdir is a .pro. Previously, .pro files were treated as directories, and a previous workaround for the issue was to replace / with _ in directory paths. This was both actually non-sensical and not effective. This resolves the issue by checking if the subdir has a .pro extension. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index 658bb3c..f6499eb 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -310,9 +310,11 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) continue; if (!project->first((*it) + ".subdir").isEmpty()) gpjname = project->first((*it) + ".subdir"); + /* some SUBDIRS are not actually subdirs, instead .pro files */ + if (gpjname.endsWith(".pro")) + gpjname.chop(4); else - gpjname.replace("_", QDir::separator()); - gpjname += QDir::separator() + gpjname.section(QDir::separator(), -1); + gpjname += QDir::separator() + gpjname.section(QDir::separator(), -1); gpjname += projectSuffix(); /* make relative */ if (!project->values("QT_SOURCE_TREE").isEmpty()) { -- cgit v0.12 From fe02f62524515b80edd9b18609fe7e5b1fb7eb2b Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:18 +0100 Subject: Use "dll" instead of "shared". For DLLs (which are not supported, but may be soon), use the CONFIG variable "dll" instead of the "shared" template, because some testcases actually use shared even when compiled statically. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index f6499eb..081b441 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -153,7 +153,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) Option::output.setFileName(filename); MakefileGenerator::openOutput(Option::output, QString()); } else if ((project->first("TEMPLATE") == "lib") - && project->isActiveConfig("shared")) { + && project->isActiveConfig("dll")) { QString gpjname(strtarget); gpjname += "_shared"; gpjname += projectSuffix(); -- cgit v0.12 From b721cff590ca7e98f121f483d86bd089787639ff Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:19 +0100 Subject: Use outname to specify the output .gpj to generate. This resolves several path issues as well. outname itself is now based on the first TARGET file, instead of using the output filename. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index 081b441..4601130 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -77,7 +77,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) /* correct output for non-prl, non-recursive case */ QString outname(qmake_getpwd()); outname += QDir::separator(); - outname += fileInfo(Option::output.fileName()).baseName(); + outname += strtarget; outname += projectSuffix(); Option::output.close(); Option::output.setFileName(outname); @@ -148,9 +148,9 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) /* change current project file to _app.gpj and continue * generation */ - filename.insert(filename.lastIndexOf("."), "_app"); + outname.insert(outname.lastIndexOf("."), "_app"); Option::output.close(); - Option::output.setFileName(filename); + Option::output.setFileName(outname); MakefileGenerator::openOutput(Option::output, QString()); } else if ((project->first("TEMPLATE") == "lib") && project->isActiveConfig("dll")) { -- cgit v0.12 From ea39013a5401866367e4a0deccfcf58256bdaaa2 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:21 +0100 Subject: Only call moc if the file needs it. This applies to both headers and cpp files (use mocable()). Previously, moc was called on all cpp and h files, causing additional compilation time, and trouble on QSvgGenerator. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index 4601130..0ca470d 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -379,8 +379,9 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) QString GBuildMakefileGenerator::writeOne(QString filename, QString pathtoremove) { QString s(""); + QString origfilename(filename); s += filename.remove(pathtoremove); - if (filename.endsWith(Option::h_ext.first())) { + if (filename.endsWith(Option::h_ext.first()) && mocable(origfilename)) { QString corename(filename.section(QDir::separator(), -1)); corename.remove(Option::h_ext.first()); corename.append(Option::cpp_ext.first()); @@ -396,7 +397,7 @@ QString GBuildMakefileGenerator::writeOne(QString filename, QString pathtoremove s += tmpstr; s += ".qrc"; s += "\n"; - } else if (filename.endsWith(Option::cpp_ext.first())) { + } else if (filename.endsWith(Option::cpp_ext.first()) && mocable(origfilename)) { QString tmpstr(filename.section("/", -1)); QString filepath(pathtoremove); if (!project->values("QT_SOURCE_TREE").isEmpty()) { -- cgit v0.12 From 0648decd6a5307be3ebf98ea891385989fecb1eb Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:22 +0100 Subject: Add relative path to the work directory, to prevent filename clashes. This was causing issues for some examples, which are all consistently using main.cpp as the entry file. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index 0ca470d..9b75fbc 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -389,6 +389,8 @@ QString GBuildMakefileGenerator::writeOne(QString filename, QString pathtoremove s += "\t[MOC/Qt Header]\n"; s += "\t-o "; s += "work/"; + s += pathtoremove; + s += QDir::separator(); s += corename; s += "\n"; } else if (filename.section(QDir::separator(), -1).startsWith("qrc_")) { @@ -413,6 +415,8 @@ QString GBuildMakefileGenerator::writeOne(QString filename, QString pathtoremove s += " -o "; tmpstr.replace(Option::cpp_ext.first(), Option::cpp_moc_ext); s += "work/"; + s += pathtoremove; + s += QDir::separator(); s += tmpstr; s += "\n"; } else -- cgit v0.12 From 0f808217dc6d1dbdfd1beeef4fecc24128eaac7b Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:23 +0100 Subject: Add support for .pro-type subdirectories. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index 9b75fbc..dd20321 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -83,7 +83,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) Option::output.setFileName(outname); MakefileGenerator::openOutput(Option::output, QString()); - if (strtarget != fileInfo(project->projectFile()).baseName()) { + if (strtarget != fileInfo(project->projectFile()).baseName().section('.', -2, -2)) { QString gpjname(strtarget); QString outputName(qmake_getpwd()); outputName += QDir::separator(); -- cgit v0.12 From ea1f480170a285b2c46e934ce32af10f59b9d1fa Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:24 +0100 Subject: Make sure QMAKE_CXX is defined to prevent crashing on some projects. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index dd20321..ffb2d0a 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -218,7 +218,9 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) warn_msg(WarnParser, Option::output.fileName().toAscii()); QTextStream t(&Option::output); - QString primaryTarget(project->values("QMAKE_CXX").at(0)); + QString primaryTarget; + if (!project->values("QMAKE_CXX").isEmpty()) + primaryTarget = project->values("QMAKE_CXX").at(0); pathtoremove += QDir::separator(); filename.remove(qmake_getpwd()); -- cgit v0.12 From a74ba4514efac05c7af6f4824ca622dd5d5a2698 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:26 +0100 Subject: Use the project root from .gpj project files, instead of local path. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/generators/integrity/gbuild.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index ffb2d0a..8df858a 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -259,6 +259,8 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) t << "\t:sourceDir=." << "\n"; t << "\t:outputDir=work" << relpath << "\n"; + t << "\t-I${%expand_path(.)}/work" << relpath << "\n"; + t << "\t--cxx_include_directory ${%expand_path(.)}/work" << relpath << "\n"; if (filename.endsWith("projects.gpj")) { t << "\t:sourceDir=work\n"; t << "\t-Iwork\n"; @@ -336,7 +338,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) t << "\t-name " << tmpstr << "\n"; tmpstr.insert(tmpstr.lastIndexOf(QDir::separator()) + 1, "qrc_"); tmpstr.append(".cpp"); - t << "\t-o work/" << tmpstr << "\n"; + t << "\t-o work/" << relpath << QDir::separator() << tmpstr << "\n"; } } { @@ -348,7 +350,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) tmpstr.insert(tmpstr.lastIndexOf(QDir::separator()) + 1, "ui_"); tmpstr.remove(".ui"); tmpstr.append(".h"); - t << "\t-o work/" << tmpstr << "\n"; + t << "\t-o work/" << relpath << QDir::separator() << tmpstr << "\n"; } } @@ -371,7 +373,7 @@ GBuildMakefileGenerator::writeMakefile(QTextStream &text) { QStringList &l = project->values("GENERATED_SOURCES"); for (QStringList::Iterator it = l.begin(); it != l.end(); ++it) { - t << "work/" << (*it).section(QDir::separator(), -1) << "\n"; + t << "work/" << relpath << QDir::separator() << (*it).section(QDir::separator(), -1) << "\n"; } } -- cgit v0.12 From 75c2d2fb2d29f33d85c801c68c1a8f823e4b8c3c Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:27 +0100 Subject: Add INTEGRITY gbuild.* files to qmake project. This allows building and debugging qmake from Qt Creator. Merge-request: 1438 Reviewed-by: Harald Fernengel --- qmake/qmake.pri | 6 ++++-- qmake/qmake.pro | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/qmake/qmake.pri b/qmake/qmake.pri index c2fc1d5..f2a3705 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -22,7 +22,8 @@ SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \ generators/symbian/initprojectdeploy_symbian.cpp \ generators/integrity/gbuild.cpp \ windows/registry.cpp \ - symbian/epocroot.cpp + symbian/epocroot.cpp \ + generators/integrity/gbuild.cpp HEADERS += project.h property.h generators/makefile.h \ generators/unix/unixmake.h meta.h option.h cachekeys.h \ @@ -39,7 +40,8 @@ HEADERS += project.h property.h generators/makefile.h \ generators/symbian/initprojectdeploy_symbian.h \ generators/integrity/gbuild.h \ windows/registry_p.h \ - symbian/epocroot_p.h + symbian/epocroot_p.h \ + generators/integrity/gbuild.h contains(QT_EDITION, OpenSource) { DEFINES += QMAKE_OPENSOURCE_EDITION diff --git a/qmake/qmake.pro b/qmake/qmake.pro index b602afa..38e0fce 100644 --- a/qmake/qmake.pro +++ b/qmake/qmake.pro @@ -25,6 +25,7 @@ INCLUDEPATH += . \ generators/win32 \ generators/mac \ generators/symbian \ + generators/integrity \ $$QT_SOURCE_TREE/include \ $$QT_SOURCE_TREE/include/QtCore \ $$QT_SOURCE_TREE/qmake -- cgit v0.12 From 220ca59cc29148b998dd411500e6e9dc82218d2c Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:28 +0100 Subject: Use Q_FUNC_INFO without line number on GHS compiler. Merge-request: 1438 Reviewed-by: Harald Fernengel --- src/corelib/global/qglobal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index cfe5eea..e8c611b 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1824,7 +1824,7 @@ inline T *q_check_ptr(T *p) { Q_CHECK_PTR(p); return p; } #elif defined(_MSC_VER) # define Q_FUNC_INFO __FUNCSIG__ #else -# if defined(Q_OS_SOLARIS) || defined(Q_CC_XLC) || defined(Q_OS_SYMBIAN) +# if defined(Q_OS_SOLARIS) || defined(Q_CC_XLC) || defined(Q_OS_SYMBIAN) || defined(Q_OS_INTEGRITY) # define Q_FUNC_INFO __FILE__ "(line number unavailable)" # else /* These two macros makes it possible to turn the builtin line expander into a -- cgit v0.12 From 9d8a93ec30bebb3e102d7906d15cf3af9830993e Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:29 +0100 Subject: Improve default mkspec for INTEGRITY. More specifically : - add DEFINES for removing unsupported features - disable one more warning - specify non-shared-library mode - add hiddev library to linker list - fill debug mode flags Merge-request: 1438 Reviewed-by: Harald Fernengel --- mkspecs/unsupported/integrity-ghs/qmake.conf | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mkspecs/unsupported/integrity-ghs/qmake.conf b/mkspecs/unsupported/integrity-ghs/qmake.conf index 822d6bb..803b2da 100644 --- a/mkspecs/unsupported/integrity-ghs/qmake.conf +++ b/mkspecs/unsupported/integrity-ghs/qmake.conf @@ -7,9 +7,10 @@ MAKEFILE_GENERATOR = GBUILD TEMPLATE = app CONFIG += qt warn_on release integrity unix QT += core gui network +DEFINES += QT_NO_SHAREDMEMORY QT_NO_PROCESS QT_NO_QWS_MULTIPROCESS QT_NO_SYSTEMSEMAPHORE QT_NO_PRINTER QT_NO_QWS_QPF2 -QMAKE_CFLAGS = -bsp $$INTEGRITY_BSP -os_dir $__OS_DIR -QMAKE_CFLAGS += --diag_suppress=1,228,236,381,611,997 +QMAKE_CFLAGS = -bsp $$INTEGRITY_BSP -os_dir $__OS_DIR +QMAKE_CFLAGS += --diag_suppress=1,228,236,381,611,997,1795 QMAKE_CFLAGS_WARN_ON = QMAKE_CFLAGS_WARN_OFF = -w QMAKE_CFLAGS_RELEASE = -g -Ospeed -Olink --signed_fields --no_commons @@ -17,7 +18,7 @@ QMAKE_CFLAGS_DEBUG = -g --no_commons --signed_fields QMAKE_CFLAGS_SHLIB = QMAKE_CFLAGS_THREAD = -D_REENTRANT -QMAKE_CXXFLAGS = $$QMAKE_CFLAGS --no_implicit_include --link_once_templates +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS --no_implicit_include --link_once_templates -non_shared QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE @@ -37,9 +38,9 @@ QMAKE_LIBDIR_OPENGL = QMAKE_INCDIR_QTOPIA = $(QPEDIR)/include QMAKE_LIBDIR_QTOPIA = $(QPEDIR)/lib -QMAKE_LFLAGS = -lposix -livfs -lnet -lsocket -lfbdev -ldl +QMAKE_LFLAGS = -lposix -livfs -lnet -lsocket -lfbdev -lhiddev -ldl QMAKE_LFLAGS_RELEASE = -g -Ospeed -Olink --no_commons -non_shared --link_once_templates -QMAKE_LFLAGS_DEBUG = -g --no_commons +QMAKE_LFLAGS_DEBUG = -g --no_commons -non_shared --link_once_templates QMAKE_LFLAGS_SHLIB = QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB QMAKE_LFLAGS_SONAME = -- cgit v0.12 From 84ad4e1b4082f85463124e834b4502ff7efce7df Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:31 +0100 Subject: Add specific INTEGRITY cases for autotests requiring a target path. SRCDIR is not parsed the same way due to the different qmake generation process. furthermore, the full host path doesn't seem like a good idea to use for the path of the target filesystem. Use "/" as default. Merge-request: 1438 Reviewed-by: Harald Fernengel --- tests/auto/qbytearray/qbytearray.pro | 2 ++ tests/auto/qchar/qchar.pro | 2 ++ tests/auto/qelapsedtimer/qelapsedtimer.pro | 2 ++ tests/auto/qfileinfo/qfileinfo.pro | 2 ++ tests/auto/qresourceengine/qresourceengine.pro | 2 ++ tests/auto/qsharedpointer/qsharedpointer.pro | 7 ++++++- tests/auto/qtemporaryfile/qtemporaryfile.pro | 2 ++ tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro | 6 +++++- 8 files changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/auto/qbytearray/qbytearray.pro b/tests/auto/qbytearray/qbytearray.pro index f195dc8..b954ca0 100644 --- a/tests/auto/qbytearray/qbytearray.pro +++ b/tests/auto/qbytearray/qbytearray.pro @@ -14,6 +14,8 @@ wince* { DEFINES += SRCDIR=\\\"./\\\" } else:symbian { TARGET.EPOCHEAPSIZE="0x100 0x800000" +} else:integrity { + DEFINES += SRCDIR=\"/\" } else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/qchar/qchar.pro index 1681220..cbbde7c 100644 --- a/tests/auto/qchar/qchar.pro +++ b/tests/auto/qchar/qchar.pro @@ -10,6 +10,8 @@ DEPLOYMENT += deploy symbian: { DEFINES += SRCDIR="" +} else:integrity { + DEFINES += SRCDIR=\"/\" } else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } diff --git a/tests/auto/qelapsedtimer/qelapsedtimer.pro b/tests/auto/qelapsedtimer/qelapsedtimer.pro index 8768876..1d74fc5 100644 --- a/tests/auto/qelapsedtimer/qelapsedtimer.pro +++ b/tests/auto/qelapsedtimer/qelapsedtimer.pro @@ -7,6 +7,8 @@ wince* { } else:symbian { # do not define SRCDIR at all TARGET.EPOCHEAPSIZE = 0x100000 0x3000000 +} else:integrity { + DEFINES += SRCDIR=\"/\" } else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } diff --git a/tests/auto/qfileinfo/qfileinfo.pro b/tests/auto/qfileinfo/qfileinfo.pro index 7a2cf9c..d0e284b 100644 --- a/tests/auto/qfileinfo/qfileinfo.pro +++ b/tests/auto/qfileinfo/qfileinfo.pro @@ -26,6 +26,8 @@ wince* { DEFINES += SRCDIR=\\\"\\\" } else:symbian { # do not define SRCDIR at all +} else:integrity { + DEFINES += SRCDIR=\"/\" } else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } diff --git a/tests/auto/qresourceengine/qresourceengine.pro b/tests/auto/qresourceengine/qresourceengine.pro index 9ca6994..6359549 100644 --- a/tests/auto/qresourceengine/qresourceengine.pro +++ b/tests/auto/qresourceengine/qresourceengine.pro @@ -40,6 +40,8 @@ wince*|symbian:{ testsub2.path = testqrc/test/test DEPLOYMENT += deploy test alias other search1 search2 sub testsub testsub2 !symbian:DEFINES += SRCDIR=\\\"\\\" +} else:integrity { + DEFINES += SRCDIR=\"/\" } else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } diff --git a/tests/auto/qsharedpointer/qsharedpointer.pro b/tests/auto/qsharedpointer/qsharedpointer.pro index 014006e..37ab4ce 100644 --- a/tests/auto/qsharedpointer/qsharedpointer.pro +++ b/tests/auto/qsharedpointer/qsharedpointer.pro @@ -9,7 +9,12 @@ HEADERS += forwarddeclared.h \ wrapper.h QT = core -!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\" + +integrity { + DEFINES += SRCDIR=\"/\" +} else:!symbian { + DEFINES += SRCDIR=\\\"$$PWD/\\\" +} include(externaltests.pri) CONFIG += parallel_test diff --git a/tests/auto/qtemporaryfile/qtemporaryfile.pro b/tests/auto/qtemporaryfile/qtemporaryfile.pro index 64a043b..4cbc76d 100644 --- a/tests/auto/qtemporaryfile/qtemporaryfile.pro +++ b/tests/auto/qtemporaryfile/qtemporaryfile.pro @@ -7,6 +7,8 @@ symbian { testData.files = tst_qtemporaryfile.cpp testData.path = . DEPLOYMENT += testData +} else:integrity { + DEFINES += SRCDIR=\"/\" }else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } diff --git a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro index 5f3cb11..c52ca52 100644 --- a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro +++ b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro @@ -2,7 +2,11 @@ load(qttest_p4) QT = core HEADERS += SOURCES += tst_qtextboundaryfinder.cpp -!symbian:*:DEFINES += SRCDIR=\\\"$$PWD\\\" +integrity { + DEFINES += SRCDIR=\"/\" +} else:!symbian { + DEFINES += SRCDIR=\\\"$$PWD/\\\" +} wince*|symbian:{ addFiles.files = data -- cgit v0.12 From ec8b0dc65ead3fc1fb557e52dd14b4c0073ff1a9 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:32 +0100 Subject: Disable some tests because INTEGRITY doesn't support shared libraries. Merge-request: 1438 Reviewed-by: Harald Fernengel --- tests/auto/qlibrary/qlibrary.pro | 2 ++ tests/auto/qplugin/qplugin.pro | 2 +- tests/auto/qpluginloader/qpluginloader.pro | 4 ++-- tests/auto/selftests/selftests.pro | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/auto/qlibrary/qlibrary.pro b/tests/auto/qlibrary/qlibrary.pro index 5dc129f..b351753 100644 --- a/tests/auto/qlibrary/qlibrary.pro +++ b/tests/auto/qlibrary/qlibrary.pro @@ -6,6 +6,8 @@ symbian: { # Can't build two versions of lib with same name in symbian, so just build one SUBDIRS = lib2 \ tst +} else:integrity { +# no shared support, empty test } else { SUBDIRS = lib \ lib2 \ diff --git a/tests/auto/qplugin/qplugin.pro b/tests/auto/qplugin/qplugin.pro index 37a12da..1dcf0a7 100644 --- a/tests/auto/qplugin/qplugin.pro +++ b/tests/auto/qplugin/qplugin.pro @@ -22,7 +22,7 @@ mac { SUBDIRS = debugplugin releaseplugin tst_qplugin_pro.depends += debugplugin releaseplugin } -SUBDIRS += tst_qplugin.pro +!integrity:SUBDIRS += tst_qplugin.pro CONFIG += parallel_test diff --git a/tests/auto/qpluginloader/qpluginloader.pro b/tests/auto/qpluginloader/qpluginloader.pro index 6e41b4c..cb25b0f 100644 --- a/tests/auto/qpluginloader/qpluginloader.pro +++ b/tests/auto/qpluginloader/qpluginloader.pro @@ -1,10 +1,10 @@ QT = core TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = lib \ +!integrity:SUBDIRS = lib \ theplugin \ tst -!win32: !macx-*: !symbian: SUBDIRS += almostplugin +!win32: !macx-*: !symbian: !integrity: SUBDIRS += almostplugin TARGET = tst_qpluginloader # no special install rule for subdir diff --git a/tests/auto/selftests/selftests.pro b/tests/auto/selftests/selftests.pro index 74cd075..1494e38 100644 --- a/tests/auto/selftests/selftests.pro +++ b/tests/auto/selftests/selftests.pro @@ -12,5 +12,6 @@ INSTALLS = QT = core +integrity: SUBDIRS -= test CONFIG += parallel_test -- cgit v0.12 From 395d177cd83c174e33b205feafd8e7b613b79a6d Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:33 +0100 Subject: Remove QT 3 API support by default for INTEGRITY. Merge-request: 1438 Reviewed-by: Harald Fernengel --- src/src.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src.pro b/src/src.pro index 9314fbd..c51683b 100644 --- a/src/src.pro +++ b/src/src.pro @@ -8,7 +8,7 @@ SRC_SUBDIRS += src_corelib src_xml src_network src_sql src_testlib nacl: SRC_SUBDIRS -= src_network src_testlib !symbian:contains(QT_CONFIG, dbus):SRC_SUBDIRS += src_dbus !contains(QT_CONFIG, no-gui): SRC_SUBDIRS += src_gui -!wince*:!symbian:!vxworks:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support +!wince*:!symbian:!vxworks:!integrity:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support !wince*:!symbian-abld:!symbian-sbsv2:include(tools/tools.pro) win32:!win32-g++*:SRC_SUBDIRS += src_activeqt -- cgit v0.12 From bc8dcd6a90ea74de2f934dda6975e8a215313d14 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:34 +0100 Subject: Add XPLATFORM_INTEGRITY to define defaults for INTEGRITY. Defaults are set for QT_INSTALL paths, and for various CFG_ defines. Also set the input and framebuffer drivers to be used. Also set the BUILD_PARTS to the reduced set that produce target code. If using script and declarative, then these are added still. Make the configuration explicitly "Qt for INTEGRITY". Since *_DIR variables are set in the first part of the configuration, do not set them again in the generic code. Merge-request: 1438 Reviewed-by: Harald Fernengel --- configure | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/configure b/configure index b590507..2665a34 100755 --- a/configure +++ b/configure @@ -816,6 +816,7 @@ l_FLAGS= QCONFIG_FLAGS= XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++" or "symbian-gcce" XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*) +XPLATFORM_INTEGRITY=no # Whether target platform is INTEGRITY (*integrity*) XPLATFORM_SYMBIAN=no # Whether target platform is SYMBIAN (*symbian*) XPLATFORM_SYMBIAN_SBSV2=no # Whether target platform is SYMBIAN_SBSV2 (symbian-sbsv2) PLATFORM=$QMAKESPEC @@ -1596,6 +1597,7 @@ while [ "$#" -gt 0 ]; do xplatform) XPLATFORM="$VAL" case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac + case "$XPLATFORM" in *integrity*) XPLATFORM_INTEGRITY=yes;; esac case "$XPLATFORM" in *symbian*) XPLATFORM_SYMBIAN=yes;; esac case "$XPLATFORM" in symbian-sbsv2) XPLATFORM_SYMBIAN_SBSV2=yes;; esac ;; @@ -2899,6 +2901,7 @@ fi [ -z "$XPLATFORM" ] && XPLATFORM="$PLATFORM" case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac +case "$XPLATFORM" in *integrity*) XPLATFORM_INTEGRITY=yes;; esac case "$XPLATFORM" in *symbian*) XPLATFORM_SYMBIAN=yes;; esac case "$XPLATFORM" in symbian-sbsv2) XPLATFORM_SYMBIAN_SBSV2=yes;; esac @@ -3179,6 +3182,8 @@ if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then esac elif [ "$XPLATFORM_MINGW" = "yes" ]; then [ -z "$CFG_ARCH" ] && CFG_ARCH="windows" +elif [ "$XPLATFORM_INTEGRITY" = "yes" ]; then + CFG_ARCH=integrity elif [ "$XPLATFORM_SYMBIAN" = "yes" ]; then CFG_ARCH=symbian elif [ "$PLATFORM_MAC" = "yes" ] || [ -z "$CFG_ARCH" ]; then @@ -3531,6 +3536,19 @@ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then [ -z "$QT_INSTALL_SETTINGS" ] && QT_INSTALL_SETTINGS= [ -z "$QT_INSTALL_EXAMPLES" ] && QT_INSTALL_EXAMPLES= [ -z "$QT_INSTALL_DEMOS" ] && QT_INSTALL_DEMOS= +elif [ "$XPLATFORM_INTEGRITY" = "yes" ]; then + [ -z "$QT_HOST_PREFIX" ] && QT_HOST_PREFIX="$QT_INSTALL_PREFIX" + [ -z "$QT_INSTALL_DOCS" ] && QT_INSTALL_DOCS="$QT_INSTALL_PREFIX/doc" + [ -z "$QT_INSTALL_HEADERS" ] && QT_INSTALL_HEADERS="$QT_INSTALL_PREFIX/include" + [ -z "$QT_INSTALL_LIBS" ] && QT_INSTALL_LIBS="$QT_INSTALL_PREFIX/lib" + [ -z "$QT_INSTALL_BINS" ] && QT_INSTALL_BINS="$QT_INSTALL_PREFIX/bin" + [ -z "$QT_INSTALL_PLUGINS" ] && QT_INSTALL_PLUGINS="$QT_INSTALL_PREFIX/plugins" + [ -z "$QT_INSTALL_IMPORTS" ] && QT_INSTALL_IMPORTS="$QT_INSTALL_PREFIX/imports" + [ -z "$QT_INSTALL_DATA" ] && QT_INSTALL_DATA="$QT_INSTALL_PREFIX" + [ -z "$QT_INSTALL_TRANSLATIONS" ] && QT_INSTALL_TRANSLATIONS="$QT_INSTALL_PREFIX/translations" + [ -z "$QT_INSTALL_SETTINGS" ] && QT_INSTALL_SETTINGS="$QT_INSTALL_PREFIX" + [ -z "$QT_INSTALL_EXAMPLES" ] && QT_INSTALL_EXAMPLES="$QT_INSTALL_PREFIX/examples" + [ -z "$QT_INSTALL_DEMOS" ] && QT_INSTALL_DEMOS="$QT_INSTALL_PREFIX/demos" else #docs if [ -z "$QT_INSTALL_DOCS" ]; then #default @@ -4422,6 +4440,8 @@ if [ "$PLATFORM_QWS" = "yes" ]; then Platform="Qt for Embedded Linux" elif [ "$PLATFORM_QPA" = "yes" ]; then Platform="Qt Lighthouse" +elif [ "$XPLATFORM_INTEGRITY" = "yes" ]; then + Platform="Qt for INTEGRITY" elif [ "$XPLATFORM_SYMBIAN" = "yes" ]; then Platform="Qt for Symbian" elif [ "$PLATFORM_MAC" = "yes" ]; then @@ -5115,6 +5135,26 @@ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then fi fi fi +# Adjust all variables for INTEGRITY +if [ "$XPLATFORM_INTEGRITY" = "yes" ]; then + QMakeVar set gfx-drivers "integrityfb" + QMakeVar set kbd-drivers "integrity" + QMakeVar set mouse-drivers "integrity" + CFG_TIFF="no" + CFG_KBD_ON="integrity" + CFG_MOUSE_ON="integrity" + CFG_GFX_ON="integrityfb" + CFG_LARGEFILE="no" + CFG_STL="yes" + CFG_OPENSSL="no" + CFG_GLIB="no" + CFG_SHARED="no" + if [ "$CFG_SCRIPT" != "yes" ]; then + CFG_SCRIPT="no" + fi + CFG_BUILD_PARTS="libs examples demos" + CFG_GIF="no" +fi # check IPC support if ! "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ipc_sysv "ipc_sysv" $L_FLAGS $I_FLAGS $l_FLAGS ; then @@ -6584,7 +6624,7 @@ if [ "$CFG_DOUBLEFORMAT" = "auto" ]; then fi HAVE_STL=no -if [ "$XPLATFORM_SYMBIAN" = "yes" ] || "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $l_FLAGS; then +if [ "$XPLATFORM_SYMBIAN" = "yes" ] || [ "$XPLATFORM_INTEGRITY" = "yes" ] || "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $l_FLAGS; then HAVE_STL=yes fi @@ -6980,9 +7020,9 @@ case "$PLATFORM,$CFG_MAC_COCOA" in ;; esac -# disable Qt 3 support on VxWorks and Symbian +# disable Qt 3 support on VxWorks, Symbian and INTEGRITY case "$XPLATFORM" in - unsupported/vxworks*|symbian*) + unsupported/vxworks*|symbian*|unsupported/integrity*) CFG_QT3SUPPORT="no" ;; esac @@ -7122,10 +7162,17 @@ if [ "$XPLATFORM_MINGW" != "yes" ]; then # debug and release precompiled headers are kept separate. QMakeVar set PRECOMPILED_DIR ".pch/$QMAKE_OUTDIR" fi -QMakeVar set OBJECTS_DIR ".obj/$QMAKE_OUTDIR" -QMakeVar set MOC_DIR ".moc/$QMAKE_OUTDIR" -QMakeVar set RCC_DIR ".rcc/$QMAKE_OUTDIR" -QMakeVar set UI_DIR ".uic/$QMAKE_OUTDIR" +if [ "$XPLATFORM_INTEGRITY" = "yes" ]; then + QMakeVar set OBJECTS_DIR "$PWD/work" + QMakeVar set MOC_DIR "$PWD/work" + QMakeVar set RCC_DIR "$PWD/work" + QMakeVar set UI_DIR "$PWD/work" +else + QMakeVar set OBJECTS_DIR ".obj/$QMAKE_OUTDIR" + QMakeVar set MOC_DIR ".moc/$QMAKE_OUTDIR" + QMakeVar set RCC_DIR ".rcc/$QMAKE_OUTDIR" + QMakeVar set UI_DIR ".uic/$QMAKE_OUTDIR" +fi if [ "$CFG_LARGEFILE" = "yes" ] && [ "$XPLATFORM_MINGW" != "yes" ]; then QMAKE_CONFIG="$QMAKE_CONFIG largefile" fi -- cgit v0.12 From 481f5f0146261864bddf7f25fbba4c6ae35a3afa Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:36 +0100 Subject: Remove docs and translations generation for INTEGRITY. The source should only be used to build target code, in the context of building for INTEGRITY. Merge-request: 1438 Reviewed-by: Harald Fernengel --- projects.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects.pro b/projects.pro index bf4dc5e..0b498f8 100644 --- a/projects.pro +++ b/projects.pro @@ -8,7 +8,7 @@ TEMPLATE = subdirs cross_compile: CONFIG += nostrip isEmpty(QT_BUILD_PARTS) { #defaults - symbian { + symbian|integrity { QT_BUILD_PARTS = libs tools examples demos } else { QT_BUILD_PARTS = libs tools examples demos docs translations -- cgit v0.12 From ff01e5cca39fb418f21cc8b06885178600a84f56 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:37 +0100 Subject: Remove support for tilde expansion as there is no home on INTEGRITY. Instead of removing each use of the function, make the function do nearly nothing. If home support gets added (it is actually there when user/group support is present with full-posix mode is used), then this is trivial to remove. Also, keeps changes minimal. Merge-request: 1438 Reviewed-by: Harald Fernengel --- src/gui/dialogs/qfiledialog.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 817cd38..8b76dac 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -869,6 +869,7 @@ Q_AUTOTEST_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded if (!path.startsWith(QLatin1Char('~'))) return path; QString ret = path; +#if defined(Q_OS_INTEGRITY) QStringList tokens = ret.split(QDir::separator()); if (tokens.first() == QLatin1String("~")) { ret.replace(0, 1, QDir::homePath()); @@ -899,6 +900,7 @@ Q_AUTOTEST_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded } if (expanded != 0) *expanded = true; +#endif return ret; } #endif -- cgit v0.12 From 7624731b02eee17a69e717a2f6a2e3a3a7281977 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Tue, 15 Nov 2011 17:28:38 +0100 Subject: Update to latest INTEGRITY Framebuffer API. Merge-request: 1438 Reviewed-by: Harald Fernengel --- src/gui/embedded/qscreenintegrityfb_qws.cpp | 154 ++++++++-------------------- 1 file changed, 44 insertions(+), 110 deletions(-) diff --git a/src/gui/embedded/qscreenintegrityfb_qws.cpp b/src/gui/embedded/qscreenintegrityfb_qws.cpp index 6f30812..5b1e0d5 100644 --- a/src/gui/embedded/qscreenintegrityfb_qws.cpp +++ b/src/gui/embedded/qscreenintegrityfb_qws.cpp @@ -64,7 +64,8 @@ public: ~QIntfbScreenPrivate(); FBHandle handle; - struct FBInfoStruct fbinfo; + FBInfo fbinfo; + FBDriver *fbdrv; QWSMouseHandler *mouse; #ifndef QT_NO_QWS_KEYBOARD @@ -172,15 +173,14 @@ static QIntfbScreen *connected = 0; bool QIntfbScreen::connect(const QString &displaySpec) { - FBDriver *fbdev; - - CheckSuccess(gh_FB_get_driver(0, &fbdev)); - CheckSuccess(gh_FB_init_device(fbdev, 0, &d_ptr->handle)); + CheckSuccess(gh_FB_get_driver(0, &d_ptr->fbdrv)); + CheckSuccess(gh_FB_check_info(d_ptr->fbdrv, &d_ptr->fbinfo)); + CheckSuccess(gh_FB_open(d_ptr->fbdrv, &d_ptr->fbinfo, &d_ptr->handle)); CheckSuccess(gh_FB_get_info(d_ptr->handle, &d_ptr->fbinfo)); - data = (uchar *)d_ptr->fbinfo.start; + data = (uchar *)d_ptr->fbinfo.Start; - d = d_ptr->fbinfo.bitsperpixel; + d = d_ptr->fbinfo.BitsPerPixel; switch (d) { case 1: setPixelFormat(QImage::Format_Mono); @@ -205,24 +205,24 @@ bool QIntfbScreen::connect(const QString &displaySpec) #ifdef QT_QWS_DEPTH_GENERIC #if Q_BYTE_ORDER != Q_BIG_ENDIAN qt_set_generic_blit(this, 24, - d_ptr->fbinfo.redbits, - d_ptr->fbinfo.greenbits, - d_ptr->fbinfo.bluebits, - d_ptr->fbinfo.alphabits, - d_ptr->fbinfo.redoffset, - d_ptr->fbinfo.greenoffset, - d_ptr->fbinfo.blueoffset, - d_ptr->fbinfo.alphaoffset); + d_ptr->fbinfo.Red.Bits, + d_ptr->fbinfo.Green.Bits, + d_ptr->fbinfo.Blue.Bits, + d_ptr->fbinfo.Alpha.Bits, + d_ptr->fbinfo.Red.Offset, + d_ptr->fbinfo.Green.Offset, + d_ptr->fbinfo.Blue.Offset, + d_ptr->fbinfo.Alpha.Offset); #else qt_set_generic_blit(this, 24, - d_ptr->fbinfo.redbits, - d_ptr->fbinfo.greenbits, - d_ptr->fbinfo.bluebits, - d_ptr->fbinfo.alphabits, - 16 - d_ptr->fbinfo.redoffset, - 16 - d_ptr->fbinfo.greenoffset, - 16 - d_ptr->fbinfo.blueoffset, - d_ptr->fbinfo.alphaoffset); + d_ptr->fbinfo.Red.Bits, + d_ptr->fbinfo.Green.Bits, + d_ptr->fbinfo.Blue.Bits, + d_ptr->fbinfo.Alpha.Bits, + 16 - d_ptr->fbinfo.Red.Offset, + 16 - d_ptr->fbinfo.Green.Offset, + 16 - d_ptr->fbinfo.Blue.Offset, + 16 - d_ptr->fbinfo.Alpha.Offset); #endif #endif break; @@ -231,31 +231,31 @@ bool QIntfbScreen::connect(const QString &displaySpec) #ifdef QT_QWS_DEPTH_GENERIC #if Q_BYTE_ORDER != Q_BIG_ENDIAN qt_set_generic_blit(this, 32, - d_ptr->fbinfo.redbits, - d_ptr->fbinfo.greenbits, - d_ptr->fbinfo.bluebits, - d_ptr->fbinfo.alphabits, - d_ptr->fbinfo.redoffset, - d_ptr->fbinfo.greenoffset, - d_ptr->fbinfo.blueoffset, - d_ptr->fbinfo.alphaoffset); + d_ptr->fbinfo.Red.Bits, + d_ptr->fbinfo.Green.Bits, + d_ptr->fbinfo.Blue.Bits, + d_ptr->fbinfo.Alpha.Bits, + d_ptr->fbinfo.Red.Offset, + d_ptr->fbinfo.Green.Offset, + d_ptr->fbinfo.Blue.Offset, + d_ptr->fbinfo.Alpha.Offset); #else qt_set_generic_blit(this, 32, - d_ptr->fbinfo.redbits, - d_ptr->fbinfo.greenbits, - d_ptr->fbinfo.bluebits, - d_ptr->fbinfo.alphabits, - 24 - d_ptr->fbinfo.redoffset, - 24 - d_ptr->fbinfo.greenoffset, - 24 - d_ptr->fbinfo.blueoffset, - d_ptr->fbinfo.alphaoffset ? 24 - d_ptr->fbinfo.alphaoffset : 0); + d_ptr->fbinfo.Red.Bits, + d_ptr->fbinfo.Green.Bits, + d_ptr->fbinfo.Blue.Bits, + d_ptr->fbinfo.Alpha.Bits, + 24 - d_ptr->fbinfo.Red.Offset, + 24 - d_ptr->fbinfo.Green.Offset, + 24 - d_ptr->fbinfo.Blue.Offset, + 24 - d_ptr->fbinfo.Alpha.Offset); #endif #endif break; } - dw = w = d_ptr->fbinfo.width; - dh = h = d_ptr->fbinfo.height; + dw = w = d_ptr->fbinfo.Width; + dh = h = d_ptr->fbinfo.Height; /* assumes no padding */ lstep = w * ((d + 7) >> 3); @@ -286,72 +286,6 @@ void QIntfbScreen::disconnect() bool QIntfbScreen::initDevice() { - - CheckSuccess(gh_FB_set_info(d_ptr->handle, &d_ptr->fbinfo, false)); - CheckSuccess(gh_FB_get_info(d_ptr->handle, &d_ptr->fbinfo)); - data = (uchar *)d_ptr->fbinfo.start; - d = d_ptr->fbinfo.bitsperpixel; - dw = w = d_ptr->fbinfo.width; - dh = h = d_ptr->fbinfo.height; - mapsize = d_ptr->fbinfo.length; - /* assumes no padding */ - lstep = w * ((d + 7) >> 3); - - mapsize = size = h * lstep; - - data = (uchar *)d_ptr->fbinfo.start; - - d = d_ptr->fbinfo.bitsperpixel; - switch (d) { - case 1: - setPixelFormat(QImage::Format_Mono); - break; - case 8: - setPixelFormat(QImage::Format_Indexed8); - break; - case 12: - setPixelFormat(QImage::Format_RGB444); - break; - case 15: - setPixelFormat(QImage::Format_RGB555); - break; - case 16: - setPixelFormat(QImage::Format_RGB16); - break; - case 18: - setPixelFormat(QImage::Format_RGB666); - break; - case 24: - setPixelFormat(QImage::Format_RGB888); - break; - case 32: - setPixelFormat(QImage::Format_ARGB32_Premultiplied); - break; - } -#ifdef QT_QWS_DEPTH_GENERIC -#if defined(__BIG_ENDIAN__) - qt_set_generic_blit(this, d, - d_ptr->fbinfo.redbits, - d_ptr->fbinfo.greenbits, - d_ptr->fbinfo.bluebits, - d_ptr->fbinfo.alphabits, - 24 - d_ptr->fbinfo.redoffset, - 24 - d_ptr->fbinfo.greenoffset, - 24 - d_ptr->fbinfo.blueoffset, - d_ptr->fbinfo.alphaoffset ? 24 - d_ptr->fbinfo.alphaoffset : 0); -#else - qt_set_generic_blit(this, d, - d_ptr->fbinfo.redbits, - d_ptr->fbinfo.greenbits, - d_ptr->fbinfo.bluebits, - d_ptr->fbinfo.alphabits, - d_ptr->fbinfo.redoffset, - d_ptr->fbinfo.greenoffset, - d_ptr->fbinfo.blueoffset, - d_ptr->fbinfo.alphaoffset); -#endif -#endif - #ifndef QT_NO_QWS_CURSOR QScreenCursor::initSoftwareCursor(); #endif @@ -384,9 +318,9 @@ void QIntfbScreen::setDirty(const QRect& rect) FBRect fbrect; fbrect.dx = rect.x(); fbrect.dy = rect.y(); - fbrect.width = rect.width(); - fbrect.height = rect.height(); - gh_FB_expose(d_ptr->handle, &fbrect); + fbrect.Width = rect.width(); + fbrect.Height = rect.height(); + gh_FB_expose(d_ptr->handle, &fbrect, 0); } void QIntfbScreen::setBrightness(int b) -- cgit v0.12 From 2326a8d878e0d18473c27ddd54880621518b6e6e Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 15 Nov 2011 17:36:16 +0100 Subject: Amend qfiledialog INTEGRITY patch --- src/gui/dialogs/qfiledialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 8b76dac..970d111 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -869,7 +869,7 @@ Q_AUTOTEST_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded if (!path.startsWith(QLatin1Char('~'))) return path; QString ret = path; -#if defined(Q_OS_INTEGRITY) +#if !defined(Q_OS_INTEGRITY) QStringList tokens = ret.split(QDir::separator()); if (tokens.first() == QLatin1String("~")) { ret.replace(0, 1, QDir::homePath()); -- cgit v0.12 From d4150975af620e2889cc58bd476bac6b4d101db3 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 16 Nov 2011 09:53:38 +0100 Subject: Windows: Add gcc 4.6. - Add gcc 4.6 mkspec for > 4.4 (win32-g++-4.6) - Add detection of g++ version and 64bit to configure. Reviewed-by: mariusSO --- mkspecs/win32-g++-4.6/qmake.conf | 3 + mkspecs/win32-g++-4.6/qplatformdefs.h | 159 ++++++++++++++++++++++++++++++++++ qmake/Makefile.win32-g++ | 2 +- src/corelib/tools/qlocale_tools.cpp | 7 ++ tools/configure/configureapp.cpp | 31 ++++--- tools/configure/environment.cpp | 86 +++++++++++++++++- tools/configure/environment.h | 3 + 7 files changed, 275 insertions(+), 16 deletions(-) create mode 100644 mkspecs/win32-g++-4.6/qmake.conf create mode 100644 mkspecs/win32-g++-4.6/qplatformdefs.h diff --git a/mkspecs/win32-g++-4.6/qmake.conf b/mkspecs/win32-g++-4.6/qmake.conf new file mode 100644 index 0000000..2c94587 --- /dev/null +++ b/mkspecs/win32-g++-4.6/qmake.conf @@ -0,0 +1,3 @@ +include(../win32-g++/qmake.conf) +QMAKE_CFLAGS *= -fno-keep-inline-dllexport +QMAKE_CXXFLAGS *= -fno-keep-inline-dllexport diff --git a/mkspecs/win32-g++-4.6/qplatformdefs.h b/mkspecs/win32-g++-4.6/qplatformdefs.h new file mode 100644 index 0000000..630a6a4 --- /dev/null +++ b/mkspecs/win32-g++-4.6/qplatformdefs.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the qmake spec of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(_WIN32_WINNT) || (_WIN32_WINNT-0 < 0x0500) +typedef enum { + NameUnknown = 0, + NameFullyQualifiedDN = 1, + NameSamCompatible = 2, + NameDisplay = 3, + NameUniqueId = 6, + NameCanonical = 7, + NameUserPrincipal = 8, + NameCanonicalEx = 9, + NameServicePrincipal = 10, + NameDnsDomain = 12 +} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT; +#endif + +#define Q_FS_FAT +#ifdef QT_LARGEFILE_SUPPORT +#define QT_STATBUF struct _stati64 // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs +#define QT_STAT ::_stati64 +#define QT_FSTAT ::_fstati64 +#else +#define QT_STATBUF struct _stat // non-ANSI defs +#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs +#define QT_STAT ::_stat +#define QT_FSTAT ::_fstat +#endif +#define QT_STAT_REG _S_IFREG +#define QT_STAT_DIR _S_IFDIR +#define QT_STAT_MASK _S_IFMT +#if defined(_S_IFLNK) +# define QT_STAT_LNK _S_IFLNK +#endif +#define QT_FILENO _fileno +#define QT_OPEN ::_open +#define QT_CLOSE ::_close +#ifdef QT_LARGEFILE_SUPPORT +#define QT_LSEEK ::_lseeki64 +#ifndef UNICODE +#define QT_TSTAT ::_stati64 +#else +#define QT_TSTAT ::_wstati64 +#endif +#else +#define QT_LSEEK ::_lseek +#ifndef UNICODE +#define QT_TSTAT ::_stat +#else +#define QT_TSTAT ::_wstat +#endif +#endif +#define QT_READ ::_read +#define QT_WRITE ::_write +#define QT_ACCESS ::_access +#define QT_GETCWD ::_getcwd +#define QT_CHDIR ::_chdir +#define QT_MKDIR ::_mkdir +#define QT_RMDIR ::_rmdir +#define QT_OPEN_LARGEFILE 0 +#define QT_OPEN_RDONLY _O_RDONLY +#define QT_OPEN_WRONLY _O_WRONLY +#define QT_OPEN_RDWR _O_RDWR +#define QT_OPEN_CREAT _O_CREAT +#define QT_OPEN_TRUNC _O_TRUNC +#define QT_OPEN_APPEND _O_APPEND +#if defined(O_TEXT) +# define QT_OPEN_TEXT _O_TEXT +# define QT_OPEN_BINARY _O_BINARY +#endif + +#include "../common/c89/qplatformdefs.h" + +#ifdef QT_LARGEFILE_SUPPORT +#undef QT_FSEEK +#undef QT_FTELL +#undef QT_OFF_T + +#define QT_FSEEK ::fseeko64 +#define QT_FTELL ::ftello64 +#define QT_OFF_T off64_t +#endif + +#define QT_SIGNAL_ARGS int + +#define QT_VSNPRINTF ::_vsnprintf +#define QT_SNPRINTF ::_snprintf + +# define F_OK 0 +# define X_OK 1 +# define W_OK 2 +# define R_OK 4 + + +#endif // QPLATFORMDEFS_H diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index d40dc29..5fa1e5e 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -27,7 +27,7 @@ CFLAGS = -c -o$@ -O \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT CXXFLAGS = $(CFLAGS) -LFLAGS = -static-libgcc -static-libstdc++ -s +LFLAGS = -static-libgcc -s LIBS = -lole32 -luuid -ladvapi32 -lkernel32 LINKQMAKE = g++ $(LFLAGS) -o qmake.exe $(OBJS) $(QTOBJS) $(LIBS) ADDCLEAN = diff --git a/src/corelib/tools/qlocale_tools.cpp b/src/corelib/tools/qlocale_tools.cpp index df31bf9..750379c 100644 --- a/src/corelib/tools/qlocale_tools.cpp +++ b/src/corelib/tools/qlocale_tools.cpp @@ -2253,6 +2253,13 @@ static int quorem(Bigint *b, Bigint *S) * calculation. */ +#if defined(Q_OS_WIN) && defined (Q_CC_GNU) && !defined(_clear87) // See QTBUG-7576 +extern "C" { +__attribute__ ((dllimport)) unsigned int __cdecl __MINGW_NOTHROW _control87 (unsigned int unNew, unsigned int unMask); +__attribute__ ((dllimport)) unsigned int __cdecl __MINGW_NOTHROW _clearfp (void); /* Clear the FPU status word */ +} +# define _clear87 _clearfp +#endif /* This actually sometimes returns a pointer to a string literal cast to a char*. Do NOT try to modify the return value. */ diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index e6d8526..60996e3 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1263,17 +1263,18 @@ void Configure::parseCmdLine() } cout << "See the README file for a list of supported operating systems and compilers." << endl; } else { - if (dictionary[ "QMAKESPEC" ].endsWith("-icc") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc.net") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc2002") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc2003") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc2005") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc2008") || - dictionary[ "QMAKESPEC" ].endsWith("-msvc2010")) { + const QString qmakeSpec = dictionary[ "QMAKESPEC" ]; + if (qmakeSpec.endsWith("-icc") || + qmakeSpec.endsWith("-msvc") || + qmakeSpec.endsWith("-msvc.net") || + qmakeSpec.endsWith("-msvc2002") || + qmakeSpec.endsWith("-msvc2003") || + qmakeSpec.endsWith("-msvc2005") || + qmakeSpec.endsWith("-msvc2008") || + qmakeSpec.endsWith("-msvc2010")) { if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "nmake"; dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32"; - } else if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) { + } else if (qmakeSpec.contains("win32-g++")) { if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "mingw32-make"; if (Environment::detectExecutable("sh.exe")) { dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32-g++-sh"; @@ -1329,7 +1330,7 @@ void Configure::parseCmdLine() } } - useUnixSeparators = (dictionary["QMAKESPEC"] == "win32-g++"); + useUnixSeparators = dictionary["QMAKESPEC"].contains("win32-g++"); // Allow tests for private classes to be compiled against internal builds if (dictionary["BUILDDEV"] == "yes") @@ -2201,7 +2202,9 @@ bool Configure::checkAvailability(const QString &part) } else if (part == "MULTIMEDIA" || part == "SCRIPT" || part == "SCRIPTTOOLS" || part == "DECLARATIVE") { available = true; } else if (part == "WEBKIT") { - available = (dictionary.value("QMAKESPEC") == "win32-msvc2005") || (dictionary.value("QMAKESPEC") == "win32-msvc2008") || (dictionary.value("QMAKESPEC") == "win32-msvc2010") || (dictionary.value("QMAKESPEC") == "win32-g++"); + const QString qmakeSpec = dictionary.value("QMAKESPEC"); + available = qmakeSpec == "win32-msvc2005" || qmakeSpec == "win32-msvc2008" || + qmakeSpec == "win32-msvc2010" || qmakeSpec.startsWith("win32-g++"); if (dictionary[ "SHARED" ] == "no") { cout << endl << "WARNING: Using static linking will disable the WebKit module." << endl << endl; @@ -2376,7 +2379,7 @@ bool Configure::verifyConfiguration() dictionary["SQL_SQLITE_LIB"] = "qt"; // Set to Qt's bundled lib an continue } - if (dictionary["QMAKESPEC"].endsWith("-g++") + if (dictionary["QMAKESPEC"].contains("-g++") && dictionary["SQL_OCI"] != "no") { cout << "WARNING: Qt does not support compiling the Oracle database driver with" << endl << "MinGW, due to lack of such support from Oracle. Consider disabling the" << endl @@ -2456,7 +2459,7 @@ void Configure::generateBuildKey() QString spec = dictionary["QMAKESPEC"]; QString compiler = "msvc"; // ICC is compatible - if (spec.endsWith("-g++")) + if (spec.contains("-g++")) compiler = "mingw"; else if (spec.endsWith("-borland")) compiler = "borland"; @@ -2874,7 +2877,7 @@ void Configure::generateOutputVars() if (!qmakeStylePlugins.isEmpty()) qmakeVars += QString("style-plugins += ") + qmakeStylePlugins.join(" "); - if (dictionary["QMAKESPEC"].endsWith("-g++")) { + if (dictionary["QMAKESPEC"].contains("-g++")) { QString includepath = qgetenv("INCLUDE"); bool hasSh = Environment::detectExecutable("sh.exe"); QChar separator = (!includepath.contains(":\\") && hasSh ? QChar(':') : QChar(';')); diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp index f9b3e85..78e1d87 100644 --- a/tools/configure/environment.cpp +++ b/tools/configure/environment.cpp @@ -120,6 +120,9 @@ QString Environment::detectQMakeSpec() spec = "win32-icc"; break; case CC_MINGW: + spec = "win32-g++-4.6"; + break; + case CC_MINGW_44: spec = "win32-g++"; break; case CC_BORLAND: @@ -173,6 +176,12 @@ Compiler Environment::detectCompiler() if (executable.length() && Environment::detectExecutable(executable)) { ++installed; detectedCompiler = compiler_info[i].compiler; + if (detectedCompiler == CC_MINGW) { + bool is64bit; + const int version = detectGPlusPlusVersion(executable, &is64bit); + if (version < 0x040600) + detectedCompiler = CC_MINGW_44; + } break; } } @@ -184,7 +193,7 @@ Compiler Environment::detectCompiler() } return detectedCompiler; #endif -}; +} /*! Returns true if the \a executable could be loaded, else false. @@ -214,6 +223,81 @@ bool Environment::detectExecutable(const QString &executable) } /*! + Determine the g++ version. +*/ + +int Environment::detectGPlusPlusVersion(const QString &executable, + bool *is64bit) +{ + QRegExp regexp(QLatin1String("[gG]\\+\\+[\\.exEX]{0,4} ([^\\s]+) (\\d+)\\.(\\d+)\\.(\\d+)")); + QString stdOut = readProcessStandardOutput(executable + QLatin1String(" --version")); + if (regexp.indexIn(stdOut) != -1) { + const QString compiler = regexp.cap(1); + // Check for "tdm64-1" + *is64bit = compiler.contains(QLatin1String("64")); + const int major = regexp.cap(2).toInt(); + const int minor = regexp.cap(3).toInt(); + const int patch = regexp.cap(4).toInt(); + return (major << 16) + (minor << 8) + patch; + } + *is64bit = false; + return 0; +} + +/*! + Run a process and return its standard output. +*/ + +QString Environment::readProcessStandardOutput(const QString &commandLine) +{ + QString stdOut; + TCHAR tempFileName[MAX_PATH]; + TCHAR tempPathBuffer[MAX_PATH]; + if (!GetTempPath(MAX_PATH, tempPathBuffer) + || !GetTempFileName(tempPathBuffer, TEXT("qtconfigure"), 0, tempFileName)) + return stdOut; + + STARTUPINFO startInfo; + memset(&startInfo, 0, sizeof(startInfo)); + startInfo.cb = sizeof(startInfo); + startInfo.dwFlags |= STARTF_USESTDHANDLES; + + SECURITY_ATTRIBUTES securityAttributes; + securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES); + securityAttributes.bInheritHandle = TRUE; + securityAttributes.lpSecurityDescriptor = NULL; + + startInfo.hStdOutput = CreateFile(tempFileName, GENERIC_WRITE, 0, &securityAttributes, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (startInfo.hStdOutput == INVALID_HANDLE_VALUE) + return stdOut; + + PROCESS_INFORMATION procInfo; + memset(&procInfo, 0, sizeof(procInfo)); + + if (!CreateProcess(0, (wchar_t*)commandLine.utf16(), + 0, 0, TRUE, + 0, + 0, 0, &startInfo, &procInfo)) { + CloseHandle(startInfo.hStdOutput); + DeleteFile(tempFileName); + return stdOut; + } + + WaitForSingleObject(procInfo.hProcess, INFINITE); + CloseHandle(procInfo.hThread); + CloseHandle(procInfo.hProcess); + CloseHandle(startInfo.hStdOutput); + QFile file(QString::fromWCharArray(tempFileName)); + + if (file.open(QIODevice::Text| QIODevice::ReadOnly)) { + stdOut = QString::fromLocal8Bit(file.readAll()); + file.close(); + } + DeleteFile(tempFileName); + return stdOut; +} + +/*! Creates a commandling from \a program and it \a arguments, escaping characters that needs it. */ diff --git a/tools/configure/environment.h b/tools/configure/environment.h index 9bbd096..81c232a 100644 --- a/tools/configure/environment.h +++ b/tools/configure/environment.h @@ -49,6 +49,7 @@ enum Compiler { CC_UNKNOWN = 0, CC_BORLAND = 0x01, CC_MINGW = 0x02, + CC_MINGW_44 = 0x21, CC_INTEL = 0x03, CC_NET2003 = 0x71, CC_NET2005 = 0x80, @@ -63,6 +64,8 @@ public: static Compiler detectCompiler(); static QString detectQMakeSpec(); static bool detectExecutable(const QString &executable); + static int detectGPlusPlusVersion(const QString &executable, bool *is64bit); + static QString readProcessStandardOutput(const QString &commandLine); static int execute(QStringList arguments, const QStringList &additionalEnv, const QStringList &removeEnv); static bool cpdir(const QString &srcDir, -- cgit v0.12 From 44b08536caa51700e6885bff90c2c3f9de699ad6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 16 Nov 2011 14:40:43 +0100 Subject: Rebuild configure.exe with support for MinGW 4.6 See d4150975af620e2889cc58bd476bac6b4d101db3 --- configure.exe | Bin 1473536 -> 1498624 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/configure.exe b/configure.exe index 9538a4b..5487fda 100755 Binary files a/configure.exe and b/configure.exe differ -- cgit v0.12