You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging/opensuse/core/tdebase/runupdater.patch

134 lines
4.0 KiB

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