diff options
author | Colin Watson <cjwatson@debian.org> | 2005-05-25 11:01:01 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2005-05-25 11:01:01 +0000 |
commit | e88de75a1a236779a10e8ccbcc51d25308be8840 (patch) | |
tree | 7495477a2a7d0cac17a9fcded020b6ea816182ef /openbsd-compat/bsd-cygwin_util.c | |
parent | 30a0f9443782cd9d7308acd09430bf586186aa55 (diff) | |
parent | 5d05471f6657646d1d6500c7c43134462c407ee6 (diff) |
Merge 4.0p1 to the trunk.
Diffstat (limited to 'openbsd-compat/bsd-cygwin_util.c')
-rw-r--r-- | openbsd-compat/bsd-cygwin_util.c | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c index 92cdba6e0..f53abb6e2 100644 --- a/openbsd-compat/bsd-cygwin_util.c +++ b/openbsd-compat/bsd-cygwin_util.c | |||
@@ -29,7 +29,7 @@ | |||
29 | 29 | ||
30 | #include "includes.h" | 30 | #include "includes.h" |
31 | 31 | ||
32 | RCSID("$Id: bsd-cygwin_util.c,v 1.12 2004/04/18 11:15:45 djm Exp $"); | 32 | RCSID("$Id: bsd-cygwin_util.c,v 1.13 2004/08/30 10:42:08 dtucker Exp $"); |
33 | 33 | ||
34 | #ifdef HAVE_CYGWIN | 34 | #ifdef HAVE_CYGWIN |
35 | 35 | ||
@@ -38,6 +38,7 @@ RCSID("$Id: bsd-cygwin_util.c,v 1.12 2004/04/18 11:15:45 djm Exp $"); | |||
38 | #include <sys/utsname.h> | 38 | #include <sys/utsname.h> |
39 | #include <sys/vfs.h> | 39 | #include <sys/vfs.h> |
40 | #include <windows.h> | 40 | #include <windows.h> |
41 | #include "xmalloc.h" | ||
41 | #define is_winnt (GetVersion() < 0x80000000) | 42 | #define is_winnt (GetVersion() < 0x80000000) |
42 | 43 | ||
43 | #define ntsec_on(c) ((c) && strstr((c),"ntsec") && !strstr((c),"nontsec")) | 44 | #define ntsec_on(c) ((c) && strstr((c),"ntsec") && !strstr((c),"nontsec")) |
@@ -96,7 +97,6 @@ has_capability(int what) | |||
96 | */ | 97 | */ |
97 | if (!inited) { | 98 | if (!inited) { |
98 | struct utsname uts; | 99 | struct utsname uts; |
99 | char *c; | ||
100 | 100 | ||
101 | if (!uname(&uts)) { | 101 | if (!uname(&uts)) { |
102 | int major_high = 0, major_low = 0, minor = 0; | 102 | int major_high = 0, major_low = 0, minor = 0; |
@@ -236,4 +236,54 @@ register_9x_service(void) | |||
236 | RegisterServiceProcess(0, 1); | 236 | RegisterServiceProcess(0, 1); |
237 | } | 237 | } |
238 | 238 | ||
239 | #define NL(x) x, (sizeof (x) - 1) | ||
240 | #define WENV_SIZ (sizeof (wenv_arr) / sizeof (wenv_arr[0])) | ||
241 | |||
242 | static struct wenv { | ||
243 | const char *name; | ||
244 | size_t namelen; | ||
245 | } wenv_arr[] = { | ||
246 | { NL("ALLUSERSPROFILE=") }, | ||
247 | { NL("COMMONPROGRAMFILES=") }, | ||
248 | { NL("COMPUTERNAME=") }, | ||
249 | { NL("COMSPEC=") }, | ||
250 | { NL("NUMBER_OF_PROCESSORS=") }, | ||
251 | { NL("OS=") }, | ||
252 | { NL("PATH=") }, | ||
253 | { NL("PATHEXT=") }, | ||
254 | { NL("PROCESSOR_ARCHITECTURE=") }, | ||
255 | { NL("PROCESSOR_IDENTIFIER=") }, | ||
256 | { NL("PROCESSOR_LEVEL=") }, | ||
257 | { NL("PROCESSOR_REVISION=") }, | ||
258 | { NL("PROGRAMFILES=") }, | ||
259 | { NL("SYSTEMDRIVE=") }, | ||
260 | { NL("SYSTEMROOT=") }, | ||
261 | { NL("TMP=") }, | ||
262 | { NL("TEMP=") }, | ||
263 | { NL("WINDIR=") }, | ||
264 | }; | ||
265 | |||
266 | char ** | ||
267 | fetch_windows_environment(void) | ||
268 | { | ||
269 | char **e, **p; | ||
270 | int i, idx = 0; | ||
271 | |||
272 | p = xmalloc(WENV_SIZ * sizeof(char *)); | ||
273 | for (e = environ; *e != NULL; ++e) { | ||
274 | for (i = 0; i < WENV_SIZ; ++i) { | ||
275 | if (!strncmp(*e, wenv_arr[i].name, wenv_arr[i].namelen)) | ||
276 | p[idx++] = *e; | ||
277 | } | ||
278 | } | ||
279 | p[idx] = NULL; | ||
280 | return p; | ||
281 | } | ||
282 | |||
283 | void | ||
284 | free_windows_environment(char **p) | ||
285 | { | ||
286 | xfree(p); | ||
287 | } | ||
288 | |||
239 | #endif /* HAVE_CYGWIN */ | 289 | #endif /* HAVE_CYGWIN */ |