premake/util/sdl_file.lua
author Sam Lantinga <slouken@libsdl.org>
Mon, 11 Aug 2014 17:25:53 -0700
changeset 9054 18d34edc79ac
parent 8149 681eb46b8ac4
child 9619 b94b6d0bff0f
permissions -rwxr-xr-x
Implemented SDL_GetPrefPath() on Android - it returns the path used by SDL_AndroidGetInternalStoragePath()
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8149
681eb46b8ac4 Fixed bug 2374 - Update copyright for 2014...
Sam Lantinga <slouken@libsdl.org>
parents: 7925
diff changeset
     1
-- Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
7925
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     2
--
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     3
-- This software is provided 'as-is', without any express or implied
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     4
-- warranty.  In no event will the authors be held liable for any damages
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     5
-- arising from the use of this software.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     6
--
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     7
-- Permission is granted to anyone to use this software for any purpose,
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     8
-- including commercial applications, and to alter it and redistribute it
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     9
-- freely.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    10
--
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    11
-- Meta-build system using premake created and maintained by
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    12
-- Benjamin Henning <b.henning@digipen.edu>
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    13
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    14
--[[
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    15
sdl_file.lua
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    16
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    17
	This function contains a wrapper for the I/O file operations, providing a few
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    18
	custom functions which simplify the file I/O process (especially useful for
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    19
	the vast amount of generation used by the meta-build system).
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    20
]]
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    21
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    22
-- Given a filename and open mode (look at io.open for more information), opens
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    23
-- the file with various contained functions for printing to the file, writing
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    24
-- to the file, reading from the file, or closing the file. If the filename is
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    25
-- nil, then this will open a file in a special text mode. In that case, the
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    26
-- mode is ignored. Returned is an instanced table with all of the
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    27
-- aforementioned functions.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    28
--
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    29
-- The print function is associated with textprint/fileprint, the write function
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    30
-- with textwrite/filewrite, the read function with fileread, and the close
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    31
-- function with textclose/fileclose.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    32
function fileopen(file, mode)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    33
	if file == nil then
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    34
		return { texth = "", print = textprint, write = textwrite, read = nil, close = textclose }
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    35
	else
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    36
		return { fileh = io.open(file, mode), print = fileprint, write = filewrite, read = fileread, close = fileclose }
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    37
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    38
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    39
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    40
-- Given a filename and file mode, reads the entire contents of the file and
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    41
-- returns the contents as a string.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    42
function readfile(file, mode)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    43
	local file = fileopen(file, mode)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    44
	local content = file:read()
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    45
	file:close()
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    46
	return content
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    47
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    48
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    49
-- Given a file, the number of tabs to indent, and a line to print, append the
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    50
-- line tabbed n times with an appended newline to the end of the input text.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    51
function textprint(f, tabs, line)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    52
	for i = 0, tabs - 1, 1 do
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    53
		f.texth = f.texth .. "\t"
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    54
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    55
	f.texth = f.texth .. line .. "\n"
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    56
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    57
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    58
-- Given a file, the number of tabs to indent, and a line to print, append the
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    59
-- line tabbed n times with an appended newline to the end of the input file.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    60
function fileprint(f, tabs, line)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    61
	for i = 0, tabs - 1, 1 do
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    62
		f.fileh:write("\t")
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    63
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    64
	f.fileh:write(line .. "\n")
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    65
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    66
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    67
-- Given a file and some text, append the text to the end of the input text.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    68
function textwrite(f, text)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    69
	f.texth = f.texth .. text
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    70
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    71
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    72
-- Given a file and some text, append the text to the end of the input file.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    73
function filewrite(f, text)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    74
	f.fileh:write(text)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    75
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    76
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    77
-- Given a file, read all the contents of the file and return them as a string.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    78
function fileread(file)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    79
	return file.fileh:read("*all")
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    80
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    81
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    82
-- Given a file opened in text mode, return the result of the current file
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    83
-- operations as a text string.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    84
function textclose(file)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    85
	return file.texth
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    86
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    87
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    88
-- Given a file opened regularly, close the file handle resource, preventing
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    89
-- any future I/O operations.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    90
function fileclose(file)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    91
	file.fileh:close()
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    92
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    93
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    94
-- Given a source path, builds a table containing all directories and recursive
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    95
-- subdirectories which contain files, and returns the table. Each entry in the
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    96
-- table will have a '/' at the end of its path, plus they will all be relative
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    97
-- to the parent source path. The table will contain a single entry with the
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    98
-- value '/' to indicate the source path itself.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    99
function createDirTable(sourcePath)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   100
	local dirs = os.matchdirs(sourcePath.."/**")
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   101
	for k,d in pairs(dirs) do
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   102
		dirs[k] = string.sub(d, #sourcePath + 1) .. "/"
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   103
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   104
	table.insert(dirs, "/")
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   105
	return dirs
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   106
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   107
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   108
-- This works like os.pathsearch, but for directories. Look at the premake
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   109
-- documentation for os.pathsearch for more information.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   110
os.dirpathsearch = function(subdir, path, path_delimiter)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   111
	for i,p in ipairs(explode(path, path_delimiter)) do
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   112
		local needle = p .. "/" .. subdir
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   113
		if os.isdir(needle) then
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   114
			return needle
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   115
		end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   116
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   117
	return nil
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   118
end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   119
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   120
-- Given a variable number of environmental variable names, this will join them
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   121
-- together based on the current OS path delimeter and quietly ignoring those
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   122
-- variables which do not exist on this system. The resulting path is always
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   123
-- normalized for Unix-based path separators, regardless of the system.
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   124
os.getenvpath = function(...)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   125
	local path = ""
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   126
	local pathDelimeter = ":"
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   127
	if os.is("windows") then
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   128
		pathDelimeter = ";"
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   129
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   130
	for i,a in ipairs(arg) do
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   131
		local value = os.getenv(a)
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   132
		if value then
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   133
			if #path > 0 then
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   134
				path = path .. pathDelimeter
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   135
			end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   136
			path = path .. value
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   137
		end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   138
	end
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   139
	-- normalize path to unix
f090a47eb7f7 Added Ben Henning's GSoC2013 work: premake build system.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   140
	return path:gsub("\\", "/"):gsub("//", "/")
8149
681eb46b8ac4 Fixed bug 2374 - Update copyright for 2014...
Sam Lantinga <slouken@libsdl.org>
parents: 7925
diff changeset
   141
end