Scroll to navigation

ARGZ_ADD(3) Руководство программиста Linux ARGZ_ADD(3)

ИМЯ

argz_add, argz_add_sep, argz_append, argz_count, argz_create, argz_create_sep, argz_delete, argz_extract, argz_insert, argz_next, argz_replace, argz_stringify - функции для обработки списка argz

СИНТАКСИС

#include <argz.h>
error_t argz_add(char **argz, size_t *argz_len, const char *str);
error_t argz_add_sep(char **argz, size_t *argz_len,
                     const char *str, int delim);
error_t argz_append(char **argz, size_t *argz_len,
                     const char *buf, size_t buf_len);
size_t argz_count(const char *argz, size_t argz_len);
error_t argz_create(char * const argv[], char **argz,
                     size_t *argz_len);
error_t argz_create_sep(const char *str, int sep, char **argz,
                     size_t *argz_len);
void argz_delete(char **argz, size_t *argz_len, char *entry);
void argz_extract(const char *argz, size_t argz_len, char **argv);
error_t argz_insert(char **argz, size_t *argz_len, char *before,
                     const char *entry);
char *argz_next(const char *argz, size_t argz_len, const char *entry);
error_t argz_replace(char **argz, size_t *argz_len, const char *str,
                     const char *with, unsigned int *replace_count);
void argz_stringify(char *argz, size_t len, int sep);

ОПИСАНИЕ

Эти функции есть только в glibc.

Вектор argz представляет собой указатель на символьный буфер и его длину. Данный символьный буфер следует считать массивом строк, разделённых байтами null ('\0'). Если длина ненулевая, то последний байт в буфере должен быть null.

Эти функции предназначены для обработки векторов argz. Пара (null,0) представляет вектор argz и наоборот, векторы argz длиной 0 должны иметь указатель null. Размещение непустых векторов argz осуществляется функцией malloc(3), а для высвобождения пространства можно использовать free(3).

Функция argz_add() добавляет строку str в конец массива *argz, и обновляет *argz и *argz_len.

Функция argz_add_sep() делает тоже самое, но разделяет строку str на подстроки, разделяя их символом delim. Например, это можно использовать при работе с путями поиска UNIX, где разделителем является ':'.

Функция argz_append() добавляет вектор argz (bufbuf_len) после (*argz*argz_len) и обновляет *argz и *argz_len (таким образом, *argz_len будет увеличено на buf_len).

Функция argz_count() подсчитывает количество строк, то есть количество байтов null в ('\0'), в (argzargz_len).

Функция argz_create() преобразует аргумент вектора argv в стиле UNIX, заканчивающийся (char *) 0, в вектор argz (*argz*argz_len).

Функция argz_create_sep() преобразует строку str, заканчивающуюся null, в вектор argz (*argz*argz_len), разделяя её при каждом нахождении разделителя sep.

Функция argz_delete() удаляет подстроку, на которую указывает entry, из вектора argz (*argz*argz_len) и обновляет *argz и *argz_len.

Функция argz_extract() является противоположностью argz_create(). Она берёт вектор argz (argzargz_len) и заполняет массив, начиная с argv, указателями на подстроки и завершая его NULL, тем самым создавая вектор argv в стиле UNIX. Массив argv должен иметь пространство для argz_count(argz, argz_len) + 1 указателей.

Функция argz_insert() является противоположностью argz_delete(). Она вставляет аргумент entry с позиции before в вектор (*argz*argz_len) и обновляет *argz и *argz_len. Если значение before равно NULL, то значение entry будет вставлено в конец.

argz_next() is a function to step through the argz vector. If entry is NULL, the first entry is returned. Otherwise, the entry following is returned. It returns NULL if there is no following entry.

Функция argz_replace() заменяет каждую найденную строку str на with, изменяя размер argz при необходимости. Если значение replace_count не равно NULL, то значение *replace_count будет увеличено на число замен.

Функция argz_stringify() является противоположностью argz_create_sep(). Она преобразует вектор argz в обычную строку, заменяя все байты null ('\0'), за исключением последнего, значением sep.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

All argz 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).

Интерфейс Атрибут Значение
argz_add(), argz_add_sep(), argz_append(), argz_count(), argz_create(), argz_create_sep(), argz_delete(), argz_extract(), argz_insert(), argz_next(), argz_replace(), argz_stringify() Безвредность в нитях MT-Safe

СООТВЕТСТВИЕ СТАНДАРТАМ

These functions are a GNU extension.

ДЕФЕКТЫ

Векторы argz без завершающего байта null могут привести к ошибкам сегментирования.

СМ. ТАКЖЕ

envz_add(3)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Dmitry Bolkhovskikh <d20052005@yandex.ru> и Yuri Kozlov <yuray@komyakino.ru>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

1 ноября 2020 г.