mirror of
https://github.com/neovim/neovim.git
synced 2025-10-01 23:48:32 +00:00
Windows: Implement os_setenv() using _putenv_s()
Windows does not have setenv(), instead the _putenv_s() function is used - added a function check and fatal errors. Implemented os_setenv() for Windows. Vim supports the original putenv() function if no alternative is available. Neovim only supports systems where safer alternatives exist, so the check for putenv() was removed from config/CMakeLists.txt.
This commit is contained in:

committed by
Seth Jackson

parent
f183cc14de
commit
810d31a430
@@ -46,7 +46,19 @@ bool os_env_exists(const char *name)
|
||||
int os_setenv(const char *name, const char *value, int overwrite)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
#ifdef HAVE_SETENV
|
||||
return setenv(name, value, overwrite);
|
||||
#elif defined(HAVE_PUTENV_S)
|
||||
if (!overwrite && os_getenv(name) != NULL) {
|
||||
return 0;
|
||||
}
|
||||
if (_putenv_s(name, value) == 0) {
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
#else
|
||||
# error "This system has no implementation available for os_setenv()"
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Unset environment variable
|
||||
|
Reference in New Issue
Block a user