|
nsz |
462b4f |
#ifndef _GNU_SOURCE
|
|
nsz |
462b4f |
#define _GNU_SOURCE 1
|
|
nsz |
462b4f |
#endif
|
|
nsz |
7308b3 |
#include <stdlib.h>
|
|
nsz |
7308b3 |
#include <string.h>
|
|
nsz |
7308b3 |
#include <errno.h>
|
|
nsz |
7308b3 |
#include <unistd.h>
|
|
nsz |
462b4f |
#include "test.h"
|
|
nsz |
7308b3 |
|
|
nsz |
7308b3 |
extern char **environ;
|
|
nsz |
7308b3 |
|
|
nsz |
462b4f |
int main()
|
|
nsz |
462b4f |
{
|
|
nsz |
7308b3 |
char *s;
|
|
nsz |
7308b3 |
int r;
|
|
nsz |
7308b3 |
|
|
Szabolcs Nagy |
2f784e |
if (!environ)
|
|
Szabolcs Nagy |
2f784e |
t_error("environ is NULL\n");
|
|
nsz |
7308b3 |
if (clearenv() || (environ && *environ))
|
|
Szabolcs Nagy |
cfa23c |
t_error("clrearenv: %s\n", strerror(errno));
|
|
nsz |
7308b3 |
if (putenv("TEST=1"))
|
|
Szabolcs Nagy |
cfa23c |
t_error("putenv: %s\n", strerror(errno));
|
|
Szabolcs Nagy |
2f784e |
if (strcmp(environ[0],"TEST=1") != 0)
|
|
Szabolcs Nagy |
2f784e |
t_error("putenv failed: environ[0]: %s, wanted \"TEST=1\"\n", environ[0]);
|
|
nsz |
7308b3 |
if ((s=environ[1]))
|
|
Szabolcs Nagy |
cfa23c |
t_error("environ[1]: %p, wanted 0\n", s);
|
|
nsz |
7308b3 |
if (!(s=getenv("TEST")))
|
|
Szabolcs Nagy |
cfa23c |
t_error("getenv(\"TEST\"): 0, wanted \"1\"\n");
|
|
nsz |
7308b3 |
if (strcmp(s,"1") != 0)
|
|
Szabolcs Nagy |
cfa23c |
t_error("getenv(\"TEST\"): \"%s\", wanted \"1\"\n", s);
|
|
nsz |
7308b3 |
if (unsetenv("TEST"))
|
|
Szabolcs Nagy |
cfa23c |
t_error("unsetenv: %s\n", strerror(errno));
|
|
nsz |
7308b3 |
if ((s=*environ))
|
|
Szabolcs Nagy |
cfa23c |
t_error("*environ: %p != 0\n", s);
|
|
nsz |
7308b3 |
if ((s=getenv("TEST")))
|
|
Szabolcs Nagy |
cfa23c |
t_error("getenv(\"TEST\"): %p, wanted 0\n", s);
|
|
Szabolcs Nagy |
2f784e |
errno = 0;
|
|
nsz |
7308b3 |
if (setenv("TEST", "2", 0))
|
|
Szabolcs Nagy |
cfa23c |
t_error("setenv: %s\n", strerror(errno));
|
|
nsz |
7308b3 |
if (strcmp(s=getenv("TEST"),"2") != 0)
|
|
Szabolcs Nagy |
cfa23c |
t_error("getenv(\"TEST\"): \"%s\", wanted \"2\"\n", s);
|
|
Szabolcs Nagy |
2f784e |
if (strcmp(environ[0], "TEST=2") != 0)
|
|
Szabolcs Nagy |
2f784e |
t_error("setenv failed: environ[0]: %s, wanted \"TEST=2\"\n", environ[0]);
|
|
Szabolcs Nagy |
2f784e |
errno = 0;
|
|
nsz |
7308b3 |
if (setenv("TEST", "3", 0))
|
|
Szabolcs Nagy |
cfa23c |
t_error("setenv: %s\n", strerror(errno));
|
|
nsz |
7308b3 |
if (strcmp(s=getenv("TEST"),"2") != 0)
|
|
Szabolcs Nagy |
cfa23c |
t_error("getenv(\"TEST\"): \"%s\", wanted \"2\"\n", s);
|
|
Szabolcs Nagy |
2f784e |
errno = 0;
|
|
nsz |
7308b3 |
if (setenv("TEST", "3", 1))
|
|
Szabolcs Nagy |
cfa23c |
t_error("setenv: %s\n", strerror(errno));
|
|
nsz |
7308b3 |
if (strcmp(s=getenv("TEST"),"3") != 0)
|
|
Szabolcs Nagy |
cfa23c |
t_error("getenv(\"TEST\"): \"%s\", wanted \"3\"\n", s);
|
|
nsz |
2a3abc |
/* test failures */
|
|
Szabolcs Nagy |
2f784e |
errno = 0;
|
|
nsz |
7308b3 |
if ((r=setenv("","",0)) != -1 || errno != EINVAL)
|
|
Szabolcs Nagy |
cfa23c |
t_error("setenv(\"\",\"\",0): %d, errno: %d (%s), wanted -1, %d (EINVAL)\n", r, errno, strerror(errno), EINVAL);
|
|
Szabolcs Nagy |
cfa23c |
return t_status;
|
|
nsz |
7308b3 |
}
|