summaryrefslogtreecommitdiffstats
path: root/opensuse/core/tdebase/runupdater.patch
diff options
context:
space:
mode:
Diffstat (limited to 'opensuse/core/tdebase/runupdater.patch')
-rw-r--r--opensuse/core/tdebase/runupdater.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/opensuse/core/tdebase/runupdater.patch b/opensuse/core/tdebase/runupdater.patch
new file mode 100644
index 000000000..3dcc4c550
--- /dev/null
+++ b/opensuse/core/tdebase/runupdater.patch
@@ -0,0 +1,133 @@
+Index: runupdater/runupdater.desktop
+===================================================================
+--- /dev/null
++++ runupdater/runupdater.desktop
+@@ -0,0 +1,9 @@
++[Desktop Entry]
++Type=Application
++Exec=runupdater
++Terminal=false
++Name=Run Updater Tool
++Icon=www
++
++X-KDE-StartupNotify=false
++OnlyShowIn=KDE;
+Index: runupdater/runupdater.cpp
+===================================================================
+--- /dev/null
++++ runupdater/runupdater.cpp
+@@ -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;
++ }
++ }
+Index: runupdater/Makefile.am
+===================================================================
+--- /dev/null
++++ runupdater/Makefile.am
+@@ -0,0 +1,13 @@
++INCLUDES = $(all_includes)
++
++bin_PROGRAMS =
++lib_LTLIBRARIES =
++kdeinit_LTLIBRARIES = runupdater.la
++
++runupdater_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
++runupdater_la_LIBADD = $(LIB_KDECORE)
++
++runupdater_la_SOURCES = runupdater.cpp
++
++autostart_DATA = runupdater.desktop
++autostartdir = $(datadir)/autostart