diff options
author | markd <markd> | 2012-03-19 11:28:48 +0000 |
---|---|---|
committer | markd <markd> | 2012-03-19 11:28:48 +0000 |
commit | b9d9b3bd3cb524e25ed66287a7a0e1cf9d4deb64 (patch) | |
tree | 48ef6347b26980044de077eb6287238342054ff9 /x11 | |
parent | cb263ff1d86ec9b27fac7bbb052b7a99e4a06926 (diff) | |
download | pkgsrc-b9d9b3bd3cb524e25ed66287a7a0e1cf9d4deb64.tar.gz |
Update to KDE SC 4.8.0
Diffstat (limited to 'x11')
29 files changed, 1797 insertions, 1193 deletions
diff --git a/x11/kdelibs4/Makefile b/x11/kdelibs4/Makefile index e1c362f4835..04ff98e17fc 100644 --- a/x11/kdelibs4/Makefile +++ b/x11/kdelibs4/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.36 2012/03/03 00:11:52 wiz Exp $ +# $NetBSD: Makefile,v 1.37 2012/03/19 11:28:48 markd Exp $ DISTNAME= kdelibs-${_KDE_VERSION} -PKGREVISION= 12 +PKGNAME= ${DISTNAME:S/-4/4-4/} CATEGORIES= x11 COMMENT= Support libraries for the KDE integrated X11 desktop @@ -17,7 +17,7 @@ CONFLICTS= kdelibs-[0-9]* CMAKE_DEPENDENCIES_REWRITE= _KDE_build/KDELibsDependencies.cmake CMAKE_DEPENDENCIES_REWRITE+= _KDE_build/KDELibsDependenciesInternal.cmake -CMAKE_MODULE_PATH_OVERRIDE+= kjsembed/qtonly/CMakeLists.txt +CMAKE_MODULE_PATH_OVERRIDE+= kjsembed/qtonly/CMakeLists.txt CMAKE_ARGS+= -DKDE_DISTRIBUTION_TEXT:STRING="NetBSD pkgsrc" CMAKE_ARGS+= -DWITH_Avahi:BOOL=off @@ -50,12 +50,17 @@ SUBST_STAGE.kdelibsfix= pre-configure SUBST_MESSAGE.kdelibsfix= Fixing hardcoded paths. SUBST_FILES.kdelibsfix= \ kde3support/kdeui/k3sconfig.cpp \ - kdeui/colors/kcolordialog.cpp \ kio/kssl/kopenssl.cpp -SUBST_SED.kdelibsfix= -e 's:@LOCALBASE@:${LOCALBASE}:g' -e 's:@X11BASE@:${X11BASE}:g' +SUBST_SED.kdelibsfix= -e 's:@LOCALBASE@:${LOCALBASE}:g' + +# XXX this is an ugly hack to avoid the WRKDIR path in the installed cmake file +SUBST_CLASSES+= phononrelpath +SUBST_STAGE.phononrelpath= post-configure +SUBST_MESSAGE.phononrelpath= Fixing phonon RELWITHDEBINFO path +SUBST_FILES.phononrelpath= _KDE_build/CMakeFiles/Export/_usr/pkg/share/kde/apps/cmake/modules/KDELibs4LibraryTargets-relwithdebinfo.cmake +SUBST_SED.phononrelpath= -e 's:[^"]*/\.buildlink/lib/libphonon\.so::' USE_TOOLS+= flex gmake -PLIST_VARS+= kgrantpty .include "../../mk/bsd.prefs.mk" @@ -64,24 +69,19 @@ PLIST_VARS+= kgrantpty DEPENDS+= zonetab-[0-9]*:../../time/zonetab .endif -.if ${OPSYS} == "SunOS" -PLIST.kgrantpty= yes -.endif - -LDFLAGS.SunOS+= -lintl - BUILDLINK_DEPMETHOD.qt4-tools= full .include "../../meta-pkgs/kde4/kde4.mk" BUILDLINK_API_DEPENDS.strigi+= strigi>=0.5.11 -BUILDLINK_API_DEPENDS.soprano+= soprano>=2.3.0 -BUILDLINK_API_DEPENDS.shared-desktop-ontologies+= shared-desktop-ontologies>=0.4 +BUILDLINK_API_DEPENDS.soprano+= soprano>=2.5.60 +BUILDLINK_API_DEPENDS.shared-desktop-ontologies+= shared-desktop-ontologies>=0.6.5 .include "../../archivers/bzip2/buildlink3.mk" .include "../../archivers/xz/buildlink3.mk" .include "../../sysutils/strigi/buildlink3.mk" .include "../../textproc/soprano/buildlink3.mk" .include "../../databases/shared-mime-info/buildlink3.mk" +.include "../../devel/libdbusmenu-qt/buildlink3.mk" .include "../../devel/pcre/buildlink3.mk" .include "../../devel/zlib/buildlink3.mk" .include "../../graphics/hicolor-icon-theme/buildlink3.mk" @@ -93,12 +93,11 @@ BUILDLINK_API_DEPENDS.shared-desktop-ontologies+= shared-desktop-ontologies>=0.4 .include "../../multimedia/phonon/buildlink3.mk" # Avahi ? rather than mDNSResponder -.include "../../devel/libdbusmenu-qt/buildlink3.mk" -.include "../../mk/fam.buildlink3.mk" .include "../../net/mDNSResponder/buildlink3.mk" .include "../../security/openssl/buildlink3.mk" .include "../../security/polkit-qt/buildlink3.mk" .include "../../security/qca2/buildlink3.mk" +.include "../../mk/fam.buildlink3.mk" .include "../../textproc/aspell/buildlink3.mk" .include "../../textproc/enchant/buildlink3.mk" .include "../../textproc/libxml2/buildlink3.mk" @@ -108,6 +107,6 @@ BUILDLINK_API_DEPENDS.shared-desktop-ontologies+= shared-desktop-ontologies>=0.4 .include "../../x11/libXinerama/buildlink3.mk" .include "../../x11/libXpm/buildlink3.mk" .include "../../x11/libXtst/buildlink3.mk" - .include "../../mk/krb5.buildlink3.mk" +.include "../../sysutils/desktop-file-utils/desktopdb.mk" .include "../../mk/bsd.pkg.mk" diff --git a/x11/kdelibs4/PLIST b/x11/kdelibs4/PLIST index e254cc2af56..f3f12ae4f86 100644 --- a/x11/kdelibs4/PLIST +++ b/x11/kdelibs4/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.8 2011/11/29 18:12:12 hans Exp $ +@comment $NetBSD: PLIST,v 1.9 2012/03/19 11:28:48 markd Exp $ bin/checkXML bin/kbuildsycoca4 bin/kconfig_compiler @@ -8,6 +8,7 @@ bin/kded4 bin/kdeinit4 bin/kdeinit4_shutdown bin/kdeinit4_wrapper +bin/kfilemetadatareader bin/kjs bin/kjscmd bin/kross @@ -259,6 +260,7 @@ include/KDE/KCategoryDrawer include/KDE/KCharMacroExpander include/KDE/KCharSelect include/KDE/KCharsets +include/KDE/KCheckableProxyModel include/KDE/KCmdLineArgs include/KDE/KCmdLineOptions include/KDE/KCodecs @@ -292,6 +294,7 @@ include/KDE/KConfigSkeletonItem include/KDE/KCrash include/KDE/KCrashBookmarkImporter include/KDE/KCrashBookmarkImporterImpl +include/KDE/KCurrencyCode include/KDE/KCursor include/KDE/KDBusServiceStarter include/KDE/KDEDModule @@ -299,13 +302,16 @@ include/KDE/KDEsuClient include/KDE/KDataTool include/KDE/KDataToolAction include/KDE/KDataToolInfo +include/KDE/KDateComboBox include/KDE/KDatePicker include/KDE/KDateTable include/KDE/KDateTime +include/KDE/KDateTimeEdit include/KDE/KDateTimeWidget include/KDE/KDateValidator include/KDE/KDateWidget include/KDE/KDebug +include/KDE/KDescendantsProxyModel include/KDE/KDesktopFile include/KDE/KDialog include/KDE/KDialogButtonBox @@ -320,8 +326,10 @@ include/KDE/KDiskFreeSpace include/KDE/KDiskFreeSpaceInfo include/KDE/KDoubleNumInput include/KDE/KDoubleValidator +include/KDE/KDualAction include/KDE/KEMailSettings include/KDE/KEditListBox +include/KDE/KEditListWidget include/KDE/KEditToolBar include/KDE/KEmoticons include/KDE/KEmoticonsProvider @@ -338,6 +346,7 @@ include/KDE/KFileItemActions include/KDE/KFileItemDelegate include/KDE/KFileItemList include/KDE/KFileItemListProperties +include/KDE/KFileMetaDataWidget include/KDE/KFileMetaInfo include/KDE/KFileMetaInfoGroup include/KDE/KFileMetaInfoItem @@ -361,6 +370,7 @@ include/KDE/KFontComboBox include/KDE/KFontDialog include/KDE/KFontRequester include/KDE/KFontSizeAction +include/KDE/KFontUtils include/KDE/KGenericFactory include/KDE/KGenericFactoryBase include/KDE/KGlobal @@ -396,6 +406,7 @@ include/KDE/KIO/FileCopyJob include/KDE/KIO/FileJob include/KDE/KIO/ForwardingSlaveBase include/KDE/KIO/Job +include/KDE/KIO/JobClasses include/KDE/KIO/JobUiDelegate include/KDE/KIO/ListJob include/KDE/KIO/MetaData @@ -462,6 +473,7 @@ include/KDE/KMessage include/KDE/KMessageBox include/KDE/KMessageBoxMessageHandler include/KDE/KMessageHandler +include/KDE/KMessageWidget include/KDE/KMimeType include/KDE/KMimeTypeChooser include/KDE/KMimeTypeChooserDialog @@ -510,6 +522,7 @@ include/KDE/KNetwork/KSocketDeviceFactory include/KDE/KNetwork/KSocksSocketDevice include/KDE/KNetwork/KStreamSocket include/KDE/KNetwork/KUnixSocketAddress +include/KDE/KNewFileMenu include/KDE/KNotification include/KDE/KNotificationRestrictions include/KDE/KNotifyConfigWidget @@ -533,10 +546,12 @@ include/KDE/KParts/ComponentFactory include/KDE/KParts/DockMainWindow3 include/KDE/KParts/Event include/KDE/KParts/Factory +include/KDE/KParts/FileInfoExtension include/KDE/KParts/GUIActivateEvent include/KDE/KParts/GenericFactory include/KDE/KParts/GenericFactoryBase include/KDE/KParts/HistoryProvider +include/KDE/KParts/HtmlExtension include/KDE/KParts/LiveConnectExtension include/KDE/KParts/MainWindow include/KDE/KParts/OpenUrlEvent @@ -549,6 +564,7 @@ include/KDE/KParts/Plugin include/KDE/KParts/ReadOnlyPart include/KDE/KParts/ReadWritePart include/KDE/KParts/StatusBarExtension +include/KDE/KParts/TextExtension include/KDE/KParts/WindowArgs include/KDE/KPassivePopup include/KDE/KPassivePopupMessageHandler @@ -583,6 +599,7 @@ include/KDE/KPtyProcess include/KDE/KPushButton include/KDE/KRandom include/KDE/KRandomSequence +include/KDE/KRatingWidget include/KDE/KRecentDocument include/KDE/KRecentFilesAction include/KDE/KRemoteEncoding @@ -594,10 +611,12 @@ include/KDE/KRichTextWidget include/KDE/KRuler include/KDE/KRun include/KDE/KSambaShare +include/KDE/KSambaShareData include/KDE/KSaveFile include/KDE/KScanDialog include/KDE/KSelectAction include/KDE/KSelectionOwner +include/KDE/KSelectionProxyModel include/KDE/KSelectionWatcher include/KDE/KSelector include/KDE/KSeparator @@ -617,6 +636,7 @@ include/KDE/KSharedPtr include/KDE/KShell include/KDE/KShellCompletion include/KDE/KShortcut +include/KDE/KShortcutWidget include/KDE/KShortcutsDialog include/KDE/KShortcutsEditor include/KDE/KSocks @@ -641,6 +661,7 @@ include/KDE/KStyleFactory include/KDE/KSvgRenderer include/KDE/KSycoca include/KDE/KSycocaEntry +include/KDE/KSystemEventFilter include/KDE/KSystemTimeZone include/KDE/KSystemTimeZoneSource include/KDE/KSystemTimeZones @@ -690,6 +711,7 @@ include/KDE/KTextEditor/TemplateInterface2 include/KDE/KTextEditor/TextHintInterface include/KDE/KTextEditor/VariableInterface include/KDE/KTextEditor/View +include/KDE/KTimeComboBox include/KDE/KTimeZone include/KDE/KTimeZoneData include/KDE/KTimeZoneSource @@ -738,6 +760,7 @@ include/KDE/KUrlRequesterDialog include/KDE/KUser include/KDE/KUserGroup include/KDE/KVBox +include/KDE/KViewStateMaintainer include/KDE/KWallet/Wallet include/KDE/KWebPage include/KDE/KWebPluginFactory @@ -785,6 +808,7 @@ include/KDE/Kross/WrapperInterface include/KDE/NET include/KDE/NETRootInfo include/KDE/NETWinInfo +include/KDE/Nepomuk/File include/KDE/Nepomuk/KRatingPainter include/KDE/Nepomuk/KRatingWidget include/KDE/Nepomuk/MassUpdateJob @@ -803,6 +827,7 @@ include/KDE/Nepomuk/Query/ResourceTerm include/KDE/Nepomuk/Query/ResourceTypeTerm include/KDE/Nepomuk/Query/Result include/KDE/Nepomuk/Query/SimpleTerm +include/KDE/Nepomuk/Query/StandardQuery include/KDE/Nepomuk/Query/Term include/KDE/Nepomuk/Resource include/KDE/Nepomuk/ResourceManager @@ -814,7 +839,26 @@ include/KDE/Nepomuk/Types/Class include/KDE/Nepomuk/Types/Literal include/KDE/Nepomuk/Types/Ontology include/KDE/Nepomuk/Types/Property +include/KDE/Nepomuk/Utils/DynamicResourceFacet +include/KDE/Nepomuk/Utils/Facet +include/KDE/Nepomuk/Utils/FacetWidget +include/KDE/Nepomuk/Utils/ProxyFacet +include/KDE/Nepomuk/Utils/ResourceModel +include/KDE/Nepomuk/Utils/SearchWidget +include/KDE/Nepomuk/Utils/SimpleFacet +include/KDE/Nepomuk/Utils/SimpleResourceModel include/KDE/Nepomuk/Variant +include/KDE/Nepomuk/Vocabulary/NCAL +include/KDE/Nepomuk/Vocabulary/NCO +include/KDE/Nepomuk/Vocabulary/NDO +include/KDE/Nepomuk/Vocabulary/NEXIF +include/KDE/Nepomuk/Vocabulary/NFO +include/KDE/Nepomuk/Vocabulary/NIE +include/KDE/Nepomuk/Vocabulary/NMM +include/KDE/Nepomuk/Vocabulary/NMO +include/KDE/Nepomuk/Vocabulary/NUAO +include/KDE/Nepomuk/Vocabulary/PIMO +include/KDE/Nepomuk/Vocabulary/TMO include/KDE/OrgKdeKDirNotifyInterface include/KDE/OrgKdeKLauncherInterface include/KDE/Plasma/AbstractDialogManager @@ -844,6 +888,7 @@ include/KDE/Plasma/DataContainer include/KDE/Plasma/DataEngine include/KDE/Plasma/DataEngineManager include/KDE/Plasma/DataEngineScript +include/KDE/Plasma/DeclarativeWidget include/KDE/Plasma/Delegate include/KDE/Plasma/Dialog include/KDE/Plasma/Extender @@ -864,6 +909,7 @@ include/KDE/Plasma/PackageMetadata include/KDE/Plasma/PackageStructure include/KDE/Plasma/PaintUtils include/KDE/Plasma/Plasma +include/KDE/Plasma/PluginLoader include/KDE/Plasma/PopupApplet include/KDE/Plasma/PushButton include/KDE/Plasma/QueryMatch @@ -910,6 +956,7 @@ include/KDE/Solid/DeviceNotifier include/KDE/Solid/DvbInterface include/KDE/Solid/GenericInterface include/KDE/Solid/NetworkInterface +include/KDE/Solid/NetworkShare include/KDE/Solid/Networking include/KDE/Solid/OpticalDisc include/KDE/Solid/OpticalDrive @@ -1043,6 +1090,7 @@ include/k3urldrag.h include/k3wizard.h include/kaboutapplicationdialog.h include/kaboutdata.h +include/kabstractfileitemactionplugin.h include/kabstractfilemodule.h include/kabstractfilewidget.h include/kabstractwidgetjobtracker.h @@ -1060,6 +1108,7 @@ include/kanimatedbutton.h include/kapplication.h include/kar.h include/karchive.h +include/karchive_export.h include/karrowbutton.h include/kascii.h include/kassistantdialog.h @@ -1095,6 +1144,7 @@ include/kcategorizedview.h include/kcategorydrawer.h include/kcharselect.h include/kcharsets.h +include/kcheckableproxymodel.h include/kcmdlineargs.h include/kcmodule.h include/kcmodulecontainer.h @@ -1130,9 +1180,11 @@ include/kcrash.h include/kcurrencycode.h include/kcursor.h include/kdatatool.h +include/kdatecombobox.h include/kdatepicker.h include/kdatetable.h include/kdatetime.h +include/kdatetimeedit.h include/kdatetimewidget.h include/kdatewidget.h include/kdbusservicestarter.h @@ -1141,11 +1193,14 @@ include/kde_file.h include/kde_terminal_interface.h include/kde_terminal_interface_v2.h include/kdebug.h +include/kdeclarative.h +include/kdeclarative_export.h include/kdecore_export.h include/kdedmodule.h include/kdefakes.h include/kdemacros.h include/kdeprintdialog.h +include/kdescendantsproxymodel.h include/kdesktopfile.h include/kdesktopfileactions.h include/kdesu/client.h @@ -1171,7 +1226,9 @@ include/kdirsortfilterproxymodel.h include/kdirwatch.h include/kdiskfreespace.h include/kdiskfreespaceinfo.h +include/kdualaction.h include/keditlistbox.h +include/keditlistwidget.h include/kedittoolbar.h include/kemailsettings.h include/kemoticons.h @@ -1189,6 +1246,7 @@ include/kfile_export.h include/kfiledialog.h include/kfilefiltercombo.h include/kfileitem.h +include/kfileitemactionplugin.h include/kfileitemactions.h include/kfileitemdelegate.h include/kfileitemlistproperties.h @@ -1217,6 +1275,7 @@ include/kfontcombobox.h include/kfontdialog.h include/kfontrequester.h include/kfontsizeaction.h +include/kfontutils.h include/kgenericfactory.h include/kgenericfactory.tcc include/kgesture.h @@ -1248,6 +1307,7 @@ include/kicondialog.h include/kiconeffect.h include/kiconloader.h include/kicontheme.h +include/kidentityproxymodel.h include/kidletime.h include/kidletime_export.h include/kimagecache.h @@ -1319,6 +1379,7 @@ include/klinkitemselectionmodel.h include/klistwidget.h include/klistwidgetsearchline.h include/klocale.h +include/klocalizeddate.h include/klocalizedstring.h include/klocalsocket.h include/klockfile.h @@ -1333,6 +1394,7 @@ include/kmenubar.h include/kmessage.h include/kmessagebox.h include/kmessageboxmessagehandler.h +include/kmessagewidget.h include/kmimetype.h include/kmimetypechooser.h include/kmimetyperesolver.h @@ -1382,8 +1444,10 @@ include/kparts/browserrun.h include/kparts/componentfactory.h include/kparts/event.h include/kparts/factory.h +include/kparts/fileinfoextension.h include/kparts/genericfactory.h include/kparts/historyprovider.h +include/kparts/htmlextension.h include/kparts/kparts_export.h include/kparts/mainwindow.h include/kparts/part.h @@ -1391,6 +1455,7 @@ include/kparts/partmanager.h include/kparts/plugin.h include/kparts/scriptableextension.h include/kparts/statusbarextension.h +include/kparts/textextension.h include/kpassivepopup.h include/kpassivepopupmessagehandler.h include/kpassworddialog.h @@ -1427,6 +1492,9 @@ include/kptyprocess.h include/kpushbutton.h include/krandom.h include/krandomsequence.h +include/kratingpainter.h +include/kratingwidget.h +include/krecentdirs.h include/krecentdocument.h include/krecentfilesaction.h include/krecursivefilterproxymodel.h @@ -1456,6 +1524,7 @@ include/kross/ui/view.h include/kruler.h include/krun.h include/ksambashare.h +include/ksambasharedata.h include/ksavefile.h include/kscan.h include/kselectaction.h @@ -1507,6 +1576,7 @@ include/ksvgrenderer.h include/ksycoca.h include/ksycocaentry.h include/ksycocatype.h +include/ksystemeventfilter.h include/ksystemtimezone.h include/ksystemtrayicon.h include/ktabbar.h @@ -1545,6 +1615,7 @@ include/ktexteditor/movingrangefeedback.h include/ktexteditor/plugin.h include/ktexteditor/range.h include/ktexteditor/rangefeedback.h +include/ktexteditor/recoveryinterface.h include/ktexteditor/searchinterface.h include/ktexteditor/sessionconfiginterface.h include/ktexteditor/smartcursor.h @@ -1559,6 +1630,7 @@ include/ktexteditor/templateinterface2.h include/ktexteditor/texthintinterface.h include/ktexteditor/variableinterface.h include/ktexteditor/view.h +include/ktimecombobox.h include/ktimezone.h include/ktimezonewidget.h include/ktip.h @@ -1601,6 +1673,7 @@ include/kurlrequesterdialog.h include/kurlrequesterdlg.h include/kuser.h include/kvbox.h +include/kviewstatemaintainer.h include/kviewstatesaver.h include/kwallet.h include/kwebpage.h @@ -1625,7 +1698,11 @@ include/nepomuk/andterm.h include/nepomuk/class.h include/nepomuk/comparisonterm.h include/nepomuk/desktopontologyloader.h +include/nepomuk/dynamicresourcefacet.h include/nepomuk/entity.h +include/nepomuk/facet.h +include/nepomuk/facetwidget.h +include/nepomuk/file.h include/nepomuk/fileontologyloader.h include/nepomuk/filequery.h include/nepomuk/global.h @@ -1638,32 +1715,51 @@ include/nepomuk/ktagcloudwidget.h include/nepomuk/ktagdisplaywidget.h include/nepomuk/literal.h include/nepomuk/literalterm.h +include/nepomuk/ncal.h +include/nepomuk/nco.h +include/nepomuk/ndo.h include/nepomuk/negationterm.h include/nepomuk/nepomuk_export.h include/nepomuk/nepomukmassupdatejob.h include/nepomuk/nepomukontologyloader.h include/nepomuk/nepomukquery_export.h include/nepomuk/nepomukservice.h +include/nepomuk/nepomukutils_export.h +include/nepomuk/nexif.h +include/nepomuk/nfo.h +include/nepomuk/nie.h +include/nepomuk/nmm.h +include/nepomuk/nmo.h +include/nepomuk/nuao.h include/nepomuk/ontology.h include/nepomuk/ontologyloader.h include/nepomuk/ontologymanager.h include/nepomuk/optionalterm.h include/nepomuk/orterm.h +include/nepomuk/pimo.h include/nepomuk/property.h +include/nepomuk/proxyfacet.h include/nepomuk/query.h include/nepomuk/queryparser.h include/nepomuk/queryserviceclient.h include/nepomuk/resource.h include/nepomuk/resourcemanager.h +include/nepomuk/resourcemodel.h include/nepomuk/resourceterm.h include/nepomuk/resourcetypeterm.h include/nepomuk/result.h +include/nepomuk/searchwidget.h +include/nepomuk/simplefacet.h +include/nepomuk/simpleresourcemodel.h include/nepomuk/simpleterm.h +include/nepomuk/standardqueries.h include/nepomuk/tag.h include/nepomuk/tagwidget.h include/nepomuk/term.h include/nepomuk/thing.h +include/nepomuk/tmo.h include/nepomuk/tools.h +include/nepomuk/utils.h include/nepomuk/variant.h include/netwm.h include/netwm_def.h @@ -1705,6 +1801,7 @@ include/plasma/packagestructure.h include/plasma/paintutils.h include/plasma/plasma.h include/plasma/plasma_export.h +include/plasma/pluginloader.h include/plasma/popupapplet.h include/plasma/querymatch.h include/plasma/runnercontext.h @@ -1728,6 +1825,7 @@ include/plasma/wallpaper.h include/plasma/widgets/busywidget.h include/plasma/widgets/checkbox.h include/plasma/widgets/combobox.h +include/plasma/widgets/declarativewidget.h include/plasma/widgets/flashinglabel.h include/plasma/widgets/frame.h include/plasma/widgets/groupbox.h @@ -1767,8 +1865,10 @@ include/solid/deviceinterface.h include/solid/devicenotifier.h include/solid/dvbinterface.h include/solid/genericinterface.h +include/solid/internetgateway.h include/solid/networking.h include/solid/networkinterface.h +include/solid/networkshare.h include/solid/opticaldisc.h include/solid/opticaldrive.h include/solid/portablemediaplayer.h @@ -1808,7 +1908,7 @@ lib/kde4/emoticonstheme_adium.so lib/kde4/emoticonstheme_kde.so lib/kde4/emoticonstheme_pidgin.so lib/kde4/emoticonstheme_xmpp.so -lib/kde4/katepart.so +lib/kde4/kcm_ssl.so lib/kde4/kded_kcookiejar.so lib/kde4/kded_kssld.so lib/kde4/kded_proxyscout.so @@ -1829,19 +1929,12 @@ lib/kde4/krossmodulekdetranslation.so lib/kde4/krossqts.so lib/kde4/kspell_aspell.so lib/kde4/kspell_enchant.so -lib/kde4/ktexteditor_autobrace.so -lib/kde4/ktexteditor_exporter.so -lib/kde4/ktexteditor_iconinserter.so -lib/kde4/ktexteditor_insanehtml_le.so -lib/kde4/ktexteditor_insertfile.so -lib/kde4/ktexteditor_kdatatool.so lib/kde4/ktranscript.so lib/kde4/libexec/filesharelist lib/kde4/libexec/fileshareset lib/kde4/libexec/kauth-policy-gen lib/kde4/libexec/kconf_update lib/kde4/libexec/kdesu_stub -${PLIST.kgrantpty}lib/kde4/libexec/kgrantpty lib/kde4/libexec/kio_http_cache_cleaner lib/kde4/libexec/kioslave lib/kde4/libexec/klauncher @@ -1856,6 +1949,8 @@ lib/kde4/libkhtmlpart.so lib/kde4/libkmultipart.so lib/kde4/notepadpart.so lib/kde4/plugins/designer/kde3supportwidgets.so +lib/kde4/plugins/designer/kdedeprecated.so +lib/kde4/plugins/designer/kdewebkitwidgets.so lib/kde4/plugins/designer/kdewidgets.so lib/kde4/plugins/imageformats/kimg_dds.so lib/kde4/plugins/imageformats/kimg_eps.so @@ -1873,23 +1968,23 @@ lib/kde4/plugins/kauth/backend/kauth_backend_plugin.so lib/kde4/plugins/kauth/helper/kauth_helper_plugin.so lib/kde4/plugins/script/libkrossqtsplugin.so lib/kde4/plugins/script/libkrossqtsplugin.so.4 -lib/kde4/plugins/script/libkrossqtsplugin.so.4.5.0 +lib/kde4/plugins/script/libkrossqtsplugin.so.4.8.0 lib/kde4/spellcheckplugin.so -lib/libkatepartinterfaces.so -lib/libkatepartinterfaces.so.4 -lib/libkatepartinterfaces.so.4.5.0 lib/libkcmutils.so lib/libkcmutils.so.4 -lib/libkcmutils.so.4.5.0 +lib/libkcmutils.so.4.8.0 lib/libkde3support.so lib/libkde3support.so.4 -lib/libkde3support.so.4.5.0 +lib/libkde3support.so.4.8.0 +lib/libkdeclarative.so +lib/libkdeclarative.so.5 +lib/libkdeclarative.so.5.8.0 lib/libkdecore.so lib/libkdecore.so.5 -lib/libkdecore.so.5.5.0 +lib/libkdecore.so.5.8.0 lib/libkdefakes.so lib/libkdefakes.so.5 -lib/libkdefakes.so.5.5.0 +lib/libkdefakes.so.5.8.0 lib/libkdeinit4_kbuildsycoca4.so lib/libkdeinit4_kconf_update.so lib/libkdeinit4_kded4.so @@ -1897,100 +1992,103 @@ lib/libkdeinit4_kio_http_cache_cleaner.so lib/libkdeinit4_klauncher.so lib/libkdesu.so lib/libkdesu.so.5 -lib/libkdesu.so.5.5.0 +lib/libkdesu.so.5.8.0 lib/libkdeui.so lib/libkdeui.so.5 -lib/libkdeui.so.5.5.0 +lib/libkdeui.so.5.8.0 lib/libkdewebkit.so lib/libkdewebkit.so.5 -lib/libkdewebkit.so.5.5.0 +lib/libkdewebkit.so.5.8.0 lib/libkdnssd.so lib/libkdnssd.so.4 -lib/libkdnssd.so.4.5.0 +lib/libkdnssd.so.4.8.0 lib/libkemoticons.so lib/libkemoticons.so.4 -lib/libkemoticons.so.4.5.0 +lib/libkemoticons.so.4.8.0 lib/libkfile.so lib/libkfile.so.4 -lib/libkfile.so.4.5.0 +lib/libkfile.so.4.8.0 lib/libkhtml.so lib/libkhtml.so.5 -lib/libkhtml.so.5.5.0 +lib/libkhtml.so.5.8.0 lib/libkidletime.so lib/libkidletime.so.4 -lib/libkidletime.so.4.5.0 +lib/libkidletime.so.4.8.0 lib/libkimproxy.so lib/libkimproxy.so.4 -lib/libkimproxy.so.4.5.0 +lib/libkimproxy.so.4.8.0 lib/libkio.so lib/libkio.so.5 -lib/libkio.so.5.5.0 +lib/libkio.so.5.8.0 lib/libkjs.so lib/libkjs.so.4 -lib/libkjs.so.4.5.0 +lib/libkjs.so.4.8.0 lib/libkjsapi.so lib/libkjsapi.so.4 -lib/libkjsapi.so.4.5.0 +lib/libkjsapi.so.4.8.0 lib/libkjsembed.so lib/libkjsembed.so.4 -lib/libkjsembed.so.4.5.0 +lib/libkjsembed.so.4.8.0 lib/libkmediaplayer.so lib/libkmediaplayer.so.4 -lib/libkmediaplayer.so.4.5.0 +lib/libkmediaplayer.so.4.8.0 lib/libknewstuff2.so lib/libknewstuff2.so.4 -lib/libknewstuff2.so.4.5.0 +lib/libknewstuff2.so.4.8.0 lib/libknewstuff3.so lib/libknewstuff3.so.4 -lib/libknewstuff3.so.4.5.0 +lib/libknewstuff3.so.4.8.0 lib/libknotifyconfig.so lib/libknotifyconfig.so.4 -lib/libknotifyconfig.so.4.5.0 +lib/libknotifyconfig.so.4.8.0 lib/libkntlm.so lib/libkntlm.so.4 -lib/libkntlm.so.4.5.0 +lib/libkntlm.so.4.8.0 lib/libkparts.so lib/libkparts.so.4 -lib/libkparts.so.4.5.0 +lib/libkparts.so.4.8.0 lib/libkprintutils.so lib/libkprintutils.so.4 -lib/libkprintutils.so.4.5.0 +lib/libkprintutils.so.4.8.0 lib/libkpty.so lib/libkpty.so.4 -lib/libkpty.so.4.5.0 +lib/libkpty.so.4.8.0 lib/libkrosscore.so lib/libkrosscore.so.4 -lib/libkrosscore.so.4.5.0 +lib/libkrosscore.so.4.8.0 lib/libkrossui.so lib/libkrossui.so.4 -lib/libkrossui.so.4.5.0 +lib/libkrossui.so.4.8.0 lib/libktexteditor.so lib/libktexteditor.so.4 -lib/libktexteditor.so.4.5.0 +lib/libktexteditor.so.4.8.0 lib/libkunitconversion.so lib/libkunitconversion.so.4 -lib/libkunitconversion.so.4.5.0 +lib/libkunitconversion.so.4.8.0 lib/libkunittest.so lib/libkunittest.so.4 -lib/libkunittest.so.4.5.0 +lib/libkunittest.so.4.8.0 lib/libkutils.so lib/libkutils.so.4 -lib/libkutils.so.4.5.0 +lib/libkutils.so.4.8.0 lib/libnepomuk.so lib/libnepomuk.so.4 -lib/libnepomuk.so.4.5.0 +lib/libnepomuk.so.4.8.0 lib/libnepomukquery.so lib/libnepomukquery.so.4 -lib/libnepomukquery.so.4.5.0 +lib/libnepomukquery.so.4.8.0 +lib/libnepomukutils.so +lib/libnepomukutils.so.4 +lib/libnepomukutils.so.4.8.0 lib/libplasma.so lib/libplasma.so.3 lib/libplasma.so.3.0.0 lib/libsolid.so lib/libsolid.so.4 -lib/libsolid.so.4.5.0 +lib/libsolid.so.4.8.0 lib/libthreadweaver.so lib/libthreadweaver.so.4 -lib/libthreadweaver.so.4.5.0 +lib/libthreadweaver.so.4.8.0 man/man1/checkXML.1 man/man1/kde4-config.1 man/man1/kdecmake.1 @@ -2005,6 +2103,8 @@ man/man8/kcookiejar4.8 man/man8/kded4.8 man/man8/kdeinit4.8 man/man8/meinproc4.8 +share/applications/kde4/kmailservice.desktop +share/applications/kde4/ktelnetservice.desktop share/dbus-1/interfaces/org.freedesktop.PowerManagement.Inhibit.xml share/dbus-1/interfaces/org.freedesktop.PowerManagement.xml share/dbus-1/interfaces/org.kde.JobView.xml @@ -2021,6 +2121,7 @@ share/dbus-1/interfaces/org.kde.KPasswdServer.xml share/dbus-1/interfaces/org.kde.KSpeech.xml share/dbus-1/interfaces/org.kde.KWallet.xml share/dbus-1/interfaces/org.kde.Solid.Networking.Client.xml +share/dbus-1/interfaces/org.kde.Solid.PowerManagement.PolicyAgent.xml share/dbus-1/interfaces/org.kde.StatusNotifierItem.xml share/dbus-1/interfaces/org.kde.StatusNotifierWatcher.xml share/dbus-1/interfaces/org.kde.kded.xml @@ -2114,7 +2215,6 @@ share/icons/hicolor/32x32/actions/presence_unknown.png share/icons/hicolor/48x48/actions/presence_away.png share/icons/hicolor/48x48/actions/presence_offline.png share/icons/hicolor/48x48/actions/presence_online.png -share/icons/hicolor/scalable/apps/ktexteditorautobrace.svgz share/kde/apps/LICENSES/ARTISTIC share/kde/apps/LICENSES/BSD share/kde/apps/LICENSES/GPL_V2 @@ -2165,9 +2265,6 @@ share/kde/apps/cmake/modules/FindHUNSPELL.cmake share/kde/apps/cmake/modules/FindIOKit.cmake share/kde/apps/cmake/modules/FindKDE4Internal.cmake share/kde/apps/cmake/modules/FindKDE4Workspace.cmake -share/kde/apps/cmake/modules/FindKDEWIN32.cmake -share/kde/apps/cmake/modules/FindKDEWIN_Packager.cmake -share/kde/apps/cmake/modules/FindKDEWin.cmake share/kde/apps/cmake/modules/FindKDevPlatform.cmake share/kde/apps/cmake/modules/FindKdcraw.cmake share/kde/apps/cmake/modules/FindKdeMultimedia.cmake @@ -2225,6 +2322,7 @@ share/kde/apps/cmake/modules/FindSqlite.cmake share/kde/apps/cmake/modules/FindStrigi.cmake share/kde/apps/cmake/modules/FindTaglib.cmake share/kde/apps/cmake/modules/FindUSB.cmake +share/kde/apps/cmake/modules/FindWcecompat.cmake share/kde/apps/cmake/modules/FindX11.cmake share/kde/apps/cmake/modules/FindXKB.cmake share/kde/apps/cmake/modules/FindXine.cmake @@ -2271,190 +2369,6 @@ share/kde/apps/cmake/modules/kde4automoc.files.in share/kde/apps/cmake/modules/kde4init_dummy.cpp.in share/kde/apps/cmake/modules/kde4init_win32lib_dummy.cpp.in share/kde/apps/cmake/modules/kde4uic.cmake -share/kde/apps/katepart/api/05_cursor.js -share/kde/apps/katepart/api/10_range.js -share/kde/apps/katepart/katepartsimpleui.rc -share/kde/apps/katepart/katepartui.rc -share/kde/apps/katepart/script/cstyle.js -share/kde/apps/katepart/script/haskell.js -share/kde/apps/katepart/script/lilypond.js -share/kde/apps/katepart/script/lisp.js -share/kde/apps/katepart/script/lua.js -share/kde/apps/katepart/script/python.js -share/kde/apps/katepart/script/ruby.js -share/kde/apps/katepart/script/utils.js -share/kde/apps/katepart/script/xml.js -share/kde/apps/katepart/syntax/abap.xml -share/kde/apps/katepart/syntax/abc.xml -share/kde/apps/katepart/syntax/actionscript.xml -share/kde/apps/katepart/syntax/ada.xml -share/kde/apps/katepart/syntax/ahdl.xml -share/kde/apps/katepart/syntax/alert.xml -share/kde/apps/katepart/syntax/alert_indent.xml -share/kde/apps/katepart/syntax/ample.xml -share/kde/apps/katepart/syntax/ansic89.xml -share/kde/apps/katepart/syntax/ansys.xml -share/kde/apps/katepart/syntax/apache.xml -share/kde/apps/katepart/syntax/asm-avr.xml -share/kde/apps/katepart/syntax/asm-dsp56k.xml -share/kde/apps/katepart/syntax/asm-m68k.xml -share/kde/apps/katepart/syntax/asm6502.xml -share/kde/apps/katepart/syntax/asn1.xml -share/kde/apps/katepart/syntax/asp.xml -share/kde/apps/katepart/syntax/asterisk.xml -share/kde/apps/katepart/syntax/awk.xml -share/kde/apps/katepart/syntax/bash.xml -share/kde/apps/katepart/syntax/bibtex.xml -share/kde/apps/katepart/syntax/bmethod.xml -share/kde/apps/katepart/syntax/boo.xml -share/kde/apps/katepart/syntax/c.xml -share/kde/apps/katepart/syntax/cg.xml -share/kde/apps/katepart/syntax/cgis.xml -share/kde/apps/katepart/syntax/changelog.xml -share/kde/apps/katepart/syntax/cisco.xml -share/kde/apps/katepart/syntax/clipper.xml -share/kde/apps/katepart/syntax/cmake.xml -share/kde/apps/katepart/syntax/coldfusion.xml -share/kde/apps/katepart/syntax/commonlisp.xml -share/kde/apps/katepart/syntax/component-pascal.xml -share/kde/apps/katepart/syntax/cpp.xml -share/kde/apps/katepart/syntax/cs.xml -share/kde/apps/katepart/syntax/css-php.xml -share/kde/apps/katepart/syntax/css.xml -share/kde/apps/katepart/syntax/cue.xml -share/kde/apps/katepart/syntax/d.xml -share/kde/apps/katepart/syntax/debianchangelog.xml -share/kde/apps/katepart/syntax/debiancontrol.xml -share/kde/apps/katepart/syntax/desktop.xml -share/kde/apps/katepart/syntax/diff.xml -share/kde/apps/katepart/syntax/djangotemplate.xml -share/kde/apps/katepart/syntax/doxygen.xml -share/kde/apps/katepart/syntax/doxygenlua.xml -share/kde/apps/katepart/syntax/dtd.xml -share/kde/apps/katepart/syntax/e.xml -share/kde/apps/katepart/syntax/eiffel.xml -share/kde/apps/katepart/syntax/email.xml -share/kde/apps/katepart/syntax/erlang.xml -share/kde/apps/katepart/syntax/euphoria.xml -share/kde/apps/katepart/syntax/ferite.xml -share/kde/apps/katepart/syntax/fgl-4gl.xml -share/kde/apps/katepart/syntax/fgl-per.xml -share/kde/apps/katepart/syntax/fortran.xml -share/kde/apps/katepart/syntax/freebasic.xml -share/kde/apps/katepart/syntax/fstab.xml -share/kde/apps/katepart/syntax/gap.xml -share/kde/apps/katepart/syntax/gdl.xml -share/kde/apps/katepart/syntax/gettext.xml -share/kde/apps/katepart/syntax/glsl.xml -share/kde/apps/katepart/syntax/gnuassembler.xml -share/kde/apps/katepart/syntax/grammar.xml -share/kde/apps/katepart/syntax/haskell.xml -share/kde/apps/katepart/syntax/haxe.xml -share/kde/apps/katepart/syntax/html-php.xml -share/kde/apps/katepart/syntax/html.xml -share/kde/apps/katepart/syntax/idconsole.xml -share/kde/apps/katepart/syntax/idl.xml -share/kde/apps/katepart/syntax/ilerpg.xml -share/kde/apps/katepart/syntax/inform.xml -share/kde/apps/katepart/syntax/ini.xml -share/kde/apps/katepart/syntax/java.xml -share/kde/apps/katepart/syntax/javadoc.xml -share/kde/apps/katepart/syntax/javascript-php.xml -share/kde/apps/katepart/syntax/javascript.xml -share/kde/apps/katepart/syntax/json.xml -share/kde/apps/katepart/syntax/jsp.xml -share/kde/apps/katepart/syntax/kbasic.xml -share/kde/apps/katepart/syntax/language.dtd -share/kde/apps/katepart/syntax/latex.xml -share/kde/apps/katepart/syntax/ldif.xml -share/kde/apps/katepart/syntax/lex.xml -share/kde/apps/katepart/syntax/lilypond.xml -share/kde/apps/katepart/syntax/literate-haskell.xml -share/kde/apps/katepart/syntax/logtalk.xml -share/kde/apps/katepart/syntax/lpc.xml -share/kde/apps/katepart/syntax/lsl.xml -share/kde/apps/katepart/syntax/lua.xml -share/kde/apps/katepart/syntax/m3u.xml -share/kde/apps/katepart/syntax/mab.xml -share/kde/apps/katepart/syntax/makefile.xml -share/kde/apps/katepart/syntax/mandoc.xml -share/kde/apps/katepart/syntax/mason.xml -share/kde/apps/katepart/syntax/matlab.xml -share/kde/apps/katepart/syntax/maxima.xml -share/kde/apps/katepart/syntax/mediawiki.xml -share/kde/apps/katepart/syntax/mergetagtext.xml -share/kde/apps/katepart/syntax/mips.xml -share/kde/apps/katepart/syntax/modelica.xml -share/kde/apps/katepart/syntax/modula-2.xml -share/kde/apps/katepart/syntax/monobasic.xml -share/kde/apps/katepart/syntax/mup.xml -share/kde/apps/katepart/syntax/nasm.xml -share/kde/apps/katepart/syntax/nemerle.xml -share/kde/apps/katepart/syntax/noweb.xml -share/kde/apps/katepart/syntax/objectivec.xml -share/kde/apps/katepart/syntax/objectivecpp.xml -share/kde/apps/katepart/syntax/ocaml.xml -share/kde/apps/katepart/syntax/octave.xml -share/kde/apps/katepart/syntax/opal.xml -share/kde/apps/katepart/syntax/pango.xml -share/kde/apps/katepart/syntax/pascal.xml -share/kde/apps/katepart/syntax/perl.xml -share/kde/apps/katepart/syntax/pgn.xml -share/kde/apps/katepart/syntax/php.xml -share/kde/apps/katepart/syntax/picsrc.xml -share/kde/apps/katepart/syntax/pike.xml -share/kde/apps/katepart/syntax/postscript.xml -share/kde/apps/katepart/syntax/povray.xml -share/kde/apps/katepart/syntax/progress.xml -share/kde/apps/katepart/syntax/prolog.xml -share/kde/apps/katepart/syntax/purebasic.xml -share/kde/apps/katepart/syntax/python.xml -share/kde/apps/katepart/syntax/qml.xml -share/kde/apps/katepart/syntax/r.xml -share/kde/apps/katepart/syntax/rapidq.xml -share/kde/apps/katepart/syntax/rexx.xml -share/kde/apps/katepart/syntax/rhtml.xml -share/kde/apps/katepart/syntax/rib.xml -share/kde/apps/katepart/syntax/roff.xml -share/kde/apps/katepart/syntax/rpmspec.xml -share/kde/apps/katepart/syntax/rsiidl.xml -share/kde/apps/katepart/syntax/ruby.xml -share/kde/apps/katepart/syntax/sather.xml -share/kde/apps/katepart/syntax/scala.xml -share/kde/apps/katepart/syntax/scheme.xml -share/kde/apps/katepart/syntax/sci.xml -share/kde/apps/katepart/syntax/sgml.xml -share/kde/apps/katepart/syntax/sieve.xml -share/kde/apps/katepart/syntax/sisu.xml -share/kde/apps/katepart/syntax/sml.xml -share/kde/apps/katepart/syntax/spice.xml -share/kde/apps/katepart/syntax/sql-mysql.xml -share/kde/apps/katepart/syntax/sql-postgresql.xml -share/kde/apps/katepart/syntax/sql.xml -share/kde/apps/katepart/syntax/stata.xml -share/kde/apps/katepart/syntax/syntax.template -share/kde/apps/katepart/syntax/systemc.xml -share/kde/apps/katepart/syntax/tcl.xml -share/kde/apps/katepart/syntax/texinfo.xml -share/kde/apps/katepart/syntax/tibasic.xml -share/kde/apps/katepart/syntax/txt2tags.xml -share/kde/apps/katepart/syntax/uscript.xml -share/kde/apps/katepart/syntax/velocity.xml -share/kde/apps/katepart/syntax/verilog.xml -share/kde/apps/katepart/syntax/vhdl.xml -share/kde/apps/katepart/syntax/vrml.xml -share/kde/apps/katepart/syntax/winehq.xml -share/kde/apps/katepart/syntax/wml.xml -share/kde/apps/katepart/syntax/xharbour.xml -share/kde/apps/katepart/syntax/xml.xml -share/kde/apps/katepart/syntax/xmldebug.xml -share/kde/apps/katepart/syntax/xorg.xml -share/kde/apps/katepart/syntax/xslt.xml -share/kde/apps/katepart/syntax/xul.xml -share/kde/apps/katepart/syntax/yacas.xml -share/kde/apps/katepart/syntax/yacc.xml -share/kde/apps/katepart/syntax/yaml.xml -share/kde/apps/katepart/syntax/zonnon.xml share/kde/apps/kauth/dbus_policy.stub share/kde/apps/kauth/dbus_service.stub share/kde/apps/kcharselect/kcharselect-data @@ -2467,8 +2381,6 @@ share/kde/apps/kconf_update/kioslave.upd share/kde/apps/kconf_update/ksslcertificatemanager.upd share/kde/apps/kconf_update/ksslcertificatemanager.upd.sh share/kde/apps/kconf_update/move_kio_help_cache.sh -share/kde/apps/kconf_update/plasma_popupapplet_fix_groups.pl -share/kde/apps/kconf_update/plasma_popupapplet_fix_groups.upd share/kde/apps/kconf_update/proxytype.pl share/kde/apps/kconf_update/useragent.pl share/kde/apps/kdeui/about/bar-bottom-left.png @@ -2479,7 +2391,7 @@ share/kde/apps/kdeui/about/bar-middle-right.png share/kde/apps/kdeui/about/bar-top-left.png share/kde/apps/kdeui/about/bar-top-middle.png share/kde/apps/kdeui/about/bar-top-right.png -share/kde/apps/kdeui/about/body-background.png +share/kde/apps/kdeui/about/body-background.jpg share/kde/apps/kdeui/about/box-bottom-left.png share/kde/apps/kdeui/about/box-bottom-middle.png share/kde/apps/kdeui/about/box-bottom-right.png @@ -2498,6 +2410,7 @@ share/kde/apps/kdeui/pics/kdeprint_nup2.png share/kde/apps/kdeui/pics/kdeprint_nup4.png share/kde/apps/kdeui/pics/kdeprint_nupother.png share/kde/apps/kdeui/pics/ktip-bulb.png +share/kde/apps/kdeui/pics/thumb_frame.png share/kde/apps/kdewidgets/pics/k3iconview.png share/kde/apps/kdewidgets/pics/k3listview.png share/kde/apps/kdewidgets/pics/kactionselector.png @@ -2930,9 +2843,11 @@ share/kde/apps/ksgmltools2/customization/ja/entities/update-doc.docbook share/kde/apps/ksgmltools2/customization/ja/lang.entities share/kde/apps/ksgmltools2/customization/ja/strings.entities share/kde/apps/ksgmltools2/customization/ja/user.entities +share/kde/apps/ksgmltools2/customization/kde-chunk-common.xsl share/kde/apps/ksgmltools2/customization/kde-chunk-online.xsl share/kde/apps/ksgmltools2/customization/kde-chunk.xsl -share/kde/apps/ksgmltools2/customization/kde-man.xsl +share/kde/apps/ksgmltools2/customization/kde-include-common.xsl +share/kde/apps/ksgmltools2/customization/kde-include-man.xsl share/kde/apps/ksgmltools2/customization/kde-navig-online.xsl share/kde/apps/ksgmltools2/customization/kde-navig.xsl share/kde/apps/ksgmltools2/customization/kde-nochunk.xsl @@ -2971,6 +2886,7 @@ share/kde/apps/ksgmltools2/customization/lt/entities/underArtisticLicense.docboo share/kde/apps/ksgmltools2/customization/lt/entities/underBSDLicense.docbook share/kde/apps/ksgmltools2/customization/lt/entities/underFDL.docbook share/kde/apps/ksgmltools2/customization/lt/entities/underGPL.docbook +share/kde/apps/ksgmltools2/customization/lt/entities/underLGPL.docbook share/kde/apps/ksgmltools2/customization/lt/entities/underX11License.docbook share/kde/apps/ksgmltools2/customization/lt/entities/update-doc.docbook share/kde/apps/ksgmltools2/customization/lt/lang.entities @@ -3132,6 +3048,7 @@ share/kde/apps/ksgmltools2/customization/ru/entities/underArtisticLicense.docboo share/kde/apps/ksgmltools2/customization/ru/entities/underBSDLicense.docbook share/kde/apps/ksgmltools2/customization/ru/entities/underFDL.docbook share/kde/apps/ksgmltools2/customization/ru/entities/underGPL.docbook +share/kde/apps/ksgmltools2/customization/ru/entities/underLGPL.docbook share/kde/apps/ksgmltools2/customization/ru/entities/underX11License.docbook share/kde/apps/ksgmltools2/customization/ru/entities/update-doc.docbook share/kde/apps/ksgmltools2/customization/ru/lang.entities @@ -3351,37 +3268,32 @@ share/kde/apps/ksgmltools2/customization/xh/lang.entities share/kde/apps/ksgmltools2/customization/xh/strings.entities share/kde/apps/ksgmltools2/customization/xh/user.entities share/kde/apps/ksgmltools2/customization/xsl/README +share/kde/apps/ksgmltools2/customization/xsl/all-l10n.xml share/kde/apps/ksgmltools2/customization/xsl/ca.xml -share/kde/apps/ksgmltools2/customization/xsl/cs.xml -share/kde/apps/ksgmltools2/customization/xsl/da.xml share/kde/apps/ksgmltools2/customization/xsl/de.xml share/kde/apps/ksgmltools2/customization/xsl/el.xml share/kde/apps/ksgmltools2/customization/xsl/en.xml share/kde/apps/ksgmltools2/customization/xsl/es.xml share/kde/apps/ksgmltools2/customization/xsl/et.xml -share/kde/apps/ksgmltools2/customization/xsl/fi.xml share/kde/apps/ksgmltools2/customization/xsl/fr.xml -share/kde/apps/ksgmltools2/customization/xsl/hu.xml +share/kde/apps/ksgmltools2/customization/xsl/gl.xml share/kde/apps/ksgmltools2/customization/xsl/it.xml -share/kde/apps/ksgmltools2/customization/xsl/ja.xml -share/kde/apps/ksgmltools2/customization/xsl/ko.xml +share/kde/apps/ksgmltools2/customization/xsl/lt.xml share/kde/apps/ksgmltools2/customization/xsl/nds.xml share/kde/apps/ksgmltools2/customization/xsl/nl.xml share/kde/apps/ksgmltools2/customization/xsl/nn.xml -share/kde/apps/ksgmltools2/customization/xsl/no.xml share/kde/apps/ksgmltools2/customization/xsl/pl.xml share/kde/apps/ksgmltools2/customization/xsl/pt.xml share/kde/apps/ksgmltools2/customization/xsl/pt_br.xml -share/kde/apps/ksgmltools2/customization/xsl/ro.xml share/kde/apps/ksgmltools2/customization/xsl/ru.xml -share/kde/apps/ksgmltools2/customization/xsl/sk.xml share/kde/apps/ksgmltools2/customization/xsl/sl.xml share/kde/apps/ksgmltools2/customization/xsl/sr.xml -share/kde/apps/ksgmltools2/customization/xsl/sr@ijekavian.xml -share/kde/apps/ksgmltools2/customization/xsl/sr@ijekavianlatin.xml -share/kde/apps/ksgmltools2/customization/xsl/sr@latin.xml +share/kde/apps/ksgmltools2/customization/xsl/sr_ijekavian.xml +share/kde/apps/ksgmltools2/customization/xsl/sr_ijekavianlatin.xml +share/kde/apps/ksgmltools2/customization/xsl/sr_latin.xml share/kde/apps/ksgmltools2/customization/xsl/sv.xml -share/kde/apps/ksgmltools2/customization/xsl/zh_tw.xml +share/kde/apps/ksgmltools2/customization/xsl/tr.xml +share/kde/apps/ksgmltools2/customization/xsl/uk.xml share/kde/apps/ksgmltools2/customization/xx/catalog.xml share/kde/apps/ksgmltools2/customization/xx/contributor.entities share/kde/apps/ksgmltools2/customization/xx/entities/fdl-notice.docbook @@ -3435,608 +3347,10 @@ share/kde/apps/ksgmltools2/customization/zh-TW/entities/update-doc.docbook share/kde/apps/ksgmltools2/customization/zh-TW/lang.entities share/kde/apps/ksgmltools2/customization/zh-TW/strings.entities share/kde/apps/ksgmltools2/customization/zh-TW/user.entities -share/kde/apps/ksgmltools2/docbook/README.kde -share/kde/apps/ksgmltools2/docbook/xsl/README -share/kde/apps/ksgmltools2/docbook/xsl/VERSION -share/kde/apps/ksgmltools2/docbook/xsl/WhatsNew -share/kde/apps/ksgmltools2/docbook/xsl/common/af.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/ar.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/autoidx-ng.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/bg.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/bn.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/bs.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/ca.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/common.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/cs.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/da.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/de.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/el.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/en.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/eo.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/es.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/et.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/eu.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/fi.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/fr.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/gentext.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/gl.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/he.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/hr.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/hu.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/id.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/it.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/ja.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/ko.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/l10n.dtd -share/kde/apps/ksgmltools2/docbook/xsl/common/l10n.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/l10n.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/la.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/labels.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/lt.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/nb.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/nds.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/nl.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/nn.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/olink.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/pi.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/pl.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/pt.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/pt_br.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/ro.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/ru.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/sk.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/sl.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/sr.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/sr_ijekavian.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/sr_ijekavianlatin.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/sr_latin.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/subtitles.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/sv.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/table.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/targetdatabase.dtd -share/kde/apps/ksgmltools2/docbook/xsl/common/targets.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/th.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/titles.xsl -share/kde/apps/ksgmltools2/docbook/xsl/common/tr.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/uk.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/vi.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/xh.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/zh_cn.xml -share/kde/apps/ksgmltools2/docbook/xsl/common/zh_tw.xml -share/kde/apps/ksgmltools2/docbook/xsl/html/admon.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/autoidx-ng.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/autoidx.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/autotoc.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/biblio.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/block.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/callout.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/changebars.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/chunk-code.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/chunk-common.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/chunk.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/chunker.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/chunkfast.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/chunktoc.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/component.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/division.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/docbook.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/docbookng.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/ebnf.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/footnote.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/formal.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/glossary.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/graphics.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/html-rtf.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/html.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/htmltbl.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/index.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/info.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/inline.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/keywords.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/lists.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/maketoc.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/manifest.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/math.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/oldchunker.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/onechunk.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/param.ent -share/kde/apps/ksgmltools2/docbook/xsl/html/param.xml -share/kde/apps/ksgmltools2/docbook/xsl/html/param.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/param.xweb -share/kde/apps/ksgmltools2/docbook/xsl/html/pi.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/profile-chunk-code.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/profile-chunk.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/profile-docbook.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/profile-onechunk.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/qandaset.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/refentry.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/sections.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/synop.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/table.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/task.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/titlepage.templates.xml -share/kde/apps/ksgmltools2/docbook/xsl/html/titlepage.templates.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/titlepage.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/toc.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/verbatim.xsl -share/kde/apps/ksgmltools2/docbook/xsl/html/xref.xsl -share/kde/apps/ksgmltools2/docbook/xsl/images/blank.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/1.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/1.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/10.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/10.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/11.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/11.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/12.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/12.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/13.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/13.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/14.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/14.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/15.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/15.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/2.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/2.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/3.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/3.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/4.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/4.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/5.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/5.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/6.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/6.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/7.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/7.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/8.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/8.png -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/9.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/callouts/9.png -share/kde/apps/ksgmltools2/docbook/xsl/images/caution.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/caution.png -share/kde/apps/ksgmltools2/docbook/xsl/images/caution.tif -share/kde/apps/ksgmltools2/docbook/xsl/images/draft.png -share/kde/apps/ksgmltools2/docbook/xsl/images/home.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/home.png -share/kde/apps/ksgmltools2/docbook/xsl/images/important.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/important.png -share/kde/apps/ksgmltools2/docbook/xsl/images/important.tif -share/kde/apps/ksgmltools2/docbook/xsl/images/next.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/next.png -share/kde/apps/ksgmltools2/docbook/xsl/images/note.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/note.png -share/kde/apps/ksgmltools2/docbook/xsl/images/note.tif -share/kde/apps/ksgmltools2/docbook/xsl/images/prev.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/prev.png -share/kde/apps/ksgmltools2/docbook/xsl/images/tip.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/tip.png -share/kde/apps/ksgmltools2/docbook/xsl/images/tip.tif -share/kde/apps/ksgmltools2/docbook/xsl/images/toc-blank.png -share/kde/apps/ksgmltools2/docbook/xsl/images/toc-minus.png -share/kde/apps/ksgmltools2/docbook/xsl/images/toc-plus.png -share/kde/apps/ksgmltools2/docbook/xsl/images/up.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/up.png -share/kde/apps/ksgmltools2/docbook/xsl/images/warning.gif -share/kde/apps/ksgmltools2/docbook/xsl/images/warning.png -share/kde/apps/ksgmltools2/docbook/xsl/images/warning.tif -share/kde/apps/ksgmltools2/docbook/xsl/lib/lib.xml -share/kde/apps/ksgmltools2/docbook/xsl/lib/lib.xsl -share/kde/apps/ksgmltools2/docbook/xsl/lib/lib.xweb -share/kde/apps/ksgmltools2/docbook/xsl/manpages/docbook.xsl -share/kde/apps/ksgmltools2/docbook/xsl/manpages/lists.xsl -share/kde/apps/ksgmltools2/docbook/xsl/manpages/sect23.xsl -share/kde/apps/ksgmltools2/docbook/xsl/manpages/synop.xsl -share/kde/apps/ksgmltools2/docbook/xsl/manpages/xref.xsl -share/kde/apps/ksgmltools2/docbook/xsl/params/admon.graphics.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/admon.graphics.path.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/admon.graphics.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/admon.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/admon.textlabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/admonition.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/admonition.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/alignment.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/annotate.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/appendix.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/arbortext.extensions.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/article.appendix.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/author.othername.in.middle.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/autotoc.label.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/axf.extensions.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/base.dir.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/biblioentry.item.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/bibliography.collection.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/bibliography.numbered.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/blockquote.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/body.font.family.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/body.font.master.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/body.font.size.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/body.margin.bottom.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/body.margin.top.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/bridgehead.in.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.defaultcolumn.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.graphics.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.graphics.number.limit.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.graphics.path.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.graphics.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.list.table.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.unicode.font.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.unicode.number.limit.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.unicode.start.character.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callout.unicode.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/callouts.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chapter.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.first.sections.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.quietly.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.section.depth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.sections.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.separate.lots.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunk.tocs.and.lots.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.cdata-section-elements.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.doctype-public.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.doctype-system.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.encoding.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.indent.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.media-type.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.method.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.omit-xml-declaration.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/chunker.output.standalone.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/citerefentry.link.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/collect.xref.targets.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.count.back.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.count.body.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.count.front.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.count.index.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.count.lot.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.count.titlepage.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.gap.back.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.gap.body.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.gap.front.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.gap.index.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.gap.lot.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/column.gap.titlepage.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/compact.list.item.spacing.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/component.label.includes.part.label.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/component.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/css.decoration.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/current.docid.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/default.float.class.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/default.image.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/default.table.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/default.units.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/dingbat.font.family.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/double.sided.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/draft.mode.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/draft.watermark.image.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ebnf.assignment.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ebnf.statement.terminator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ebnf.table.bgcolor.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ebnf.table.border.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/eclipse.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/eclipse.plugin.id.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/eclipse.plugin.name.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/eclipse.plugin.provider.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/emphasis.propagates.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/entry.propagates.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/equation.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/example.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/figure.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/firstterm.only.link.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footer.column.widths.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footer.content.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footer.rule.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footers.on.blank.pages.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footnote.font.size.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footnote.number.format.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footnote.number.symbols.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/footnote.sep.leader.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/fop.extensions.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/formal.object.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/formal.procedures.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/formal.title.placement.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/formal.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/funcsynopsis.decoration.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/funcsynopsis.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/funcsynopsis.tabular.threshold.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/function.parens.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.id.attributes.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.index.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.legalnotice.link.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.manifest.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.meta.abstract.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.section.toc.level.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/generate.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glossary.as.blocks.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glossary.collection.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glossentry.show.acronym.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glosslist.as.blocks.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glossterm.auto.link.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glossterm.separation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/glossterm.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/graphic.default.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/graphicsize.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/header.column.widths.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/header.content.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/header.rule.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/headers.on.blank.pages.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.base.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.cellpadding.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.cellspacing.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.cleanup.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.ext.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.extra.head.links.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.longdesc.link.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.longdesc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.stylesheet.type.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/html.stylesheet.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.alias.file.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.back.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.forward.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.hideshow.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.home.url.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.home.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.jump1.title.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.jump1.url.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.jump1.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.jump2.title.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.jump2.url.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.jump2.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.locate.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.next.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.options.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.prev.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.print.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.refresh.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.stop.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.button.zoom.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.chm.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.default.topic.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.display.progress.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.encoding.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.enhanced.decompilation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.enumerate.images.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.force.map.and.alias.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhc.binary.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhc.folders.instead.books.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhc.section.depth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhc.show.root.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhc.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhk.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhp.tail.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhp.window.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhp.windows.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.hhp.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.map.file.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.only.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.remember.window.position.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.show.advanced.search.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.show.favorities.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.show.menu.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.show.toolbar.text.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.title.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.use.hhk.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/htmlhelp.window.geometry.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/hyphenate.verbatim.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/hyphenate.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ignore.image.scaling.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/img.src.path.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/index.on.role.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/index.on.type.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/index.prefer.titleabbrev.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/index.preferred.page.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/informal.object.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/informalequation.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/informalexample.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/informalfigure.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/informaltable.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/inherit.keywords.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/insert.olink.page.number.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/insert.olink.pdf.frag.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/insert.xref.page.number.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/l10n.gentext.default.language.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/l10n.gentext.language.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/l10n.gentext.use.xref.language.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/label.from.part.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/line-height.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/linenumbering.everyNth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/linenumbering.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/linenumbering.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/linenumbering.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/link.mailto.url.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/list.block.spacing.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/list.item.spacing.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/make.graphic.viewport.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/make.index.markup.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/make.single.year.ranges.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/make.valid.html.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/make.year.ranges.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/manifest.in.base.dir.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/manifest.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/manual.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/marker.section.level.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/menuchoice.menu.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/menuchoice.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/monospace.font.family.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/monospace.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/monospace.verbatim.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/navig.graphics.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/navig.graphics.path.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/navig.graphics.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/navig.showtitles.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/nominal.image.depth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/nominal.image.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/nominal.table.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/normal.para.spacing.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.base.uri.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.debug.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.doctitle.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.fragid.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.lang.fallback.sequence.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.outline.ext.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.pubid.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.resolver.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/olink.sysid.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.height.portrait.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.height.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.margin.bottom.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.margin.inner.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.margin.outer.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.margin.top.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.orientation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.width.portrait.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/page.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/paper.type.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/para.propagates.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/part.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/passivetex.extensions.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/phrase.propagates.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/pixels.per.inch.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/points.per.em.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/preface.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/prefer.internal.olink.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/preferred.mediaobject.role.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/procedure.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/process.empty.source.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/process.source.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.arch.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.attribute.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.condition.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.conformance.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.lang.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.os.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.revision.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.revisionflag.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.role.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.security.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.userlevel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.value.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/profile.vendor.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/punct.honorific.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.defaultlabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.inherit.numeration.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.level1.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.level2.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.level3.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.level4.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.level5.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.level6.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qanda.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/qandadiv.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/refentry.generate.name.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/refentry.generate.title.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/refentry.pagebreak.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/refentry.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/refentry.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/refentry.xref.manvolnum.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/region.after.extent.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/region.before.extent.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/root.filename.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/root.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/rootid.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/runinhead.default.title.end.punct.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/runinhead.title.end.punct.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/sans.font.family.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/saxon.callouts.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/saxon.character.representation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/saxon.linenumbering.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/saxon.tablecolumns.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.autolabel.max.depth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.autolabel.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.label.includes.component.label.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.level1.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.level2.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.level3.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.level4.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.level5.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.level6.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.level1.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.level2.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.level3.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.level4.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.level5.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.level6.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/section.title.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/segmentedlist.as.table.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/shade.verbatim.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/shade.verbatim.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/show.comments.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/show.revisionflag.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/sidebar.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/simplesect.in.toc.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/spacing.paras.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/subscript.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/superscript.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/suppress.footer.navigation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/suppress.header.navigation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/suppress.navigation.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/symbol.font.family.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.borders.with.css.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.cell.border.color.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.cell.border.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.cell.border.thickness.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.cell.padding.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.entry.padding.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.footnote.number.format.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.footnote.number.symbols.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.frame.border.color.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.frame.border.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.frame.border.thickness.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/table.table.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/tablecolumns.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/target.database.document.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/targets.filename.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/template.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/tex.math.delims.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/tex.math.file.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/tex.math.in.alt.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/textdata.default.encoding.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/textinsert.extension.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/title.font.family.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/title.margin.left.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/toc.indent.width.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/toc.list.type.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/toc.margin.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/toc.max.depth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/toc.section.depth.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ulink.footnote.number.format.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ulink.footnotes.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ulink.hyphenate.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ulink.show.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/ulink.target.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.embed.for.svg.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.extensions.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.id.as.filename.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.id.function.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.local.olink.style.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.role.as.xrefstyle.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.role.for.mediaobject.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/use.svg.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/variablelist.as.blocks.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/variablelist.as.table.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/variablelist.max.termlength.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/verbatim.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/wordml.template.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xep.extensions.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xep.index.item.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xref.label-page.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xref.label-title.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xref.properties.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xref.title-page.separator.xml -share/kde/apps/ksgmltools2/docbook/xsl/params/xref.with.number.and.title.xml share/kde/apps/kssl/ca-bundle.crt -share/kde/apps/ktexteditor_exporter/ktexteditor_exporterui.rc -share/kde/apps/ktexteditor_iconinserter/ktexteditor_iconinserterui.rc -share/kde/apps/ktexteditor_insanehtml_le/insanehtml_le_ui.rc -share/kde/apps/ktexteditor_insanehtml_le/xhtml.cfg -share/kde/apps/ktexteditor_insertfile/ktexteditor_insertfileui.rc -share/kde/apps/ktexteditor_kdatatool/ktexteditor_kdatatoolui.rc share/kde/apps/plasma/services/dataengineservice.operations share/kde/apps/plasma/services/plasmoidservice.operations +share/kde/apps/plasma/services/storage.operations share/kde/apps/proxyscout/proxyscout.notifyrc share/kde/config/accept-languages.codes share/kde/config/colors/40.colors @@ -4044,8 +3358,6 @@ share/kde/config/colors/Oxygen.colors share/kde/config/colors/Rainbow.colors share/kde/config/colors/Royal.colors share/kde/config/colors/Web.colors -share/kde/config/katemoderc -share/kde/config/katepartpluginsrc share/kde/config/kdebug.areas share/kde/config/kdebugrc share/kde/config/khtmlrc @@ -4064,7 +3376,7 @@ share/kde4/services/help.protocol share/kde4/services/http.protocol share/kde4/services/http_cache_cleaner.desktop share/kde4/services/https.protocol -share/kde4/services/katepart.desktop +share/kde4/services/kcm_ssl.desktop share/kde4/services/kded/kcookiejar.desktop share/kde4/services/kded/kssld.desktop share/kde4/services/kded/proxyscout.desktop @@ -4073,22 +3385,15 @@ share/kde4/services/khtml.desktop share/kde4/services/khtmladaptorpart.desktop share/kde4/services/khtmlimage.desktop share/kde4/services/kjavaappletviewer.desktop -share/kde4/services/kmailservice.protocol share/kde4/services/kmultipart.desktop share/kde4/services/kspell_aspell.desktop share/kde4/services/kspell_enchant.desktop -share/kde4/services/ktexteditor_autobrace.desktop -share/kde4/services/ktexteditor_autobrace_config.desktop -share/kde4/services/ktexteditor_exporter.desktop -share/kde4/services/ktexteditor_iconinserter.desktop -share/kde4/services/ktexteditor_insanehtml_le.desktop -share/kde4/services/ktexteditor_insertfile.desktop -share/kde4/services/ktexteditor_kdatatool.desktop share/kde4/services/metainfo.protocol share/kde4/services/mms.protocol share/kde4/services/mmst.protocol share/kde4/services/mmsu.protocol share/kde4/services/plasma-applet-extenderapplet.desktop +share/kde4/services/plasma.protocol share/kde4/services/pnm.protocol share/kde4/services/qimageioplugins/bmp.desktop share/kde4/services/qimageioplugins/dds.desktop @@ -4110,18 +3415,17 @@ share/kde4/services/qimageioplugins/ppm.desktop share/kde4/services/qimageioplugins/psd.desktop share/kde4/services/qimageioplugins/ras.desktop share/kde4/services/qimageioplugins/rgb.desktop +share/kde4/services/qimageioplugins/svg+xml-compressed.desktop +share/kde4/services/qimageioplugins/svg+xml.desktop share/kde4/services/qimageioplugins/tga.desktop share/kde4/services/qimageioplugins/tiff.desktop share/kde4/services/qimageioplugins/xbm.desktop share/kde4/services/qimageioplugins/xcf.desktop share/kde4/services/qimageioplugins/xpm.desktop share/kde4/services/qimageioplugins/xv.desktop -share/kde4/services/rlogin.protocol share/kde4/services/rtsp.protocol share/kde4/services/rtspt.protocol share/kde4/services/rtspu.protocol -share/kde4/services/ssh.protocol -share/kde4/services/telnet.protocol share/kde4/services/webdav.protocol share/kde4/services/webdavs.protocol share/kde4/servicetypes/application.desktop @@ -4135,6 +3439,7 @@ share/kde4/servicetypes/kconfigbackend.desktop share/kde4/servicetypes/kdatatool.desktop share/kde4/servicetypes/kdedmodule.desktop share/kde4/servicetypes/kemoticonsTheme.desktop +share/kde4/servicetypes/kfileitemactionplugin.desktop share/kde4/servicetypes/kfileplugin.desktop share/kde4/servicetypes/kfilewrite.desktop share/kde4/servicetypes/kiofilemodule.desktop @@ -4160,9 +3465,12 @@ share/kde4/servicetypes/plasma-dataengine.desktop share/kde4/servicetypes/plasma-packagestructure.desktop share/kde4/servicetypes/plasma-runner.desktop share/kde4/servicetypes/plasma-scriptengine.desktop +share/kde4/servicetypes/plasma-service.desktop +share/kde4/servicetypes/plasma-toolbox.desktop share/kde4/servicetypes/plasma-wallpaper.desktop share/kde4/servicetypes/qimageio_plugin.desktop share/kde4/servicetypes/renamedialogplugin.desktop share/kde4/servicetypes/sonnetspeller.desktop share/locale/all_languages +share/locale/en_US/entry.desktop share/mime/packages/kde.xml diff --git a/x11/kdelibs4/buildlink3.mk b/x11/kdelibs4/buildlink3.mk index d691af8de9b..87abf6a40f7 100644 --- a/x11/kdelibs4/buildlink3.mk +++ b/x11/kdelibs4/buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: buildlink3.mk,v 1.16 2012/03/03 00:11:52 wiz Exp $ +# $NetBSD: buildlink3.mk,v 1.17 2012/03/19 11:28:48 markd Exp $ BUILDLINK_TREE+= kdelibs @@ -10,8 +10,8 @@ BUILDLINK_ABI_DEPENDS.kdelibs?= kdelibs4>=4.5.5nb12 BUILDLINK_PKGSRCDIR.kdelibs?= ../../x11/kdelibs4 .include "../../archivers/bzip2/buildlink3.mk" -.include "../../devel/libdbusmenu-qt/buildlink3.mk" .include "../../databases/shared-mime-info/buildlink3.mk" +.include "../../devel/libdbusmenu-qt/buildlink3.mk" .include "../../devel/pcre/buildlink3.mk" .include "../../devel/zlib/buildlink3.mk" .include "../../graphics/jasper/buildlink3.mk" diff --git a/x11/kdelibs4/distinfo b/x11/kdelibs4/distinfo index c756e973a12..145a51a3288 100644 --- a/x11/kdelibs4/distinfo +++ b/x11/kdelibs4/distinfo @@ -1,26 +1,18 @@ -$NetBSD: distinfo,v 1.23 2012/01/23 08:14:02 joerg Exp $ +$NetBSD: distinfo,v 1.24 2012/03/19 11:28:48 markd Exp $ -SHA1 (kdelibs-4.5.5.tar.bz2) = 127a2b50fe31ff345e05660dd50f7c55ae78d854 -RMD160 (kdelibs-4.5.5.tar.bz2) = 7c33afa12379119fbf7d70e8895c3f2ada9a2eba -Size (kdelibs-4.5.5.tar.bz2) = 13876521 bytes -SHA1 (patch-aa) = 7146107f78bbc618cf80479195581f29fc6b5977 -SHA1 (patch-ab) = aec1140bef01199f067b079c30d95fea1814839d -SHA1 (patch-ac) = 55027a8e6502a938da7a7930e079b3ce21ad2322 -SHA1 (patch-ad) = 2a0dfd3dda071654c89b8dda3db8885e2a55ba2b -SHA1 (patch-ag) = af1e58512984726a4efaf315bb958a9a529638b8 -SHA1 (patch-ah) = b583dbe1b712984bbe002cc9143352729fba94ed -SHA1 (patch-aj) = 8520c322d4579e9485253c8e8b130669b0f8b618 -SHA1 (patch-ak) = 03883c05a2a600737d98a889034a2fb9984a5d58 -SHA1 (patch-al) = a3c48e8552ca39496134696f3d415a7b6a4db7d8 -SHA1 (patch-am) = da04e0450885dc4bca38a4e9b91822746d936639 -SHA1 (patch-an) = b5fe924970772bd8a5b420f8cc638ab8bf892c53 -SHA1 (patch-cmake_modules_FindTaglib.cmake) = 97baf0e5c9f53a17582d89ee41cb4d99fbd15424 -SHA1 (patch-kdeui_colors_kcolordialog.cpp) = f105006a778c42a93452fc4bf5d561aa62595a5c -SHA1 (patch-khtml_khtml_part.cpp) = f8f5977b03463b6de909881178abed3ba351364c -SHA1 (patch-kio_kio_scheduler.cpp) = a32f9dadf021115a819d4ff94bf63e6ee109c965 -SHA1 (patch-kio_kio_scheduler.h) = b09d3fba61f68685037a6cfa62b58ab768de71c1 -SHA1 (patch-kio_kssl_ksslcertificatebox.cpp) = 1f187968a49e251fbdbbf2569e4703ac05b474be -SHA1 (patch-kioslave_http_http.cpp) = abd6446120fab21cd30da3e9e1fdc00218802d89 -SHA1 (patch-kjs_JSImmediate.h) = 29949739140d766362d308ece28c96aef593ed73 -SHA1 (patch-kjs_lookup.h) = 7a66c3e79d8177cf46579e153fbafb0b1cae9551 -SHA1 (patch-kjs_wtf_RefPtr.h) = ecf999e97edebdb53edeeffeee6200305ddacc3e +SHA1 (kdelibs-4.8.0.tar.bz2) = 5e4744405734e6c3ce572ef7d16054390692b38a +RMD160 (kdelibs-4.8.0.tar.bz2) = b5fd03eec81a390ea74d4713d6459b685352d362 +Size (kdelibs-4.8.0.tar.bz2) = 13044553 bytes +SHA1 (patch-aa) = c3044205a964797a7718b7a7bd03bb99dd3ca37d +SHA1 (patch-ab) = 3f89ddfa9a6101a016128d82dbbd0e985e396cae +SHA1 (patch-ac) = 200391c0cf0a89ef43f0cb57e39d56eee51da505 +SHA1 (patch-ad) = 08467b484f3df864d343d9151b13bedc4f001976 +SHA1 (patch-ag) = 67561007567ba10f20d8e8572dd0a33c8139b7cd +SHA1 (patch-ah) = 368f4f641ce55257409137185357e796666ae42f +SHA1 (patch-aj) = 501e34c8fdf242c3718ecb26577ac5940d37fae5 +SHA1 (patch-ak) = 73cc1bb149039d2fe3c05ee631426a8773f951c6 +SHA1 (patch-al) = 5efa7d504fe75bec53837bfa062a4b3f910fd71f +SHA1 (patch-am) = b6c315d152d2c3d3c66ad85050549d0b39b263e5 +SHA1 (patch-cmake_modules_FindTaglib.cmake) = be38479966da542343dd962c57f7e9d1be3e9ff4 +SHA1 (patch-kdecore_localization_klocale_kde.cpp) = b8a513a0c51e65d7e604a88c1d0e3325be6ad688 +SHA1 (patch-kdecore_util_kshareddatacache_p.h) = 6d064fe75fbecd489b0343960333864c717c0805 diff --git a/x11/kdelibs4/files/kshareddatacache.cpp b/x11/kdelibs4/files/kshareddatacache.cpp new file mode 100644 index 00000000000..1e325353ceb --- /dev/null +++ b/x11/kdelibs4/files/kshareddatacache.cpp @@ -0,0 +1,1496 @@ +/* + * This file is part of the KDE project. + * Copyright © 2010 Michael Pyne <mpyne@kde.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "kshareddatacache.h" + +#include <kdebug.h> +#include <kglobal.h> +#include <kstandarddirs.h> +#include <krandom.h> + +#include <QtCore/QDateTime> +#include <QtCore/QSharedPointer> +#include <QtCore/QByteArray> +#include <QtCore/QFile> +#include <QtCore/QAtomicInt> +#include <QtCore/QList> +#include <QtCore/QMutex> +#include <QtCore/QMutexLocker> + +#include <pthread.h> +#include <sys/types.h> +#include <sys/mman.h> +#include <stdlib.h> +#include <unistd.h> +#include <time.h> + +// Mac OS X, for all its POSIX compliance, does not support timeouts on its mutexes, which +// is kind of a disaster for cross-process support. So, disable support for shared memory +// and add a wrapper implementation. +#if !defined(_POSIX_TIMEOUTS) || !defined(_POSIX_THREADS) || (_POSIX_TIMEOUTS < 200112L) || (_POSIX_THREADS < 200112L) + +#ifdef _POSIX_THREAD_PROCESS_SHARED +#undef _POSIX_THREAD_PROCESS_SHARED +#endif + +#ifdef __GNUC__ +#warning "No support for POSIX timeouts and POSIX threads -- shared memory will be ignored" +#endif + +#endif + +// BSD/Mac OS X compat +#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) +#define MAP_ANONYMOUS MAP_ANON +#endif + +/** + * This is the hash function used for our pixmap data to hopefully make the + * hashing used to place the pixmaps as efficient as possible. + * + * The algorithm is in the public domain, by Glenn Fowler, Phong Vo, and Landon + * Curt Noll, implemented by myself (mpyne). + */ +static quint32 fnvHash32(const QByteArray &buffer) +{ + static const quint32 FNVPrime = 16777619; + static const quint32 FNVOffsetBasis = 2166136261; + + // uchar for correct arithmetic below + const uchar *base = reinterpret_cast<const uchar *>(buffer.constData()); + quint32 result = FNVOffsetBasis; + int count = buffer.length(); + + while (count-- > 0) { + result *= FNVPrime; + result ^= *base; + base++; + } + + return result; +} + +// Alignment concerns become a big deal when we're dealing with shared memory, +// since trying to access a structure sized at, say 8 bytes at an address that +// is not evenly divisible by 8 is a crash-inducing error on some +// architectures. The compiler would normally take care of this, but with +// shared memory the compiler will not necessarily know the alignment expected, +// so make sure we account for this ourselves. To do so we need a way to find +// out the expected alignment. Enter ALIGNOF... +#ifndef ALIGNOF +#if defined(Q_CC_GNU) || defined(Q_CC_SUN) +#define ALIGNOF(x) (__alignof__ (x)) // GCC provides what we want directly +#else + +#include <stddef.h> // offsetof + +template<class T> +struct __alignmentHack +{ + char firstEntry; + T obj; + static const size_t size = offsetof(__alignmentHack, obj); +}; +#define ALIGNOF(x) (__alignmentHack<x>::size) +#endif // Non gcc +#endif // ALIGNOF undefined + +// Returns a pointer properly aligned to handle size alignment. +// size should be a power of 2. start is assumed to be the lowest +// permissible address, therefore the return value will be >= start. +template<class T> +T* alignTo(const void *start, uint size = ALIGNOF(T)) +{ + quintptr mask = size - 1; + + // Cast to int-type to handle bit-twiddling + quintptr basePointer = reinterpret_cast<quintptr>(start); + + // If (and only if) we are already aligned, adding mask into basePointer + // will not increment any of the bits in ~mask and we get the right answer. + basePointer = (basePointer + mask) & ~mask; + + return reinterpret_cast<T *>(basePointer); +} + +/** + * Returns a pointer to a const object of type T, assumed to be @p offset + * *BYTES* greater than the base address. Note that in order to meet alignment + * requirements for T, it is possible that the returned pointer points greater + * than @p offset into @p base. + */ +template<class T> +const T *offsetAs(const void *const base, qint32 offset) +{ + const char *ptr = reinterpret_cast<const char*>(base); + return alignTo<const T>(ptr + offset); +} + +// Same as above, but for non-const objects +template<class T> +T *offsetAs(void *const base, qint32 offset) +{ + char *ptr = reinterpret_cast<char *>(base); + return alignTo<T>(ptr + offset); +} + +/** + * @return the smallest integer greater than or equal to (@p a / @p b). + * @param a Numerator, should be ≥ 0. + * @param b Denominator, should be > 0. + */ +template<class T> +T intCeil(T a, T b) +{ + return (a + b - 1) / b; +} + +typedef qint32 pageID; + +// ========================================================================= +// Description of the cache: +// +// The shared memory cache is designed to be handled as two separate objects, +// all contained in the same global memory segment. First off, there is the +// basic header data, consisting of the global header followed by the +// accounting data necessary to hold items (described in more detail +// momentarily). Following the accounting data is the start of the "page table" +// (essentially just as you'd see it in an Operating Systems text). +// +// The page table contains shared memory split into fixed-size pages, with a +// configurable page size. In the event that the data is too large to fit into +// a single logical page, it will need to occupy consecutive pages of memory. +// +// The accounting data that was referenced earlier is split into two: +// +// 1. index table, containing a fixed-size list of possible cache entries. +// Each index entry is of type IndexTableEntry (below), and holds the various +// accounting data and a pointer to the first page. +// +// 2. page table, which is used to speed up the process of searching for +// free pages of memory. There is one entry for every page in the page table, +// and it contains the index of the one entry in the index table actually +// holding the page (or <0 if the page is free). +// +// The entire segment looks like so: +// ╔════════╤═════════════╤════════════╦═══════╤═══════╤═══════╤═══════╤═══╗ +// ║ Header │ Index Table │ Page Table ║ Pages │ │ │ │...║ +// ╚════════╧═════════════╧════════════╩═══════╧═══════╧═══════╧═══════╧═══╝ +// ========================================================================= + +// All elements of this struct must be "plain old data" (POD) types since it +// will be in shared memory. In addition, no pointers! To point to something +// you must use relative offsets since the pointer start addresses will be +// different in each process. +struct IndexTableEntry +{ + uint fileNameHash; + uint totalItemSize; // in bytes + mutable uint useCount; + time_t addTime; + mutable time_t lastUsedTime; + pageID firstPage; +}; + +// Page table entry +struct PageTableEntry +{ + // int so we can use values <0 for unassigned pages. + qint32 index; +}; + +// Each individual page contains the cached data. The first page starts off with +// the utf8-encoded key, a null '\0', and then the data follows immediately +// from the next byte, possibly crossing consecutive page boundaries to hold +// all of the data. +// There is, however, no specific struct for a page, it is simply a location in +// memory. + +// This is effectively the layout of the shared memory segment. The variables +// contained within form the header, data contained afterwards is pointed to +// by using special accessor functions. +struct SharedMemory +{ + enum { + PIXMAP_CACHE_VERSION = 1, + MINIMUM_CACHE_SIZE = 4096 + }; + + // Note to those who follow me. You should not, under any circumstances, ever + // re-arrange the following two fields, even if you change the version number + // for later revisions of this code. + QAtomicInt ready; ///< DO NOT INITIALIZE + quint8 version; + + mutable pthread_mutex_t lockMutex; + uint cacheSize; + uint cacheAvail; + QAtomicInt evictionPolicy; + + // pageSize and cacheSize determine the number of pages. The number of + // pages determine the page table size and (indirectly) the index table + // size. + QAtomicInt pageSize; + + // This variable is added to reserve space for later cache timestamping + // support. The idea is this variable will be updated when the cache is + // written to, to allow clients to detect a changed cache quickly. + QAtomicInt cacheTimestamp; + + /** + * Converts the given average item size into an appropriate page size. + */ + static unsigned equivalentPageSize(unsigned itemSize) + { + if (itemSize == 0) { + return 4096; // Default average item size. + } + + int log2OfSize = 0; + while ((itemSize >>= 1) != 0) { + log2OfSize++; + } + + // Bound page size between 512 bytes and 256 KiB. + log2OfSize = qBound(9, log2OfSize, 18); + + return (1 << log2OfSize); + } + + // Returns pageSize in unsigned format. + unsigned cachePageSize() const + { + return static_cast<unsigned>(pageSize); + } + + /** + * This is effectively the class ctor. But since we're in shared memory, + * there's a few rules: + * + * 1. To allow for some form of locking in the initial-setup case, we + * use an atomic int, which will be initialized to 0 by mmap(). Then to + * take the lock we atomically increment the 0 to 1. If we end up calling + * the QAtomicInt constructor we can mess that up, so we can't use a + * constructor for this class either. + * 2. Any member variable you add takes up space in shared memory as well, + * so make sure you need it. + */ + bool performInitialSetup(bool processShared, uint _cacheSize, uint _pageSize) + { + if (_cacheSize < MINIMUM_CACHE_SIZE) { + kError(264) << "Internal error: Attempted to create a cache sized < " + << MINIMUM_CACHE_SIZE; + return false; + } + + if (_pageSize == 0) { + kError(264) << "Internal error: Attempted to create a cache with 0-sized pages."; + return false; + } + + if (processShared) { + // Perform initialization. We effectively hold a mini-lock right + // now as long as all clients cooperate... + pthread_mutexattr_t mutexAttr; + + // Initialize attributes, enable process-shared primitives, and setup + // the mutex. + if (pthread_mutexattr_init(&mutexAttr) == 0) { + if ( +#ifdef _POSIX_THREAD_PROCESS_SHARED + pthread_mutexattr_setpshared(&mutexAttr, PTHREAD_PROCESS_SHARED) != 0 || +#endif + pthread_mutex_init(&lockMutex, &mutexAttr) != 0) + { + pthread_mutexattr_destroy(&mutexAttr); + return false; // No process sharing + } + + pthread_mutexattr_destroy(&mutexAttr); + } + else { + return false; // No mutex attrs + } + } + else { + // Only thread-shared + if (pthread_mutex_init(&lockMutex, 0) != 0) { + return false; + } + } + + // These must be updated to make some of our auxiliary functions + // work right since their values will be based on the cache size. + cacheSize = _cacheSize; + pageSize = _pageSize; + version = PIXMAP_CACHE_VERSION; + cacheTimestamp = static_cast<unsigned>(::time(0)); + + clearInternalTables(); + + // Unlock the mini-lock, and introduce a total memory barrier to make + // sure all changes have propagated even without a mutex. + ready.ref(); + + return true; + } + + void clearInternalTables() + { + // Assumes we're already locked somehow. + cacheAvail = pageTableSize(); + + // Setup page tables to point nowhere + PageTableEntry *table = pageTable(); + for (uint i = 0; i < pageTableSize(); ++i) { + table[i].index = -1; + } + + // Setup index tables to be accurate. + IndexTableEntry *indices = indexTable(); + for (uint i = 0; i < indexTableSize(); ++i) { + indices[i].firstPage = -1; + } + } + + const IndexTableEntry *indexTable() const + { + // Index Table goes immediately after this struct, at the first byte + // where alignment constraints are met (accounted for by offsetAs). + return offsetAs<IndexTableEntry>(this, sizeof(*this)); + } + + const PageTableEntry *pageTable() const + { + const IndexTableEntry *base = indexTable(); + base += indexTableSize(); + + // Let's call wherever we end up the start of the page table... + return alignTo<PageTableEntry>(base); + } + + const void *cachePages() const + { + const PageTableEntry *tableStart = pageTable(); + tableStart += pageTableSize(); + + // Let's call wherever we end up the start of the data... + return alignTo<void>(tableStart, cachePageSize()); + } + + const void *page(pageID at) const + { + if (static_cast<int>(at) >= static_cast<int>(pageTableSize())) { + return 0; + } + + // We must manually calculate this one since pageSize varies. + const char *pageStart = reinterpret_cast<const char *>(cachePages()); + pageStart += (at * cachePageSize()); + + return reinterpret_cast<const void *>(pageStart); + } + + // The following are non-const versions of some of the methods defined + // above. They use const_cast<> because I feel that is better than + // duplicating the code. I suppose template member functions (?) + // may work, may investigate later. + IndexTableEntry *indexTable() + { + const SharedMemory *that = const_cast<const SharedMemory*>(this); + return const_cast<IndexTableEntry *>(that->indexTable()); + } + + PageTableEntry *pageTable() + { + const SharedMemory *that = const_cast<const SharedMemory*>(this); + return const_cast<PageTableEntry *>(that->pageTable()); + } + + void *cachePages() + { + const SharedMemory *that = const_cast<const SharedMemory*>(this); + return const_cast<void *>(that->cachePages()); + } + + void *page(pageID at) + { + const SharedMemory *that = const_cast<const SharedMemory*>(this); + return const_cast<void *>(that->page(at)); + } + + uint pageTableSize() const + { + return cacheSize / cachePageSize(); + } + + uint indexTableSize() const + { + // Assume 2 pages on average are needed -> the number of entries + // would be half of the number of pages. + return pageTableSize() / 2; + } + + /** + * @return the index of the first page, for the set of contiguous + * pages that can hold @p pagesNeeded PAGES. + */ + pageID findEmptyPages(uint pagesNeeded) const + { + // Loop through the page table, find the first empty page, and just + // makes sure that there are enough free pages. + const PageTableEntry *table = pageTable(); + uint contiguousPagesFound = 0; + pageID base = 0; + for (pageID i = 0; i < static_cast<int>(pageTableSize() - pagesNeeded + 1); ++i) { + if (table[i].index < 0) { + if (contiguousPagesFound == 0) { + base = i; + } + contiguousPagesFound++; + } + else { + contiguousPagesFound = 0; + } + + if (contiguousPagesFound == pagesNeeded) { + return base; + } + } + + return pageTableSize(); + } + + // left < right? + static bool lruCompare(const IndexTableEntry &l, const IndexTableEntry &r) + { + // Ensure invalid entries migrate to the end + if (l.firstPage == -1 && r.firstPage >= 0) { + return false; + } + if (l.firstPage >= 0 && r.firstPage == -1) { + return true; + } + + // Most recently used will have the highest absolute time => + // least recently used (lowest) should go first => use left < right + return l.lastUsedTime < r.lastUsedTime; + } + + // left < right? + static bool seldomUsedCompare(const IndexTableEntry &l, const IndexTableEntry &r) + { + // Ensure invalid entries migrate to the end + if (l.firstPage == -1 && r.firstPage >= 0) { + return false; + } + if (l.firstPage >= 0 && r.firstPage == -1) { + return true; + } + + // Put lowest use count at start by using left < right + return l.useCount < r.useCount; + } + + // left < right? + static bool ageCompare(const IndexTableEntry &l, const IndexTableEntry &r) + { + // Ensure invalid entries migrate to the end + if (l.firstPage == -1 && r.firstPage >= 0) { + return false; + } + if (l.firstPage >= 0 && r.firstPage == -1) { + return true; + } + + // Oldest entries die first -- they have the lowest absolute add time, + // so just like the others use left < right + return l.addTime < r.addTime; + } + + void defragment() + { + if (cacheAvail * cachePageSize() == cacheSize) { + return; // That was easy + } + + kDebug(264) << "Defragmenting the shared cache"; + + // Just do a linear scan, and anytime there is free space, swap it + // with the pages to its right. In order to meet the precondition + // we need to skip any used pages first. + + pageID currentPage = 0; + pageID idLimit = static_cast<pageID>(pageTableSize()); + PageTableEntry *pages = pageTable(); + + // Skip used pages + while (currentPage < idLimit && pages[currentPage].index >= 0) { + ++currentPage; + } + + pageID freeSpot = currentPage; + + // Main loop, starting from a free page, skip to the used pages and + // move them back. + while (currentPage < idLimit) { + // Find the next used page + while (currentPage < idLimit && pages[currentPage].index < 0) { + ++currentPage; + } + + if (currentPage >= idLimit) { + break; + } + + // Found an entry, move it. + qint32 affectedIndex = pages[currentPage].index; + Q_ASSERT(affectedIndex >= 0); + Q_ASSERT(indexTable()[affectedIndex].firstPage == currentPage); + + indexTable()[affectedIndex].firstPage = freeSpot; + + // Moving one page at a time guarantees we can use memcpy safely + // (in other words, the source and destination will not overlap). + while (currentPage < idLimit && pages[currentPage].index >= 0) { + ::memcpy(page(freeSpot), page(currentPage), cachePageSize()); + pages[freeSpot].index = affectedIndex; + pages[currentPage].index = -1; + ++currentPage; + ++freeSpot; + + // If we've just moved the very last page and it happened to + // be at the very end of the cache then we're done. + if (currentPage >= idLimit) { + break; + } + + // We're moving consecutive used pages whether they belong to + // our affected entry or not, so detect if we've started moving + // the data for a different entry and adjust if necessary. + if (affectedIndex != pages[currentPage].index) { + indexTable()[pages[currentPage].index].firstPage = freeSpot; + } + affectedIndex = pages[currentPage].index; + } + + // At this point currentPage is on a page that is unused, and the + // cycle repeats. However, currentPage is not the first unused + // page, freeSpot is, so leave it alone. + } + } + + qint32 findNamedEntry(const QByteArray &key) const + { + uint keyHash = fnvHash32(key); + uint position = keyHash % indexTableSize(); + int probeNumber = 1; // See insert() for description + + while (indexTable()[position].fileNameHash != keyHash && + indexTable()[position].useCount > 0 && + probeNumber < 6) + { + position = (keyHash + (probeNumber + probeNumber * probeNumber) / 2) + % indexTableSize(); + probeNumber++; + } + + if (indexTable()[position].fileNameHash == keyHash) { + pageID firstPage = indexTable()[position].firstPage; + if (firstPage < 0) { + return -1; + } + const void *resultPage = page(firstPage); + const char *utf8FileName = reinterpret_cast<const char *>(resultPage); + + if (qstrcmp(utf8FileName, key.constData()) == 0) { + return position; + } + } + + return -1; // Not found, or a different one found. + } + + // Function to use with QSharedPointer in removeUsedPages below... + static void deleteTable(IndexTableEntry *table) { + delete [] table; + } + + uint removeUsedPages(uint numberNeeded) + { + if (numberNeeded > pageTableSize()) { + kError(264) << "Internal error: Requested more space than exists in the cache."; + kError(264) << numberNeeded << "requested, " << pageTableSize() << "is the total possible."; + return pageTableSize(); + } + + // To avoid calling findEmptyPages() all the time we will figure out + // the minimum number of pages required to fulfill the request if the + // page table were perfectly defragmented, and remove at least that + // amount first. If the cache free space is large enough we will + // defragment first instead since it's likely we're highly fragmented. + uint freedPagesRequired = 0; + if (numberNeeded > cacheAvail) { + freedPagesRequired = numberNeeded - cacheAvail; + } + + kDebug(264) << "Removing old entries to free up" << numberNeeded << "pages," + << cacheAvail << "are already theoretically available."; + + if (cacheAvail > 3 * numberNeeded) { + defragment(); + uint result = findEmptyPages(numberNeeded); + + if (result < pageTableSize()) { + return result; + } + else { + kError(264) << "Just defragmented a locked cache, but still there" + << "isn't enough room for the current request."; + } + } + + // At this point we know we'll have to free some space up, so sort our + // list of entries by whatever the current criteria are and start + // killing expired entries. + QSharedPointer<IndexTableEntry> tablePtr(new IndexTableEntry[indexTableSize()], deleteTable); + + // We use tablePtr to ensure the data is destroyed, but do the access + // via a helper pointer to allow for array ops. + IndexTableEntry *table = tablePtr.data(); + + ::memcpy(table, indexTable(), sizeof(IndexTableEntry) * indexTableSize()); + + // Our entry ID is simply its index into the + // index table, which qSort will rearrange all willy-nilly, so first + // we'll save the *real* entry ID into firstPage (which is useless in + // our copy of the index table. On the other hand if the entry is not + // used then we note that with -1. + for (uint i = 0; i < indexTableSize(); ++i) { + table[i].firstPage = table[i].useCount > 0 ? static_cast<pageID>(i) + : -1; + } + + // Declare the comparison function that we'll use to pass to qSort, + // based on our cache eviction policy. + bool (*compareFunction)(const IndexTableEntry &, const IndexTableEntry &); + switch((int) evictionPolicy) { + case (int) KSharedDataCache::EvictLeastOftenUsed: + case (int) KSharedDataCache::NoEvictionPreference: + default: + compareFunction = seldomUsedCompare; + break; + + case (int) KSharedDataCache::EvictLeastRecentlyUsed: + compareFunction = lruCompare; + break; + + case (int) KSharedDataCache::EvictOldest: + compareFunction = ageCompare; + break; + } + + qSort(table, table + indexTableSize(), compareFunction); + + // Least recently used entries will be in the front. + // Start killing until we have room. + + // Note on removeEntry: It expects an index into the index table, + // but our sorted list is all jumbled. But we stored the real index + // in the firstPage member. + // Remove entries until we've removed at least the required number + // of pages. + uint i = 0; + while (i < indexTableSize() && numberNeeded > cacheAvail) { + int curIndex = table[i++].firstPage; + + // Removed everything, still no luck. At *this* point, + // pagesRemoved < numberNeeded or in other words we can't fulfill + // the request even if we defragment. This is really a logic error. + if (curIndex < 0) { + kError(264) << "Unable to remove enough used pages to allocate" + << numberNeeded << "pages. In theory the cache is empty, weird."; + return pageTableSize(); + } + + kDebug(264) << "Removing entry of" << indexTable()[curIndex].totalItemSize + << "size"; + removeEntry(curIndex); + } + + // At this point let's see if we have freed up enough data by + // defragmenting first and seeing if we can find that free space. + defragment(); + + pageID result = pageTableSize(); + while (i < indexTableSize() && + (result = findEmptyPages(numberNeeded)) >= static_cast<int>(pageTableSize())) + { + int curIndex = table[i++].firstPage; + + if (curIndex < 0) { + // One last shot. + defragment(); + return findEmptyPages(numberNeeded); + } + + removeEntry(curIndex); + } + + // Whew. + return result; + } + + // Returns the total size required for a given cache size. + static uint totalSize(uint cacheSize, uint effectivePageSize) + { + uint numberPages = intCeil(cacheSize, effectivePageSize); + uint indexTableSize = numberPages / 2; + + // Knowing the number of pages, we can determine what addresses we'd be + // using (properly aligned), and from there determine how much memory + // we'd use. + IndexTableEntry *indexTableStart = + offsetAs<IndexTableEntry>(static_cast<void*>(0), sizeof (SharedMemory)); + + indexTableStart += indexTableSize; + + PageTableEntry *pageTableStart = reinterpret_cast<PageTableEntry *>(indexTableStart); + pageTableStart = alignTo<PageTableEntry>(pageTableStart); + pageTableStart += numberPages; + + // The weird part, we must manually adjust the pointer based on the page size. + char *cacheStart = reinterpret_cast<char *>(pageTableStart); + cacheStart += (numberPages * effectivePageSize); + + // ALIGNOF gives pointer alignment + cacheStart = alignTo<char>(cacheStart, ALIGNOF(void*)); + + // We've traversed the header, index, page table, and cache. + // Wherever we're at now is the size of the enchilada. + return static_cast<uint>(reinterpret_cast<quintptr>(cacheStart)); + } + + uint fileNameHash(const QByteArray &utf8FileName) const + { + return fnvHash32(utf8FileName) % indexTableSize(); + } + + bool lock() const + { +#ifdef _POSIX_THREAD_PROCESS_SHARED + struct timespec timeout; + + // Long timeout, but if we fail to meet this timeout it's probably a cache + // corruption (and if we take 8 seconds then it should be much much quicker + // the next time anyways since we'd be paged back in from disk) + timeout.tv_sec = 10 + ::time(NULL); // Absolute time, so 10 seconds from now + timeout.tv_nsec = 0; + + return pthread_mutex_timedlock(&lockMutex, &timeout) >= 0; +#else + // Some POSIX platforms don't have full support for pthreads. On these typically + // there will be no timedlock, so just don't bother and accept hangs on weird + // platforms. + return pthread_mutex_lock(&lockMutex) == 0; +#endif + } + + void unlock() const + { + pthread_mutex_unlock(&lockMutex); + } + + void clear() + { + lock(); + clearInternalTables(); + unlock(); + } + + void removeEntry(uint index); +}; + +// The per-instance private data, such as map size, whether +// attached or not, pointer to shared memory, etc. +class KSharedDataCache::Private +{ + public: + Private(const QString &name, + unsigned defaultCacheSize, + unsigned expectedItemSize + ) + : shm(0) + , m_cacheName(name) + , m_attached(false) + , m_mapSize(0) + , m_defaultCacheSize(defaultCacheSize) + , m_expectedItemSize(expectedItemSize) + { + mapSharedMemory(); + } + + // This function does a lot of the important work, attempting to connect to shared + // memory, a private anonymous mapping if that fails, and failing that, nothing (but + // the cache remains "valid", we just don't actually do anything). + void mapSharedMemory() + { + // 0-sized caches are fairly useless. + unsigned cacheSize = qMax(m_defaultCacheSize, uint(SharedMemory::MINIMUM_CACHE_SIZE)); + unsigned pageSize = SharedMemory::equivalentPageSize(m_expectedItemSize); + + // Ensure that the cache is sized such that there is a minimum number of + // pages available. (i.e. a cache consisting of only 1 page is fairly + // useless and probably crash-prone). + cacheSize = qMax(pageSize * 256, cacheSize); + + // The m_cacheName is used to find the file to store the cache in. + QString cacheName = KGlobal::dirs()->locateLocal("cache", m_cacheName + QLatin1String(".kcache")); + QFile file(cacheName); + + kDebug(264) << "Opening cache" << cacheName << "page size is" << pageSize; + + // The basic idea is to open the file that we want to map into shared + // memory, and then actually establish the mapping. Once we have mapped the + // file into shared memory we can close the file handle, the mapping will + // still be maintained (unless the file is resized to be shorter than + // expected, which we don't handle yet :-( ) + + // size accounts for the overhead over the desired cacheSize + uint size = SharedMemory::totalSize(cacheSize, pageSize); + void *mapAddress = MAP_FAILED; + + if (size < cacheSize) { + kError(264) << "Asked for a cache size less than requested size somehow -- Logic Error :("; + return; + } + + bool systemSupportsProcessSharing = false; + +// Compile time check ensures the required constants from the .h are available to be +// queried at all. +#ifdef _POSIX_THREAD_PROCESS_SHARED + systemSupportsProcessSharing = ::sysconf(_SC_THREAD_PROCESS_SHARED) > 0; +#endif + + // We establish the shared memory mapping here, only if we will have appropriate + // mutex support (systemSupportsProcessSharing), then we: + // Open the file and resize to some sane value if the file is too small. + if (systemSupportsProcessSharing && + file.open(QIODevice::ReadWrite) && + (file.size() >= size || file.resize(size))) + { + // Use mmap directly instead of QFile::map since the QFile (and its + // shared mapping) will disappear unless we hang onto the QFile for no + // reason (see the note below, we don't care about the file per se...) + mapAddress = ::mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, file.handle(), 0); + + // So... it is possible that someone else has mapped this cache already + // with a larger size. If that's the case we need to at least match + // the size to be able to access every entry, so fixup the mapping. + if (mapAddress != MAP_FAILED) { + SharedMemory *mapped = reinterpret_cast<SharedMemory *>(mapAddress); + + // First make sure that the version of the cache on disk is + // valid. We also need to check that version != 0 to + // disambiguate against an uninitialized cache. + if (mapped->version != SharedMemory::PIXMAP_CACHE_VERSION && + mapped->version > 0) + { + kWarning(264) << "Deleting wrong version of cache" << cacheName; + + // CAUTION: Potentially recursive since the recovery + // involves calling this function again. + m_attached = true; + m_mapSize = size; + shm = mapped; + recoverCorruptedCache(); + return; + } + else if (mapped->cacheSize > cacheSize) { + // This order is very important. We must save the cache size + // before we remove the mapping, but unmap before overwriting + // the previous mapping size... + cacheSize = mapped->cacheSize; + unsigned actualPageSize = mapped->cachePageSize(); + ::munmap(mapAddress, size); + size = SharedMemory::totalSize(cacheSize, actualPageSize); + mapAddress = ::mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, file.handle(), 0); + } + } + } + + // We could be here without the mapping established if: + // 1) Process-shared synchronization is not supported, either at compile or run time, + // 2) Unable to open the required file. + // 3) Unable to resize the file to be large enough. + // 4) Establishing the mapping failed. + // 5) The mapping succeeded, but the size was wrong and we were unable to map when + // we tried again. + // 6) The incorrect version of the cache was detected. + // In any of these cases, attempt to fallback to the + // better-supported anonymous private page style of mmap. This memory won't + // be shared, but our code will still work the same. + // NOTE: We never use the on-disk representation independently of the + // shared memory. If we don't get shared memory the disk info is ignored, + // if we do get shared memory we never look at disk again. + bool usingSharedMapping = true; + if (mapAddress == MAP_FAILED) { + kWarning(264) << "Failed to establish shared memory mapping, will fallback" + << "to private memory -- memory usage will increase"; + + mapAddress = ::mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + usingSharedMapping = false; + } + + // Well now we're really hosed. We can still work, but we can't even cache + // data. + if (mapAddress == MAP_FAILED) { + kError(264) << "Unable to allocate shared memory segment for shared data cache" + << cacheName << "of size" << cacheSize; + return; + } + + kDebug(264) << "Attached to cache, determining if it must be initialized"; + + m_mapSize = size; + + // We never actually construct shm, but we assign it the same address as the + // shared memory we just mapped, so effectively shm is now a SharedMemory that + // happens to be located at mapAddress. + shm = reinterpret_cast<SharedMemory *>(mapAddress); + + // If we were first to create this memory map, all data will be 0. + // Therefore if ready == 0 we're not initialized. A fully initialized + // header will have ready == 2. Why? + // Because 0 means "safe to initialize" + // 1 means "in progress of initing" + // 2 means "ready" + uint usecSleepTime = 8; // Start by sleeping for 8 microseconds + while (shm->ready != 2) { + if (usecSleepTime >= (1 << 21)) { + // Didn't acquire within ~8 seconds? Assume an issue exists + kError(264) << "Unable to acquire shared lock, is the cache corrupt?"; + + ::munmap(mapAddress, size); + file.remove(); // Unlink the cache in case it's corrupt. + return; // Fallback to QCache (later) + } + + if (shm->ready.testAndSetAcquire(0, 1)) { + if (!shm->performInitialSetup(usingSharedMapping, cacheSize, pageSize)) { + kError(264) << "Unable to perform initial setup, this system probably " + "does not really support process-shared pthreads, even " + "though it claims otherwise."; + ::munmap(mapAddress, size); + file.remove(); + return; + } + } + else { + usleep(usecSleepTime); // spin + + // Exponential fallback as in Ethernet and similar collision resolution methods + usecSleepTime *= 2; + } + } + + // We are "attached" if we have a valid memory mapping, whether it is + // shared or private. + kDebug(264) << "Cache fully initialized -- attached to memory mapping"; + kDebug(264) << shm->cacheAvail * shm->cachePageSize() << "bytes available out of" + << shm->cacheSize; + m_attached = true; + } + + // Called whenever the cache is apparently corrupt (for instance, a timeout trying to + // lock the cache). In this situation it is safer just to destroy it all and try again. + void recoverCorruptedCache() + { + KSharedDataCache::deleteCache(m_cacheName); + if (m_attached) { + ::munmap(shm, m_mapSize); + m_attached = false; + shm = 0; + m_mapSize = 0; + } + + // Do this even if we weren't previously cached -- it might work now. + mapSharedMemory(); + } + + class CacheLocker + { + mutable Private * d; + + bool cautiousLock() + { + int lockCount = 0; + + // Locking can fail due to a timeout. If it happens too often even though + // we're taking corrective action assume there's some disastrous problem + // and give up. + while (!d->shm->lock()) { + d->recoverCorruptedCache(); + + if (!d->m_attached) { + kWarning(264) << "Lost the connection to shared memory for cache" + << d->m_cacheName; + return false; + } + + if (lockCount++ > 4) { + kError(264) << "There is a very serious problem with the KDE data cache" + << d->m_cacheName << "giving up trying to access cache."; + ::munmap(d->shm, d->m_mapSize); + d->shm = 0; + d->m_attached = false; + return false; + } + } + + return true; + } + + public: + CacheLocker(const Private *_d) : d(const_cast<Private *>(_d)) + { + if (d->m_attached) { + // A separate mutex for the shm lock? What gives? + // The reason is that we have to check to see if the cache + // was made bigger by a different process. If so, we need to + // re-map the cache to accomodate that. In that event, we will + // need to un-map the cache first. + // + // Now imagine what happens if two threads in this same process + // tried to do this concurrently. Since we wouldn't be attached + // to shm we couldn't use d->shm->lock to be safe during that + // critical section (in between unlock and the subsequent + // lock), so one thread could set shm = 0 after unmapping and + // cause the other thread to crash. So we need a separate + // single-process/multiple-thread lock to be super-safe. + QMutexLocker d_locker(&d->m_threadLock); + + if (!cautiousLock()) { + return; + } + + uint testSize = SharedMemory::totalSize(d->shm->cacheSize, d->shm->cachePageSize()); + + // A while loop? Indeed, think what happens if this happens + // twice -- hard to debug race conditions. + while (testSize > d->m_mapSize) { + kDebug(264) << "Someone enlarged the cache on us," + << "attempting to match new configuration."; + + // Linux supports mremap, but it's not portable. So, + // drop the map and (try to) re-establish. + d->shm->unlock(); + + ::munmap(d->shm, d->m_mapSize); + d->m_attached = false; + d->m_mapSize = 0; + d->shm = 0; + + QFile f(d->m_cacheName); + if (!f.open(QFile::ReadWrite)) { + kError(264) << "Unable to re-open cache, unfortunately" + << "the connection had to be dropped for" + << "crash safety -- things will be much" + << "slower now."; + return; + } + + void *newMap = ::mmap(0, testSize, PROT_READ | PROT_WRITE, + MAP_SHARED, f.handle(), 0); + if (newMap == MAP_FAILED) { + kError(264) << "Unopen to re-map the cache into memory" + << "things will be much slower now"; + return; + } + + d->shm = reinterpret_cast<SharedMemory *>(newMap); + d->m_attached = true; + d->m_mapSize = testSize; + + if (!cautiousLock()) { + return; + } + + testSize = SharedMemory::totalSize(d->shm->cacheSize, d->shm->cachePageSize()); + } + } + } + + ~CacheLocker() + { + if (d->m_attached) { + d->shm->unlock(); + } + } + + bool failed() const + { + return d->shm == 0; + } + }; + + SharedMemory *shm; + QString m_cacheName; + QMutex m_threadLock; + bool m_attached; + uint m_mapSize; + uint m_defaultCacheSize; + uint m_expectedItemSize; +}; + +// Must be called while the lock is already held! +void SharedMemory::removeEntry(uint index) +{ + Q_ASSERT(index < indexTableSize()); + Q_ASSERT(cacheAvail <= pageTableSize()); + + PageTableEntry *pageTableEntries = pageTable(); + IndexTableEntry *entriesIndex = indexTable(); + + // Update page table first + pageID firstPage = entriesIndex[index].firstPage; + if (firstPage < 0 || firstPage >= pageTableSize()) { + kError(264) << "Removing" << index << "which is already marked as empty!"; + return; + } + + if (index != static_cast<uint>(pageTableEntries[firstPage].index)) { + kError(264) << "Removing" << index << "will not work as it is assigned" + << "to page" << firstPage << "which is itself assigned to" + << "entry" << pageTableEntries[firstPage].index << "instead!"; + return; + } + + uint entriesToRemove = intCeil(entriesIndex[index].totalItemSize, cachePageSize()); + uint savedCacheSize = cacheAvail; + for (uint i = firstPage; i < pageTableSize() && + (uint) pageTableEntries[i].index == index; ++i) + { + pageTableEntries[i].index = -1; + cacheAvail++; + } + + if ((cacheAvail - savedCacheSize) != entriesToRemove) { + kError(264) << "We somehow did not remove" << entriesToRemove + << "when removing entry" << index << ", instead we removed" + << (cacheAvail - savedCacheSize); + } + + // For debugging +#ifdef NDEBUG + QByteArray str((const char *)page(firstPage)); + str.prepend(" REMOVED: "); + str.prepend(QByteArray::number(index)); + str.prepend("ENTRY "); + + ::memcpy(page(firstPage), str.constData(), str.size() + 1); +#endif + + // Update the index + entriesIndex[index].fileNameHash = 0; + entriesIndex[index].totalItemSize = 0; + entriesIndex[index].useCount = 0; + entriesIndex[index].lastUsedTime = 0; + entriesIndex[index].addTime = 0; + entriesIndex[index].firstPage = -1; +} + +KSharedDataCache::KSharedDataCache(const QString &cacheName, + unsigned defaultCacheSize, + unsigned expectedItemSize) + : d(new Private(cacheName, defaultCacheSize, expectedItemSize)) +{ +} + +KSharedDataCache::~KSharedDataCache() +{ + // Note that there is no other actions required to separate from the + // shared memory segment, simply unmapping is enough. This makes things + // *much* easier so I'd recommend maintaining this ideal. + if (d->m_attached) { + ::munmap(d->shm, d->m_mapSize); + } + + // Do not delete d->shm, it was never constructed, it's just an alias. + d->shm = 0; + + delete d; +} + +bool KSharedDataCache::insert(const QString &key, const QByteArray &data) +{ + Private::CacheLocker lock(d); + if (lock.failed()) { + return false; + } + + QByteArray encodedKey = key.toUtf8(); + uint keyHash = fnvHash32(encodedKey); + uint position = keyHash % d->shm->indexTableSize(); + + // See if we're overwriting an existing entry. + IndexTableEntry *indices = d->shm->indexTable(); + + // In order to avoid the issue of a very long-lived cache having items + // with a use count of 1 near-permanently, we attempt to artifically + // reduce the use count of long-lived items when there is high load on + // the cache. We do this randomly, with a weighting that makes the event + // impossible if load < 0.5, and guaranteed if load >= 0.96. + static double startCullPoint = 0.5l; + static double mustCullPoint = 0.96l; + + // cacheAvail is in pages, cacheSize is in bytes. + double loadFactor = (1.0l * d->shm->cacheAvail * d->shm->cachePageSize() + / d->shm->cacheSize); + bool cullCollisions = false; + + if (KDE_ISUNLIKELY(loadFactor >= mustCullPoint)) { + cullCollisions = true; + } + else { + int tripWireValue = RAND_MAX * (loadFactor - startCullPoint) / (mustCullPoint - startCullPoint); + if (KRandom::random() >= tripWireValue) { + cullCollisions = true; + } + } + + // In case of collisions, use quadratic chaining to attempt to find an + // empty slot. The equation we use is + // position = (hash + (i + i*i) / 2) % size, where i is the probe number. + int probeNumber = 1; + while (indices[position].useCount > 0 && probeNumber < 6) { + // If we are "culling" old entries, see if this one is old and if so + // reduce its use count. If it reduces to zero then eliminate it and + // use its old spot. + + if (cullCollisions && (indices[position].lastUsedTime - ::time(0)) > 60) { + indices[position].useCount >>= 1; + if (indices[position].useCount == 0) { + kDebug(264) << "Overwriting existing old cached entry due to collision."; + d->shm->removeEntry(position); // Remove it first + + break; + } + } + + position = (keyHash + (probeNumber + probeNumber * probeNumber) / 2) + % d->shm->indexTableSize(); + probeNumber++; + } + + if (indices[position].useCount > 0 && indices[position].firstPage >= 0) { + kDebug(264) << "Overwriting existing cached entry due to collision."; + d->shm->removeEntry(position); // Remove it first + } + + // Data will be stored as fileNamefoo\0PNGimagedata..... + // So total size required is the length of the encoded file name + 1 + // for the trailing null, and then the length of the image data. + uint fileNameLength = 1 + encodedKey.length(); + uint requiredSize = fileNameLength + data.size(); + uint pagesNeeded = intCeil(requiredSize, d->shm->cachePageSize()); + uint firstPage = (uint) -1; + + if (pagesNeeded >= d->shm->pageTableSize()) { + kWarning(264) << key << "is too large to be cached."; + return false; + } + + // If the cache has no room, or the fragmentation is too great to find + // the required number of consecutive free pages, take action. + if (pagesNeeded > d->shm->cacheAvail || + (firstPage = d->shm->findEmptyPages(pagesNeeded)) >= d->shm->pageTableSize()) + { + // If we have enough free space just defragment + uint freePagesDesired = 3 * qMax(1u, pagesNeeded / 2); + + if (d->shm->cacheAvail > freePagesDesired) { + // TODO: How the hell long does this actually take on real + // caches? + d->shm->defragment(); + firstPage = d->shm->findEmptyPages(pagesNeeded); + } + else { + // If we already have free pages we don't want to remove a ton + // extra. However we can't rely on the return value of + // removeUsedPages giving us a good location since we're not + // passing in the actual number of pages that we need. + d->shm->removeUsedPages(qMin(2 * freePagesDesired, d->shm->pageTableSize()) + - d->shm->cacheAvail); + firstPage = d->shm->findEmptyPages(pagesNeeded); + } + + if (firstPage >= d->shm->pageTableSize() || + d->shm->cacheAvail < pagesNeeded) + { + kError(264) << "Unable to free up memory for" << key; + return false; + } + } + + // Update page table + PageTableEntry *table = d->shm->pageTable(); + for (uint i = 0; i < pagesNeeded; ++i) { + table[firstPage + i].index = position; + } + + // Update index + indices[position].fileNameHash = keyHash; + indices[position].totalItemSize = requiredSize; + indices[position].useCount = 1; + indices[position].addTime = ::time(0); + indices[position].lastUsedTime = indices[position].addTime; + indices[position].firstPage = firstPage; + + // Update cache + d->shm->cacheAvail -= pagesNeeded; + + // Actually move the data in place + void *dataPage = d->shm->page(firstPage); + + // Cast for byte-sized pointer arithmetic + uchar *startOfPageData = reinterpret_cast<uchar *>(dataPage); + ::memcpy(startOfPageData, encodedKey.constData(), fileNameLength); + ::memcpy(startOfPageData + fileNameLength, data.constData(), data.size()); + + return true; +} + +bool KSharedDataCache::find(const QString &key, QByteArray *destination) const +{ + if (!d->m_attached) { + return false; + } + + Private::CacheLocker lock(d); + if (lock.failed()) { + return false; + } + + // Search in the index for our data, hashed by key; + QByteArray encodedKey = key.toUtf8(); + qint32 entry = d->shm->findNamedEntry(encodedKey); + + if (entry >= 0) { + const IndexTableEntry *header = &d->shm->indexTable()[entry]; + const void *resultPage = d->shm->page(header->firstPage); + + header->useCount++; + header->lastUsedTime = ::time(0); + + // Our item is the key followed immediately by the data, so skip + // past the key. + const char *cacheData = reinterpret_cast<const char *>(resultPage); + cacheData += encodedKey.size(); + cacheData++; // Skip trailing null -- now we're pointing to start of data + + if (destination) { + *destination = QByteArray(cacheData, header->totalItemSize - encodedKey.size() - 1); + } + + return true; + } + + return false; +} + +void KSharedDataCache::clear() +{ + d->shm->clear(); +} + +bool KSharedDataCache::contains(const QString &key) const +{ + Private::CacheLocker lock(d); + if (lock.failed()) { + return false; + } + + return d->shm->findNamedEntry(key.toUtf8()) >= 0; +} + +void KSharedDataCache::deleteCache(const QString &cacheName) +{ + QString cachePath = KGlobal::dirs()->locateLocal("cache", cacheName + QLatin1String(".kcache")); + + // Note that it is important to simply unlink the file, and not truncate it + // smaller first to avoid SIGBUS errors and similar with shared memory + // attached to the underlying inode. + kDebug(264) << "Removing cache at" << cachePath; + QFile::remove(cachePath); +} + +unsigned KSharedDataCache::totalSize() const +{ + Private::CacheLocker lock(d); + if (lock.failed()) { + return 0u; + } + + return d->shm->cacheSize; +} + +unsigned KSharedDataCache::freeSize() const +{ + Private::CacheLocker lock(d); + if (lock.failed()) { + return 0u; + } + + return d->shm->cacheAvail * d->shm->cachePageSize(); +} + +KSharedDataCache::EvictionPolicy KSharedDataCache::evictionPolicy() const +{ + if (d->m_attached) { + int policy(d->shm->evictionPolicy); + return static_cast<EvictionPolicy>(policy); + } + + return NoEvictionPreference; +} + +void KSharedDataCache::setEvictionPolicy(EvictionPolicy newPolicy) +{ + if (d->m_attached) { + d->shm->evictionPolicy.fetchAndStoreRelease(static_cast<int>(newPolicy)); + } +} + +unsigned KSharedDataCache::timestamp() const +{ + if (d->m_attached) { + return static_cast<unsigned>(d->shm->cacheTimestamp.fetchAndAddAcquire(0)); + } + + return 0; +} + +void KSharedDataCache::setTimestamp(unsigned newTimestamp) +{ + if (d->m_attached) { + d->shm->cacheTimestamp.fetchAndStoreRelease(static_cast<int>(newTimestamp)); + } +} diff --git a/x11/kdelibs4/hacks.mk b/x11/kdelibs4/hacks.mk new file mode 100644 index 00000000000..ea672994fdd --- /dev/null +++ b/x11/kdelibs4/hacks.mk @@ -0,0 +1,10 @@ +# $NetBSD: hacks.mk,v 1.1 2012/03/19 11:28:48 markd Exp $ + +.if ${OPSYS} == "NetBSD" +post-configure: + cp ${FILESDIR}/kshareddatacache.cpp ${WRKSRC}/kdecore/util/kshareddatacache.cpp +.endif + +# fix up buildlinks failure to build link tree correctly +post-wrapper: + ln -s netbsd-g++ ${BUILDLINK_DIR}/qt4/mkspecs/default diff --git a/x11/kdelibs4/patches/patch-aa b/x11/kdelibs4/patches/patch-aa index b35faf055ce..4e41aae5cad 100644 --- a/x11/kdelibs4/patches/patch-aa +++ b/x11/kdelibs4/patches/patch-aa @@ -1,8 +1,8 @@ -$NetBSD: patch-aa,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ +$NetBSD: patch-aa,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- kded/CMakeLists.txt.orig 2008-12-11 05:12:28.000000000 +1300 +--- kded/CMakeLists.txt.orig 2011-04-01 13:55:50.000000000 +0000 +++ kded/CMakeLists.txt -@@ -69,7 +69,7 @@ install(TARGETS kdontchangethehostname D +@@ -74,7 +74,7 @@ install(TARGETS kbuildsycoca4 ${INSTALL_ if (WIN32) install( FILES applications.menu DESTINATION ${SHARE_INSTALL_PREFIX}/xdg/menus ) else (WIN32) diff --git a/x11/kdelibs4/patches/patch-ab b/x11/kdelibs4/patches/patch-ab index ee00820d295..c91d32e499e 100644 --- a/x11/kdelibs4/patches/patch-ab +++ b/x11/kdelibs4/patches/patch-ab @@ -1,8 +1,8 @@ -$NetBSD: patch-ab,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ +$NetBSD: patch-ab,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- kinit/autostart.cpp.orig 2008-02-28 00:58:51.000000000 +1300 +--- kinit/autostart.cpp.orig 2011-04-01 13:55:51.000000000 +0000 +++ kinit/autostart.cpp -@@ -40,7 +40,7 @@ AutoStart::AutoStart() +@@ -39,7 +39,7 @@ AutoStart::AutoStart() m_startList = new AutoStartList; KGlobal::dirs()->addResourceType("xdgconf-autostart", NULL, "autostart/"); // xdg ones KGlobal::dirs()->addResourceType("autostart", "xdgconf-autostart", "/"); // merge them diff --git a/x11/kdelibs4/patches/patch-ac b/x11/kdelibs4/patches/patch-ac index 8481edcffe4..5d8f44bbcc5 100644 --- a/x11/kdelibs4/patches/patch-ac +++ b/x11/kdelibs4/patches/patch-ac @@ -1,6 +1,6 @@ -$NetBSD: patch-ac,v 1.3 2010/04/10 02:45:05 markd Exp $ +$NetBSD: patch-ac,v 1.4 2012/03/19 11:28:49 markd Exp $ ---- kio/kssl/kopenssl.cpp.orig 2009-11-13 10:59:08.000000000 +0000 +--- kio/kssl/kopenssl.cpp.orig 2011-04-01 13:55:51.000000000 +0000 +++ kio/kssl/kopenssl.cpp @@ -236,7 +236,7 @@ void KOpenSSLProxy::destroy() { delete x; diff --git a/x11/kdelibs4/patches/patch-ad b/x11/kdelibs4/patches/patch-ad index 7960d9eb3a5..e41db51cbee 100644 --- a/x11/kdelibs4/patches/patch-ad +++ b/x11/kdelibs4/patches/patch-ad @@ -1,8 +1,8 @@ -$NetBSD: patch-ad,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ +$NetBSD: patch-ad,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- kde3support/kdeui/k3sconfig.cpp.orig 2007-10-08 20:41:19.000000000 +1300 +--- kde3support/kdeui/k3sconfig.cpp.orig 2011-04-01 13:55:50.000000000 +0000 +++ kde3support/kdeui/k3sconfig.cpp -@@ -464,6 +464,8 @@ void K3SpellConfig::getAvailDictsIspell +@@ -470,6 +470,8 @@ void K3SpellConfig::getAvailDictsIspell // dictionary path QFileInfo dir ("/usr/lib/ispell"); if (!dir.exists() || !dir.isDir()) @@ -11,7 +11,7 @@ $NetBSD: patch-ad,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ dir.setFile ("/usr/local/lib/ispell"); if (!dir.exists() || !dir.isDir()) dir.setFile ("/usr/local/share/ispell"); -@@ -536,6 +538,8 @@ void K3SpellConfig::getAvailDictsAspell +@@ -542,6 +544,8 @@ void K3SpellConfig::getAvailDictsAspell if (!dir.exists() || !dir.isDir()) dir.setFile ("/usr/lib" KDELIBSUFF "/aspell-0.60"); if (!dir.exists() || !dir.isDir()) @@ -20,7 +20,7 @@ $NetBSD: patch-ad,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ dir.setFile ("/usr/local/lib" KDELIBSUFF "/aspell"); if (!dir.exists() || !dir.isDir()) dir.setFile ("/usr/share/aspell"); -@@ -620,6 +624,8 @@ K3SpellConfig::fillDicts( QComboBox* box +@@ -683,6 +687,8 @@ K3SpellConfig::fillDicts( QComboBox* box // dictionary path QFileInfo dir ("/usr/lib/ispell"); if (!dir.exists() || !dir.isDir()) @@ -29,7 +29,7 @@ $NetBSD: patch-ad,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ dir.setFile ("/usr/local/lib/ispell"); if (!dir.exists() || !dir.isDir()) dir.setFile ("/usr/local/share/ispell"); -@@ -698,6 +704,8 @@ K3SpellConfig::fillDicts( QComboBox* box +@@ -760,6 +766,8 @@ K3SpellConfig::fillDicts( QComboBox* box if (!dir.exists() || !dir.isDir()) dir.setFile ("/usr/lib" KDELIBSUFF "/aspell-0.60"); if (!dir.exists() || !dir.isDir()) diff --git a/x11/kdelibs4/patches/patch-ag b/x11/kdelibs4/patches/patch-ag index f6b1f60ffe5..7ba0f7bd568 100644 --- a/x11/kdelibs4/patches/patch-ag +++ b/x11/kdelibs4/patches/patch-ag @@ -1,8 +1,8 @@ -$NetBSD: patch-ag,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ +$NetBSD: patch-ag,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- security/crypto/crypto.cpp.orig 2008-05-01 22:16:43.000000000 +1200 +--- security/crypto/crypto.cpp.orig 2011-04-01 13:55:51.000000000 +0000 +++ security/crypto/crypto.cpp -@@ -2247,7 +2247,11 @@ bool KCryptoConfig::loadCiphers() { +@@ -2303,7 +2303,11 @@ bool KCryptoConfig::loadCiphers() { unsigned int i; SSL_CTX *ctx; SSL *ssl; diff --git a/x11/kdelibs4/patches/patch-ah b/x11/kdelibs4/patches/patch-ah index c31fbdc6277..0311b91799d 100644 --- a/x11/kdelibs4/patches/patch-ah +++ b/x11/kdelibs4/patches/patch-ah @@ -1,8 +1,8 @@ -$NetBSD: patch-ah,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ +$NetBSD: patch-ah,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- kpty/kptydevice.cpp.orig 2008-12-04 21:36:01.000000000 +1300 +--- kpty/kptydevice.cpp.orig 2011-04-01 13:55:51.000000000 +0000 +++ kpty/kptydevice.cpp -@@ -42,7 +42,7 @@ +@@ -44,7 +44,7 @@ # include <sys/time.h> #endif diff --git a/x11/kdelibs4/patches/patch-aj b/x11/kdelibs4/patches/patch-aj index 02acbea2fcb..712164c0c63 100644 --- a/x11/kdelibs4/patches/patch-aj +++ b/x11/kdelibs4/patches/patch-aj @@ -1,8 +1,8 @@ -$NetBSD: patch-aj,v 1.1.1.1 2009/10/02 19:19:00 markd Exp $ +$NetBSD: patch-aj,v 1.2 2012/03/19 11:28:49 markd Exp $ From https://bugs.kde.org/show_bug.cgi?id=193215 ---- kio/kssl/ksmimecrypto.cpp.orig 2008-05-21 23:08:14.000000000 +1200 +--- kio/kssl/ksmimecrypto.cpp.orig 2011-04-01 13:55:51.000000000 +0000 +++ kio/kssl/ksmimecrypto.cpp @@ -86,7 +86,7 @@ KSMIMECryptoPrivate::KSMIMECryptoPrivate diff --git a/x11/kdelibs4/patches/patch-ak b/x11/kdelibs4/patches/patch-ak index 7563e01a641..08c3dc6e59f 100644 --- a/x11/kdelibs4/patches/patch-ak +++ b/x11/kdelibs4/patches/patch-ak @@ -1,8 +1,8 @@ -$NetBSD: patch-ak,v 1.3 2010/04/11 13:55:49 markd Exp $ +$NetBSD: patch-ak,v 1.4 2012/03/19 11:28:49 markd Exp $ ---- kdecore/auth/ConfigureChecks.cmake.orig 2010-03-26 17:24:30.000000000 +0000 +--- kdecore/auth/ConfigureChecks.cmake.orig 2011-04-01 13:55:50.000000000 +0000 +++ kdecore/auth/ConfigureChecks.cmake -@@ -198,7 +198,7 @@ if(KDE4_AUTH_HELPER_BACKEND_NAME STREQUA +@@ -202,7 +202,7 @@ if(KDE4_AUTH_HELPER_BACKEND_NAME STREQUA # Install some files as well install( FILES auth/backends/dbus/org.kde.auth.conf diff --git a/x11/kdelibs4/patches/patch-al b/x11/kdelibs4/patches/patch-al index 25f84d2779a..9e339770121 100644 --- a/x11/kdelibs4/patches/patch-al +++ b/x11/kdelibs4/patches/patch-al @@ -1,8 +1,8 @@ -$NetBSD: patch-al,v 1.1 2010/04/11 13:55:49 markd Exp $ +$NetBSD: patch-al,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- cmake/modules/KDE4Macros.cmake.orig 2010-03-26 17:24:24.000000000 +0000 +--- cmake/modules/KDE4Macros.cmake.orig 2011-04-01 13:55:50.000000000 +0000 +++ cmake/modules/KDE4Macros.cmake -@@ -1254,7 +1254,7 @@ function(KDE4_INSTALL_AUTH_HELPER_FILES +@@ -1293,7 +1293,7 @@ function(KDE4_INSTALL_AUTH_HELPER_FILES configure_file(${_stubFilesDir}/dbus_policy.stub ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.conf) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.conf diff --git a/x11/kdelibs4/patches/patch-am b/x11/kdelibs4/patches/patch-am index 1da30ed0a71..cee7ae76d8a 100644 --- a/x11/kdelibs4/patches/patch-am +++ b/x11/kdelibs4/patches/patch-am @@ -1,6 +1,6 @@ -$NetBSD: patch-am,v 1.1 2010/06/06 22:44:02 markd Exp $ +$NetBSD: patch-am,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- kdecore/sycoca/ksycoca.cpp.orig 2010-01-19 23:15:27.000000000 +0000 +--- kdecore/sycoca/ksycoca.cpp.orig 2011-04-01 13:56:18.000000000 +0000 +++ kdecore/sycoca/ksycoca.cpp @@ -62,7 +62,7 @@ */ diff --git a/x11/kdelibs4/patches/patch-an b/x11/kdelibs4/patches/patch-an deleted file mode 100644 index 05a3166dfe2..00000000000 --- a/x11/kdelibs4/patches/patch-an +++ /dev/null @@ -1,16 +0,0 @@ -$NetBSD: patch-an,v 1.2 2010/10/26 11:46:58 markd Exp $ - ---- kdecore/util/kshareddatacache.cpp.orig 2010-09-30 21:19:05.000000000 +0000 -+++ kdecore/util/kshareddatacache.cpp -@@ -307,7 +307,10 @@ struct SharedMemory - // Initialize attributes, enable process-shared primitives, and setup - // the mutex. - if (pthread_mutexattr_init(&mutexAttr) == 0) { -- if (pthread_mutexattr_setpshared(&mutexAttr, PTHREAD_PROCESS_SHARED) != 0 || -+ if ( -+#ifdef _POSIX_THREAD_PROCESS_SHARED -+ pthread_mutexattr_setpshared(&mutexAttr, PTHREAD_PROCESS_SHARED) != 0 || -+#endif - pthread_mutex_init(&lockMutex, &mutexAttr) != 0) - { - pthread_mutexattr_destroy(&mutexAttr); diff --git a/x11/kdelibs4/patches/patch-cmake_modules_FindTaglib.cmake b/x11/kdelibs4/patches/patch-cmake_modules_FindTaglib.cmake index cef64c6110e..0288246aad8 100644 --- a/x11/kdelibs4/patches/patch-cmake_modules_FindTaglib.cmake +++ b/x11/kdelibs4/patches/patch-cmake_modules_FindTaglib.cmake @@ -1,13 +1,29 @@ -$NetBSD: patch-cmake_modules_FindTaglib.cmake,v 1.1 2011/06/04 16:31:52 abs Exp $ +$NetBSD: patch-cmake_modules_FindTaglib.cmake,v 1.2 2012/03/19 11:28:49 markd Exp $ ---- cmake/modules/FindTaglib.cmake.orig 2008-07-22 00:05:18.000000000 +0000 +Change the string comparision operator on the TAGLIB_VERSION to a +version comparision operator (since versions are being compared.) + +--- cmake/modules/FindTaglib.cmake.orig 2011-07-27 18:34:31.000000000 +0000 +++ cmake/modules/FindTaglib.cmake -@@ -11,7 +11,7 @@ - # For details see the accompanying COPYING-CMAKE-SCRIPTS file. +@@ -29,10 +29,10 @@ if(TAGLIBCONFIG_EXECUTABLE) + + exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_VERSION) + +- if(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}") ++ if(TAGLIB_VERSION VERSION_LESS "${TAGLIB_MIN_VERSION}") + message(STATUS "TagLib version not found: version searched :${TAGLIB_MIN_VERSION}, found ${TAGLIB_VERSION}") + set(TAGLIB_FOUND FALSE) +- else(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}") ++ else(TAGLIB_VERSION VERSION_LESS "${TAGLIB_MIN_VERSION}") + + exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_LIBRARIES) - if(NOT TAGLIB_MIN_VERSION) -- set(TAGLIB_MIN_VERSION "1.4") -+ set(TAGLIB_MIN_VERSION "1.10") - endif(NOT TAGLIB_MIN_VERSION) +@@ -43,7 +43,7 @@ if(TAGLIBCONFIG_EXECUTABLE) + message(STATUS "Found taglib: ${TAGLIB_LIBRARIES}") + endif(TAGLIB_LIBRARIES AND TAGLIB_CFLAGS) + string(REGEX REPLACE " *-I" ";" TAGLIB_INCLUDES "${TAGLIB_CFLAGS}") +- endif(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}") ++ endif(TAGLIB_VERSION VERSION_LESS "${TAGLIB_MIN_VERSION}") + mark_as_advanced(TAGLIB_CFLAGS TAGLIB_LIBRARIES TAGLIB_INCLUDES) - if(NOT WIN32) + else(TAGLIBCONFIG_EXECUTABLE) diff --git a/x11/kdelibs4/patches/patch-kdecore_localization_klocale_kde.cpp b/x11/kdelibs4/patches/patch-kdecore_localization_klocale_kde.cpp new file mode 100644 index 00000000000..5c8fbe56e88 --- /dev/null +++ b/x11/kdelibs4/patches/patch-kdecore_localization_klocale_kde.cpp @@ -0,0 +1,13 @@ +$NetBSD: patch-kdecore_localization_klocale_kde.cpp,v 1.1 2012/03/19 11:28:49 markd Exp $ + +--- kdecore/localization/klocale_kde.cpp.orig 2011-04-01 13:55:50.000000000 +0000 ++++ kdecore/localization/klocale_kde.cpp +@@ -2516,7 +2516,7 @@ QByteArray KLocalePrivate::systemCodeset + + codeset = nl_langinfo(CODESET); + +- if ((codeset == "ANSI_X3.4-1968") || (codeset == "US-ASCII")) { ++ if ((codeset == "ANSI_X3.4-1968") || (codeset == "US-ASCII") || (codeset == "646")) { + // means ascii, "C"; QTextCodec doesn't know, so avoid warning + codeset = "ISO-8859-1"; + } diff --git a/x11/kdelibs4/patches/patch-kdecore_util_kshareddatacache_p.h b/x11/kdelibs4/patches/patch-kdecore_util_kshareddatacache_p.h new file mode 100644 index 00000000000..a73b3917be8 --- /dev/null +++ b/x11/kdelibs4/patches/patch-kdecore_util_kshareddatacache_p.h @@ -0,0 +1,14 @@ +$NetBSD: patch-kdecore_util_kshareddatacache_p.h,v 1.1 2012/03/19 11:28:49 markd Exp $ + +--- kdecore/util/kshareddatacache_p.h.orig 2011-04-01 13:56:18.000000000 +0000 ++++ kdecore/util/kshareddatacache_p.h +@@ -311,7 +311,9 @@ static SharedLockId findBestSharedLock() + sem_t tempSemaphore; + QSharedPointer<KSDCLock> tempLock(0); + if (timeoutsSupported) { ++#ifdef KSDC_TIMEOUTS_SUPPORTED + tempLock = QSharedPointer<KSDCLock>(new semaphoreTimedLock(tempSemaphore)); ++#endif + } + else { + tempLock = QSharedPointer<KSDCLock>(new semaphoreLock(tempSemaphore)); diff --git a/x11/kdelibs4/patches/patch-kdeui_colors_kcolordialog.cpp b/x11/kdelibs4/patches/patch-kdeui_colors_kcolordialog.cpp deleted file mode 100644 index 152fb685496..00000000000 --- a/x11/kdelibs4/patches/patch-kdeui_colors_kcolordialog.cpp +++ /dev/null @@ -1,15 +0,0 @@ -$NetBSD: patch-kdeui_colors_kcolordialog.cpp,v 1.1 2011/09/27 10:48:20 markd Exp $ - -Find rgb.txt in pkgsrc or native - ---- kdeui/colors/kcolordialog.cpp.orig 2010-05-27 17:26:18.000000000 +0000 -+++ kdeui/colors/kcolordialog.cpp -@@ -627,6 +627,8 @@ static const char * const *namedColorFil - #ifdef X11_RGBFILE - X11_RGBFILE, 0, - #endif -+ "@X11BASE@/share/X11/rgb.txt", 0, -+ "@X11BASE@/lib/X11/rgb.txt", 0, - "/usr/share/X11/rgb.txt", 0, - "/usr/X11R6/lib/X11/rgb.txt", 0, - "/usr/openwin/lib/X11/rgb.txt", 0, // for Solaris. diff --git a/x11/kdelibs4/patches/patch-khtml_khtml_part.cpp b/x11/kdelibs4/patches/patch-khtml_khtml_part.cpp deleted file mode 100644 index 51189ee5771..00000000000 --- a/x11/kdelibs4/patches/patch-khtml_khtml_part.cpp +++ /dev/null @@ -1,18 +0,0 @@ -$NetBSD: patch-khtml_khtml_part.cpp,v 1.1 2011/04/11 10:11:42 markd Exp $ - -Fix for CVE-2011-1168. - ---- khtml/khtml_part.cpp.orig 2010-08-27 08:09:16.000000000 +0000 -+++ khtml/khtml_part.cpp -@@ -1803,7 +1803,10 @@ void KHTMLPart::htmlError( int errorCode - stream >> errorName >> techName >> description >> causes >> solutions; - - QString url, protocol, datetime; -- url = Qt::escape( reqUrl.prettyUrl() ); -+ -+ // This is somewhat confusing, but we have to escape the externally- -+ // controlled URL twice: once for i18n, and once for HTML. -+ url = Qt::escape( Qt::escape( reqUrl.prettyUrl() ) ); - protocol = reqUrl.protocol(); - datetime = KGlobal::locale()->formatDateTime( QDateTime::currentDateTime(), - KLocale::LongDate ); diff --git a/x11/kdelibs4/patches/patch-kio_kio_scheduler.cpp b/x11/kdelibs4/patches/patch-kio_kio_scheduler.cpp deleted file mode 100644 index e55b5ea2d26..00000000000 --- a/x11/kdelibs4/patches/patch-kio_kio_scheduler.cpp +++ /dev/null @@ -1,41 +0,0 @@ -$NetBSD: patch-kio_kio_scheduler.cpp,v 1.1 2012/01/18 22:03:24 abs Exp $ - ---- kio/kio/scheduler.cpp.orig 2010-07-07 17:08:31.000000000 +0000 -+++ kio/kio/scheduler.cpp -@@ -865,6 +865,36 @@ void Scheduler::emitReparseSlaveConfigur - emit self()->reparseSlaveConfiguration( QString() ); - } - -+void Scheduler::slotSlaveDied(Slave* slave) -+{ -+ schedulerPrivate->slotSlaveDied(slave); -+} -+ -+void Scheduler::slotSlaveStatus(pid_t pid, const QByteArray& protocol, const QString& host, bool connected) -+{ -+ schedulerPrivate->slotSlaveStatus(pid, protocol, host, connected); -+} -+ -+void Scheduler::slotReparseSlaveConfiguration(const QString& prot) -+{ -+ schedulerPrivate->slotReparseSlaveConfiguration(prot); -+} -+ -+void Scheduler::slotSlaveConnected() -+{ -+ schedulerPrivate->slotSlaveConnected(); -+} -+ -+void Scheduler::slotSlaveError(int error, const QString& errorMsg) -+{ -+ schedulerPrivate->slotSlaveError(error, errorMsg); -+} -+ -+void Scheduler::slotUnregisterWindow(QObject* obj) -+{ -+ schedulerPrivate->slotUnregisterWindow(obj); -+} -+ - - void SchedulerPrivate::slotReparseSlaveConfiguration(const QString &proto) - { diff --git a/x11/kdelibs4/patches/patch-kio_kio_scheduler.h b/x11/kdelibs4/patches/patch-kio_kio_scheduler.h deleted file mode 100644 index eef97228ce7..00000000000 --- a/x11/kdelibs4/patches/patch-kio_kio_scheduler.h +++ /dev/null @@ -1,38 +0,0 @@ -$NetBSD: patch-kio_kio_scheduler.h,v 1.1 2012/01/18 22:03:24 abs Exp $ - ---- kio/kio/scheduler.h.orig 2010-02-03 08:50:40.000000000 +0000 -+++ kio/kio/scheduler.h -@@ -29,6 +29,8 @@ - #include <QtGui/QWidgetList> - #include <sys/types.h> // pid_t - -+class QDBusMessage; -+ - namespace KIO { - - class Slave; -@@ -278,16 +280,17 @@ namespace KIO { - - static Scheduler *self(); - -- Q_PRIVATE_SLOT(schedulerPrivate, void slotSlaveDied(KIO::Slave *slave)) -- Q_PRIVATE_SLOT(schedulerPrivate, void slotSlaveStatus(pid_t pid, const QByteArray &protocol, -- const QString &host, bool connected)) -+ private Q_SLOTS: -+ void slotSlaveDied(KIO::Slave *slave); -+ void slotSlaveStatus(pid_t pid, const QByteArray &protocol, -+ const QString &host, bool connected); - - // connected to D-Bus signal: -- Q_PRIVATE_SLOT(schedulerPrivate, void slotReparseSlaveConfiguration(const QString &)) -+ void slotReparseSlaveConfiguration(const QString &); -+ void slotSlaveConnected(); -+ void slotSlaveError(int error, const QString &errorMsg); -+ void slotUnregisterWindow(QObject *); - -- Q_PRIVATE_SLOT(schedulerPrivate, void slotSlaveConnected()) -- Q_PRIVATE_SLOT(schedulerPrivate, void slotSlaveError(int error, const QString &errorMsg)) -- Q_PRIVATE_SLOT(schedulerPrivate, void slotUnregisterWindow(QObject *)) - private: - friend class SchedulerPrivate; - SchedulerPrivate *const d; diff --git a/x11/kdelibs4/patches/patch-kio_kssl_ksslcertificatebox.cpp b/x11/kdelibs4/patches/patch-kio_kssl_ksslcertificatebox.cpp deleted file mode 100644 index 0721c4cfcea..00000000000 --- a/x11/kdelibs4/patches/patch-kio_kssl_ksslcertificatebox.cpp +++ /dev/null @@ -1,17 +0,0 @@ -$NetBSD: patch-kio_kssl_ksslcertificatebox.cpp,v 1.1 2011/11/20 02:08:10 markd Exp $ - -don't interpret html tags. KDE Security Advisory 20111003-1 - ---- kio/kssl/ksslcertificatebox.cpp.orig 2008-05-21 11:08:14.000000000 +0000 -+++ kio/kssl/ksslcertificatebox.cpp -@@ -36,6 +36,10 @@ KSslCertificateBox::KSslCertificateBox(Q - d(new KSslCertificateBoxPrivate()) - { - d->ui.setupUi(this); -+ // No fooling us with html tags -+ Q_FOREACH(QLabel* label, qFindChildren<QLabel *>(this)) { -+ label->setTextFormat(Qt::PlainText); -+ } - } - - diff --git a/x11/kdelibs4/patches/patch-kioslave_http_http.cpp b/x11/kdelibs4/patches/patch-kioslave_http_http.cpp deleted file mode 100644 index c792bc9f50e..00000000000 --- a/x11/kdelibs4/patches/patch-kioslave_http_http.cpp +++ /dev/null @@ -1,64 +0,0 @@ -$NetBSD: patch-kioslave_http_http.cpp,v 1.1 2011/11/20 02:08:10 markd Exp $ - -don't interpret html tags. KDE Security Advisory 20111003-1 - -commit 90607b28d21fefc43657ca08b889bdb174c31fab -Author: David Faure <faure@kde.org> -Date: Wed Sep 28 17:26:47 2011 +0200 - - Use HTML escaping on texts that come from the website - - Interestingly enough, this is yet another use case for moving Qt::escape - to QtCore, which I made a merge request for. - (cherry picked from commit 86622e4db182f4b914169f72ebd1e66d708e9f87) - -diff --git a/kioslave/http/http.cpp b/kioslave/http/http.cpp -index 33f4cb1..6447a02 100644 ---- kioslave/http/http.cpp -+++ kioslave/http/http.cpp -@@ -99,6 +99,27 @@ - //authentication handlers - #include "httpauthentication.cpp" - -+// KDE5 TODO (QT5) : use QString::htmlEscape or whatever https://qt.gitorious.org/qt/qtbase/merge_requests/56 -+// ends up with. -+static QString htmlEscape(const QString &plain) -+{ -+ QString rich; -+ rich.reserve(int(plain.length() * 1.1)); -+ for (int i = 0; i < plain.length(); ++i) { -+ if (plain.at(i) == QLatin1Char('<')) -+ rich += QLatin1String("<"); -+ else if (plain.at(i) == QLatin1Char('>')) -+ rich += QLatin1String(">"); -+ else if (plain.at(i) == QLatin1Char('&')) -+ rich += QLatin1String("&"); -+ else if (plain.at(i) == QLatin1Char('"')) -+ rich += QLatin1String("""); -+ else -+ rich += plain.at(i); -+ } -+ rich.squeeze(); -+ return rich; -+} - - // see filenameFromUrl(): a sha1 hash is 160 bits - static const int s_hashedUrlBits = 160; // this number should always be divisible by eight -@@ -3410,7 +3431,7 @@ endParsing: - authinfo.url = reqUrl; - authinfo.keepPassword = true; - authinfo.comment = i18n("<b>%1</b> at <b>%2</b>", -- authinfo.realmValue, authinfo.url.host()); -+ htmlEscape(authinfo.realmValue), authinfo.url.host()); - - if (!openPasswordDialog(authinfo, errorMsg)) { - if (sendErrorPageNotification()) { -@@ -5122,7 +5143,7 @@ void HTTPProtocol::proxyAuthenticationForSocket(const QNetworkProxy &proxy, QAut - "to access any sites."); - info.keepPassword = true; - info.commentLabel = i18n("Proxy:"); -- info.comment = i18n("<b>%1</b> at <b>%2</b>", info.realmValue, m_request.proxyUrl.host()); -+ info.comment = i18n("<b>%1</b> at <b>%2</b>", htmlEscape(info.realmValue), m_request.proxyUrl.host()); - const bool dataEntered = openPasswordDialog(info, i18n("Proxy Authentication Failed.")); - if (!dataEntered) { - kDebug(7103) << "looks like the user canceled proxy authentication."; diff --git a/x11/kdelibs4/patches/patch-kjs_JSImmediate.h b/x11/kdelibs4/patches/patch-kjs_JSImmediate.h deleted file mode 100644 index abae574eb75..00000000000 --- a/x11/kdelibs4/patches/patch-kjs_JSImmediate.h +++ /dev/null @@ -1,11 +0,0 @@ ---- kjs/JSImmediate.h.orig 2010-05-16 22:04:04.000000000 +0200 -+++ kjs/JSImmediate.h 2011-10-24 17:26:02.608429864 +0200 -@@ -33,7 +33,7 @@ - #endif - #include <stdlib.h> - --#if PLATFORM(SOLARIS_OS) -+#if PLATFORM(SOLARIS_OS) && COMPILER(GCC) && (__GNUC__ <= 4 && __GNUC_MINOR__ < 6) - static inline int signbit(double x) - { - return (x<0.0) ? 1 : 0; diff --git a/x11/kdelibs4/patches/patch-kjs_lookup.h b/x11/kdelibs4/patches/patch-kjs_lookup.h deleted file mode 100644 index d586847bfb0..00000000000 --- a/x11/kdelibs4/patches/patch-kjs_lookup.h +++ /dev/null @@ -1,12 +0,0 @@ -$NetBSD: patch-kjs_lookup.h,v 1.1 2012/01/23 08:14:02 joerg Exp $ - ---- kjs/lookup.h.orig 2012-01-22 20:17:34.000000000 +0000 -+++ kjs/lookup.h -@@ -23,6 +23,7 @@ - #ifndef _KJSLOOKUP_H_ - #define _KJSLOOKUP_H_ - -+#include "JSVariableObject.h" - #include "interpreter.h" - #include "identifier.h" - #include "object.h" diff --git a/x11/kdelibs4/patches/patch-kjs_wtf_RefPtr.h b/x11/kdelibs4/patches/patch-kjs_wtf_RefPtr.h deleted file mode 100644 index 856ab0e5d3c..00000000000 --- a/x11/kdelibs4/patches/patch-kjs_wtf_RefPtr.h +++ /dev/null @@ -1,12 +0,0 @@ -$NetBSD: patch-kjs_wtf_RefPtr.h,v 1.1 2012/01/23 08:14:02 joerg Exp $ - ---- kjs/wtf/RefPtr.h.orig 2012-01-22 20:08:54.000000000 +0000 -+++ kjs/wtf/RefPtr.h -@@ -24,6 +24,7 @@ - - #include <algorithm> - #include "AlwaysInline.h" -+#include "PassRefPtr.h" - - namespace WTF { - |