chiark / gitweb /
main: log to the console in a container
[elogind.git] / src / gnome-ask-password-agent.vala
index 61bbba0f7c8b9077b3163109c7384a2e844609c5..4f89a3e6d8bb8f1c70052fe32b12736e82e03110 100644 (file)
@@ -19,7 +19,6 @@
 
 using Gtk;
 using GLib;
-using DBus;
 using Linux;
 using Posix;
 using Notify;
@@ -90,9 +89,9 @@ public class MyStatusIcon : StatusIcon {
 
         public MyStatusIcon() throws GLib.Error {
                 GLib.Object(icon_name : "dialog-password");
-                set_title("System Password");
+                set_title("System Password Request");
 
-                directory = File.new_for_path("/dev/.systemd/ask-password/");
+                directory = File.new_for_path("/var/run/systemd/ask-password/");
                 file_monitor = directory.monitor_directory(0);
                 file_monitor.changed.connect(file_monitor_changed);
 
@@ -102,14 +101,19 @@ public class MyStatusIcon : StatusIcon {
                 activate.connect(status_icon_activate);
         }
 
-        void file_monitor_changed(GLib.File file, GLib.File? other_file, GLib.FileMonitorEvent event_type) throws GLib.Error {
+        void file_monitor_changed(GLib.File file, GLib.File? other_file, GLib.FileMonitorEvent event_type) {
 
                 if (!file.get_basename().has_prefix("ask."))
                         return;
 
                 if (event_type == FileMonitorEvent.CREATED ||
-                    event_type == FileMonitorEvent.DELETED)
-                        look_for_password();
+                    event_type == FileMonitorEvent.DELETED) {
+                        try {
+                                look_for_password();
+                        } catch (Error e) {
+                                show_error(e.message);
+                        }
+                }
         }
 
         void look_for_password() throws GLib.Error {
@@ -141,7 +145,6 @@ public class MyStatusIcon : StatusIcon {
 
                 if (current == null)
                         set_visible(false);
-
         }
 
         bool load_password() throws GLib.Error {
@@ -175,6 +178,7 @@ public class MyStatusIcon : StatusIcon {
                 } catch (GLib.Error e) {
                         message = "Please Enter System Password!";
                 }
+
                 set_tooltip_text(message);
 
                 try {
@@ -198,7 +202,7 @@ public class MyStatusIcon : StatusIcon {
                 return true;
         }
 
-        void status_icon_activate() throws GLib.Error {
+        void status_icon_activate() {
 
                 if (current == null)
                         return;
@@ -222,24 +226,27 @@ public class MyStatusIcon : StatusIcon {
 
                 int to_process;
 
-                Process.spawn_async_with_pipes(
-                                null,
-                                { "/usr/bin/pkexec", "/lib/systemd/systemd-reply-password", result == ResponseType.OK ? "1" : "0", socket },
-                                null,
-                                0,
-                                null,
-                                null,
-                                out to_process,
-                                null,
-                                null);
-
-                OutputStream stream = new UnixOutputStream(to_process, true);
-
-#if LIBNOTIFY07
-                stream.write(password.data, null);
+                try {
+                        Process.spawn_async_with_pipes(
+                                        null,
+                                        { "/usr/bin/pkexec", "/lib/systemd/systemd-reply-password", result == ResponseType.OK ? "1" : "0", socket },
+                                        null,
+                                        0,
+                                        null,
+                                        null,
+                                        out to_process,
+                                        null,
+                                        null);
+
+                        OutputStream stream = new UnixOutputStream(to_process, true);
+#if VALA_0_12
+                        stream.write(password.data, null);
 #else
-                stream.write(password, password.length, null);
+                        stream.write(password, password.length, null);
 #endif
+                } catch (Error e) {
+                        show_error(e.message);
+                }
         }
 }
 
@@ -261,8 +268,6 @@ int main(string[] args) {
                 MyStatusIcon i = new MyStatusIcon();
                 Gtk.main();
 
-        } catch (DBus.Error e) {
-                show_error(e.message);
         } catch (GLib.Error e) {
                 show_error(e.message);
         }