setaliasent(3)

НАИМЕНОВАНИЕ
setaliasent, endaliasent, getaliasent, getaliasent_r, getaliasbyname, getaliasbyname_r - читает запись о псевдониме

БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)

ОБЗОР
#include <aliases.h>

void setaliasent(void);
void endaliasent(void);

struct aliasent *getaliasent(void);
int getaliasent_r(struct aliasent *restrict result,
                     char buffer[restrict .buflen], size_t buflen,
                     struct aliasent **restrict res);

struct aliasent *getaliasbyname(const char *name);
int getaliasbyname_r(const char *restrict name,
                     struct aliasent *restrict result,
                     char buffer[restrict .buflen], size_t buflen,
                     struct aliasent **restrict res);

ОПИСАНИЕ
Одной из баз данных, доступных в диспетчере службы имён (NSS), является база данных псевдонимов (aliases), в которой содержатся почтовые псевдонимы (для вывода поддерживаемых баз данных, запустите getent --help.) Для доступа к базе данных псевдонимов существуют шесть функций.

Функция getaliasent() возвращает указатель на структуру, содержащую информацию о группе из базы данных псевдонимов. Во время первого вызова функция возвращает первую запись; в дальнейшем она возвращает все последующие записи.

Функция setaliasent() возвращает файловый указатель в начало базы данных псевдонимов.

Функция endaliasent() закрывает базу данных псевдонимов.

Функция getaliasent_r() является реентерабельной версией предыдущей функции. Запрашиваемая структура сохраняется через первый аргумент, но программисту также требуется передать и другие аргументы. При нехватке места функция завершается с ошибкой.

Функция getaliasbyname() берёт имя из аргумента и ищет его в базе данных псевдонимов. Найденный элемент возвращается в виде указателя на struct aliasent.

Функция getaliasbyname_r() является реентерабельной версией предыдущей функции. Запрашиваемая структура сохраняется через второй аргумент, но программисту также требуется передать и другие аргументы. При нехватке места функция завершается с ошибкой.

Структура struct aliasent определена в <aliases.h>:

    struct aliasent {
        char    *alias_name;             /* имя псевдонима */
        size_t   alias_members_len;
        char   **alias_members;          /* список имён псевдонима */
        int      alias_local;
    };

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При ошибке функции getaliasent_r() и getaliasbyname_r() возвращают ненулевое значение.

ФАЙЛЫ
По умолчанию файлом базы данных псевдонимов является /etc/aliases. Это можно изменить в файле /etc/nsswitch.conf.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
setaliasent(), endaliasent(), getaliasent_r(), getaliasbyname_r() | Безвредность в нитях | MT-Safe locale
getaliasent(), getaliasbyname() | Безвредность в нитях | MT-Unsafe

СТАНДАРТЫ
GNU.

ИСТОРИЯ
The NeXT system has similar routines:

    #include <aliasdb.h>

    void alias_setent(void);
    void alias_endent(void);
    alias_ent *alias_getent(void);
    alias_ent *alias_getbyname(char *name);

ПРИМЕРЫ
Следующий пример компилируется командой gcc example.c -o example. Он выводит все имена из баз данных псевдонимов.

    #include <aliases.h>
    #include <errno.h>
    #include <stdio.h>
    #include <stdlib.h>

    int
    main(void)
    {
        struct aliasent *al;

        setaliasent();
        for (;;) {
            al = getaliasent();
            if (al == NULL)
                break;
            printf("Name: %s\n", al->alias_name);
        }
        if (errno) {
            perror("reading alias");
            exit(EXIT_FAILURE);
        }
        endaliasent();
        exit(EXIT_SUCCESS);
    }

СМОТРИТЕ ТАКЖЕ
getgrent(3), getpwent(3), getspent(3), aliases(5)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).