From edddf4ff8841951cdbb698f72a3f4f8554ce8d33 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 7 Apr 2010 16:23:08 +0200 Subject: [PATCH] vala: take command line args to control whether to talk to system or session systemd --- systemadm.vala | 16 +++++++++++++--- systemctl.vala | 13 ++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/systemadm.vala b/systemadm.vala index bc4f9403..c761511c 100644 --- a/systemadm.vala +++ b/systemadm.vala @@ -22,6 +22,8 @@ using GLib; using DBus; using Pango; +static bool session = false; + public class LeftLabel : Label { public LeftLabel(string? text = null) { if (text != null) @@ -96,7 +98,6 @@ public class MainWindow : Window { notebook.append_page(job_vbox, new Label("Jobs")); job_vbox.set_border_width(12); - unit_model = new ListStore(6, typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(Unit)); job_model = new ListStore(5, typeof(string), typeof(string), typeof(string), typeof(string), typeof(Job)); @@ -210,7 +211,7 @@ public class MainWindow : Window { bbox.pack_start(cancel_button, false, true, 0); - bus = Bus.get(BusType.SESSION); + bus = Bus.get(session ? BusType.SESSION : BusType.SYSTEM); manager = bus.get_object( "org.freedesktop.systemd1", @@ -514,14 +515,23 @@ public class MainWindow : Window { } } +static const OptionEntry entries[] = { + { "session", 0, 0, OptionArg.NONE, out session, "Connect to session bus", null }, + { "system", 0, OptionFlags.REVERSE, OptionArg.NONE, out session, "Connect to system bus", null }, + { null } +}; + int main (string[] args) { - Gtk.init(ref args); try { + Gtk.init_with_args(ref args, "[OPTION...]", entries, "systemadm"); + MainWindow window = new MainWindow(); window.show_all(); } catch (DBus.Error e) { message("%s", e.message); + } catch (GLib.Error e) { + message("%s", e.message); } Gtk.main(); diff --git a/systemctl.vala b/systemctl.vala index fbcdefe9..4f017e02 100644 --- a/systemctl.vala +++ b/systemctl.vala @@ -23,6 +23,7 @@ using GLib; static string type = null; static bool all = false; static bool replace = false; +static bool session = false; public static int job_info_compare(void* key1, void* key2) { Manager.JobInfo *j1 = (Manager.JobInfo*) key1; @@ -59,15 +60,17 @@ public void on_job_removed(uint32 id, ObjectPath path) { } static const OptionEntry entries[] = { - { "type", 't', 0, OptionArg.STRING, out type, "List only particular type of units", "TYPE" }, - { "all", 'a', 0, OptionArg.NONE, out all, "Show all units, including dead ones", null }, - { "replace", 0, 0, OptionArg.NONE, out replace, "When installing a new job, replace existing conflicting ones.", null }, + { "type", 't', 0, OptionArg.STRING, out type, "List only particular type of units", "TYPE" }, + { "all", 'a', 0, OptionArg.NONE, out all, "Show all units, including dead ones", null }, + { "replace", 0, 0, OptionArg.NONE, out replace, "When installing a new job, replace existing conflicting ones", null }, + { "session", 0, 0, OptionArg.NONE, out session, "Connect to session bus", null }, + { "system", 0, OptionFlags.REVERSE, OptionArg.NONE, out session, "Connect to system bus", null }, { null } }; int main (string[] args) { - OptionContext context = new OptionContext(" [COMMAND [ARGUMENT...]]"); + OptionContext context = new OptionContext("[OPTION...] [COMMAND [ARGUMENT...]]"); context.add_main_entries(entries, null); context.set_description( "Commands:\n" + @@ -89,7 +92,7 @@ int main (string[] args) { } try { - Connection bus = Bus.get(BusType.SESSION); + Connection bus = Bus.get(session ? BusType.SESSION : BusType.SYSTEM); Manager manager = bus.get_object ( "org.freedesktop.systemd1", -- 2.39.5