Move get_var, set_var and clear_var to os::env module.

This commit is contained in:
Dmitry Atamanov
2023-08-24 16:10:28 +05:00
committed by Christoffer Lerno
parent c63b3d4209
commit f5fea69ef9
2 changed files with 58 additions and 56 deletions

View File

@@ -2,7 +2,7 @@
// Use of this source code is governed by the MIT license
// a copy of which can be found in the LICENSE_STDLIB file.
module std::core::env;
import libc;
enum CompilerOptLevel
{
O0,
@@ -179,58 +179,3 @@ macro bool os_is_posix()
return false;
$endswitch
}
/**
* @param [in] name
* @require name.len > 0
**/
fn String! get_var(String name)
{
$if LIBC && !WIN32:
@pool()
{
ZString val = libc::getenv(name.zstr_tcopy());
return val ? val.as_str() : SearchResult.MISSING?;
};
$else
return "";
$endif
}
/**
* @param [in] name
* @param [in] value
* @require name.len > 0
**/
fn void set_var(String name, String value, bool overwrite = true)
{
$if LIBC && !WIN32:
@pool()
{
if (libc::setenv(name.zstr_tcopy(), value.zstr_copy(), (int)overwrite))
{
unreachable();
}
};
$endif
}
/**
* @param [in] name
* @require name.len > 0
**/
fn void clear_var(String name)
{
$if LIBC && !WIN32:
@pool()
{
if (libc::unsetenv(name.zstr_tcopy()))
{
unreachable();
}
};
$endif
}

57
lib/std/os/env.c3 Normal file
View File

@@ -0,0 +1,57 @@
// Copyright (c) 2021 Christoffer Lerno. All rights reserved.
// Use of this source code is governed by the MIT license
// a copy of which can be found in the LICENSE_STDLIB file.
module std::os::env;
import libc;
/**
* @param [in] name
* @require name.len > 0
**/
fn String! get_var(String name)
{
$if env::LIBC && !env::WIN32:
@pool()
{
ZString val = libc::getenv(name.zstr_tcopy());
return val ? val.as_str() : SearchResult.MISSING?;
};
$else
return "";
$endif
}
/**
* @param [in] name
* @param [in] value
* @require name.len > 0
**/
fn void set_var(String name, String value, bool overwrite = true)
{
$if env::LIBC && !env::WIN32:
@pool()
{
if (libc::setenv(name.zstr_tcopy(), value.zstr_copy(), (int)overwrite))
{
unreachable();
}
};
$endif
}
/**
* @param [in] name
* @require name.len > 0
**/
fn void clear_var(String name)
{
$if env::LIBC && !env::WIN32:
@pool()
{
if (libc::unsetenv(name.zstr_tcopy()))
{
unreachable();
}
};
$endif
}