mirror of
https://github.com/openwrt/luci.git
synced 2025-12-26 17:46:19 +04:00
I had occasion to use nixio.exece() recently and I could not figure out what it wanted for the third argument (the environment) as no matter what sort of table I passed, even nixio.getenv(), would fail with bad argument #3 to 'exece' (invalid environment). What it should expect is a table full of string values for keys and something that can be converted to a string as a value, however it inverts the value of lua_type() and compares it against a type, which will never evaluate to true. Getting past this, the code inserts the KEY=VALUE string before the arg userdata, and then forgets to take the env userdata into account when collecting the arguments back into a C char**. This patch addresses all these issues and provides a working nixio.exece(). [Fixes #500]