GETNETENT_R(3)

ИМЯ
getnetent_r, getnetbyname_r, getnetbyaddr_r - возвращают запись о сети (реентерабельные версии)

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

int getnetent_r(struct netent *result_buf, char *buf,
                size_t buflen, struct netent **result,
                int *h_errnop);

int getnetbyname_r(const char *name,
                struct netent *result_buf, char *buf,
                size_t buflen, struct netent **result,
                int *h_errnop);

int getnetbyaddr_r(uint32_t net, int type,
                struct netent *result_buf, char *buf,
                size_t buflen, struct netent **result,
                int *h_errnop);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

getnetent_r(), getnetbyname_r(), getnetbyaddr_r():
    начиная с glibc 2.19:
        _DEFAULT_SOURCE
    в glibc 2.19 и старее:
        _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ
Функции getnetent_r(), getnetbyname_r() и getnetbyaddr_r() являются реентерабельными эквивалентами getnetent(3), getnetbyname(3) и getnetbynumber(3), соответственно. Они отличаются способом возврата структуры netent и списком параметров и типом возвращаемого значения. В этой справочной странице описаны только различия с нереентерабельными функциями.

Вместо возврата указателя на статически выделенную структуру netent в качестве результата эти функции копируют структуру в расположение, указанное result_buf.

Массив buf используется для хранения строковых полей из возвращаемой структуры netent (нереентерабельные функции выделяют эти строки из статического хранилища). Размер данного массива задаётся в buflen. Если buf слишком мал, то вызов завершается с ошибкой ERANGE, вызывающий должен его повторить с большим буфером (для большинства приложений должно быть достаточно буфера длиной 1024 байт).

Если вызов получил запись о сети, то *result указывает на result_buf; в противном случае *result устанавливается в NULL.

Буфер, указанный h_errnop, используется для возврата значения, которое бы сохранилось в глобальной переменной h_errno нереентерабельными версиями этих функций.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении эти функции возвращают 0. При ошибке возвращается одно из положительных значений, перечисленных В разделе ОШИБКИ.

При ошибке, отсутствии записи (getnetbyname_r(), getnetbyaddr_r()) или конце данных (getnetent_r()) значение result равно NULL.

ОШИБКИ

ENOENT
    (getnetent_r()) Больше нет записей в базе данных.

ERANGE
    Размер buf слишком мал. Попробуйте ещё раз с большим буфером (и увеличенным значением buflen).

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

СООТВЕТСТВИЕ СТАНДАРТАМ
Эти функции являются расширениями GNU. Функции с похожими именами есть и в других системах, хотя и с другим набором параметров.

СМОТРИТЕ ТАКЖЕ
getnetent(3), networks(5)