반응형
1. setenv
환경변수를 등록하거나 변경하는 함수이다.
- 헤더: stdlib.h
- 형태: **int** setenv(**const** **char** *envname, **const** **char** *envval, **int** overwrite)
- 인수:
**char** *envname 환경 변수 이름
**char** *envval 변수값
**int** overwrite 이미 같은 이름의 변수가 있다면 값을 변경할지의 여부
- 반환: **int** 성공하면 0, 실패하면 -1
설계한 pseudo code는 다음과 같다.
설계한 pseudo code
1. key_finder를 통해 원하는 key를 불러온다. (=이전의 문자열)
2. key를 이용해서 맞는 환경변수의 value를 찾는다.
3. key는 있으나 value가 없다면 putenv 함수를 이용해서 새롭게 만든다.
4. 이미 value가 있다면 strdup을 한 후, 본래의 value는 free 해주고 strdup한 문자열로 대체한다.
구현한 코드는 다음과 같다.
t_bool ft_setenv(const char *key_value, char ***env)
{
int idx;
char *key;
char *tmp;
key = key_finder(key_value, 0);
if (key == 0)
return (1);
idx = index_of(key, *env);
free(key);
if ((*env)[idx] == 0)
return (ft_putenv(key_value, env));
tmp = ft_strdup(key_value);
if (tmp == 0)
return (1);
free((*env)[idx]);
(*env)[idx] = tmp;
return (0);
}
반응형
'CS(computer science)' 카테고리의 다른 글
[42 NetPractice] - 2 오류 모음(1/2) - error on gate ip - multiple interface match (1) | 2023.02.05 |
---|---|
[42 NetPractice] - 2 오류 모음(2/2) - invalid IP (0) | 2023.02.04 |
[linux] - 새로운 명령어 만들기 (0) | 2023.01.12 |
[minishell] - echo 함수 구현하기 (0) | 2023.01.11 |
[minishell] - 환경변수 파싱하기, 재귀함수 이용한 문자열 추출함수 만들기 (0) | 2023.01.10 |