mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
41 lines
1.1 KiB
Swift
41 lines
1.1 KiB
Swift
func [asmname="getenv"] posix_getenv(varname : CString) -> CString
|
|
func [asmname="setenv"] posix_setenv(varname : CString,
|
|
value : CString,
|
|
overwrite : CInt) -> CInt
|
|
func [asmname="unsetenv"] posix_unsetenv(varname : CString) -> CInt
|
|
|
|
struct _EnvironmentVariables {
|
|
func find(varName : String) -> (Bool, String) {
|
|
var LM = LifetimeManager()
|
|
var found = posix_getenv(LM.getCString(varName))
|
|
LM.release()
|
|
if (found.isNull()) {
|
|
return (false, "")
|
|
} else {
|
|
return (true, String.fromCString(found))
|
|
}
|
|
}
|
|
|
|
subscript(varName : String) -> String {
|
|
get:
|
|
return find(varName).1
|
|
set(value):
|
|
var LM = LifetimeManager()
|
|
var result = posix_setenv(LM.getCString(varName),
|
|
LM.getCString(value),
|
|
1)
|
|
LM.release()
|
|
assert(result == 0)
|
|
}
|
|
|
|
func erase(varName : String) {
|
|
var LM = LifetimeManager()
|
|
var result = posix_unsetenv(LM.getCString(varName))
|
|
LM.release()
|
|
assert(result == 0)
|
|
}
|
|
}
|
|
|
|
var EnvironmentVariables : _EnvironmentVariables
|
|
|