char *search_env(char *key)
{
int i;
i = -1;
while (g_envs[++i])
{
if (ft_strncmp(key, g_envs[i], ft_strlen(key)) == 0 &&
g_envs[i][ft_strlen(key)] == '=')
return (&g_envs[i][ft_strlen(key) + 1]);
}
return (NULL);
}
key
- env의 key (ex. HOME=/user/jaeelee
에서 HOME
)
return - env의 value 반환
key를 찾지못하면 NULL반환
(ex. HOME=/user/jaeelee
에서 /user/jaeelee
)
char *get_key(char *obj)
{
int size_key;
char *key;
if (ft_strchr(obj, '=') == 0)
size_key = ft_strlen(obj) + 1;
else
size_key = ft_strchr(obj, '=') - obj + 1;
if (size_key - 1 != check_validkey(obj)) //size_key는 널포인터 자리 포함 길이. check_validkey는 순수 key의 길이.
return (NULL); //key값에 유효하지 않은 문자 존재
key = (char *)malloc(sizeof(char) * size_key);
ft_strlcpy(key, obj, size_key);
return (key);
}
obj
- key값을 가져올 env (ex. HOME=/user/jaeelee
)
return - env의 key값 반환.
key값이 유효하지 않으면 NULL 반환.
int check_validkey(char *obj)
{
int cnt;
cnt = 0;
if (ft_isdigit(obj[0]))
return (0);
while (obj[cnt] && (ft_isalnum(obj[cnt]) || obj[cnt] == '_'))
cnt++;
return (cnt);
}
obj
- 체크할 대상<aside> ‼️ key값으로는 숫자, 문자, _만 가능한 듯.
</aside>