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)