summaryrefslogtreecommitdiff
path: root/lib/libc/stdlib/putenv.c
blob: a3649982c71193802cb2fa4dac686f1e0f04bf1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdlib.h> // for setenv, unsetenv, putenv
#include <string.h> // for memcpy, strchr

int putenv(char *string)
{
	const char *const name_end = strchr(string, '=');

	if (name_end) {
		char name[name_end - string + 1];
		memcpy(name, string, name_end - string);
		name[name_end - string] = '\0';
		return setenv(name, name_end + 1, 1);
	}

	unsetenv(string);
	return 0;
}