Linux Man на русском

  User    Syst    Libr    Device    Files    Other    Admin  



   setaliasent - getaliasbyname,

setaliasent(3) getaliasbyname,


ОБЗОР

#include <aliases.h>

void setaliasent(void);

void endaliasent(void);

struct aliasent *getaliasent(void);

int getaliasent_r(struct aliasent *result,
char *buffer, size_t buflen, struct aliasent **res);

struct aliasent *getaliasbyname(const char *name);

int getaliasbyname_r(const char *name, struct aliasent *result,
char *buffer, size_t buflen, struct aliasent **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)


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

Эти функции есть только в glibc. В системе NeXT есть подобные функции:
#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 <stdio.h>
#include <stdlib.h>
#include <errno.h>
int
main(void)
{
    struct aliasent *al;
    setaliasent();
    for (;;) {
        al = getaliasent();
        if (al == NULL)
            break;
        printf("Имя: %s\n", al->alias_name);
    }
    if (errno) {
        perror("чтение псевдонимов");
        exit(EXIT_FAILURE);
    }
    endaliasent();
    exit(EXIT_SUCCESS);
}