") > 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("
") > 0) {
+- flag = 0;
++ m_place[tmp].XMLurl = url;
++ m_place[tmp].place = grabPlace.cap(captureIndex);
++ m_locations.append(tmp);
++ }
++ }
+ }
+ }
+
+@@ -557,12 +556,13 @@ void UKMETIon::parseWeatherObservation(const QString& source, WeatherData& data,
+ QStringRef conditionData = conditionString.midRef(splitIndex + 1); // Include ':'
+ data.obsTime = conditionString.midRef(0, splitIndex).toString();
+
+- // Friday at 0200 GMT
+- m_dateFormat = QDateTime::fromString(data.obsTime.split("at")[1].trimmed(), "hhmm 'GMT'");
++ // Saturday - 13:00 CET
++ // Saturday - 12:00 GMT
++ m_dateFormat = QDateTime::fromString(data.obsTime.split("-")[1].trimmed(), "hh:mm 'GMT'");
+ data.iconPeriodHour = m_dateFormat.toString("hh").toInt();
+ data.iconPeriodMinute = m_dateFormat.toString("mm").toInt();
+
+- data.condition = conditionData.toString().split('.')[0].trimmed();
++ data.condition = conditionData.toString().split(',')[0].trimmed();
+
+ } else if (xml.name() == "link") {
+ m_place[source].forecastHTMLUrl = xml.readElementText();
+@@ -575,21 +575,32 @@ void UKMETIon::parseWeatherObservation(const QString& source, WeatherData& data,
+ #endif
+
+ data.temperature_C = observeData[1].split(QChar(176))[0].trimmed();
+-
+- // Temperature might be not available
+- if (data.temperature_C.contains("N/A")) {
++ if (data.temperature_C.contains("N/A") || data.temperature_C.contains("null")) {
+ data.temperature_C = i18n("N/A");
+ }
+
+ data.windDirection = observeData[2].split(',')[0].trimmed();
++ if (data.windDirection.contains("null")) {
++ data.windDirection = "";
++ }
++
+ data.windSpeed_miles = observeData[3].split(',')[0].split(' ')[1].remove("mph");
++ if (data.windSpeed_miles.contains("null")) {
++ data.windSpeed_miles = "N/A";
++ }
+
+ data.humidity = observeData[4].split(',')[0].split(' ')[1];
+ if (data.humidity.endsWith('%')) {
+ data.humidity.chop(1);
+ }
++ if (data.humidity.contains("null")) {
++ data.humidity = "N/A";
++ }
+
+ data.pressure = observeData[5].split(',')[0].split(' ')[1].split("mb")[0];
++ if (data.pressure.contains("null")) {
++ data.pressure = "N/A";
++ }
+ data.pressureTendency = observeData[5].split(',')[1].trimmed();
+
+ data.visibilityStr = observeData[6].trimmed();
+@@ -600,6 +611,10 @@ void UKMETIon::parseWeatherObservation(const QString& source, WeatherData& data,
+ } else if (xml.name() == "long") {
+ const QString ordinate = xml.readElementText();
+ data.longitude = ordinate.toDouble();
++ } else if (xml.name() == "georss:point") {
++ const QString ordinates = xml.readElementText();
++ data.latitude = ordinates.split(' ')[0].toDouble();
++ data.longitude = ordinates.split(' ')[1].toDouble();
+ } else {
+ parseUnknownElement(xml);
+ }
+@@ -675,8 +690,8 @@ void UKMETIon::parseFiveDayForecast(const QString& source, QXmlStreamReader& xml
+ QString line;
+ QString period;
+ QString summary;
+- QRegExp high("-?\\d+");
+- QRegExp low("-?\\d+");
++ QRegExp high("-?\\d+.C");
++ QRegExp low("-?\\d+.C");
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.name() == "title") {
+@@ -687,8 +702,8 @@ void UKMETIon::parseFiveDayForecast(const QString& source, QXmlStreamReader& xml
+
+ period = line.split(',')[0].split(':')[0];
+ summary = line.split(',')[0].split(':')[1].trimmed();
+- high.indexIn(line.split(',')[1]);
+- low.indexIn(line.split(',')[2]);
++ high.indexIn(line.split(',')[1].split(':')[1]);
++ low.indexIn(line.split(',')[1].split(':')[2]);
+
+ forecast->period = period;
+ forecast->iconName = getWeatherIcon(dayIcons(), summary.toLower());
+--
+1.7.10
+
diff --git a/SOURCES/kde-workspace-4.7.80-classicmenu-logout.patch b/SOURCES/kde-workspace-4.7.80-classicmenu-logout.patch
new file mode 100644
index 0000000..120e695
--- /dev/null
+++ b/SOURCES/kde-workspace-4.7.80-classicmenu-logout.patch
@@ -0,0 +1,65 @@
+diff -up kde-workspace-4.7.80/plasma/desktop/applets/kickoff/core/itemhandlers.cpp.classicmenu-logout kde-workspace-4.7.80/plasma/desktop/applets/kickoff/core/itemhandlers.cpp
+--- kde-workspace-4.7.80/plasma/desktop/applets/kickoff/core/itemhandlers.cpp.classicmenu-logout 2011-10-11 16:42:11.000000000 +0200
++++ kde-workspace-4.7.80/plasma/desktop/applets/kickoff/core/itemhandlers.cpp 2011-11-21 14:56:36.108858679 +0100
+@@ -105,7 +105,8 @@ bool LeaveItemHandler::openUrl(const KUr
+ QTimer::singleShot(0, this, SLOT(switchUser()));
+ return true;
+ } else if (m_logoutAction == "logout" || m_logoutAction == "logoutonly" ||
+- m_logoutAction == "restart" || m_logoutAction == "shutdown") {
++ m_logoutAction == "restart" || m_logoutAction == "shutdown" ||
++ m_logoutAction == "leave") {
+ // decouple dbus call, otherwise we'll run into a dead-lock
+ QTimer::singleShot(0, this, SLOT(logout()));
+ return true;
+@@ -158,6 +159,10 @@ void LeaveItemHandler::logout()
+ type = KWorkSpace::ShutdownTypeReboot;
+ } else if (m_logoutAction == "shutdown") {
+ type = KWorkSpace::ShutdownTypeHalt;
++ } else if (m_logoutAction == "leave") {
++ // This one brings up the dialog, for use in the classic menu.
++ confirm = KWorkSpace::ShutdownConfirmYes;
++ type = KWorkSpace::ShutdownTypeDefault;
+ }
+
+ KWorkSpace::requestShutDown(confirm, type);
+diff -up kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp.classicmenu-logout kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp
+--- kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp.classicmenu-logout 2011-11-04 15:33:12.000000000 +0100
++++ kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp 2011-11-21 14:48:59.281609964 +0100
+@@ -209,6 +209,7 @@ public:
+ case Shutdown: return i18n("Shut down");
+ case Logout: return i18n("Log out");
+ case Leave: return i18n("Leave");
++ case LeaveDialog: return i18n("Leave...");
+ }
+ return QString();
+ }
+@@ -234,6 +235,7 @@ public:
+ case Shutdown: return "system-shutdown";
+ case Logout: return "system-log-out";
+ case Leave: return "system-shutdown";
++ case LeaveDialog: return "system-shutdown";
+ }
+ return QString();
+ }
+@@ -741,6 +743,8 @@ void MenuLauncherApplet::showMenu(bool p
+ menuview->addAction(KIcon(d->viewIcon(LockScreen)), d->viewText(LockScreen))->setData(KUrl("leave:/lock"));
+ } else if(vtname == "Logout") {
+ menuview->addAction(KIcon(d->viewIcon(Logout)), d->viewText(Logout))->setData(KUrl("leave:/logout"));
++ } else if(vtname == "LeaveDialog") {
++ menuview->addAction(KIcon(d->viewIcon(LeaveDialog)), d->viewText(LeaveDialog))->setData(KUrl("leave:/leave"));
+ } else if(vtname == "Leave") {
+ Kickoff::LeaveModel *leavemodel = new Kickoff::LeaveModel(menuview);
+ leavemodel->updateModel();
+diff -up kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.h.classicmenu-logout kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.h
+--- kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.h.classicmenu-logout 2011-07-27 20:35:42.000000000 +0200
++++ kde-workspace-4.7.80/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.h 2011-11-21 14:48:59.282609967 +0100
+@@ -59,7 +59,8 @@ public:
+ Restart, ///< Restart Action
+ Shutdown, ///< Shutdown Action
+ Logout, ///< Logout Action
+- Leave ///< Leave Menu
++ Leave, ///< Leave Menu
++ LeaveDialog ///< Leave Dialog Action
+ };
+
+ /**
diff --git a/SOURCES/kde-workspace-4.7.80-no_HAL.patch b/SOURCES/kde-workspace-4.7.80-no_HAL.patch
new file mode 100644
index 0000000..2149aa2
--- /dev/null
+++ b/SOURCES/kde-workspace-4.7.80-no_HAL.patch
@@ -0,0 +1,24 @@
+diff -up kde-workspace-4.7.80/powerdevil/daemon/BackendConfig.cmake.no_HAL kde-workspace-4.7.80/powerdevil/daemon/BackendConfig.cmake
+--- kde-workspace-4.7.80/powerdevil/daemon/BackendConfig.cmake.no_HAL 2011-10-20 22:52:49.000000000 +0200
++++ kde-workspace-4.7.80/powerdevil/daemon/BackendConfig.cmake 2011-11-21 15:59:36.707272566 +0100
+@@ -39,18 +39,7 @@ install(TARGETS backlighthelper DESTINAT
+ kde4_install_auth_helper_files(backlighthelper org.kde.powerdevil.backlighthelper root)
+ kde4_install_auth_actions(org.kde.powerdevil.backlighthelper ${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/backlight_helper_actions.actions)
+
+-########################## HAL Backend #####################################
+-
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/backends/hal)
+-
+-set(powerdevilhalbackend_SRCS
+- backends/hal/halsuspendjob.cpp
+- backends/hal/powerdevilhalbackend.cpp
+-)
+-
+-set(powerdevilhalbackend_LIBS ${KDE4_SOLID_LIBS})
+-
+ ########################## Daemon variables ################################
+
+-set(POWERDEVIL_BACKEND_SRCS ${powerdevilupowerbackend_SRCS} ${powerdevilhalbackend_SRCS})
+-set(POWERDEVIL_BACKEND_LIBS ${powerdevilupowerbackend_LIBS} ${powerdevilhalbackend_LIBS})
++set(POWERDEVIL_BACKEND_SRCS ${powerdevilupowerbackend_SRCS})
++set(POWERDEVIL_BACKEND_LIBS ${powerdevilupowerbackend_LIBS})
diff --git a/SOURCES/kde-workspace-4.7.95-kdm_xauth.patch b/SOURCES/kde-workspace-4.7.95-kdm_xauth.patch
new file mode 100644
index 0000000..5c7a388
--- /dev/null
+++ b/SOURCES/kde-workspace-4.7.95-kdm_xauth.patch
@@ -0,0 +1,16 @@
+diff -up kde-workspace-4.7.95/kdm/backend/auth.c.selinux_wtf kde-workspace-4.7.95/kdm/backend/auth.c
+--- kde-workspace-4.7.95/kdm/backend/auth.c.selinux_wtf 2011-12-20 18:40:36.000000000 -0600
++++ kde-workspace-4.7.95/kdm/backend/auth.c 2012-01-03 14:33:38.931306044 -0600
+@@ -1292,6 +1292,12 @@ removeUserAuthorization(struct display *
+
+ if (!(auths = d->authorizations))
+ return;
++
++ /* given that the code below doesn't handle the forceUserAuthDir case, */
++ /* let's just bail out for now, see http://bugs.kde.org/242065 */
++ if ( d->forceUserAuthDir )
++ return;
++
+ debug("removeUserAuthorization\n");
+ startUserAuth(name, new_name, &old, &new);
+ if (new) {
diff --git a/SOURCES/kde-workspace-4.8.0-bug796969.patch b/SOURCES/kde-workspace-4.8.0-bug796969.patch
new file mode 100644
index 0000000..16e2938
--- /dev/null
+++ b/SOURCES/kde-workspace-4.8.0-bug796969.patch
@@ -0,0 +1,37 @@
+per https://bugzilla.redhat.com/show_bug.cgi?id=796969#c23
+The process that executes kdm/backend/session.c:manageSession() is the leader
+process of the logind session.
+
+manageSession() calls:
+
+ blockTerm();
+ clientExited();
+ unblockTerm();
+
+where clientExited() ends the PAM session.
+With the current systemd-logind, ending the PAM session will cause the leader
+process to be delivered SIGHUP and SIGTERM. The process will die and the
+remainder of manageSession() will not be executed.
+
+Interestingly, at the end of the function there's a call to sessionExit(),
+which calls clientExited() again.
+
+Removing the three lines quoted above makes reboot from KDE work again. I
+haven't noticed any bad effects.
+
+diff -up kde-workspace-4.8.0/kdm/backend/session.c.bz796969 kde-workspace-4.8.0/kdm/backend/session.c
+--- kde-workspace-4.8.0/kdm/backend/session.c.bz796969 2012-01-18 14:08:40.000000000 -0600
++++ kde-workspace-4.8.0/kdm/backend/session.c 2012-02-28 07:17:16.270219932 -0600
+@@ -662,9 +662,9 @@ manageSession(void)
+ sessionExit(EX_AL_RESERVER_DPY);
+ }
+
+- blockTerm();
+- clientExited();
+- unblockTerm();
++ /* blockTerm(); */
++ /* clientExited(); */
++ /* unblockTerm(); */
+
+ gSet(&mstrtalk);
+ gSendInt(D_UnUser);
diff --git a/SOURCES/kde-workspace-4.8.2-bz#732830-login.patch b/SOURCES/kde-workspace-4.8.2-bz#732830-login.patch
new file mode 100644
index 0000000..c930a01
--- /dev/null
+++ b/SOURCES/kde-workspace-4.8.2-bz#732830-login.patch
@@ -0,0 +1,497 @@
+diff -up kde-workspace-4.8.2/kdm/CMakeLists.txt.bz#732830-login kde-workspace-4.8.2/kdm/CMakeLists.txt
+--- kde-workspace-4.8.2/kdm/CMakeLists.txt.bz#732830-login 2012-03-30 00:02:31.000000000 +0200
++++ kde-workspace-4.8.2/kdm/CMakeLists.txt 2012-03-30 13:38:35.094493727 +0200
+@@ -33,6 +33,11 @@ set(backgroundlib_SRCS
+ ${CMAKE_CURRENT_SOURCE_DIR}/kcm/background/bgsettings.cpp
+ )
+
++set(kdmminmaxuidlib_SRCS
++ ${CMAKE_CURRENT_SOURCE_DIR}/kdm-minmaxuid.c
++ ${CMAKE_CURRENT_SOURCE_DIR}/kdm-minmaxuid.h
++)
++
+ # after confci is defined
+ add_subdirectory(backend)
+ add_subdirectory(kfrontend)
+diff -up kde-workspace-4.8.2/kdm/config.def.bz#732830-login kde-workspace-4.8.2/kdm/config.def
+--- kde-workspace-4.8.2/kdm/config.def.bz#732830-login 2012-03-30 00:02:31.000000000 +0200
++++ kde-workspace-4.8.2/kdm/config.def 2012-03-30 13:38:35.112493501 +0200
+@@ -2288,9 +2288,13 @@ Instance: #*/
+ Update: upd_minshowuid
+ Comment:
+ Special case of HiddenUsers: users with a non-zero UID less than this number
+- will not be shown as well.
++ will not be shown as well. Setting this to -1 means that the limit should be
++ determined in a platform-specific way (by reading /etc/login.defs or using a
++ compiled-in default).
+ Description:
+- See
.
++ See
. Setting this to -1 means that the limit
++ should be determined in a platform-specific way (by reading
++
/etc/login.defs or using a compiled-in default).
+
+ Key: MaxShowUID
+ Type: int
+@@ -2301,9 +2305,11 @@ Instance: #*/
+ Update: upd_maxshowuid
+ Comment:
+ Complement to MinShowUID: users with a UID greater than this number will
+- not be shown as well.
++ not be shown as well. Unlike MinShowUID, the special value -1 is not
++ supported.
+ Description:
+- See
.
++ See
. Unlike
, the
++ special value -1 is not supported.
+
+ Key: SortUsers
+ Type: bool
+diff -up kde-workspace-4.8.2/kdm/kcm/CMakeLists.txt.bz#732830-login kde-workspace-4.8.2/kdm/kcm/CMakeLists.txt
+--- kde-workspace-4.8.2/kdm/kcm/CMakeLists.txt.bz#732830-login 2012-03-30 00:02:31.000000000 +0200
++++ kde-workspace-4.8.2/kdm/kcm/CMakeLists.txt 2012-03-30 13:38:35.114493477 +0200
+@@ -15,6 +15,7 @@ kde4_add_ui_files(kcmbackgroundlib_SRCS
+ background/bgadvanced_ui.ui)
+
+ set(kcm_kdm_PART_SRCS ${kcmbackgroundlib_SRCS} ${backgroundlib_SRCS}
++ ${kdmminmaxuidlib_SRCS}
+ background.cpp
+ kdm-gen.cpp
+ kdm-dlg.cpp
+diff -up kde-workspace-4.8.2/kdm/kcm/kdm-users.cpp.bz#732830-login kde-workspace-4.8.2/kdm/kcm/kdm-users.cpp
+--- kde-workspace-4.8.2/kdm/kcm/kdm-users.cpp.bz#732830-login 2012-03-30 00:02:31.000000000 +0200
++++ kde-workspace-4.8.2/kdm/kcm/kdm-users.cpp 2012-03-30 13:38:35.123493365 +0200
+@@ -58,6 +58,9 @@
+ #include
+ #include
+
++#include "../kdm-minmaxuid.h"
++
++
+ extern KConfig *config;
+
+ extern int handleActionReply(QWidget *parent, const KAuth::ActionReply &reply);
+@@ -80,28 +83,11 @@ static int executeFaceAction(QWidget *pa
+ KDMUsersWidget::KDMUsersWidget(QWidget *parent)
+ : QWidget(parent)
+ {
+-#ifdef __linux__
+- struct stat st;
+- if (!stat("/etc/debian_version", &st)) { /* debian */
+- defminuid = "1000";
+- defmaxuid = "29999";
+- } else if (!stat("/usr/portage", &st)) { /* gentoo */
+- defminuid = "1000";
+- defmaxuid = "65000";
+- } else if (!stat("/etc/mandrake-release", &st)) { /* mandrake - check before redhat! */
+- defminuid = "500";
+- defmaxuid = "65000";
+- } else if (!stat("/etc/redhat-release", &st)) { /* redhat */
+- defminuid = "100";
+- defmaxuid = "65000";
+- } else /* if (!stat("/etc/SuSE-release", &st)) */ { /* suse */
+- defminuid = "500";
+- defmaxuid = "65000";
+- }
+-#else
+- defminuid = "1000";
+- defmaxuid = "65000";
+-#endif
++ int minUid, maxUid;
++
++ getDefaultMinMaxUids(&minUid, &maxUid);
++ defminuid = QString::number(minUid);
++ defmaxuid = QString::number(maxUid);
+
+ m_userPixDir = config->group("X-*-Greeter").readEntry("FaceDir",
+ QString(KStandardDirs::installPath("data") + "kdm/faces" + '/'));
+diff -up kde-workspace-4.8.2/kdm/kcm/main.cpp.bz#732830-login kde-workspace-4.8.2/kdm/kcm/main.cpp
+--- kde-workspace-4.8.2/kdm/kcm/main.cpp.bz#732830-login 2012-03-30 00:02:31.000000000 +0200
++++ kde-workspace-4.8.2/kdm/kcm/main.cpp 2012-03-30 13:38:35.135493214 +0200
+@@ -59,6 +59,7 @@
+ #include
+ #include
+
++#include "../kdm-minmaxuid.h"
+
+ K_PLUGIN_FACTORY(KDMFactory, registerPlugin();)
+ K_EXPORT_PLUGIN(KDMFactory("kdmconfig"))
+@@ -393,13 +394,14 @@ void KDModule::propagateUsers()
+ {
+ groupmap.clear();
+ emit clearUsers();
++ int realminuid = interpretMinUid(minshowuid);
+ QMap lusers;
+ QMap >::const_iterator it;
+ QStringList::ConstIterator jt;
+ QMap::Iterator gmapi;
+ for (it = usermap.constBegin(); it != usermap.constEnd(); ++it) {
+ int uid = it.value().first;
+- if (!uid || (uid >= minshowuid && uid <= maxshowuid)) {
++ if (!uid || (uid >= realminuid && uid <= maxshowuid)) {
+ lusers[it.key()] = uid;
+ for (jt = it.value().second.begin(); jt != it.value().second.end(); ++jt)
+ if ((gmapi = groupmap.find(*jt)) == groupmap.end()) {
+@@ -415,6 +417,8 @@ void KDModule::propagateUsers()
+
+ void KDModule::slotMinMaxUID(int min, int max)
+ {
++ int oldrealmin = interpretMinUid(minshowuid);
++ int newrealmin = interpretMinUid(min);
+ if (updateOK) {
+ QMap alusers, dlusers;
+ QMap >::const_iterator it;
+@@ -424,8 +428,8 @@ void KDModule::slotMinMaxUID(int min, in
+ int uid = it.value().first;
+ if (!uid)
+ continue;
+- if ((uid >= minshowuid && uid <= maxshowuid) &&
+- !(uid >= min && uid <= max)) {
++ if ((uid >= oldrealmin && uid <= maxshowuid) &&
++ !(uid >= newrealmin && uid <= max)) {
+ dlusers[it.key()] = uid;
+ for (jt = it.value().second.begin();
+ jt != it.value().second.end(); ++jt) {
+@@ -435,8 +439,8 @@ void KDModule::slotMinMaxUID(int min, in
+ dlusers['@' + *jt] = -uid;
+ }
+ }
+- } else if ((uid >= min && uid <= max) &&
+- !(uid >= minshowuid && uid <= maxshowuid)) {
++ } else if ((uid >= newrealmin && uid <= max) &&
++ !(uid >= oldrealmin && uid <= maxshowuid)) {
+ alusers[it.key()] = uid;
+ for (jt = it.value().second.begin();
+ jt != it.value().second.end(); ++jt)
+diff -up kde-workspace-4.8.2/kdm/kdm-minmaxuid.c.bz#732830-login kde-workspace-4.8.2/kdm/kdm-minmaxuid.c
+--- kde-workspace-4.8.2/kdm/kdm-minmaxuid.c.bz#732830-login 2012-03-30 13:38:35.137493189 +0200
++++ kde-workspace-4.8.2/kdm/kdm-minmaxuid.c 2012-03-30 13:38:35.137493189 +0200
+@@ -0,0 +1,152 @@
++/*
++ * Utilities for handling the UID range allocated for non-system user
++ */
++
++#include
++#include
++#ifdef __linux__
++#include
++#include
++#include
++#include
++#include