Scroll to navigation

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 (envzenvz_len) и возвращает запись, если такое имя найдено, и NULL, если не найдено.

Функция envz_get() ищет значение name в векторе envz (envzenvz_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); }

СМ. ТАКЖЕ

argz_add(3)

ЗАМЕЧАНИЯ

Эта страница является частью проекта 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 г.