From 85a1c463e5d6a0a55bf76fc57cfed7d19b8da79a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 7 Dec 2022 00:27:12 +0100 Subject: [PATCH] Add Lua method to show system env `for v in ARDOUR.LuaAPI.env():iter() do print(v) end` --- libs/ardour/ardour/lua_api.h | 3 +++ libs/ardour/lua_api.cc | 22 ++++++++++++++++++++++ libs/ardour/luabindings.cc | 1 + 3 files changed, 26 insertions(+) diff --git a/libs/ardour/ardour/lua_api.h b/libs/ardour/ardour/lua_api.h index 61415400d7..33f79a7b02 100644 --- a/libs/ardour/ardour/lua_api.h +++ b/libs/ardour/ardour/lua_api.h @@ -273,6 +273,9 @@ namespace ARDOUR { namespace LuaAPI { /** Crash Test Dummy */ void segfault (); + /** Return system environment variables (POSIX environ) */ + std::vector env (); + class Vamp { /** Vamp Plugin Interface * diff --git a/libs/ardour/lua_api.cc b/libs/ardour/lua_api.cc index e1a7e3c8c6..b802d65eb9 100644 --- a/libs/ardour/lua_api.cc +++ b/libs/ardour/lua_api.cc @@ -552,6 +552,28 @@ ARDOUR::LuaAPI::segfault () *p = 0; } +#ifdef PLATFORM_WINDOWS +std::vector +ARDOUR::LuaAPI::env () +{ + std::vector rv; + return rv; +} + +#else +extern char **environ; + +std::vector +ARDOUR::LuaAPI::env () +{ + std::vector rv; + for (int i = 0; environ[i]; ++i) { + rv.push_back (environ[i]); + } + return rv; +} +#endif + int ARDOUR::LuaOSC::Address::send (lua_State *L) { diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index 877b1101a8..7396f57f49 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -2955,6 +2955,7 @@ LuaBindings::common (lua_State* L) .addCFunction ("timecode_to_sample", ARDOUR::LuaAPI::timecode_to_sample) .addFunction ("wait_for_process_callback", ARDOUR::LuaAPI::wait_for_process_callback) .addFunction ("segfault", ARDOUR::LuaAPI::segfault) + .addFunction ("env", ARDOUR::LuaAPI::env) .beginNamespace ("FileTest") .addConst ("IsRegular", Glib::FILE_TEST_IS_REGULAR)