envz_add(3) - wariua/manpages-ko GitHub Wiki
envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip - ํ๊ฒฝ ๋ฌธ์์ด ์ง์
#include <envz.h>
error_t envz_add(char **envz, size_t *envz_len,
const char *name, const char *value);
char *envz_entry(const char *envz, size_t envz_len, const char *name);
char *envz_get(const char *envz, size_t envz_len, const char *name);
error_t envz_merge(char **envz, size_t *envz_len,
const char *envz2, size_t envz2_len, int override);
void envz_remove(char **envz, size_t *envz_len, const char *name);
void envz_strip(char **envz, size_t *envz_len);
์ด ํจ์๋ค์ glibc ์ ์ฉ์ด๋ค.
argz ๋ฒกํฐ๋ ๋ฌธ์ ๋ฒํผ์ ๋ํ ํฌ์ธํฐ์ ๊ธธ์ด๊ฐ ํจ๊ป ์๋ ๊ฒ์ด๋ค. (argz_add(3) ์ฐธ๊ณ .) envz ๋ฒกํฐ๋ argz ๋ฒกํฐ์ ํน์ํ ํํ๋ก, ๋ฌธ์์ด๋ค์ด "์ด๋ฆ=๊ฐ" ํํ๋ก ๋์ด ์๋ค. ์ฒซ ๋ฒ์งธ '=' ๋ค์ ์๋ ๊ฒ์ ๋ชจ๋ ๊ฐ์ด๋ผ๊ณ ๋ณธ๋ค. '='๊ฐ ์์ผ๋ฉด ๊ฐ์ด NULL์ธ ๊ฒ์ผ๋ก ํ๋ค. (๋ฐ๋ฉด '='๋ก ๋๋๋ ๊ฒฝ์ฐ์ ๊ฐ์ ๋น ๋ฌธ์์ด ""์ด๋ค.)
์ด ํจ์๋ค์ envz ๋ฒกํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๊ฒ์ด๋ค.
envz_add()
๋ envz ๋ฒกํฐ (*envz
, *envz_len
)์ ๋ฌธ์์ด "name
=value
"(value
๊ฐ NULL์ด ์๋ ๊ฒฝ์ฐ)๋ "name
"(value
๊ฐ NULL์ธ ๊ฒฝ์ฐ)์ ์ถ๊ฐํ๊ณ *envz
์ *envz_len
์ ๊ฐฑ์ ํ๋ค. name
์ด ๊ฐ์ ํญ๋ชฉ์ด ์กด์ฌํ๋ฉด ์ ๊ฑฐํ๊ณ ์ถ๊ฐํ๋ค.
envz_entry()
๋ envz ๋ฒกํฐ (envz
, envz_len
)์์ name
์ ํ์ํ๋ฉฐ, ์ฐพ์ผ๋ฉด ๊ทธ ํญ๋ชฉ์ ๋ฐํํ๊ณ ์์ผ๋ฉด NULL์ ๋ฐํํ๋ค.
envz_get()
์ envz ๋ฒกํฐ (envz
, envz_len
)์์ name
์ ํ์ํ๋ฉฐ, ์ฐพ์ผ๋ฉด ๊ทธ ๊ฐ์ ๋ฐํํ๊ณ ์์ผ๋ฉด NULL์ ๋ฐํํ๋ค. (์ฐธ๊ณ ๋ก '=' ์๋ name
ํญ๋ชฉ์ด ์์ผ๋ฉด ๊ฐ์ด NULL์ผ ์ ์๋ค.)
envz_merge()
๋ envz2
์ ๊ฐ ํญ๋ชฉ์ envz_add()
๋ฅผ ์ด ๊ฒ์ฒ๋ผ *envz
์ ์ถ๊ฐํ๋ค. override
๊ฐ ์ฐธ์ด๋ฉด envz2
์ ์๋ ๊ฐ์ด *envz
์ ์๋ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ ๋์ฒดํ๊ณ , ์๋๋ฉด ๊ทธ๋ฌ์ง ์๋๋ค.
envz_remove()
๋ (*envz
, *envz_len
)์ name
ํญ๋ชฉ์ด ์์ผ๋ฉด ์ ๊ฑฐํ๋ค.
envz_strip()
์ ๊ฐ์ด NULL์ธ ํญ๋ชฉ์ ๋ชจ๋ ์ ๊ฑฐํ๋ค.
๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํ๋ envz ํจ์๋ค์ ๋ชจ๋ ๋ฐํ ํ์
์ด error_t
์ด๋ฉฐ, ์ฑ๊ณต ์ 0์ ๋ฐํํ๊ณ ํ ๋น ์ค๋ฅ ๋ฐ์ ์ ENOMEM
์ ๋ฐํํ๋ค.
์ด ์ ์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ค์ ๋ํ ์ค๋ช ์ attributes(7)๋ฅผ ๋ณด๋ผ.
์ธํฐํ์ด์ค | ์์ฑ | ๊ฐ |
---|---|---|
envz_add() , envz_entry() ,envz_get() , envz_merge() ,envz_remove() , envz_strip()
|
์ค๋ ๋ ์์ ์ฑ | MT-Safe |
์ด ํจ์๋ค์ GNU ํ์ฅ์ด๋ค. ์กฐ์ฌํด์ ์จ์ผ ํ๋ค.
#include <stdio.h>
#include <stdlib.h>
#include <envz.h>
int
main(int argc, char *argv[], char *envp[])
{
int i, e_len = 0;
char *str;
for (i = 0; envp[i] != NULL; i++)
e_len += strlen(envp[i]) + 1;
str = envz_entry(*envp, e_len, "HOME");
printf("%s\n", str);
str = envz_get(*envp, e_len, "HOME");
printf("%s\n", str);
exit(EXIT_SUCCESS);
}
2017-09-15