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 */