Mercurial > sdl-ios-xcode
comparison src/stdlib/SDL_getenv.c @ 5092:327f181542f1
Include windows.h in a single point in the source, so we can be consistent about the definition of UNICODE and have core utility functions for Windows that all modules can share.
I think this also fixes the bug relating to non-latin characters in filenames, since UNICODE wasn't defined in SDL_rwops.c
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 24 Jan 2011 21:20:30 -0800 |
parents | c2539ff054c8 |
children | b530ef003506 |
comparison
equal
deleted
inserted
replaced
5091:79bd1e289005 | 5092:327f181542f1 |
---|---|
25 | 25 |
26 #ifndef HAVE_GETENV | 26 #ifndef HAVE_GETENV |
27 | 27 |
28 #if defined(__WIN32__) && !defined(_WIN32_WCE) | 28 #if defined(__WIN32__) && !defined(_WIN32_WCE) |
29 | 29 |
30 #define WIN32_LEAN_AND_MEAN | 30 #include "../core/windows/SDL_windows.h" |
31 #include <windows.h> | |
32 | 31 |
33 /* Note this isn't thread-safe! */ | 32 /* Note this isn't thread-safe! */ |
34 | 33 |
35 static char *SDL_envmem = NULL; /* Ugh, memory leak */ | 34 static char *SDL_envmem = NULL; /* Ugh, memory leak */ |
36 static size_t SDL_envmemlen = 0; | 35 static size_t SDL_envmemlen = 0; |
39 int | 38 int |
40 SDL_setenv(const char *name, const char *value, int overwrite) | 39 SDL_setenv(const char *name, const char *value, int overwrite) |
41 { | 40 { |
42 if (!overwrite) { | 41 if (!overwrite) { |
43 char ch = 0; | 42 char ch = 0; |
44 const size_t len = GetEnvironmentVariable(name, &ch, sizeof (ch)); | 43 const size_t len = GetEnvironmentVariableA(name, &ch, sizeof (ch)); |
45 if (len > 0) { | 44 if (len > 0) { |
46 return 0; /* asked not to overwrite existing value. */ | 45 return 0; /* asked not to overwrite existing value. */ |
47 } | 46 } |
48 } | 47 } |
49 if (!SetEnvironmentVariable(name, *value ? value : NULL)) { | 48 if (!SetEnvironmentVariableA(name, *value ? value : NULL)) { |
50 return -1; | 49 return -1; |
51 } | 50 } |
52 return 0; | 51 return 0; |
53 } | 52 } |
54 | 53 |
57 SDL_getenv(const char *name) | 56 SDL_getenv(const char *name) |
58 { | 57 { |
59 size_t bufferlen; | 58 size_t bufferlen; |
60 | 59 |
61 bufferlen = | 60 bufferlen = |
62 GetEnvironmentVariable(name, SDL_envmem, (DWORD) SDL_envmemlen); | 61 GetEnvironmentVariableA(name, SDL_envmem, (DWORD) SDL_envmemlen); |
63 if (bufferlen == 0) { | 62 if (bufferlen == 0) { |
64 return NULL; | 63 return NULL; |
65 } | 64 } |
66 if (bufferlen > SDL_envmemlen) { | 65 if (bufferlen > SDL_envmemlen) { |
67 char *newmem = (char *) SDL_realloc(SDL_envmem, bufferlen); | 66 char *newmem = (char *) SDL_realloc(SDL_envmem, bufferlen); |
68 if (newmem == NULL) { | 67 if (newmem == NULL) { |
69 return NULL; | 68 return NULL; |
70 } | 69 } |
71 SDL_envmem = newmem; | 70 SDL_envmem = newmem; |
72 SDL_envmemlen = bufferlen; | 71 SDL_envmemlen = bufferlen; |
73 GetEnvironmentVariable(name, SDL_envmem, (DWORD) SDL_envmemlen); | 72 GetEnvironmentVariableA(name, SDL_envmem, (DWORD) SDL_envmemlen); |
74 } | 73 } |
75 return SDL_envmem; | 74 return SDL_envmem; |
76 } | 75 } |
77 | 76 |
78 #else /* roll our own */ | 77 #else /* roll our own */ |