diff --git a/UniLua/LuaOsLib.cs b/UniLua/LuaOsLib.cs index 0077645..90e343f 100644 --- a/UniLua/LuaOsLib.cs +++ b/UniLua/LuaOsLib.cs @@ -2,7 +2,8 @@ namespace UniLua { using System.Diagnostics; - + using CMLeonOS; + internal class LuaOSLib { public const string LIB_NAME = "os"; @@ -14,6 +15,10 @@ namespace UniLua #if !UNITY_WEBPLAYER new NameFuncPair("clock", OS_Clock), new NameFuncPair("gethostname", OS_Gethostname), + new NameFuncPair("getenv", OS_Getenv), + new NameFuncPair("setenv", OS_Setenv), + new NameFuncPair("delenv", OS_Delenv), + new NameFuncPair("addenv", OS_Addenv), #endif }; @@ -34,6 +39,47 @@ namespace UniLua lua.PushString(hostname); return 1; } + + private static int OS_Getenv( ILuaState lua ) + { + string varName = lua.L_CheckString(1); + string varValue = EnvironmentVariableManager.Instance.GetVariable(varName); + if (varValue == null) + { + lua.PushNil(); + } + else + { + lua.PushString(varValue); + } + return 1; + } + + private static int OS_Setenv( ILuaState lua ) + { + string varName = lua.L_CheckString(1); + string varValue = lua.L_CheckString(2); + EnvironmentVariableManager.Instance.SetVariable(varName, varValue); + lua.PushBoolean(true); + return 1; + } + + private static int OS_Delenv( ILuaState lua ) + { + string varName = lua.L_CheckString(1); + bool success = EnvironmentVariableManager.Instance.DeleteVariable(varName); + lua.PushBoolean(success); + return 1; + } + + private static int OS_Addenv( ILuaState lua ) + { + string varName = lua.L_CheckString(1); + string varValue = lua.L_CheckString(2); + EnvironmentVariableManager.Instance.SetVariable(varName, varValue); + lua.PushBoolean(true); + return 1; + } #endif } }