chiark / gitweb /
vala: take command line args to control whether to talk to system or session systemd
authorLennart Poettering <lennart@poettering.net>
Wed, 7 Apr 2010 14:23:08 +0000 (16:23 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 7 Apr 2010 14:23:08 +0000 (16:23 +0200)
systemadm.vala
systemctl.vala

index bc4f9403e62c14709027ede7b7c323cf79e3dd67..c761511c1c52f32a0c67f2f071716ed5675e9d35 100644 (file)
@@ -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();
index fbcdefe98deb0fd38d80a26ae34c9031ab1fff26..4f017e02e7a0a82baca3ceec6596556a5ca6373c 100644 (file)
@@ -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",