diff options
Diffstat (limited to '3rdparty/lua/in-lua-extensions/os.lua')
-rw-r--r-- | 3rdparty/lua/in-lua-extensions/os.lua | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/3rdparty/lua/in-lua-extensions/os.lua b/3rdparty/lua/in-lua-extensions/os.lua deleted file mode 100644 index 1d95179..0000000 --- a/3rdparty/lua/in-lua-extensions/os.lua +++ /dev/null @@ -1,264 +0,0 @@ --- --- os.lua --- Additions to the OS namespace. --- Copyright (c) 2002-2011 Jason Perkins and the Premake project --- - - --- --- Same as os.execute(), but accepts string formatting arguments. --- - - function os.executef(cmd, ...) - cmd = string.format(cmd, unpack(arg)) - return os.execute(cmd) - end - - --- --- Scan the well-known system locations for a particular library. --- - - function os.findlib(libname) - local path, formats - - -- assemble a search path, depending on the platform - if os.is("windows") then - formats = { "%s.dll", "%s" } - path = os.getenv("PATH") - elseif os.is("haiku") then - formats = { "lib%s.so", "%s.so" } - path = os.getenv("LIBRARY_PATH") - else - if os.is("macosx") then - formats = { "lib%s.dylib", "%s.dylib" } - path = os.getenv("DYLD_LIBRARY_PATH") - else - formats = { "lib%s.so", "%s.so" } - path = os.getenv("LD_LIBRARY_PATH") or "" - - io.input("/etc/ld.so.conf") - if io.input() then - for line in io.lines() do - path = path .. ":" .. line - end - io.input():close() - end - end - - table.insert(formats, "%s") - path = path or "" - if os.is64bit() then - path = path .. ":/lib64:/usr/lib64/:usr/local/lib64" - end - path = path .. ":/lib:/usr/lib:/usr/local/lib" - end - - for _, fmt in ipairs(formats) do - local name = string.format(fmt, libname) - local result = os.pathsearch(name, path) - if result then return result end - end - end - - - --- --- Retrieve the current operating system ID string. --- - - function os.get() - return _OPTIONS.os or _OS - end - - - --- --- Check the current operating system; may be set with the /os command line flag. --- - - function os.is(id) - return (os.get():lower() == id:lower()) - end - - - --- --- Determine if the current system is running a 64-bit architecture --- - - local _64BitHostTypes = { - "x86_64", - "ia64", - "amd64", - "ppc64", - "powerpc64", - "sparc64" - } - - function os.is64bit() - -- Call the native code implementation. If this returns true then - -- we're 64-bit, otherwise do more checking locally - if (os._is64bit()) then - return true - end - - -- Identify the system - local arch - if _OS == "windows" then - arch = os.getenv("PROCESSOR_ARCHITECTURE") - elseif _OS == "macosx" then - arch = os.outputof("echo $HOSTTYPE") - else - arch = os.outputof("uname -m") - end - - -- Check our known 64-bit identifiers - arch = arch:lower() - for _, hosttype in ipairs(_64BitHostTypes) do - if arch:find(hosttype) then - return true - end - end - return false - end - - - --- --- The os.matchdirs() and os.matchfiles() functions --- - - local function domatch(result, mask, wantfiles) - -- need to remove extraneous path info from the mask to ensure a match - -- against the paths returned by the OS. Haven't come up with a good - -- way to do it yet, so will handle cases as they come up - if mask:startswith("./") then - mask = mask:sub(3) - end - - -- strip off any leading directory information to find out - -- where the search should take place - local basedir = mask - local starpos = mask:find("%*") - if starpos then - basedir = basedir:sub(1, starpos - 1) - end - basedir = path.getdirectory(basedir) - if (basedir == ".") then basedir = "" end - - -- recurse into subdirectories? - local recurse = mask:find("**", nil, true) - - -- convert mask to a Lua pattern - mask = path.wildcards(mask) - - local function matchwalker(basedir) - local wildcard = path.join(basedir, "*") - - -- retrieve files from OS and test against mask - local m = os.matchstart(wildcard) - while (os.matchnext(m)) do - local isfile = os.matchisfile(m) - if ((wantfiles and isfile) or (not wantfiles and not isfile)) then - local fname = path.join(basedir, os.matchname(m)) - if fname:match(mask) == fname then - table.insert(result, fname) - end - end - end - os.matchdone(m) - - -- check subdirectories - if recurse then - m = os.matchstart(wildcard) - while (os.matchnext(m)) do - if not os.matchisfile(m) then - local dirname = os.matchname(m) - matchwalker(path.join(basedir, dirname)) - end - end - os.matchdone(m) - end - end - - matchwalker(basedir) - end - - function os.matchdirs(...) - local result = { } - for _, mask in ipairs(arg) do - domatch(result, mask, false) - end - return result - end - - function os.matchfiles(...) - local result = { } - for _, mask in ipairs(arg) do - domatch(result, mask, true) - end - return result - end - - - --- --- An overload of the os.mkdir() function, which will create any missing --- subdirectories along the path. --- - - local builtin_mkdir = os.mkdir - function os.mkdir(p) - local dir = iif(p:startswith("/"), "/", "") - for part in p:gmatch("[^/]+") do - dir = dir .. part - - if (part ~= "" and not path.isabsolute(part) and not os.isdir(dir)) then - local ok, err = builtin_mkdir(dir) - if (not ok) then - return nil, err - end - end - - dir = dir .. "/" - end - - return true - end - - --- --- Run a shell command and return the output. --- - - function os.outputof(cmd) - local pipe = io.popen(cmd) - local result = pipe:read('*a') - pipe:close() - return result - end - - --- --- Remove a directory, along with any contained files or subdirectories. --- - - local builtin_rmdir = os.rmdir - function os.rmdir(p) - -- recursively remove subdirectories - local dirs = os.matchdirs(p .. "/*") - for _, dname in ipairs(dirs) do - os.rmdir(dname) - end - - -- remove any files - local files = os.matchfiles(p .. "/*") - for _, fname in ipairs(files) do - os.remove(fname) - end - - -- remove this directory - builtin_rmdir(p) - end - |