1
/* $Id: kHlpBareEnv.c 29 2009-07-01 20:30:29Z bird $ */
3
* kHlpBare - Environment Manipulation.
7
* Copyright (c) 2006-2007 Knut St. Osmundsen <bird-kStuff-spamix@anduin.net>
9
* Permission is hereby granted, free of charge, to any person
10
* obtaining a copy of this software and associated documentation
11
* files (the "Software"), to deal in the Software without
12
* restriction, including without limitation the rights to use,
13
* copy, modify, merge, publish, distribute, sublicense, and/or sell
14
* copies of the Software, and to permit persons to whom the
15
* Software is furnished to do so, subject to the following
18
* The above copyright notice and this permission notice shall be
19
* included in all copies or substantial portions of the Software.
21
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28
* OTHER DEALINGS IN THE SOFTWARE.
31
/*******************************************************************************
33
*******************************************************************************/
34
#include <k/kHlpEnv.h>
35
#include <k/kHlpString.h>
36
#include <k/kErrors.h>
38
#if K_OS == K_OS_DARWIN
40
#elif K_OS == K_OS_LINUX
42
#elif K_OS == K_OS_OS2
47
#elif K_OS == K_OS_WINDOWS
55
KHLP_DECL(int) kHlpGetEnv(const char *pszVar, char *pszVal, KSIZE cchVal)
57
#if K_OS == K_OS_DARWIN
58
/** @todo need to figure out where the stuff is or how it's inherited on darwin ... */
59
return KERR_ENVVAR_NOT_FOUND;
61
#elif K_OS == K_OS_LINUX
62
/** @todo either read /proc/self/environ or figure out where in the memory the initial environment is... */
63
return KERR_ENVVAR_NOT_FOUND;
65
#elif K_OS == K_OS_OS2
70
rc = DosScanEnv((PCSZ)pszVar, &pszValue);
73
KSIZE cch = kHlpStrLen((const char *)pszValue);
75
kHlpMemCopy(pszVal, pszValue, cch + 1);
77
rc = KERR_BUFFER_OVERFLOW;
80
rc = KERR_ENVVAR_NOT_FOUND;
83
#elif K_OS == K_OS_WINDOWS
87
cch = GetEnvironmentVariable(pszVar, pszVal, cchVal);
88
if (cch > 0 && cch < cchVal)
93
return KERR_BUFFER_OVERFLOW;
94
if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
95
return KERR_ENVVAR_NOT_FOUND;
96
return GetLastError();