1*cc6c784aSAxel Dörfler /*
2*cc6c784aSAxel Dörfler * Copyright 2008, Axel Dörfler, axeld@pinc-software.de.
3*cc6c784aSAxel Dörfler * Distributed under the terms of the MIT License.
4*cc6c784aSAxel Dörfler */
5*cc6c784aSAxel Dörfler
6*cc6c784aSAxel Dörfler
7*cc6c784aSAxel Dörfler #include <stdio.h>
8*cc6c784aSAxel Dörfler #include <stdlib.h>
9*cc6c784aSAxel Dörfler
10*cc6c784aSAxel Dörfler
11*cc6c784aSAxel Dörfler int gTestNr;
12*cc6c784aSAxel Dörfler
13*cc6c784aSAxel Dörfler
14*cc6c784aSAxel Dörfler void
set_env()15*cc6c784aSAxel Dörfler set_env()
16*cc6c784aSAxel Dörfler {
17*cc6c784aSAxel Dörfler gTestNr++;
18*cc6c784aSAxel Dörfler printf("Test %d...\n", gTestNr);
19*cc6c784aSAxel Dörfler
20*cc6c784aSAxel Dörfler if (setenv("TEST_VARIABLE", "42", true) != 0)
21*cc6c784aSAxel Dörfler fprintf(stderr, "Test %d: setting variable failed!\n", gTestNr);
22*cc6c784aSAxel Dörfler }
23*cc6c784aSAxel Dörfler
24*cc6c784aSAxel Dörfler
25*cc6c784aSAxel Dörfler void
test_env()26*cc6c784aSAxel Dörfler test_env()
27*cc6c784aSAxel Dörfler {
28*cc6c784aSAxel Dörfler if (getenv("TEST_VARIABLE") != NULL)
29*cc6c784aSAxel Dörfler fprintf(stderr, "Test %d: not cleared!\n", gTestNr);
30*cc6c784aSAxel Dörfler if (setenv("OTHER_VARIABLE", "test", true) != 0)
31*cc6c784aSAxel Dörfler fprintf(stderr, "Test %d: setting other failed!\n", gTestNr);
32*cc6c784aSAxel Dörfler }
33*cc6c784aSAxel Dörfler
34*cc6c784aSAxel Dörfler
35*cc6c784aSAxel Dörfler int
main(int argc,char ** argv)36*cc6c784aSAxel Dörfler main(int argc, char** argv)
37*cc6c784aSAxel Dörfler {
38*cc6c784aSAxel Dörfler set_env();
39*cc6c784aSAxel Dörfler environ = NULL;
40*cc6c784aSAxel Dörfler test_env();
41*cc6c784aSAxel Dörfler
42*cc6c784aSAxel Dörfler set_env();
43*cc6c784aSAxel Dörfler environ[0] = NULL;
44*cc6c784aSAxel Dörfler test_env();
45*cc6c784aSAxel Dörfler
46*cc6c784aSAxel Dörfler static char* emptyEnv[1] = {NULL};
47*cc6c784aSAxel Dörfler set_env();
48*cc6c784aSAxel Dörfler environ = emptyEnv;
49*cc6c784aSAxel Dörfler test_env();
50*cc6c784aSAxel Dörfler
51*cc6c784aSAxel Dörfler set_env();
52*cc6c784aSAxel Dörfler environ = (char**)calloc(1, sizeof(*environ));
53*cc6c784aSAxel Dörfler test_env();
54*cc6c784aSAxel Dörfler
55*cc6c784aSAxel Dörfler // clearenv() is not part of the POSIX specs
56*cc6c784aSAxel Dörfler #if 1
57*cc6c784aSAxel Dörfler set_env();
58*cc6c784aSAxel Dörfler clearenv();
59*cc6c784aSAxel Dörfler test_env();
60*cc6c784aSAxel Dörfler #endif
61*cc6c784aSAxel Dörfler
62*cc6c784aSAxel Dörfler return 0;
63*cc6c784aSAxel Dörfler }
64*cc6c784aSAxel Dörfler
65