#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);
Вектор argz является указателем на символьный буфер вместе с длиной, смотрите argz_add(3). Вектор envz является особым вектором argz, где строки имеют форму "имя=значение". Все, что расположено за первым '=', считается значением. Если нет символов '=', то значение считается равным NULL. (Но значение в случае просто указания '=' равно пустой строке "".)
Эити функции предназначены для работы с векторами envz.
envz_add() добавляет строку name = value (в случае, если value не равно NULL) или name (в случае, если value равно NULL) в вектор envz (*envz,*envz_len) и обновляет *envz и *envz_len. Если запись с таким name уже существует, то она удаляется.
envz_entry() ищет name в векторе envz (envz,envz_len) и возвращает запись, если он найден и NULL, если он не найден.
envz_get() ищет name в векторе envz (envz,envz_len) и возвращает значение, если он найден и NULL, если он не найден. (Заметим, что значение само по себе может быть равно NULL, особенно если есть запись name без знака '='.)
envz_merge() добавляет запись в envz2 в *envz, как если бы это делалось с помощью envz_add(). Если override верно, то значения в envz2 будут превалировать над значениями с такими же именами в *envz, иначе - нет.
envz_remove() удаляет записи name из (*envz,*envz_len) если там есть такие.
envz_strip удаляет все записи со значением NULL.
#include <stdio.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); return 0; }
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |