xref: /haiku/src/tests/system/libroot/posix/clearenv.cpp (revision cc6c784ae75a2aac7f5f5acb649d8eb9d9863271)
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