22 #if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
23 #define SDL_DISABLE_ANALYZE_MACROS 1
26 #include "../SDL_internal.h"
28 #if defined(__WIN32__)
29 #include "../core/windows/SDL_windows.h"
32 #if defined(__ANDROID__)
33 #include "../core/android/SDL_android.h"
38 #if defined(__WIN32__) && (!defined(HAVE_SETENV) || !defined(HAVE_GETENV))
40 static char *SDL_envmem =
NULL;
41 static size_t SDL_envmemlen = 0;
46 #if defined(HAVE_SETENV)
57 #elif defined(__WIN32__)
67 if (GetEnvironmentVariableA(
name,
NULL, 0) > 0) {
77 #elif (defined(HAVE_GETENV) && defined(HAVE_PUTENV) && !defined(HAVE_SETENV))
105 return putenv(new_variable);
169 return (added ? 0 : -1);
174 #if defined(HAVE_GETENV)
178 #if defined(__ANDROID__)
190 #elif defined(__WIN32__)
202 GetEnvironmentVariableA(
name, SDL_envmem, (DWORD) SDL_envmemlen);
203 if (bufferlen == 0) {
206 if (bufferlen > SDL_envmemlen) {
207 char *newmem = (
char *)
SDL_realloc(SDL_envmem, bufferlen);
208 if (newmem ==
NULL) {
212 SDL_envmemlen = bufferlen;
213 GetEnvironmentVariableA(
name, SDL_envmem, (DWORD) SDL_envmemlen);
248 main(
int argc,
char *argv[])
252 printf(
"Checking for non-existent variable... ");
259 printf(
"Setting FIRST=VALUE1 in the environment... ");
266 printf(
"Getting FIRST from the environment... ");
274 printf(
"Setting SECOND=VALUE2 in the environment... ");
281 printf(
"Getting SECOND from the environment... ");
289 printf(
"Setting FIRST=NOVALUE in the environment... ");
296 printf(
"Getting FIRST from the environment... ");
304 printf(
"Checking for non-existent variable... ");