From 8fd716f2ca100d7fa15c51d112a9e02139572d84 Mon Sep 17 00:00:00 2001 From: James Turner <zakalawe@mac.com> Date: Mon, 16 Aug 2010 11:08:24 +0100 Subject: [PATCH] Extend IORules system to permit aircraft dirs. --- Nasal/IOrules | 1 + Nasal/io.nas | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Nasal/IOrules b/Nasal/IOrules index 61e902507..1c0face2a 100644 --- a/Nasal/IOrules +++ b/Nasal/IOrules @@ -27,6 +27,7 @@ READ ALLOW $FG_ROOT/* READ ALLOW $FG_HOME/* +READ ALLOW $FG_AIRCRAFT/* WRITE ALLOW /tmp/*.xml WRITE ALLOW $FG_HOME/*.sav diff --git a/Nasal/io.nas b/Nasal/io.nas index cea2f75f9..41d5d7fc9 100644 --- a/Nasal/io.nas +++ b/Nasal/io.nas @@ -235,11 +235,26 @@ _setlistener("/sim/signals/nasal-dir-initialized", func { var pattern = f[2]; foreach (var p; subvec(f, 3)) pattern ~= " " ~ p; - if (substr(pattern, 0, 9) == "$FG_ROOT/") - pattern = root ~ "/" ~ substr(pattern, 9); - elsif (substr(pattern, 0, 9) == "$FG_HOME/") - pattern = home ~ "/" ~ substr(pattern, 9); - append(f[0] == "READ" ? read_rules : write_rules, [pattern, f[1] == "ALLOW"]); + var rules = f[0] == "READ" ? read_rules : write_rules; + var allow = (f[1] == "ALLOW"); + + if (substr(pattern, 0, 13) == "$FG_AIRCRAFT/") { + var p = substr(pattern, 13); + var sim = props.globals.getNode("/sim"); + foreach (var c; sim.getChildren("fg-aircraft")) { + pattern = c.getValue() ~ "/" ~ p; + append(rules, [pattern, allow]); + printlog("info", "IORules: appending ", pattern); + } + } else { + if (substr(pattern, 0, 9) == "$FG_ROOT/") + pattern = root ~ "/" ~ substr(pattern, 9); + elsif (substr(pattern, 0, 9) == "$FG_HOME/") + pattern = home ~ "/" ~ substr(pattern, 9); + + append(rules, [pattern, allow]); + printlog("info", "IORules: appending ", pattern); + } } close(file); return path;