7962bf5e926fd2fc70a944b20678810f923f18c8
[libc-test] / src / general / env.c
1 #ifndef _GNU_SOURCE
2 #define _GNU_SOURCE 1
3 #endif
4 #include <stdlib.h>
5 #include <string.h>
6 #include <errno.h>
7 #include <unistd.h>
8 #include "test.h"
9
10 extern char **environ;
11
12 int main()
13 {
14         char *s;
15         int r;
16
17         if (clearenv() || (environ && *environ))
18                 error("clrearenv: %s\n", strerror(errno));
19         if (putenv("TEST=1"))
20                 error("putenv: %s\n", strerror(errno));
21         if ((s=environ[1]))
22                 error("environ[1]: %p, wanted 0\n", s);
23         if (!(s=getenv("TEST")))
24                 error("getenv(\"TEST\"): 0, wanted \"1\"\n");
25         if (strcmp(s,"1") != 0)
26                 error("getenv(\"TEST\"): \"%s\", wanted \"1\"\n", s);
27         if (unsetenv("TEST"))
28                 error("unsetenv: %s\n", strerror(errno));
29         if ((s=*environ))
30                 error("*environ: %p != 0\n", s);
31         if ((s=getenv("TEST")))
32                 error("getenv(\"TEST\"): %p, wanted 0\n", s);
33         if (setenv("TEST", "2", 0))
34                 error("setenv: %s\n", strerror(errno));
35         if (strcmp(s=getenv("TEST"),"2") != 0)
36                 error("getenv(\"TEST\"): \"%s\", wanted \"2\"\n", s);
37         if (setenv("TEST", "3", 0))
38                 error("setenv: %s\n", strerror(errno));
39         if (strcmp(s=getenv("TEST"),"2") != 0)
40                 error("getenv(\"TEST\"): \"%s\", wanted \"2\"\n", s);
41         if (setenv("TEST", "3", 1))
42                 error("setenv: %s\n", strerror(errno));
43         if (strcmp(s=getenv("TEST"),"3") != 0)
44                 error("getenv(\"TEST\"): \"%s\", wanted \"3\"\n", s);
45         /* test failures */
46         if ((r=setenv("","",0)) != -1 || errno != EINVAL)
47                 error("setenv(\"\",\"\",0): %d, errno: %d (%s), wanted -1, %d (EINVAL)\n", r, errno, strerror(errno), EINVAL);
48         if ((r=setenv(0,"",0)) != -1 || errno != EINVAL)
49                 error("setenv(0,\"\",0): %d, errno: %d (%s), wanted -1, %d (EINVAL)\n", r, errno, strerror(errno), EINVAL);
50         return test_status;
51 }