diff --git a/repos/base-linux/run/lx_fs_notify.run b/repos/base-linux/run/lx_fs_notify.run
index f7b856aa6e..067e22be7a 100644
--- a/repos/base-linux/run/lx_fs_notify.run
+++ b/repos/base-linux/run/lx_fs_notify.run
@@ -47,10 +47,10 @@ install_config {
-
-
-
-
+
+
+
+
@@ -117,8 +117,8 @@ set init_run_fwrite_test {
-
-
+
+
@@ -153,8 +153,8 @@ set init_run_write_test {
-
-
+
+
diff --git a/repos/gems/recipes/pkg/dbg_download/runtime b/repos/gems/recipes/pkg/dbg_download/runtime
index a2896772f8..8e3adedde4 100644
--- a/repos/gems/recipes/pkg/dbg_download/runtime
+++ b/repos/gems/recipes/pkg/dbg_download/runtime
@@ -60,7 +60,7 @@
-
+
@@ -74,7 +74,7 @@
-
+
@@ -101,10 +101,10 @@
-
+
-
+
@@ -118,13 +118,13 @@
-
+
-
-
+
+
diff --git a/repos/gems/recipes/pkg/file_vault/runtime b/repos/gems/recipes/pkg/file_vault/runtime
index b1a84f3cbe..3a215f05eb 100644
--- a/repos/gems/recipes/pkg/file_vault/runtime
+++ b/repos/gems/recipes/pkg/file_vault/runtime
@@ -86,17 +86,17 @@
-
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -111,7 +111,7 @@
-
+
diff --git a/repos/gems/recipes/pkg/test-file_vault/runtime b/repos/gems/recipes/pkg/test-file_vault/runtime
index 28b115b49d..a4aff2513e 100644
--- a/repos/gems/recipes/pkg/test-file_vault/runtime
+++ b/repos/gems/recipes/pkg/test-file_vault/runtime
@@ -85,7 +85,7 @@
-
+
@@ -104,7 +104,7 @@
-
+
@@ -118,26 +118,27 @@
-
+
-
- label="ui_report"
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime b/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime
index 98c86851f9..b15097d772 100644
--- a/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime
+++ b/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime
@@ -85,7 +85,7 @@
-
+
@@ -104,7 +104,7 @@
-
+
@@ -118,26 +118,27 @@
-
+
-
- label="ui_report"
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/repos/gems/recipes/pkg/touch_keyboard/runtime b/repos/gems/recipes/pkg/touch_keyboard/runtime
index a89175a96f..a9fc69edd8 100644
--- a/repos/gems/recipes/pkg/touch_keyboard/runtime
+++ b/repos/gems/recipes/pkg/touch_keyboard/runtime
@@ -27,8 +27,8 @@
-
-
+
+
diff --git a/repos/gems/recipes/pkg/trace_recorder/runtime b/repos/gems/recipes/pkg/trace_recorder/runtime
index 9636c920bc..1bc9d562d5 100644
--- a/repos/gems/recipes/pkg/trace_recorder/runtime
+++ b/repos/gems/recipes/pkg/trace_recorder/runtime
@@ -19,7 +19,7 @@
-
+
diff --git a/repos/gems/recipes/pkg/window_layouter/runtime b/repos/gems/recipes/pkg/window_layouter/runtime
index 062d6f50e2..ab7fef859c 100644
--- a/repos/gems/recipes/pkg/window_layouter/runtime
+++ b/repos/gems/recipes/pkg/window_layouter/runtime
@@ -33,7 +33,7 @@
-
+
@@ -42,7 +42,7 @@
-
+
diff --git a/repos/gems/recipes/raw/depot_download/depot_download.config b/repos/gems/recipes/raw/depot_download/depot_download.config
index 8bac909fc9..d11f769347 100644
--- a/repos/gems/recipes/raw/depot_download/depot_download.config
+++ b/repos/gems/recipes/raw/depot_download/depot_download.config
@@ -61,7 +61,7 @@
-
+
@@ -71,7 +71,7 @@
-
+
@@ -99,11 +99,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/repos/gems/recipes/raw/download_coreplus/init.config b/repos/gems/recipes/raw/download_coreplus/init.config
index 38acb78696..6933c1f956 100644
--- a/repos/gems/recipes/raw/download_coreplus/init.config
+++ b/repos/gems/recipes/raw/download_coreplus/init.config
@@ -27,7 +27,7 @@
-
+
cp /machine.vbox /disk0.vmdk /vm
@@ -38,8 +38,8 @@ cp /machine.vbox /disk0.vmdk /vm
-
-
+
+
@@ -82,7 +82,7 @@ cp /machine.vbox /disk0.vmdk /vm
-
+
@@ -126,7 +126,7 @@ cp /machine.vbox /disk0.vmdk /vm
-
+
diff --git a/repos/gems/run/depot_autopilot.run b/repos/gems/run/depot_autopilot.run
index 034c0889ee..dfc8e587e1 100644
--- a/repos/gems/run/depot_autopilot.run
+++ b/repos/gems/run/depot_autopilot.run
@@ -335,10 +335,10 @@ proc prepare_to_run_genode { } {
-
-
-
-
+
+
+
+
@@ -348,7 +348,7 @@ proc prepare_to_run_genode { } {
-
+
@@ -375,16 +375,16 @@ proc prepare_to_run_genode { } {
} [single_test_module_routes] {
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
@@ -110,7 +110,7 @@ install_config {
-
+
@@ -172,17 +172,17 @@ install_config {
-
-
+
+
-
-
-
-
+
+
+
+
@@ -216,7 +216,7 @@ install_config {
-
+
diff --git a/repos/gems/run/depot_download.run b/repos/gems/run/depot_download.run
index b0b55d70dc..f970050c5f 100644
--- a/repos/gems/run/depot_download.run
+++ b/repos/gems/run/depot_download.run
@@ -116,8 +116,8 @@ append config {
-
-
+
+
diff --git a/repos/gems/run/depot_query.run b/repos/gems/run/depot_query.run
index de0144e677..e80cae0051 100644
--- a/repos/gems/run/depot_query.run
+++ b/repos/gems/run/depot_query.run
@@ -68,8 +68,8 @@ install_config {
-
-
+
+
@@ -79,7 +79,7 @@ install_config {
-
+
diff --git a/repos/gems/run/depot_remove.run b/repos/gems/run/depot_remove.run
index 76695f0917..da0f55f01a 100644
--- a/repos/gems/run/depot_remove.run
+++ b/repos/gems/run/depot_remove.run
@@ -56,7 +56,7 @@ install_config {
-
+
diff --git a/repos/gems/run/file_vault.run b/repos/gems/run/file_vault.run
index ec3016d368..443062bd65 100644
--- a/repos/gems/run/file_vault.run
+++ b/repos/gems/run/file_vault.run
@@ -191,20 +191,21 @@ append config {
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/repos/gems/run/file_vault_client.run b/repos/gems/run/file_vault_client.run
index be0288ac54..3ba633d63a 100644
--- a/repos/gems/run/file_vault_client.run
+++ b/repos/gems/run/file_vault_client.run
@@ -216,8 +216,8 @@ append config {
-
-
+
+
@@ -269,7 +269,7 @@ if {[have_board linux]} {
-
@@ -288,7 +288,7 @@ if {[have_board linux]} {
-
@@ -315,7 +315,7 @@ if {[have_board linux]} {
-
+
@@ -334,7 +334,7 @@ if {[have_board linux]} {
-
+
@@ -354,20 +354,21 @@ append config {
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -381,7 +382,7 @@ append config {
-
+
diff --git a/repos/gems/run/file_vault_gui.run b/repos/gems/run/file_vault_gui.run
index 0000d018b2..6e59768ad0 100644
--- a/repos/gems/run/file_vault_gui.run
+++ b/repos/gems/run/file_vault_gui.run
@@ -165,7 +165,7 @@ append_if [have_board linux] config {
-
+
@@ -182,7 +182,7 @@ append_if [have_board linux] config {
-
+
@@ -200,7 +200,7 @@ append_if [expr ![have_board linux]] config {
-
+
@@ -215,7 +215,7 @@ append_if [expr ![have_board linux]] config {
-
+
@@ -243,17 +243,18 @@ append config {
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -265,7 +266,7 @@ append config {
-
+
diff --git a/repos/gems/run/menu_view.run b/repos/gems/run/menu_view.run
index 00e32527e6..2c7bdd5fe4 100644
--- a/repos/gems/run/menu_view.run
+++ b/repos/gems/run/menu_view.run
@@ -306,7 +306,7 @@ install_config {
-
+
@@ -314,7 +314,7 @@ install_config {
-
+
diff --git a/repos/gems/run/sculpt.run b/repos/gems/run/sculpt.run
index 742c99a057..199fb1442f 100644
--- a/repos/gems/run/sculpt.run
+++ b/repos/gems/run/sculpt.run
@@ -347,8 +347,8 @@ install_config {
-
-
+
+
@@ -386,10 +386,10 @@ install_config {
-
-
-
-
+
+
+
+
@@ -637,12 +637,10 @@ install_config {
-
-
-
-
-
-
+
+
+
+
@@ -670,10 +668,10 @@ install_config {
-
-
-
-
+
+
+
+
@@ -700,8 +698,8 @@ install_config {
-
-
+
+
} [log_route] [driver_routes] {
diff --git a/repos/gems/run/text_area.run b/repos/gems/run/text_area.run
index 26826070ca..8aae81d6ab 100644
--- a/repos/gems/run/text_area.run
+++ b/repos/gems/run/text_area.run
@@ -105,12 +105,12 @@ install_config {
-
+
-
-
+
+
@@ -121,13 +121,13 @@ install_config {
max_lines="10" min_width="600">
-
+
-
-
+
+
diff --git a/repos/gems/run/tresor_tester.run b/repos/gems/run/tresor_tester.run
index 8d142c4700..5d11a8f405 100644
--- a/repos/gems/run/tresor_tester.run
+++ b/repos/gems/run/tresor_tester.run
@@ -190,7 +190,7 @@ append config {
-
+
@@ -898,7 +898,7 @@ append config {
-
+
diff --git a/repos/gems/run/tresor_utils.run b/repos/gems/run/tresor_utils.run
index 07b71440e7..27a0e0c4d9 100644
--- a/repos/gems/run/tresor_utils.run
+++ b/repos/gems/run/tresor_utils.run
@@ -67,7 +67,7 @@ append config {
-
+
@@ -88,7 +88,7 @@ append config {
-
+
@@ -112,7 +112,7 @@ append config {
-
+
@@ -125,7 +125,7 @@ append config {
-
+
diff --git a/repos/gems/run/vfs_tresor.run b/repos/gems/run/vfs_tresor.run
index 296a0d7fe4..9463a1f4b2 100644
--- a/repos/gems/run/vfs_tresor.run
+++ b/repos/gems/run/vfs_tresor.run
@@ -108,7 +108,7 @@ append config {
-
+
@@ -122,10 +122,10 @@ append config {
-
+
-
+
@@ -162,9 +162,9 @@ append config {
-
+
-
+
-
-
+
+
@@ -250,8 +250,8 @@ append config {
-
-
+
+
diff --git a/repos/gems/sculpt/deploy/example b/repos/gems/sculpt/deploy/example
index 9058277385..4774763543 100644
--- a/repos/gems/sculpt/deploy/example
+++ b/repos/gems/sculpt/deploy/example
@@ -35,7 +35,8 @@
-
+
+
diff --git a/repos/gems/sculpt/deploy/falkon_web_browser b/repos/gems/sculpt/deploy/falkon_web_browser
index 0f32302cbf..7a39f15235 100644
--- a/repos/gems/sculpt/deploy/falkon_web_browser
+++ b/repos/gems/sculpt/deploy/falkon_web_browser
@@ -21,7 +21,7 @@
-
+
@@ -68,8 +68,8 @@
-
-
+
+
diff --git a/repos/gems/sculpt/deploy/window_manager b/repos/gems/sculpt/deploy/window_manager
index 49786e10d8..a5ba98e907 100644
--- a/repos/gems/sculpt/deploy/window_manager
+++ b/repos/gems/sculpt/deploy/window_manager
@@ -14,10 +14,10 @@
-
-
-
-
+
+
+
+
@@ -33,7 +33,7 @@
-
+
diff --git a/repos/gems/sculpt/launcher/direct_system_shell b/repos/gems/sculpt/launcher/direct_system_shell
index 8356892e47..2cdfea48ea 100644
--- a/repos/gems/sculpt/launcher/direct_system_shell
+++ b/repos/gems/sculpt/launcher/direct_system_shell
@@ -1,10 +1,10 @@
-
-
-
-
+
+
+
+
diff --git a/repos/gems/sculpt/launcher/download_debug_info b/repos/gems/sculpt/launcher/download_debug_info
index dac7938c24..cb281b0cb6 100644
--- a/repos/gems/sculpt/launcher/download_debug_info
+++ b/repos/gems/sculpt/launcher/download_debug_info
@@ -1,10 +1,10 @@
-
-
+
+
-
-
+
+
diff --git a/repos/gems/sculpt/launcher/report_dump b/repos/gems/sculpt/launcher/report_dump
index b8bcf2cb03..6f256431a8 100644
--- a/repos/gems/sculpt/launcher/report_dump
+++ b/repos/gems/sculpt/launcher/report_dump
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/repos/gems/sculpt/launcher/system_shell b/repos/gems/sculpt/launcher/system_shell
index 149c4855fb..29646af4ae 100644
--- a/repos/gems/sculpt/launcher/system_shell
+++ b/repos/gems/sculpt/launcher/system_shell
@@ -1,10 +1,10 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/repos/gems/sculpt/launcher/touch_keyboard b/repos/gems/sculpt/launcher/touch_keyboard
index 7828ab1f55..9fae38ddf0 100644
--- a/repos/gems/sculpt/launcher/touch_keyboard
+++ b/repos/gems/sculpt/launcher/touch_keyboard
@@ -2,6 +2,6 @@
-
+
diff --git a/repos/gems/sculpt/leitzentrale/default b/repos/gems/sculpt/leitzentrale/default
index 7e8cfeaa29..c8f5f7632a 100644
--- a/repos/gems/sculpt/leitzentrale/default
+++ b/repos/gems/sculpt/leitzentrale/default
@@ -190,7 +190,7 @@
-
+
@@ -200,7 +200,7 @@
-
+
@@ -287,11 +287,11 @@
-
+
-
+
diff --git a/repos/gems/sculpt/leitzentrale/phone b/repos/gems/sculpt/leitzentrale/phone
index 01fc680b50..35ebeff5a2 100644
--- a/repos/gems/sculpt/leitzentrale/phone
+++ b/repos/gems/sculpt/leitzentrale/phone
@@ -107,7 +107,7 @@
-
+
diff --git a/repos/gems/src/app/depot_download_manager/gen_chroot.cc b/repos/gems/src/app/depot_download_manager/gen_chroot.cc
index 11c9604a2e..b9c722a588 100644
--- a/repos/gems/src/app/depot_download_manager/gen_chroot.cc
+++ b/repos/gems/src/app/depot_download_manager/gen_chroot.cc
@@ -36,7 +36,7 @@ void Depot_download_manager::gen_chroot_start_content(Xml_generator &xml,
xml.node("service", [&] () {
xml.attribute("name", File_system::Session::service_name());
xml.node("parent", [&] () {
- xml.attribute("label", "depot_rw"); });
+ xml.attribute("identity", "depot_rw"); });
});
gen_parent_unscoped_rom_route(xml, "chroot");
gen_parent_unscoped_rom_route(xml, "ld.lib.so");
diff --git a/repos/gems/src/app/depot_download_manager/gen_depot_query.cc b/repos/gems/src/app/depot_download_manager/gen_depot_query.cc
index 1bdccafa5c..8789c92cdb 100644
--- a/repos/gems/src/app/depot_download_manager/gen_depot_query.cc
+++ b/repos/gems/src/app/depot_download_manager/gen_depot_query.cc
@@ -30,7 +30,7 @@ void Depot_download_manager::gen_depot_query_start_content(Xml_generator &xml,
xml.node("dir", [&] () {
xml.attribute("name", "depot");
xml.node("fs", [&] () {
- xml.attribute("label", "depot"); });
+ xml.attribute("label", "depot -> /"); });
});
});
@@ -119,7 +119,7 @@ void Depot_download_manager::gen_depot_query_start_content(Xml_generator &xml,
xml.node("service", [&] () {
xml.attribute("name", File_system::Session::service_name());
xml.node("parent", [&] () {
- xml.attribute("label", "depot"); });
+ xml.attribute("identity", "depot"); });
});
gen_parent_unscoped_rom_route(xml, "depot_query");
gen_parent_unscoped_rom_route(xml, "ld.lib.so");
diff --git a/repos/gems/src/app/depot_download_manager/gen_extract.cc b/repos/gems/src/app/depot_download_manager/gen_extract.cc
index 856b1534a9..423da5ed41 100644
--- a/repos/gems/src/app/depot_download_manager/gen_extract.cc
+++ b/repos/gems/src/app/depot_download_manager/gen_extract.cc
@@ -37,7 +37,7 @@ void Depot_download_manager::gen_extract_start_content(Xml_generator &xml,
xml.attribute("name", "public");
xml.node("fs", [&] () {
xml.attribute("buffer_size", 144u << 10);
- xml.attribute("label", "public"); });
+ xml.attribute("label", "public -> /"); });
});
xml.node("dir", [&] () {
xml.attribute("name", "depot");
@@ -45,7 +45,7 @@ void Depot_download_manager::gen_extract_start_content(Xml_generator &xml,
xml.attribute("name", user);
xml.node("fs", [&] () {
xml.attribute("buffer_size", 144u << 10);
- xml.attribute("label", user_path); });
+ xml.attribute("label", Path(user_path, " -> /")); });
});
});
xml.node("dir", [&] () {
@@ -75,13 +75,13 @@ void Depot_download_manager::gen_extract_start_content(Xml_generator &xml,
xml.node("route", [&] () {
xml.node("service", [&] () {
xml.attribute("name", File_system::Session::service_name());
- xml.attribute("label", "public");
+ xml.attribute("label_prefix", "public ->");
xml.node("parent", [&] () {
- xml.attribute("label", "public"); });
+ xml.attribute("identity", "public"); });
});
xml.node("service", [&] () {
xml.attribute("name", File_system::Session::service_name());
- xml.attribute("label", user_path);
+ xml.attribute("label_prefix", Path(user_path, " ->"));
xml.node("child", [&] () {
xml.attribute("name", user_path); });
});
diff --git a/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc b/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc
index b028956746..af4102e44b 100644
--- a/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc
+++ b/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc
@@ -41,7 +41,7 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml,
xml.attribute("name", "download");
xml.node("fs", [&] {
xml.attribute("buffer_size", 144u << 10);
- xml.attribute("label", "download"); });
+ xml.attribute("label", "download -> /"); });
});
xml.node("dir", [&] {
xml.attribute("name", "dev");
@@ -64,7 +64,7 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml,
xml.node("pipe", [&] { });
});
xml.node("fs", [&] {
- xml.attribute("label", "tcpip"); });
+ xml.attribute("label", "tcpip -> /"); });
});
import.for_each_download([&] (Archive::Path const &path) {
@@ -93,15 +93,15 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml,
xml.node("route", [&] {
xml.node("service", [&] {
xml.attribute("name", File_system::Session::service_name());
- xml.attribute("label", "download");
+ xml.attribute("label_prefix", "download ->");
xml.node("parent", [&] {
- xml.attribute("label", "public_rw"); });
+ xml.attribute("identity", "public_rw"); });
});
xml.node("service", [&] {
xml.attribute("name", File_system::Session::service_name());
- xml.attribute("label", "tcpip");
+ xml.attribute("label_prefix", "tcpip ->");
xml.node("parent", [&] {
- xml.attribute("label", "tcpip"); });
+ xml.attribute("identity", "tcpip"); });
});
gen_parent_unscoped_rom_route(xml, "fetchurl");
gen_parent_unscoped_rom_route(xml, "ld.lib.so");
diff --git a/repos/gems/src/app/depot_download_manager/gen_verify.cc b/repos/gems/src/app/depot_download_manager/gen_verify.cc
index 2762edd46a..bb06135dcc 100644
--- a/repos/gems/src/app/depot_download_manager/gen_verify.cc
+++ b/repos/gems/src/app/depot_download_manager/gen_verify.cc
@@ -34,13 +34,13 @@ void Depot_download_manager::gen_verify_start_content(Xml_generator &xml,
xml.attribute("name", "public");
xml.node("fs", [&] () {
xml.attribute("buffer_size", 144u << 10);
- xml.attribute("label", "public"); });
+ xml.attribute("label", "public -> /"); });
});
xml.node("dir", [&] () {
xml.attribute("name", "depot");
xml.node("fs", [&] () {
xml.attribute("buffer_size", 144u << 10);
- xml.attribute("label", "depot"); });
+ xml.attribute("label", "depot -> /"); });
});
xml.node("dir", [&] () {
xml.attribute("name", "dev");
@@ -66,15 +66,15 @@ void Depot_download_manager::gen_verify_start_content(Xml_generator &xml,
xml.node("route", [&] () {
xml.node("service", [&] () {
xml.attribute("name", File_system::Session::service_name());
- xml.attribute("label", "public");
+ xml.attribute("label_prefix", "public ->");
xml.node("parent", [&] () {
- xml.attribute("label", "public"); });
+ xml.attribute("identity", "public"); });
});
xml.node("service", [&] () {
xml.attribute("name", File_system::Session::service_name());
- xml.attribute("label", "depot");
+ xml.attribute("label_prefix", "depot ->");
xml.node("parent", [&] () {
- xml.attribute("label", "depot"); });
+ xml.attribute("identity", "depot"); });
});
gen_parent_unscoped_rom_route(xml, "verify");
gen_parent_unscoped_rom_route(xml, "ld.lib.so");
diff --git a/repos/gems/src/app/file_vault/README b/repos/gems/src/app/file_vault/README
index 3476835875..143e5b8dc0 100644
--- a/repos/gems/src/app/file_vault/README
+++ b/repos/gems/src/app/file_vault/README
@@ -43,7 +43,7 @@ an example File Vault configuration with default values:
!
!
!
-!
+!
!
!
!
diff --git a/repos/gems/src/app/file_vault/sandbox.h b/repos/gems/src/app/file_vault/sandbox.h
index 92d0583bb1..a9cbf1ed12 100644
--- a/repos/gems/src/app/file_vault/sandbox.h
+++ b/repos/gems/src/app/file_vault/sandbox.h
@@ -44,7 +44,7 @@ namespace File_vault {
void gen_child_route(Xml_generator &xml, char const *child, char const *service, char const *label = "")
{
gen_route(xml, service, label, [&] { gen_named_node(xml, "child", child, [] { }); });
- };
+ }
void gen_parent_route(Xml_generator &xml, char const *service, char const *src_label = "", char const *dst_label = "")
{
@@ -77,10 +77,11 @@ namespace File_vault {
gen_parent_route(xml, "LOG");
}
- void gen_vfs_policy(Xml_generator &xml, char const *label, char const *root, bool writeable)
+ void gen_vfs_policy(Xml_generator &xml, char const *label_prefix,
+ char const *root, bool writeable)
{
xml.node("policy", [&] {
- xml.attribute("label", label);
+ xml.attribute("label_prefix ", label_prefix);
xml.attribute("root", root);
xml.attribute("writeable", writeable ? "yes" : "no");
});
@@ -186,13 +187,13 @@ namespace File_vault {
xml.node("vfs", [&] {
xml.node("fs", [&] {
xml.attribute("buffer_size", "1M");
- xml.attribute("label", "tresor_fs");
+ xml.attribute("label", "tresor_fs -> /");
});
gen_named_node(xml, "tresor_crypto_aes_cbc", "crypto", [] { });
gen_named_node(xml, "dir", "trust_anchor", [&] {
xml.node("fs", [&] {
xml.attribute("buffer_size", "1M");
- xml.attribute("label", "trust_anchor");
+ xml.attribute("label", "trust_anchor -> /");
});
});
gen_named_node(xml, "dir", "dev", [&] {
@@ -214,8 +215,8 @@ namespace File_vault {
gen_vfs_policy(xml, "sync_to_tresor_vfs_init -> ", "/dev", true);
});
xml.node("route", [&] {
- gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor");
- gen_parent_route(xml, "File_system", "tresor_fs");
+ gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor -> /");
+ gen_parent_route(xml, "File_system", "tresor_fs -> /");
gen_common_routes(xml);
});
});
@@ -231,7 +232,7 @@ namespace File_vault {
gen_named_node(xml, "dir", "storage_dir", [&] {
xml.node("fs", [&] {
xml.attribute("buffer_size", "1M");
- xml.attribute("label", "storage_dir");
+ xml.attribute("label", "storage_dir -> /");
});
});
gen_named_node(xml, "dir", "dev", [&] {
@@ -251,7 +252,7 @@ namespace File_vault {
gen_vfs_policy(xml, "tresor_vfs -> trust_anchor", "/dev/tresor_trust_anchor", true);
});
xml.node("route", [&] {
- gen_parent_route(xml, "File_system", "storage_dir");
+ gen_parent_route(xml, "File_system", "storage_dir -> /");
gen_common_routes(xml);
});
});
@@ -291,7 +292,7 @@ namespace File_vault {
xml.attribute("path", path);
xml.node("vfs", [&] {
gen_named_node(xml, "dir", "tresor", [&] {
- xml.node("fs", [&] { xml.attribute("label", "tresor"); }); }); });
+ xml.node("fs", [&] { xml.attribute("label", "tresor -> /"); }); }); });
});
xml.node("route", [&] {
gen_parent_route(xml, "File_system");
@@ -358,10 +359,10 @@ namespace File_vault {
xml.attribute("trust_anchor_dir", "/trust_anchor");
xml.node("vfs", [&] {
gen_named_node(xml, "dir", "trust_anchor", [&] {
- xml.node("fs", [&] { xml.attribute("label", "trust_anchor"); }); }); });
+ xml.node("fs", [&] { xml.attribute("label", "trust_anchor -> /"); }); }); });
});
xml.node("route", [&] {
- gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor");
+ gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor -> /");
gen_common_routes(xml);
});
});
@@ -382,12 +383,12 @@ namespace File_vault {
xml.node("fs", [&] { xml.attribute("buffer_size", "1M"); });
gen_named_node(xml, "tresor_crypto_aes_cbc", "crypto", [] { });
gen_named_node(xml, "dir", "trust_anchor", [&] {
- xml.node("fs", [&] { xml.attribute("label", "trust_anchor"); }); });
+ xml.node("fs", [&] { xml.attribute("label", "trust_anchor -> /"); }); });
});
sb_config.generate_xml(xml);
});
xml.node("route", [&] {
- gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor");
+ gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor -> /");
gen_parent_route(xml, "File_system");
gen_common_routes(xml);
});
diff --git a/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc b/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc
index 9126cf5727..2346ab20a1 100644
--- a/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc
+++ b/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc
@@ -200,7 +200,7 @@ void Distant_runtime::gen_start_nodes(Xml_generator &xml) const
xml.node("dir", [&] {
xml.attribute("name", "fonts");
xml.node("fs", [&] {
- xml.attribute("label", "fonts");
+ xml.attribute("label", "fonts -> /");
});
});
});
@@ -234,9 +234,9 @@ void Distant_runtime::gen_start_nodes(Xml_generator &xml) const
});
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "fonts");
+ xml.attribute("label_prefix", "fonts ->");
xml.node("parent", [&] {
- xml.attribute("label", "leitzentrale -> fonts"); }); });
+ xml.attribute("identity", "leitzentrale -> fonts"); }); });
});
});
}
diff --git a/repos/gems/src/app/sculpt_manager/model/file_browser_state.h b/repos/gems/src/app/sculpt_manager/model/file_browser_state.h
index b35d1f6531..e4466612a5 100644
--- a/repos/gems/src/app/sculpt_manager/model/file_browser_state.h
+++ b/repos/gems/src/app/sculpt_manager/model/file_browser_state.h
@@ -105,11 +105,11 @@ struct Sculpt::File_browser_state : Noncopyable
if (browsed_fs == "config") {
xml.node("parent", [&] {
- xml.attribute("label", "config"); });
+ xml.attribute("identity", "config"); });
}
else if (browsed_fs == "report") {
xml.node("parent", [&] {
- xml.attribute("label", "report"); });
+ xml.attribute("identity", "report"); });
}
else {
xml.node("child", [&] {
@@ -181,19 +181,19 @@ struct Sculpt::File_browser_state : Noncopyable
xml.attribute("label", "leitzentrale -> editor"); }); });
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "fonts");
+ xml.attribute("label_prefix", "fonts ->");
xml.node("parent", [&] {
- xml.attribute("label", "leitzentrale -> fonts"); }); });
+ xml.attribute("identity", "leitzentrale -> fonts"); }); });
gen_service_node<::File_system::Session>(xml, [&] {
if (browsed_fs == "config") {
xml.node("parent", [&] {
- xml.attribute("label", "config"); });
+ xml.attribute("identity", "config"); });
}
else if (browsed_fs == "report") {
xml.node("parent", [&] {
- xml.attribute("label", "report"); });
+ xml.attribute("identity", "report"); });
}
else {
xml.node("child", [&] {
diff --git a/repos/gems/src/app/sculpt_manager/model/route.h b/repos/gems/src/app/sculpt_manager/model/route.h
index 3bcc3cd602..485f765869 100644
--- a/repos/gems/src/app/sculpt_manager/model/route.h
+++ b/repos/gems/src/app/sculpt_manager/model/route.h
@@ -146,10 +146,17 @@ struct Sculpt::Route : List_model::Element
if (required_label.valid()) {
- if (selected_service->match_label == Service::Match_label::LAST)
+ switch (selected_service->match_label) {
+ case Service::Match_label::LAST:
xml.attribute("label_last", required_label);
- else
+ break;
+ case Service::Match_label::FS:
+ xml.attribute("label_prefix", Label(required_label, " ->"));
+ break;
+ case Service::Match_label::EXACT:
xml.attribute("label", required_label);
+ break;
+ }
}
selected_service->gen_xml(xml);
diff --git a/repos/gems/src/app/sculpt_manager/model/runtime_config.h b/repos/gems/src/app/sculpt_manager/model/runtime_config.h
index 8f8fc915b2..8893f1f57e 100644
--- a/repos/gems/src/app/sculpt_manager/model/runtime_config.h
+++ b/repos/gems/src/app/sculpt_manager/model/runtime_config.h
@@ -312,8 +312,8 @@ class Sculpt::Runtime_config
_event { _r, Type::EVENT, "filtered input events" },
_lz_capture{ _r, Type::CAPTURE, "management GUI", "leitzentrale" },
_capture { _r, Type::CAPTURE, "system GUI", "global" },
- _config_fs { _r, Type::FILE_SYSTEM, "writeable system configuration", "config" },
- _report_fs { _r, Type::FILE_SYSTEM, "read-only system reports", "report" },
+ _config_fs { _r, Type::FILE_SYSTEM, "writeable system configuration", "config", Service::Match_label::FS },
+ _report_fs { _r, Type::FILE_SYSTEM, "read-only system reports", "report", Service::Match_label::FS },
_capslock { _r, Type::ROM, "global capslock state", "capslock" },
_vimrc { _r, Type::ROM, "default vim configuration", "config -> vimrc" },
_fonts { _r, Type::ROM, "system font configuration", "config -> managed/fonts" },
diff --git a/repos/gems/src/app/sculpt_manager/model/service.h b/repos/gems/src/app/sculpt_manager/model/service.h
index 39d316e5e9..580966d1be 100644
--- a/repos/gems/src/app/sculpt_manager/model/service.h
+++ b/repos/gems/src/app/sculpt_manager/model/service.h
@@ -30,13 +30,13 @@ struct Sculpt::Service
RM, IO_MEM, IO_PORT, IRQ, REPORT, ROM, TERMINAL, TRACE, USB, RTC, I2C,
PLATFORM, PIN_STATE, PIN_CONTROL, VM, PD, UPLINK, PLAY, RECORD, UNDEFINED };
- enum class Match_label { EXACT, LAST };
+ enum class Match_label { EXACT, LAST, FS };
Start_name server { }; /* invalid for parent service */
Type type;
Label label;
Info info;
- Match_label match_label { Match_label::EXACT };
+ Match_label match_label;
/**
* Return name attribute value of node
@@ -81,13 +81,18 @@ struct Sculpt::Service
* Constructor for child service
*/
Service(Start_name const &server, Type type, Label const &label)
- : server(server), type(type), label(label), info(Subst("_", " ", server)) { }
+ :
+ server(server), type(type), label(label), info(Subst("_", " ", server)),
+ match_label(type == Type::FILE_SYSTEM ? Match_label::FS : Match_label::EXACT)
+ { }
/**
* Constructor for default_fs_rw
*/
Service(Start_name const &server, Type type, Label const &label, Info const &info)
- : server(server), type(type), label(label), info(info) { }
+ :
+ server(server), type(type), label(label), info(info), match_label(Match_label::FS)
+ { }
/**
* Constructor for parent service
@@ -109,6 +114,9 @@ struct Sculpt::Service
if (label.valid() && match_label == Match_label::EXACT)
xml.attribute("label", label);
+
+ if (label.valid() && match_label == Match_label::FS)
+ xml.attribute("identity", label);
});
}
};
diff --git a/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc b/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc
index 675034521d..d4266fa04a 100644
--- a/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc
+++ b/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc
@@ -39,8 +39,8 @@ void Sculpt::gen_fs_tool_start_content(Xml_generator &xml, Fs_tool_version versi
xml.attribute("buffer_size", buffer_size); }); });
};
- gen_fs("rw", "target", "1M");
- gen_fs("config", "config", "128K");
+ gen_fs("rw", "target -> /", "1M");
+ gen_fs("config", "config -> /", "128K");
});
operations.gen_fs_tool_config(xml);
@@ -49,7 +49,7 @@ void Sculpt::gen_fs_tool_start_content(Xml_generator &xml, Fs_tool_version versi
xml.node("route", [&] {
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "target");
+ xml.attribute("label_prefix", "target ->");
gen_named_node(xml, "child", "default_fs_rw"); });
gen_parent_rom_route(xml, "fs_tool");
@@ -61,7 +61,7 @@ void Sculpt::gen_fs_tool_start_content(Xml_generator &xml, Fs_tool_version versi
gen_parent_route (xml);
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "config");
- xml.node("parent", [&] { xml.attribute("label", "config"); }); });
+ xml.attribute("label_prefix", "config ->");
+ xml.node("parent", [&] { xml.attribute("identity", "config"); }); });
});
}
diff --git a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc
index 7f1fe24ed1..b87562d54f 100644
--- a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc
+++ b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc
@@ -80,7 +80,7 @@ static void gen_vfs_start(Xml_generator &xml,
gen_named_node(xml, "dir", label, [&] {
xml.node("fs", [&] {
xml.attribute("buffer_size", 272u << 10);
- xml.attribute("label", label); }); }); };
+ xml.attribute("label", prefixed_label(label, String<8>("/"))); }); }); };
fs_dir("config");
fs_dir("report");
@@ -111,13 +111,13 @@ static void gen_vfs_start(Xml_generator &xml,
xml.node("route", [&] {
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "config");
- xml.node("parent", [&] { xml.attribute("label", "config"); });
+ xml.attribute("label_prefix", "config ->");
+ xml.node("parent", [&] { xml.attribute("identity", "config"); });
});
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "report");
- xml.node("parent", [&] { xml.attribute("label", "report"); });
+ xml.attribute("label_prefix", "report ->");
+ xml.node("parent", [&] { xml.attribute("identity", "report"); });
});
gen_service_node(xml, [&] {
@@ -242,18 +242,13 @@ void Sculpt::gen_inspect_view(Xml_generator &xml,
xml.node("route", [&] {
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "config");
- xml.node("parent", [&] { xml.attribute("label", "config"); });
+ xml.attribute("label_prefix", "config ->");
+ xml.node("parent", [&] { xml.attribute("identity", "config"); });
});
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "report");
- xml.node("parent", [&] { xml.attribute("label", "report"); });
- });
-
- gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "report");
- xml.node("parent", [&] { xml.attribute("label", "report"); });
+ xml.attribute("label_prefix", "report ->");
+ xml.node("parent", [&] { xml.attribute("identity", "report"); });
});
gen_parent_rom_route(xml, "ld.lib.so");
@@ -283,16 +278,13 @@ void Sculpt::gen_inspect_view(Xml_generator &xml,
for_each_inspected_storage_target(devices, [&] (Storage_target const &target) {
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label_last", target.label());
- gen_named_node(xml, "child", target.fs());
- });
- });
+ xml.attribute("label_prefix", Session_label("vfs -> ", target.label(), " ->"));
+ gen_named_node(xml, "child", target.fs()); }); });
if (ram_fs_state.inspected)
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label_last", "ram");
- gen_named_node(xml, "child", "ram_fs");
- });
+ xml.attribute("label_prefix", "vfs -> ram ->");
+ gen_named_node(xml, "child", "ram_fs"); });
gen_service_node(xml, [&] {
xml.node("parent", [&] {
diff --git a/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc b/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc
index 166f14a740..7943d2365a 100644
--- a/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc
+++ b/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc
@@ -49,6 +49,6 @@ void Sculpt::gen_launcher_query_start_content(Xml_generator &xml)
gen_service_node<::File_system::Session>(xml, [&] {
xml.node("parent", [&] {
- xml.attribute("label", "config"); }); });
+ xml.attribute("identity", "config"); }); });
});
}
diff --git a/repos/gems/src/app/sculpt_manager/runtime/prepare.cc b/repos/gems/src/app/sculpt_manager/runtime/prepare.cc
index 26917614e6..da376c99fb 100644
--- a/repos/gems/src/app/sculpt_manager/runtime/prepare.cc
+++ b/repos/gems/src/app/sculpt_manager/runtime/prepare.cc
@@ -58,10 +58,10 @@ void Sculpt::gen_prepare_vfs_start(Xml_generator &xml)
});
gen_named_node(xml, "dir", "rw", [&] {
- xml.node("fs", [&] { xml.attribute("label", "target"); }); });
+ xml.node("fs", [&] { xml.attribute("label", "target -> /"); }); });
gen_named_node(xml, "dir", "config", [&] {
- xml.node("fs", [&] { xml.attribute("label", "config"); }); });
+ xml.node("fs", [&] { xml.attribute("label", "config -> /"); }); });
gen_named_node(xml, "rom", "VERSION");
});
@@ -184,7 +184,7 @@ void Sculpt::gen_prepare_start_content(Xml_generator &xml, Prepare_version versi
xml.node("route", [&] {
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "vfs -> target");
+ xml.attribute("label_prefix", "vfs -> target ->");
gen_named_node(xml, "child", "default_fs_rw"); });
gen_parent_rom_route(xml, "ld.lib.so");
@@ -203,7 +203,7 @@ void Sculpt::gen_prepare_start_content(Xml_generator &xml, Prepare_version versi
gen_parent_route (xml);
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", "vfs -> config");
- xml.node("parent", [&] { xml.attribute("label", "config"); }); });
+ xml.attribute("label_prefix", "vfs -> config ->");
+ xml.node("parent", [&] { xml.attribute("identity", "config"); }); });
});
}
diff --git a/repos/gems/src/app/sculpt_manager/runtime/update.cc b/repos/gems/src/app/sculpt_manager/runtime/update.cc
index 98b8947599..3a0c497f99 100644
--- a/repos/gems/src/app/sculpt_manager/runtime/update.cc
+++ b/repos/gems/src/app/sculpt_manager/runtime/update.cc
@@ -24,14 +24,14 @@ void Sculpt::gen_update_start_content(Xml_generator &xml)
xml.node("route", [&] {
using Label = String<32>;
- auto gen_fs = [&] (Label const &label, Label const &server) {
+ auto gen_fs = [&] (Label const &label_prefix, Label const &server) {
gen_service_node<::File_system::Session>(xml, [&] {
- xml.attribute("label", label);
+ xml.attribute("label_prefix", label_prefix);
gen_named_node(xml, "child", server); }); };
/* connect file-system sessions to chroot instances */
- gen_fs("depot", "depot_rw");
- gen_fs("public", "public_rw");
+ gen_fs("depot ->", "depot_rw");
+ gen_fs("public ->", "public_rw");
gen_parent_rom_route(xml, "ld.lib.so");
gen_parent_rom_route(xml, "vfs.lib.so");
diff --git a/repos/gems/src/lib/dialog/sandboxed_runtime.cc b/repos/gems/src/lib/dialog/sandboxed_runtime.cc
index d8e204ae14..cfdf1e30a2 100644
--- a/repos/gems/src/lib/dialog/sandboxed_runtime.cc
+++ b/repos/gems/src/lib/dialog/sandboxed_runtime.cc
@@ -316,9 +316,9 @@ void Sandboxed_runtime::Menu_view_state::gen_start_node(Xml_generator &xml, View
xml.node("service", [&] () {
xml.attribute("name", "File_system");
- xml.attribute("label", "fonts");
+ xml.attribute("label_prefix", "fonts ->");
xml.node("parent", [&] () {
- xml.attribute("label", "fonts"); });
+ xml.attribute("identity", "fonts"); });
});
auto parent_route = [&] (auto const &service)
diff --git a/repos/libports/recipes/pkg/gcov/runtime b/repos/libports/recipes/pkg/gcov/runtime
index 8e4edecf46..9f8b2354fd 100644
--- a/repos/libports/recipes/pkg/gcov/runtime
+++ b/repos/libports/recipes/pkg/gcov/runtime
@@ -39,8 +39,8 @@
-
-
+
+
diff --git a/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime b/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime
index 4b836ba4f2..0b14a245c7 100644
--- a/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime
+++ b/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime
@@ -39,8 +39,8 @@
-
-
+
+
@@ -70,8 +70,8 @@
-
-
+
+
@@ -85,7 +85,7 @@
-
+
@@ -118,10 +118,10 @@
-
+
-
+
diff --git a/repos/libports/recipes/raw/qt5_textedit/textedit.config b/repos/libports/recipes/raw/qt5_textedit/textedit.config
index de37861a9f..b088548a20 100644
--- a/repos/libports/recipes/raw/qt5_textedit/textedit.config
+++ b/repos/libports/recipes/raw/qt5_textedit/textedit.config
@@ -5,7 +5,7 @@
2018-01-01 00:01
-
+
diff --git a/repos/libports/src/app/extract/README b/repos/libports/src/app/extract/README
index ccc6ebdd62..50cb9b774e 100644
--- a/repos/libports/src/app/extract/README
+++ b/repos/libports/src/app/extract/README
@@ -10,8 +10,8 @@ multiple archives one at a time:
!
!
-!
-!
+!
+!
!
!
!
diff --git a/repos/libports/src/app/fetchurl/README b/repos/libports/src/app/fetchurl/README
index 9b79cc173d..0c8ee9d3d9 100644
--- a/repos/libports/src/app/fetchurl/README
+++ b/repos/libports/src/app/fetchurl/README
@@ -46,7 +46,7 @@ Use the socket plugin of an other vfs (store file in a directory):
! 01234567890123456789
!
!
-!
+!
!
!
diff --git a/repos/libports/src/lib/gcov/libc/libc.cc b/repos/libports/src/lib/gcov/libc/libc.cc
index d33f660954..aeb723b625 100644
--- a/repos/libports/src/lib/gcov/libc/libc.cc
+++ b/repos/libports/src/lib/gcov/libc/libc.cc
@@ -52,7 +52,7 @@ struct Gcov_env
* VFS.
*/
- File_system::Connection fs { env, fs_alloc, "gcov_data" };
+ File_system::Connection fs { env, fs_alloc, "gcov_data -> /" };
seek_off_t seek_offset { 0 };
Io_signal_handler _fs_signal_handler {
diff --git a/repos/os/include/file_system_session/connection.h b/repos/os/include/file_system_session/connection.h
index defb0b16ef..d588943677 100644
--- a/repos/os/include/file_system_session/connection.h
+++ b/repos/os/include/file_system_session/connection.h
@@ -58,22 +58,19 @@ struct File_system::Connection : Genode::Connection, Session_client
*
* \param tx_buffer_alloc allocator used for managing the
* transmission buffer
- * \param label session label
- * \param root root directory of session
+ * \param label session label and client-preferred root directory
* \param writeable session is writeable
* \param tx_buf_size size of transmission buffer in bytes
*/
Connection(Genode::Env &env,
Genode::Range_allocator &tx_block_alloc,
- Label const &label = Label(),
- char const *root = "/",
+ Label const &label = Label("/"),
bool writeable = true,
size_t tx_buf_size = DEFAULT_TX_BUF_SIZE)
:
Genode::Connection(env, label,
Ram_quota { 8*1024*sizeof(long) + tx_buf_size },
- Args("root=\"", root, "\", "
- "writeable=", writeable, ", "
+ Args("writeable=", writeable, ", "
"tx_buf_size=", tx_buf_size)),
Session_client(cap(), tx_block_alloc, env.rm())
{ }
diff --git a/repos/os/recipes/pkg/cpu_balancer_config/runtime b/repos/os/recipes/pkg/cpu_balancer_config/runtime
index ac9172cadc..165946aa9f 100644
--- a/repos/os/recipes/pkg/cpu_balancer_config/runtime
+++ b/repos/os/recipes/pkg/cpu_balancer_config/runtime
@@ -34,7 +34,7 @@
-
+
@@ -43,7 +43,7 @@
-
+
diff --git a/repos/os/run/internet_checksum.run b/repos/os/run/internet_checksum.run
index cf726460b7..418c0040c6 100644
--- a/repos/os/run/internet_checksum.run
+++ b/repos/os/run/internet_checksum.run
@@ -47,7 +47,7 @@ install_config {
-
+
diff --git a/repos/os/run/lx_fs_import.run b/repos/os/run/lx_fs_import.run
index 7f00743094..39d7859d27 100644
--- a/repos/os/run/lx_fs_import.run
+++ b/repos/os/run/lx_fs_import.run
@@ -45,7 +45,7 @@ install_config {
-
+
diff --git a/repos/os/run/platform.run b/repos/os/run/platform.run
index 16592222ea..1f2120359f 100644
--- a/repos/os/run/platform.run
+++ b/repos/os/run/platform.run
@@ -49,8 +49,8 @@ install_config {
-
-
+
+
diff --git a/repos/os/src/lib/vfs/fs_file_system.h b/repos/os/src/lib/vfs/fs_file_system.h
index 022d926d2a..2d25cf153a 100644
--- a/repos/os/src/lib/vfs/fs_file_system.h
+++ b/repos/os/src/lib/vfs/fs_file_system.h
@@ -34,9 +34,6 @@ class Vfs::Fs_file_system : public File_system, private Remote_io
using Label_string = Genode::String<64>;
Label_string _label;
- using Root_string = Genode::String<::File_system::MAX_NAME_LEN>;
- Root_string _root;
-
::File_system::Connection _fs;
bool _write_would_block = false;
@@ -568,13 +565,17 @@ class Vfs::Fs_file_system : public File_system, private Remote_io
Fs_file_system(Vfs::Env &env, Genode::Xml_node config)
:
_env(env),
- _label(config.attribute_value("label", Label_string())),
- _root( config.attribute_value("root", Root_string())),
+ _label(config.attribute_value("label", Label_string("/"))),
_fs(_env.env(), _fs_packet_alloc,
- _label.string(), _root.string(),
+ _label,
config.attribute_value("writeable", true),
buffer_size(config))
{
+ if (config.has_attribute("root")) {
+ Genode::warning("vfs: node uses deprecated 'root' attribute.");
+ Genode::warning(" Append the root dir to the label instead.");
+ }
+
_fs.sigh(_signal_handler);
}
diff --git a/repos/os/src/server/cached_fs_rom/main.cc b/repos/os/src/server/cached_fs_rom/main.cc
index 645ae46832..3f87a908b7 100644
--- a/repos/os/src/server/cached_fs_rom/main.cc
+++ b/repos/os/src/server/cached_fs_rom/main.cc
@@ -290,7 +290,7 @@ struct Cached_fs_rom::Main final : Genode::Session_request_handler
Heap heap { env.pd(), env.rm() };
Allocator_avl fs_tx_block_alloc { &heap };
- File_system::Connection fs { env, fs_tx_block_alloc, "", "/", false, 4*1024*1024 };
+ File_system::Connection fs { env, fs_tx_block_alloc, "/", false, 4*1024*1024 };
Session_requests_rom session_requests { env, *this };
diff --git a/repos/os/src/server/chroot/component.cc b/repos/os/src/server/chroot/component.cc
index 2bb97037c6..1b0084b50b 100644
--- a/repos/os/src/server/chroot/component.cc
+++ b/repos/os/src/server/chroot/component.cc
@@ -64,7 +64,7 @@ struct Chroot::Main
* File-system session for creating new chroot directories
*/
File_system::Connection fs {
- env, fs_tx_block_alloc, "", "/", true, 1 };
+ env, fs_tx_block_alloc, "/", true, 1 };
Attached_rom_dataspace session_requests { env, "session_requests" };
@@ -118,7 +118,7 @@ struct Chroot::Main
/* Use a chroot path from policy and label sub-directories */
Prefix const prefix = policy.attribute_value("path_prefix", Prefix());
root_path.import(prefix.string());
- root_path.append(path_from_label(label.string()).string());
+ root_path.append(path_from_label(label.prefix().string()).string());
} else if (policy.has_attribute("path")) {
/* Use a chroot path from policy */
root_path.import(policy.attribute_value("path", Prefix()).string());
@@ -127,15 +127,24 @@ struct Chroot::Main
root_path = path_from_label(label.string());
}
- /* extract and append the session argument */
+ /* append client-provided path */
{
- char tmp[PATH_MAX_LEN];
- Arg_string::find_arg(args.string(), "root").string(tmp, sizeof(tmp), "/");
- root_path.append_element(tmp);
+ Session_label const client_root_path = label.last_element();
+ bool root_path_valid = true;
+ if (client_root_path.string()[0] != '/') {
+ warning(label, ": last label element should start with /");
+ root_path_valid = false;
+ }
+ if (client_root_path.string()[min(1ul, client_root_path.length()) - 1] != '/') {
+ warning(label, ": last label element should end with /");
+ root_path_valid = false;
+ }
+ if (!root_path_valid)
+ throw Service_denied();
+ root_path.append(client_root_path.string());
+ root_path.remove_trailing('/');
}
- root_path.remove_trailing('/');
-
char const *new_root = root_path.base();
using namespace File_system;
@@ -179,7 +188,11 @@ struct Chroot::Main
Arg_string::set_arg(new_args, ARGS_MAX_LEN, "writeable", writeable);
}
- Arg_string::set_arg_string(new_args, ARGS_MAX_LEN, "root", new_root);
+ /* replace last label element by new root path */
+ Session_label const rewritten_label =
+ prefixed_label(label.prefix(), Session_label(root_path.string(), "/"));
+
+ Arg_string::set_arg_string(new_args, ARGS_MAX_LEN, "label", rewritten_label.string());
return env.session("File_system", id, new_args, affinity);
}
diff --git a/repos/os/src/server/vfs/main.cc b/repos/os/src/server/vfs/main.cc
index 5874ea161b..edc0b898f2 100644
--- a/repos/os/src/server/vfs/main.cc
+++ b/repos/os/src/server/vfs/main.cc
@@ -923,13 +923,20 @@ class Vfs_server::Root : public Genode::Root_component,
/* apply client's root offset. */
{
- char tmp[MAX_PATH_LEN] { };
- Arg_string::find_arg(args, "root").string(tmp, sizeof(tmp), "/");
- if (Genode::strcmp("/", tmp, sizeof(tmp))) {
- session_root.append("/");
- session_root.append(tmp);
- session_root.remove_trailing('/');
+ Session_label const client_root_path = label.last_element();
+ bool root_path_valid = true;
+ if (client_root_path.string()[0] != '/') {
+ warning(label, ": last label element should start with /");
+ root_path_valid = false;
}
+ if (client_root_path.string()[min(1ul, client_root_path.length()) - 1] != '/') {
+ warning(label, ": last label element should end with /");
+ root_path_valid = false;
+ }
+ if (!root_path_valid)
+ throw Service_denied();
+ session_root.append(client_root_path.string());
+ session_root.remove_trailing('/');
}
/* check if the session root exists */
diff --git a/repos/os/src/server/vfs_block/README b/repos/os/src/server/vfs_block/README
index 3eb8e2c514..088ab3168f 100644
--- a/repos/os/src/server/vfs_block/README
+++ b/repos/os/src/server/vfs_block/README
@@ -14,14 +14,14 @@ component:
!
!
!
-!
+!
!
!
!
!
!
-!
+!
!
!
!
diff --git a/repos/os/src/test/fs_packet/component.cc b/repos/os/src/test/fs_packet/component.cc
index 7dea4fcc37..7e1dca94d8 100644
--- a/repos/os/src/test/fs_packet/component.cc
+++ b/repos/os/src/test/fs_packet/component.cc
@@ -36,7 +36,7 @@ struct Fs_packet::Main
Heap _heap { _env.pd(), _env.rm() };
Allocator_avl _avl_alloc { &_heap };
- File_system::Connection _fs { _env, _avl_alloc, "", "/", false, 4<<10 };
+ File_system::Connection _fs { _env, _avl_alloc, "/", false, 4<<10 };
File_system::Session::Tx::Source &_tx { *_fs.tx() };
diff --git a/repos/pc/sculpt/deploy/goa_testbed b/repos/pc/sculpt/deploy/goa_testbed
index 9d21432006..5ff57a5542 100644
--- a/repos/pc/sculpt/deploy/goa_testbed
+++ b/repos/pc/sculpt/deploy/goa_testbed
@@ -19,7 +19,7 @@
-
+
@@ -62,7 +62,7 @@
-
+
diff --git a/repos/ports/recipes/pkg/lighttpd/runtime b/repos/ports/recipes/pkg/lighttpd/runtime
index 957f967571..a7c545b811 100644
--- a/repos/ports/recipes/pkg/lighttpd/runtime
+++ b/repos/ports/recipes/pkg/lighttpd/runtime
@@ -36,7 +36,7 @@ dir-listing.activate = "enable"
-
+
-
-
+
+
diff --git a/repos/ports/recipes/pkg/vbox5-nova-capture/runtime b/repos/ports/recipes/pkg/vbox5-nova-capture/runtime
index bfab277a2c..649ed4d9a4 100644
--- a/repos/ports/recipes/pkg/vbox5-nova-capture/runtime
+++ b/repos/ports/recipes/pkg/vbox5-nova-capture/runtime
@@ -68,8 +68,8 @@
-
-
+
+
diff --git a/repos/ports/recipes/pkg/vbox6-capture/runtime b/repos/ports/recipes/pkg/vbox6-capture/runtime
index d1bf30921c..de481c55ec 100644
--- a/repos/ports/recipes/pkg/vbox6-capture/runtime
+++ b/repos/ports/recipes/pkg/vbox6-capture/runtime
@@ -29,10 +29,10 @@
-
+
-
+
diff --git a/repos/ports/recipes/pkg/vbox6/runtime b/repos/ports/recipes/pkg/vbox6/runtime
index cea2713bcb..ec6a157376 100644
--- a/repos/ports/recipes/pkg/vbox6/runtime
+++ b/repos/ports/recipes/pkg/vbox6/runtime
@@ -28,10 +28,10 @@
-
+
-
+
diff --git a/repos/ports/recipes/raw/gdb_x86/gdb.config b/repos/ports/recipes/raw/gdb_x86/gdb.config
index 439f655b79..1c80e7445e 100644
--- a/repos/ports/recipes/raw/gdb_x86/gdb.config
+++ b/repos/ports/recipes/raw/gdb_x86/gdb.config
@@ -41,7 +41,7 @@
-
+
@@ -56,10 +56,10 @@
-
-
+
+
-
+
diff --git a/repos/ports/recipes/raw/system_shell/system_shell.config b/repos/ports/recipes/raw/system_shell/system_shell.config
index 5296d1bc7b..928428d5b2 100644
--- a/repos/ports/recipes/raw/system_shell/system_shell.config
+++ b/repos/ports/recipes/raw/system_shell/system_shell.config
@@ -22,7 +22,7 @@
-
+
@@ -55,9 +55,9 @@
-
-
-
+
+
+
diff --git a/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config b/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config
index 2a1bd27999..834a7dd0d6 100644
--- a/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config
+++ b/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config
@@ -28,15 +28,15 @@
-
+
-
-
+
+
diff --git a/repos/ports/run/vbox_share.inc b/repos/ports/run/vbox_share.inc
index 1305e8feae..cde1b72ffd 100644
--- a/repos/ports/run/vbox_share.inc
+++ b/repos/ports/run/vbox_share.inc
@@ -207,8 +207,8 @@ set config_of_app {
-
-
+
+
@@ -222,10 +222,10 @@ set config_of_app {
-
+
-
+
@@ -342,11 +342,11 @@ append config_of_app {
}
append_if [expr $use_ram_fs] config_of_app {
- }
+ }
append config_of_app {
-
-
+
+
@@ -354,15 +354,15 @@ append config_of_app {
}
append_if [expr $use_ram_fs] config_of_app {
-
+
}
append config_of_app {
-
+
-
+
diff --git a/repos/ports/run/vbox_win.inc b/repos/ports/run/vbox_win.inc
index 309f5078da..04a417684b 100644
--- a/repos/ports/run/vbox_win.inc
+++ b/repos/ports/run/vbox_win.inc
@@ -276,7 +276,7 @@ for { set i 1} { $i <= $use_vms } { incr i} {
}
append_if [expr $use_ram_fs] config_of_app {
- }
+ }
append config_of_app "
"
@@ -295,7 +295,7 @@ for { set i 1} { $i <= $use_vms } { incr i} {
}
append_if [expr $use_ram_fs] config_of_app {
- }
+ }
append_if [expr $use_rumpfs] config_of_app {
}