diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e6085f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/kde-workspace-4.11.19.tar.xz diff --git a/.kde-workspace.metadata b/.kde-workspace.metadata new file mode 100644 index 0000000..772fee6 --- /dev/null +++ b/.kde-workspace.metadata @@ -0,0 +1 @@ +2ab5b46aa7189efd6371461dd3f0bc2513fa560c SOURCES/kde-workspace-4.11.19.tar.xz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/fedora-plasma-cache.sh b/SOURCES/fedora-plasma-cache.sh new file mode 100755 index 0000000..5428fab --- /dev/null +++ b/SOURCES/fedora-plasma-cache.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ "`kreadconfig --file fedora-plasma-cacherc --group General --key FirstRun --default true`" = "true" ]; then + rm -fv "`kde4-config --path cache`/"*.kcache + rm -fv "`kde4-config --path cache`/"plasma-svgelements-* + #rm -fv ${XDG_CONFIG_HOME-${HOME}/.config}/Trolltech.conf + kwriteconfig --file fedora-plasma-cacherc --group General --key FirstRun --type bool false +fi diff --git a/SOURCES/kde-workspace-4.10-bz#921742.patch b/SOURCES/kde-workspace-4.10-bz#921742.patch new file mode 100644 index 0000000..0433650 --- /dev/null +++ b/SOURCES/kde-workspace-4.10-bz#921742.patch @@ -0,0 +1,118 @@ +diff --git a/powerdevil/daemon/powerdevilactionpool.cpp b/powerdevil/daemon/powerdevilactionpool.cpp +index 970aa18..6ca0d57 100644 +--- a/powerdevil/daemon/powerdevilactionpool.cpp ++++ b/powerdevil/daemon/powerdevilactionpool.cpp +@@ -82,6 +82,7 @@ void ActionPool::clearCache() + i.value()->deleteLater(); + i = m_actionPool.erase(i); + } ++ m_initErrors.clear(); + } + + void ActionPool::init(PowerDevil::Core *parent) +@@ -99,6 +100,7 @@ void ActionPool::init(PowerDevil::Core *parent) + if (!retaction) { + // Troubles... + kWarning() << "failed to load" << offer->desktopEntryName(); ++ m_initErrors.insert(actionId, LoadFailed); + continue; + } + +@@ -106,6 +108,7 @@ void ActionPool::init(PowerDevil::Core *parent) + if (!retaction->isSupported()) { + // Skip that + retaction->deleteLater(); ++ m_initErrors.insert(actionId, NotSupported); + continue; + } + +@@ -169,7 +172,13 @@ Action* ActionPool::loadAction(const QString& actionId, const KConfigGroup& grou + + return retaction; + } else { +- // Hmm... troubles in configuration. Np, let's just return 0 and let the core handle this ++ // may be a misconfiguration. ++ // Set the error code and return 0 and let the caller handle this as it sees fit ++ if (m_initErrors.contains(actionId)) { ++ m_error = m_initErrors[actionId]; ++ } else { // no error recorded during initialisation, therefore action does not exist ++ m_error = NoAction; ++ } + return 0; + } + } +@@ -183,4 +192,9 @@ void ActionPool::unloadAllActiveActions() + m_activeActions.clear(); + } + ++ActionPool::ErrorCode ActionPool::error() ++{ ++ return m_error; ++} ++ + } +diff --git a/powerdevil/daemon/powerdevilactionpool.h b/powerdevil/daemon/powerdevilactionpool.h +index ca436ff..816449e 100644 +--- a/powerdevil/daemon/powerdevilactionpool.h ++++ b/powerdevil/daemon/powerdevilactionpool.h +@@ -36,6 +36,11 @@ class Action; + class KDE_EXPORT ActionPool + { + public: ++ enum ErrorCode { ++ NoAction, ++ LoadFailed, ++ NotSupported ++ }; + static ActionPool *instance(); + + virtual ~ActionPool(); +@@ -48,11 +53,15 @@ public: + + void clearCache(); + ++ ErrorCode error(); ++ + private: + ActionPool(); + + QHash< QString, Action* > m_actionPool; + QStringList m_activeActions; ++ ErrorCode m_error; ++ QHash< QString, ErrorCode > m_initErrors; + }; + + } +diff --git a/powerdevil/daemon/powerdevilcore.cpp b/powerdevil/daemon/powerdevilcore.cpp +index d096d74..c35b29d 100644 +--- a/powerdevil/daemon/powerdevilcore.cpp ++++ b/powerdevil/daemon/powerdevilcore.cpp +@@ -357,11 +357,23 @@ void Core::loadProfile(bool force) + if (action) { + action->onProfileLoad(); + } else { +- // Ouch, error. But let's just warn and move on anyway +- //TODO Maybe Remove from the configuration if unsupported +- kWarning() << "The profile " << profileId << "tried to activate" +- << actionName << "a non existent action. This is usually due to an installation problem" +- " or to a configuration problem. or simlpy the action is not supported"; ++ switch (ActionPool::instance()->error()) { ++ case ActionPool::NotSupported: ++ kWarning().nospace() << "Attempted to load unsupported action " << actionName ++ << ", skipping"; ++ break; ++ case ActionPool::LoadFailed: ++ kWarning() << "Action" << actionName << "failed during initialisation"; ++ // fallthrough ++ case ActionPool::NoAction: ++ default: ++ // Ouch, error. But let's just warn and move on anyway ++ //TODO Maybe Remove from the configuration if unsupported ++ kWarning() << "The profile " << profileId << "tried to activate" ++ << actionName << "a non existent action. This is usually due to an installation problem" ++ " or to a configuration problem. or simlpy the action is not supported"; ++ break; ++ } + } + } + diff --git a/SOURCES/kde-workspace-4.10.2-BUILD_KCM_RANDR.patch b/SOURCES/kde-workspace-4.10.2-BUILD_KCM_RANDR.patch new file mode 100644 index 0000000..5aaf976 --- /dev/null +++ b/SOURCES/kde-workspace-4.10.2-BUILD_KCM_RANDR.patch @@ -0,0 +1,16 @@ +diff -up kde-workspace-4.10.2/kcontrol/CMakeLists.txt.BUILD_KCM_RANDR kde-workspace-4.10.2/kcontrol/CMakeLists.txt +--- kde-workspace-4.10.2/kcontrol/CMakeLists.txt.BUILD_KCM_RANDR 2013-03-01 00:32:25.040847159 -0600 ++++ kde-workspace-4.10.2/kcontrol/CMakeLists.txt 2013-04-18 08:58:31.086753204 -0500 +@@ -6,9 +6,10 @@ macro_log_feature(FREETYPE_FOUND "FreeTy + set(libkxftconfig_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/fonts/kxftconfig.cpp ) + + +-if( X11_Xrandr_FOUND ) ++OPTION(BUILD_KCM_RANDR "Build kcontrol/randr module" ON) ++if(BUILD_KCM_RANDR AND X11_Xrandr_FOUND) + add_subdirectory( randr ) +-endif(X11_Xrandr_FOUND ) ++endif(BUILD_KCM_RANDR AND X11_Xrandr_FOUND) + + if(X11_Xkb_FOUND) + add_subdirectory( keyboard ) diff --git a/SOURCES/kde-workspace-4.10.2-systray_org.kde.ktp-presence.patch b/SOURCES/kde-workspace-4.10.2-systray_org.kde.ktp-presence.patch new file mode 100644 index 0000000..6c14d3d --- /dev/null +++ b/SOURCES/kde-workspace-4.10.2-systray_org.kde.ktp-presence.patch @@ -0,0 +1,14 @@ +diff -up kde-workspace-4.10.2/plasma/generic/applets/systemtray/ui/applet.cpp.systray_ktp_presence kde-workspace-4.10.2/plasma/generic/applets/systemtray/ui/applet.cpp +--- kde-workspace-4.10.2/plasma/generic/applets/systemtray/ui/applet.cpp.systray_ktp_presence 2013-03-01 00:32:25.120846173 -0600 ++++ kde-workspace-4.10.2/plasma/generic/applets/systemtray/ui/applet.cpp 2013-04-09 12:59:57.666691688 -0500 +@@ -707,6 +707,10 @@ void Applet::checkDefaultApplets() + engines->unloadEngine("powermanagement"); + } + ++ if (!applets.contains("org.kde.ktp-presence")) { ++ s_manager->addApplet("org.kde.ktp-presence", this); ++ } ++ + config().writeEntry("DefaultAppletsAdded", true); + } + diff --git a/SOURCES/kde-workspace-4.10.3-bz#747982-launchers.patch b/SOURCES/kde-workspace-4.10.3-bz#747982-launchers.patch new file mode 100644 index 0000000..1727b2b --- /dev/null +++ b/SOURCES/kde-workspace-4.10.3-bz#747982-launchers.patch @@ -0,0 +1,15 @@ +diff -up kde-workspace-4.10.3/plasma/desktop/shell/data/layouts/org.kde.plasma-desktop.defaultPanel/contents/layout.js.bz#747982-launchers kde-workspace-4.10.3/plasma/desktop/shell/data/layouts/org.kde.plasma-desktop.defaultPanel/contents/layout.js +--- kde-workspace-4.10.3/plasma/desktop/shell/data/layouts/org.kde.plasma-desktop.defaultPanel/contents/layout.js.bz#747982-launchers 2013-05-02 23:36:45.000000000 -0500 ++++ kde-workspace-4.10.3/plasma/desktop/shell/data/layouts/org.kde.plasma-desktop.defaultPanel/contents/layout.js 2013-05-07 07:29:47.754712122 -0500 +@@ -9,10 +9,6 @@ panel.addWidget("launcher") + panel.addWidget("org.kde.showActivityManager") + pager = panel.addWidget("pager") + pager.writeConfig("hideWhenSingleDesktop", "true") +-tasks = panel.addWidget("tasks") ++panel.addWidget("tasks") + panel.addWidget("systemtray") + panel.addWidget("digital-clock") +- +-tasks.currentConfigGroup = new Array("Launchers") +-tasks.writeConfig("browser", "preferred://browser, , , ") +-tasks.writeConfig("filemanager", "preferred://filemanager, , , ") diff --git a/SOURCES/kde-workspace-4.10.4-kdm-harden.patch b/SOURCES/kde-workspace-4.10.4-kdm-harden.patch new file mode 100644 index 0000000..64d349c --- /dev/null +++ b/SOURCES/kde-workspace-4.10.4-kdm-harden.patch @@ -0,0 +1,23 @@ +--- kde-workspace-4.10.4/kdm/backend/CMakeLists.txt.harden 2013-07-18 13:59:39.736400898 +0200 ++++ kde-workspace-4.10.4/kdm/backend/CMakeLists.txt 2013-07-18 14:00:24.573302699 +0200 +@@ -52,7 +52,8 @@ endif(LIBSYSTEMD_LOGIN_FOUND AND LIBSYST + macro_add_file_dependencies(dm.h ${confci}) + macro_add_file_dependencies(error.c ${CMAKE_CURRENT_SOURCE_DIR}/printf.c) + kde4_add_executable(kdm NOGUI ${kdm_SRCS}) +-macro_add_compile_flags(kdm -U_REENTRANT) ++macro_add_compile_flags(kdm "-U_REENTRANT -fpie -pie") ++set_target_properties(kdm PROPERTIES LINK_FLAGS "-fpie -pie -Wl,-z,relro,-z,now ${LINK_FLAGS}") + target_link_libraries( kdm + ${X11_X11_LIB} ${X11_Xau_LIB} ${X11_Xdmcp_LIB} ${X11_X_EXTRA_LIBS} + ${UNIXAUTH_LIBRARIES} +--- kde-workspace-4.10.4/kdm/kfrontend/CMakeLists.txt.harden 2013-07-18 14:02:54.311974754 +0200 ++++ kde-workspace-4.10.4/kdm/kfrontend/CMakeLists.txt 2013-07-18 14:04:16.112795602 +0200 +@@ -71,6 +71,8 @@ endif (WITH_KDM_XCONSOLE) + + macro_add_file_dependencies(kdmconfig.h ${confci}) + kde4_add_executable(kdm_greet ${kdm_greet_SRCS}) ++macro_add_compile_flags(kdm_greet "-fpie -pie") ++set_target_properties(kdm_greet PROPERTIES LINK_FLAGS "-fpie -pie -Wl,-z,relro,-z,now ${LINK_FLAGS}") + target_link_libraries(kdm_greet ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} ${X11_X11_LIB} ${POSIX4_LIBRARIES}) + if (X11_XTest_FOUND) + target_link_libraries(kdm_greet ${X11_XTest_LIB}) diff --git a/SOURCES/kde-workspace-4.10.4-new-session-vt-numbers.patch b/SOURCES/kde-workspace-4.10.4-new-session-vt-numbers.patch new file mode 100644 index 0000000..2f9226c --- /dev/null +++ b/SOURCES/kde-workspace-4.10.4-new-session-vt-numbers.patch @@ -0,0 +1,11 @@ +--- kde-workspace-4.10.4/plasma/generic/runners/sessions/sessionrunner.cpp.vtnumbers 2013-06-12 14:31:05.631265540 +0200 ++++ kde-workspace-4.10.4/plasma/generic/runners/sessions/sessionrunner.cpp 2013-06-12 14:31:10.600251465 +0200 +@@ -256,7 +256,7 @@ + "Ctrl, Alt and the appropriate F-key at the same time. " + "Additionally, the KDE Panel and Desktop menus have " + "actions for switching between sessions.
", +- 7, 8), ++ 1, 2), + i18n("Warning - New Session"), + KGuiItem(i18n("&Start New Session"), "fork"), + KStandardGuiItem::cancel(), diff --git a/SOURCES/kde-workspace-4.10.5-bz#1043686-cpp.patch b/SOURCES/kde-workspace-4.10.5-bz#1043686-cpp.patch new file mode 100644 index 0000000..500a623 --- /dev/null +++ b/SOURCES/kde-workspace-4.10.5-bz#1043686-cpp.patch @@ -0,0 +1,15 @@ +diff -up kde-workspace-4.10.5/kcontrol/krdb/krdb.cpp.krdb kde-workspace-4.10.5/kcontrol/krdb/krdb.cpp +--- kde-workspace-4.10.5/kcontrol/krdb/krdb.cpp.krdb 2013-06-28 19:10:44.184424737 +0200 ++++ kde-workspace-4.10.5/kcontrol/krdb/krdb.cpp 2014-07-16 17:22:30.084547381 +0200 +@@ -538,9 +539,9 @@ void runRdb( uint flags ) + + KProcess proc; + #ifndef NDEBUG +- proc << "xrdb" << "-merge" << tmpFile.fileName(); ++ proc << "xrdb" << "-cpp" << "/bin/cpp" << "-merge" << tmpFile.fileName(); + #else +- proc << "xrdb" << "-quiet" << "-merge" << tmpFile.fileName(); ++ proc << "xrdb" << "-cpp" << "/bin/cpp" << "-quiet" << "-merge" << tmpFile.fileName(); + #endif + proc.execute(); + diff --git a/SOURCES/kde-workspace-4.10.5-bz#1060058.patch b/SOURCES/kde-workspace-4.10.5-bz#1060058.patch new file mode 100644 index 0000000..e84ebe7 --- /dev/null +++ b/SOURCES/kde-workspace-4.10.5-bz#1060058.patch @@ -0,0 +1,15 @@ +diff --git a/libs/plasmaclock/clockapplet.cpp b/libs/plasmaclock/clockapplet.cpp +index 482820b..18f892c 100644 +--- a/libs/plasmaclock/clockapplet.cpp ++++ b/libs/plasmaclock/clockapplet.cpp +@@ -377,8 +377,9 @@ void ClockApplet::createConfigurationInterface(KConfigDialog *parent) + if (d->kttsAvailable) { + QWidget *generalWidget = new QWidget(); + d->generalUi.setupUi(generalWidget); ++#ifdef JOVIE_FOUND + parent->addPage(generalWidget, i18nc("General configuration page", "General"), Applet::icon()); +- ++#endif + d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Never"), QVariant(0)); + d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every minute"), QVariant(1)); + d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every 2 minutes"), QVariant(2)); diff --git a/SOURCES/kde-workspace-4.10.5-bz#1063302-branding.patch b/SOURCES/kde-workspace-4.10.5-bz#1063302-branding.patch new file mode 100644 index 0000000..57101db --- /dev/null +++ b/SOURCES/kde-workspace-4.10.5-bz#1063302-branding.patch @@ -0,0 +1,33 @@ +diff -up kde-workspace-4.10.5/plasma/desktop/applets/kickoff/applet/applet.cpp.than kde-workspace-4.10.5/plasma/desktop/applets/kickoff/applet/applet.cpp +--- kde-workspace-4.10.5/plasma/desktop/applets/kickoff/applet/applet.cpp.than 2014-02-18 20:48:13.688843863 +0100 ++++ kde-workspace-4.10.5/plasma/desktop/applets/kickoff/applet/applet.cpp 2014-02-18 20:49:46.920845262 +0100 +@@ -191,7 +191,7 @@ void LauncherApplet::toolTipAboutToShow( + void LauncherApplet::configChanged() + { + KConfigGroup cg = config(); +- setPopupIcon(cg.readEntry("icon", "start-here-kde")); ++ setPopupIcon(cg.readEntry("icon", "system-logo-icon")); + constraintsEvent(Plasma::ImmutableConstraint); + + if (d->launcher) { +@@ -210,7 +210,7 @@ void LauncherApplet::configAccepted() + d->createLauncher(); + + KConfigGroup cg = config(); +- const QString oldIcon = cg.readEntry("icon", "start-here-kde"); ++ const QString oldIcon = cg.readEntry("icon", "system-logo-icon"); + if (!iconname.isEmpty() && iconname != oldIcon) { + cg.writeEntry("icon", iconname); + +diff -up kde-workspace-4.10.5/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp.than kde-workspace-4.10.5/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp +--- kde-workspace-4.10.5/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp.than 2014-02-18 20:51:12.709846549 +0100 ++++ kde-workspace-4.10.5/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp 2014-02-18 20:52:09.046847394 +0100 +@@ -307,7 +307,7 @@ MenuLauncherApplet::MenuLauncherApplet(Q + d->viewtypes << "RunCommand"; + } + d->viewtypes << "Leave"; +- d->iconname = "start-here-kde"; ++ d->iconname = "system-logo-icon"; + } + } + d->formattype = NameDescription; diff --git a/SOURCES/kde-workspace-4.10.5-coverity-scan.patch b/SOURCES/kde-workspace-4.10.5-coverity-scan.patch new file mode 100644 index 0000000..bc7de8d --- /dev/null +++ b/SOURCES/kde-workspace-4.10.5-coverity-scan.patch @@ -0,0 +1,34 @@ +diff --git a/kcontrol/desktoptheme/desktopthemedetails.cpp b/kcontrol/desktoptheme/desktopthemedetails.cpp +index 295edd9..ce01680 100644 +--- a/kcontrol/desktoptheme/desktopthemedetails.cpp ++++ b/kcontrol/desktoptheme/desktopthemedetails.cpp +@@ -287,9 +287,10 @@ void DesktopThemeDetails::exportTheme() + if (!expFileName.isEmpty()) { + KUrl path(themePath); + KZip expFile(expFileName); +- expFile.open(QIODevice::WriteOnly); +- expFile.addLocalDirectory(path.directory (), themeStoragePath); +- expFile.close(); ++ if (expFile.open(QIODevice::WriteOnly)) { ++ expFile.addLocalDirectory(path.directory (), themeStoragePath); ++ expFile.close(); ++ } + } + } + } +diff --git a/ksysguard/gui/Workspace.cpp b/ksysguard/gui/Workspace.cpp +index 6e9a261..668c48a 100644 +--- a/ksysguard/gui/Workspace.cpp ++++ b/ksysguard/gui/Workspace.cpp +@@ -198,7 +198,9 @@ void Workspace::importWorkSheet( const KUrl &url ) + * transparent. Unless s/o beats me up I use this pseudo transparent + * code. */ + QString tmpFile; +- KIO::NetAccess::download( url, tmpFile, this ); ++ if (!KIO::NetAccess::download( url, tmpFile, this )) { ++ return; ++ } + + // Import sheet from file. + if ( !restoreWorkSheet( tmpFile ) ) + diff --git a/SOURCES/kde-workspace-4.10.5-initgroups.patch b/SOURCES/kde-workspace-4.10.5-initgroups.patch new file mode 100644 index 0000000..af512ae --- /dev/null +++ b/SOURCES/kde-workspace-4.10.5-initgroups.patch @@ -0,0 +1,11 @@ +--- kde-workspace-4.10.5/kdm/kfrontend/kgreeter.cpp.initgroups 2013-10-30 18:10:08.430051504 +0100 ++++ kde-workspace-4.10.5/kdm/kfrontend/kgreeter.cpp 2013-10-30 18:10:37.707978823 +0100 +@@ -377,6 +377,8 @@ KGreeter::insertUsers() + return; + if (setegid(ps->pw_gid)) + return; ++ if (initgroups(ps->pw_name, ps->pw_gid)) ++ return; + if (seteuid(ps->pw_uid)) { + setegid(0); + return; diff --git a/SOURCES/kde-workspace-4.10.5-ksysguardd-setgroups.patch b/SOURCES/kde-workspace-4.10.5-ksysguardd-setgroups.patch new file mode 100644 index 0000000..8b75936 --- /dev/null +++ b/SOURCES/kde-workspace-4.10.5-ksysguardd-setgroups.patch @@ -0,0 +1,23 @@ +diff -up kde-workspace-4.10.5/ksysguard/ksysguardd/ksysguardd.c.orig kde-workspace-4.10.5/ksysguard/ksysguardd/ksysguardd.c +--- kde-workspace-4.10.5/ksysguard/ksysguardd/ksysguardd.c.orig 2013-10-30 16:34:10.629812777 +0100 ++++ kde-workspace-4.10.5/ksysguard/ksysguardd/ksysguardd.c 2013-10-30 17:23:16.561006488 +0100 +@@ -27,6 +27,7 @@ + #include") > 0) { +- flag = 1; +- } + +- if (line.contains("There are no forecasts matching") > 0) { ++ if (line.contains("Sorry, no results found for") > 0) { + break; + } + +- if (flag) { ++ if (line.contains("\"results\"") > 0) { + + if (grabURL.indexIn(line.trimmed()) > 0) { +- url = "http://newsrss.bbc.co.uk/weather/forecast/" + grabURL.cap(1) + "/ObservationsRSS.xml"; +- if (grabURL.captureCount() > 1) { +- url += grabURL.cap(2); +- } +- grabPlace.indexIn(line.trimmed()); +- tmp = QString("bbcukmet|").append(grabPlace.cap(1)); + +- // Duplicate places can exist +- if (m_locations.contains(tmp)) { +- tmp = QString("bbcukmet|").append(QString("%1 (#%2)").arg(grabPlace.cap(1)).arg(counter)); +- counter++; +- } ++ for (int captureIndex = 1; captureIndex <= grabURL.captureCount(); captureIndex++) { + +- m_place[tmp].XMLurl = url; +- m_place[tmp].place = grabPlace.cap(1); +- m_locations.append(tmp); +- } +- } ++ url = "http://open.live.bbc.co.uk/weather/feeds/en/" + grabURL.cap(captureIndex) + "/observations.rss"; ++ grabPlace.indexIn(line.trimmed()); ++ tmp = QString("bbcukmet|").append(grabPlace.cap(captureIndex)); ++ ++ // Duplicate places can exist ++ if (m_locations.contains(tmp)) { ++ tmp = QString("bbcukmet|").append(QString("%1 (#%2)").arg(grabPlace.cap(captureIndex)).arg(counter)); ++ counter++; ++ } + +- if (line.contains("