git

Форк
0
/
setenv.c 
40 строк · 862.0 Байт
1
#include "../git-compat-util.h"
2

3
int gitsetenv(const char *name, const char *value, int replace)
4
{
5
	int out;
6
	size_t namelen, valuelen;
7
	char *envstr;
8

9
	if (!name || strchr(name, '=') || !value) {
10
		errno = EINVAL;
11
		return -1;
12
	}
13
	if (!replace) {
14
		char *oldval = NULL;
15
		oldval = getenv(name);
16
		if (oldval) return 0;
17
	}
18

19
	namelen = strlen(name);
20
	valuelen = strlen(value);
21
	envstr = malloc(st_add3(namelen, valuelen, 2));
22
	if (!envstr) {
23
		errno = ENOMEM;
24
		return -1;
25
	}
26

27
	memcpy(envstr, name, namelen);
28
	envstr[namelen] = '=';
29
	memcpy(envstr + namelen + 1, value, valuelen);
30
	envstr[namelen + valuelen + 1] = 0;
31

32
	out = putenv(envstr);
33
	/* putenv(3) makes the argument string part of the environment,
34
	 * and changing that string modifies the environment --- which
35
	 * means we do not own that storage anymore.  Do not free
36
	 * envstr.
37
	 */
38

39
	return out;
40
}
41

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.