table of contents
- bullseye-backports 4.17.0-2~bpo11+1
ENVZ_ADD(3) | Руководство программиста Linux | ENVZ_ADD(3) |
ИМЯ¶
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() добавляет строку "name=value" (если name не равно 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.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
All envz functions that do memory allocation have a return type of error_t (an integer type), and return 0 for success, and ENOMEM if an allocation error occurs.
АТРИБУТЫ¶
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
envz_add(), envz_entry(), envz_get(), envz_merge(), envz_remove(), envz_strip() | Безвредность в нитях | MT-Safe |
СООТВЕТСТВИЕ СТАНДАРТАМ¶
These functions are a GNU extension.
ПРИМЕРЫ¶
#include <stdio.h> #include <stdlib.h> #include <envz.h> int main(int argc, char *argv[], char *envp[]) {
int e_len = 0;
char *str;
for (int 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); }
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
1 ноября 2020 г. |