X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fgnome-ask-password-agent.vala;h=c31c07e3db0de0f21f4963f543698a0a0cb1f651;hp=61bbba0f7c8b9077b3163109c7384a2e844609c5;hb=ec2002f84928c0b5921a961cb2b8637563f29daa;hpb=d0ef2204b4256189afc2188f0765338d616ca757 diff --git a/src/gnome-ask-password-agent.vala b/src/gnome-ask-password-agent.vala index 61bbba0f7..c31c07e3d 100644 --- a/src/gnome-ask-password-agent.vala +++ b/src/gnome-ask-password-agent.vala @@ -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("/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 { @@ -162,7 +165,7 @@ public class MyStatusIcon : StatusIcon { if (not_after_as_string.scanf("%llu", out not_after) != 1) return false; - if (not_after < now) + if (not_after > 0 && not_after < now) return false; socket = key_file.get_string("Ask", "Socket"); @@ -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); }