one-time blog

less is more. more or less

Гадание по окружению или Определение ОС в Lua

| Comments

В SigmaScript, как и в любом кроссплатформенном решении, есть один нюанс, касающийся зависимости от платформы. Речь идет, разумеется, об именах файлов, точнее путях — в Windows и *nix используются различные символы-разделители каталогов, да и структура полного пути немного отличается. Android «в глубине души» — тоже *nix, поэтому нам достаточно научиться определять работаем ли мы в данный момент на Windows, или нет.

После некоторых поисков и проверок я нашел, как мне кажется, вполне простой и надежный способ: проанализировать значение переменной окружения OS — под Windows 7 эта переменная имеет значение Windows_NT, а в Линуксе и на Андроиде просто отсутствует. Я написал функцию getos(), которую включил в модуль utils — в нем я собираю разные мелкие функции, которые могут понадобиться в любой программе:

utils.lua
-- utils.lua: some usefull utilities/functions


local utils = {} 

function utils.getos()
   local osid = os.getenv("OS")
   if (osid == nil) then
     osid = "Unix"
   end
   return osid
end 

return utils

Чтобы удостовериться в правильности работы моей функции, я написал небольшую программку, демонстрирующую также работу с модулями в SigmaScript:

showos.lua
-- show platform where the program is running


utils = require "utils" 

platform = utils.getos()
msg = "You are running " .. platform

if platform == "Windows_NT" then
    lwin.alert("OS", msg)
else
    droid.alert("OS", msg)
end

print(msg)

Результат работы программы на скриншотах в начале поста.

Lua

Comments

comments powered by Disqus