#include #include #include #include #include #include #include int main(int argc, const char **argv) { char *val; assert(environ != NULL); assert(*environ == NULL); setenv("key1", "value1", 0); assert(environ != NULL); assert(!strcmp(*environ, "key1=value1")); assert(*(environ + 1) == NULL); setenv("key1", "value2", 0); assert(environ != NULL); assert(!strcmp(*environ, "key1=value1")); assert(*(environ + 1) == NULL); setenv("key1", "value3", 1); assert(environ != NULL); assert(!strcmp(*environ, "key1=value3")); assert(*(environ + 1) == NULL); setenv("key1", "longer-value", 1); assert(environ != NULL); assert(!strcmp(*environ, "key1=longer-value")); assert(*(environ + 1) == NULL); setenv("key2", "other-value", 0); assert(environ != NULL); assert(!strcmp(environ[0], "key1=longer-value")); assert(!strcmp(environ[1], "key2=other-value")); assert(environ[2] == NULL); assert(!strcmp(getenv("key1"), "longer-value")); assert(!strcmp(getenv("key2"), "other-value")); assert(getenv("key3") == NULL); unsetenv("key2"); assert(!strcmp(getenv("key1"), "longer-value")); assert(getenv("key2") == NULL); assert(getenv("key3") == NULL); environ[0] = strdup("key2=???"); assert(!strcmp(getenv("key2"), "???")); char *value = strdup("key4=!!!"); putenv(value); assert(!strcmp(getenv("key2"), "???")); assert(!strcmp(getenv("key4"), "!!!")); value[6] = '@'; assert(!strcmp(getenv("key2"), "???")); assert(!strcmp(getenv("key4"), "!@!")); unsetenv("key4"); unsetenv("key2"); assert(environ != NULL); assert(*environ == NULL); return 0; }