root/trunk/hcf/env.d

Revision 387, 2.2 kB (checked in by Gregor, 2 years ago)

Imported CyberShadow?'s diff (see http://www.dsource.org/projects/dsss/ticket/12 )

Line 
1 /**
2  * Helpful environment functions
3  *
4  * Authors:
5  *  Gregor Richards
6  *
7  * License:
8  *  Copyright (c) 2006  Gregor Richards
9  * 
10  *  Permission is hereby granted, free of charge, to any person obtaining a
11  *  copy of this software and associated documentation files (the "Software"),
12  *  to deal in the Software without restriction, including without limitation
13  *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
14  *  and/or sell copies of the Software, and to permit persons to whom the
15  *  Software is furnished to do so, subject to the following conditions:
16  * 
17  *  The above copyright notice and this permission notice shall be included in
18  *  all copies or substantial portions of the Software.
19  * 
20  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21  *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22  *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23  *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24  *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25  *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26  *  DEALINGS IN THE SOFTWARE.
27  */
28
29 module hcf.env;
30
31 import std.string;
32
33 import std.c.stdlib;
34
35 version (Windows) {
36     import bcd.windows.windows;
37 }
38
39 /** Get an environment variable D-ly */
40 char[] getEnvVar(char[] var)
41 {
42     version (Posix) {
43         return toString(
44             getenv(toStringz(var)));
45     } else version (Windows) {
46         // CyberShadow 2007.02.22: enlarging buffer tenfold for people with huge PATHs (like me)
47         char[10240] buffer;
48         buffer[0] = '\0';
49         GetEnvironmentVariableA(
50                 toStringz(var),
51                 buffer.ptr,
52                 10240);
53         return toString(buffer.ptr);
54     } else {
55         static assert(0);
56     }
57 }
58
59 /** Set an environment variable D-ly */
60 void setEnvVar(char[] var, char[] val)
61 {
62     version (Posix) {
63         setenv(toStringz(var),
64                toStringz(val),
65                1);
66     } else version(Windows) {
67         SetEnvironmentVariableA(
68             toStringz(var),
69             toStringz(val));
70     } else {
71         static assert(0);
72     }
73 }
Note: See TracBrowser for help on using the browser.