File runupdater.patch of Package kdebase3
diff -urN kde3-kdebase-master.orig/CMakeLists.txt kde3-kdebase-master/CMakeLists.txt
--- kde3-kdebase-master.orig/CMakeLists.txt 2014-02-22 12:49:26.000000000 +0200
+++ kde3-kdebase-master/CMakeLists.txt 2014-02-22 23:52:36.325257135 +0200
@@ -190,3 +190,13 @@
LINK kdeui-shared
DESTINATION ${BIN_INSTALL_DIR}
)
+
+
+##### runupdater ################################
+
+install( FILES runupdater.desktop DESTINATION ${DATA_INSTALL_DIR}/autostart )
+
+kde_add_kdeinit_executable( runupdater AUTOMOC
+ SOURCES runupdater.cpp
+ LINK kdecore-shared
+)
diff -urN kde3-kdebase-master.orig/runupdater.cpp kde3-kdebase-master/runupdater.cpp
--- kde3-kdebase-master.orig/runupdater.cpp 1970-01-01 02:00:00.000000000 +0200
+++ kde3-kdebase-master/runupdater.cpp 2014-02-22 23:35:27.987689407 +0200
@@ -0,0 +1,96 @@
+/*
+ Run either opensuseupdater or zen-updater but not both.
+ For opensuseupdater its autostart condition is checked, for zen-updater
+ it's checked whether its autostart file is enabled.
+*/
+
+#include <kapplication.h>
+#include <kconfig.h>
+#include <ksimpleconfig.h>
+#include <kstandarddirs.h>
+
+static bool disabledOSU()
+ {
+ KConfig osu( "opensuseupdaterrc", true );
+ osu.setGroup( "General" );
+// fprintf( stderr, "OSU:%d\n", osu.readBoolEntry ("Autostart", true ));
+ return !osu.readBoolEntry( "Autostart", true );
+ }
+
+static bool availableOSU()
+ {
+ return !KStandardDirs::findExe( "opensuseupdater" ).isEmpty();
+ }
+
+static bool runOSU()
+ {
+ return KApplication::kdeinitExec( "opensuseupdater", QStringList(), NULL, NULL, "0" ) == 0;
+ }
+
+static bool disabledZU()
+ {
+ KConfig zu( "zen-updater-auto.desktop", true, false, "xdgconf-autostart" );
+ zu.setGroup( "Desktop Entry" );
+// fprintf( stderr, "ZU %d\n", zu.readBoolEntry( "Hidden", false ) );
+ return zu.readBoolEntry( "Hidden", false );
+ }
+
+static bool availableZU()
+ {
+ return !KStandardDirs::findExe( "zen-updater" ).isEmpty();
+ }
+
+static bool runZU()
+ {
+ return KApplication::kdeinitExec( "zen-updater", QStringList(), NULL, NULL, "0" ) == 0;
+ }
+
+extern "C"
+int kdemain()
+ {
+ KInstance inst( "runupdater" );
+ // KSimpleConfig should parse this one just fine, with entries in the default group
+ KSimpleConfig sysconfig( "/etc/sysconfig/sw_management", true );
+ QString preferred = sysconfig.readEntry( "PREFERRED_SW_MANAGER_STACK" );
+// fprintf( stderr, "SC1: %s\n", preferred.latin1());
+ if( preferred.startsWith( "\"" ) && preferred.endsWith( "\"" )) // strip ""
+ preferred = preferred.mid( 1, preferred.length() - 2 );
+// fprintf( stderr, "SC2: %s\n", preferred.latin1());
+ if( preferred.lower() == "opensuse" )
+ {
+ // opensuseupdater preferred - it's it's available, run it if it's enabled,
+ // try zen-updater only if opensuseupdater is not available at all
+ if( availableOSU())
+ {
+ if( !disabledOSU())
+ return runOSU();
+ return 0;
+ }
+ else if( availableZU() && !disabledZU())
+ return runZU();
+ return 0;
+ }
+ else if( preferred.lower() == "zlm" )
+ {
+ // similar like above, just the other way around
+ if( availableZU())
+ {
+ if( !disabledZU())
+ return runZU();
+ return 0;
+ }
+ else if( availableOSU() && !disabledOSU())
+ return runOSU();
+ return 0;
+ }
+ else
+ {
+ // prefer opensuseupdater, but try to run zen-updater if opensuseupdater is not run
+ // the difference is that zen-updater is still run if opensuseupdater is disabled
+ if( availableOSU() && !disabledOSU() && runOSU())
+ return 0;
+ if( availableZU() && !disabledZU() && runZU())
+ return 0;
+ return 0;
+ }
+ }
diff -urN kde3-kdebase-master.orig/runupdater.desktop kde3-kdebase-master/runupdater.desktop
--- kde3-kdebase-master.orig/runupdater.desktop 1970-01-01 02:00:00.000000000 +0200
+++ kde3-kdebase-master/runupdater.desktop 2014-02-22 23:35:27.983688597 +0200
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Exec=runupdater
+Terminal=false
+Name=Run Updater Tool
+Icon=www
+
+X-KDE-StartupNotify=false
+OnlyShowIn=KDE;