From 8ad05cea2433a1d99f47e5d25b2b20ccb9b70182 Mon Sep 17 00:00:00 2001 From: Enrico Zini Date: Sat, 27 Mar 2010 16:45:16 +0000 Subject: [PATCH] Use find_and_run_script more thoroughly --- src/app_keyboard.vala | 5 ++++- src/app_power.vala | 10 +++++----- src/config.vala | 38 +++++++++++++++++++------------------- src/core.vala | 35 +++++++++++++---------------------- src/zavai.vala | 2 +- 5 files changed, 42 insertions(+), 48 deletions(-) diff --git a/src/app_keyboard.vala b/src/app_keyboard.vala index c70b16f..18efc2b 100644 --- a/src/app_keyboard.vala +++ b/src/app_keyboard.vala @@ -42,7 +42,10 @@ public class Keyboard : Service protected override void start() { - string[] args = { zavai.config.homedir + "/keyboard", null }; + string script = zavai.config.find_script("keyboard"); + if (script == null) return; + + string[] args = { script, null }; int opid; try { Gdk.spawn_on_screen( diff --git a/src/app_power.vala b/src/app_power.vala index 8fedf3f..2e66603 100644 --- a/src/app_power.vala +++ b/src/app_power.vala @@ -485,7 +485,7 @@ public class Backlight: zavai.Service public void wiggle() { try { - zavai.config.run_script(zavai.config.homedir + "/display wiggle"); + zavai.config.find_and_run_script("display", "wiggle"); } catch (Error e) { zavai.log.error("Requesting/releasing resource Display: " + e.message); } @@ -496,7 +496,7 @@ public class Backlight: zavai.Service if (!started) { try { - zavai.config.run_script(zavai.config.homedir + "/display lock_off"); + zavai.config.find_and_run_script("display", "lock_off"); } catch (GLib.Error e) { zavai.log.error(e.message); } @@ -506,7 +506,7 @@ public class Backlight: zavai.Service public void unlock_screen() { try { - zavai.config.run_script(zavai.config.homedir + "/display defaults"); + zavai.config.find_and_run_script("display", "defaults"); } catch (GLib.Error e) { zavai.log.error(e.message); } @@ -516,7 +516,7 @@ public class Backlight: zavai.Service { if (started) return; try { - zavai.config.run_script(zavai.config.homedir + "/display lock_on"); + zavai.config.find_and_run_script("display", "lock_on"); zavai.log.info("Acquired display"); base.start(); } catch (GLib.Error e) { @@ -529,7 +529,7 @@ public class Backlight: zavai.Service { if (!started) return; try { - zavai.config.run_script(zavai.config.homedir + "/display defaults"); + zavai.config.find_and_run_script("display", "defaults"); zavai.log.info("Released display"); base.stop(); } catch (GLib.Error e) { diff --git a/src/config.vala b/src/config.vala index 5a982be..c2a0e56 100644 --- a/src/config.vala +++ b/src/config.vala @@ -235,7 +235,7 @@ public class Config * * If the script is not found, NULL is returned */ - public string find_script(string name) + public string? find_script(string name) { string candidate = homedir + "/" + name; if (FileUtils.test(candidate, FileTest.EXISTS)) @@ -246,34 +246,34 @@ public class Config return null; } - public void run_script(string command) + public void find_and_run_script(string script, string args) throws SpawnError + { + string cmd = find_script(script); + if (cmd == null) + throw new SpawnError.NOENT("hook '" + cmd + "' not found"); + run_script(cmd + " " + args); + } + + public void run_script(string command) throws SpawnError { zavai.log.info("Run program: " + command); string[] args = command.split(" "); Pid pid; - try { - Process.spawn_async( - Environment.get_home_dir(), - args, - null, - SpawnFlags.SEARCH_PATH, - null, - out pid); - } catch (SpawnError e) { - zavai.log.error("Running " + command + ": " + e.message); - } + Process.spawn_async( + Environment.get_home_dir(), + args, + null, + SpawnFlags.SEARCH_PATH, + null, + out pid); } - public int run_script_sync(string command, out string std_out, out string std_err) + public int run_script_sync(string command, out string std_out, out string std_err) throws SpawnError { int status = -1; zavai.log.info("Run program: " + command); string[] args = command.split(" "); - try { - bool res = Process.spawn_sync(Environment.get_home_dir(), args, null, SpawnFlags.SEARCH_PATH, null, out std_out, out std_err, out status); - } catch (SpawnError e) { - zavai.log.error("Running " + command + ": " + e.message); - } + bool res = Process.spawn_sync(Environment.get_home_dir(), args, null, SpawnFlags.SEARCH_PATH, null, out std_out, out std_err, out status); return status; } } diff --git a/src/core.vala b/src/core.vala index c971a29..ef1363f 100644 --- a/src/core.vala +++ b/src/core.vala @@ -157,36 +157,22 @@ public abstract class ScriptService : Service protected bool script_start() { - string script = zavai.config.find_script(name); - if (script == null) - { - zavai.log.error("Hook " + name + " does not exist"); - return false; - } try { - // Then run our own script - zavai.config.run_script(script + " start"); + zavai.config.find_and_run_script(name, "start"); return true; } catch (Error e) { - zavai.log.error("Running " + script + " start: " + e.message); + zavai.log.error("Running " + name + " start: " + e.message); return false; } } protected bool script_stop() { - string script = zavai.config.find_script(name); - if (script == null) - { - zavai.log.error("Hook " + name + " does not exist"); - return false; - } try { - // Then run our own script - zavai.config.run_script(script + " stop"); + zavai.config.find_and_run_script(name, "stop"); return true; } catch (Error e) { - zavai.log.error("Running " + script + " stop: " + e.message); + zavai.log.error("Running " + name + " stop: " + e.message); return false; } } @@ -202,10 +188,15 @@ public abstract class ScriptService : Service return false; } string command = script + " status"; - int res = zavai.config.run_script_sync(command, out std_out, out std_err); - if (res != 0) - { - zavai.log.error("Running " + command + ": " + std_err); + try { + int res = zavai.config.run_script_sync(command, out std_out, out std_err); + if (res != 0) + { + zavai.log.error("Running " + command + ": " + std_err); + return false; + } + } catch (SpawnError e) { + zavai.log.error("Running " + command + ": " + e.message); return false; } diff --git a/src/zavai.vala b/src/zavai.vala index 3b467f0..ae8c3aa 100644 --- a/src/zavai.vala +++ b/src/zavai.vala @@ -211,7 +211,7 @@ static int main (string[] args) { zavai.ui.main.init(); zavai.ui.gps.init(); zavai.ui.gsm.init(); - zavai.config.run_script(zavai.config.homedir + "/display init"); + zavai.config.find_and_run_script("display", "init"); zavai.ui.power.init(); zavai.ui.aux.init(); zavai.ui.kbd.init(); -- 2.39.5