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:
Rui Abreu Ferreira
2014-06-08 19:57:18 +01:00
committed by Seth Jackson
parent f183cc14de
commit 810d31a430
3 changed files with 17 additions and 2 deletions

View File

@@ -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