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.
134 lines
4.0 KiB
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
|