24template <
typename Character>
26 Character
const*
const name,
27 Character
const*
const value
35 return name_count_required;
43 return name_count_required + value_count_required;
51template <
typename Character>
53 Character
const*
const name,
54 Character
const*
const value
61 size_t const name_length = traits::tcsnlen(
name,
_MAX_ENV);
68 size_t const buffer_count = name_length + 1 + value_length + 1;
75 buffer.get()[name_length] =
'=';
76 traits::tcscpy_s(
buffer.get() + name_length + 1, value_length + 1,
value);
82 Character
const*
const equal_sign_it = traits::tcschr(
name,
'=');
106template <
typename Character>
108 Character
const*
const name,
109 Character
const*
const value
113 typedef typename traits::other_char_type other_char_type;
118 __crt_unique_heap_ptr<other_char_type>
buffer(_calloc_crt_t(other_char_type,
buffer_count));
128 buffer.get()[name_written_count - 1] =
'=';
130 size_t const value_written_count = __crt_transform_string(
133 buffer.get() + name_written_count,
138 return other_traits::set_variable_in_environment_nolock(
buffer.detach(), 0) == 0;
160template <
typename Character>
162 Character
const*
const name,
163 Character
const*
const value
182 if (traits::set_variable_in_environment_nolock(new_option.detach(), 1) != 0)
198template <
typename Character>
200 Character
const*
const name,
201 Character
const*
const value
void __cdecl __acrt_unlock(_In_ __acrt_lock_id lock)
@ __acrt_environment_lock
#define _VALIDATE_RETURN(expr, errorcode, retexpr)
size_t __crt_compute_required_transform_buffer_count(unsigned const code_page, _In_z_ char const *const string)
__acrt_lock(__acrt_heap_lock)
__crt_state_management::dual_state_global< wchar_t ** > _wenviron_table
__crt_state_management::dual_state_global< char ** > _environ_table
#define _VALIDATE_RETURN_ERRCODE(expr, errorcode)
#define _VALIDATE_RETURN_NOEXC(expr, errorcode, retexpr)
static size_t compute_required_transform_buffer_count(Character const *const name, Character const *const value)
errno_t __cdecl _wputenv_s(wchar_t const *const name, wchar_t const *const value)
static bool __cdecl set_variable_in_other_environment(Character const *const name, Character const *const value)
int __cdecl _putenv(char const *const option)
static int __cdecl common_putenv_nolock(Character const *const name, Character const *const value)
static int __cdecl common_putenv(Character const *const name, Character const *const value)
int __cdecl _wputenv(wchar_t const *const option)
static Character * create_environment_string(Character const *const name, Character const *const value)
static bool other_environment_exists(wchar_t)
errno_t __cdecl _putenv_s(char const *const name, char const *const value)
size_t const buffer_count