Provided by: manpages-ru-dev_4.18.1-1_all
ИМЯ
getnetent_r, getnetbyname_r, getnetbyaddr_r - возвращают запись о сети (реентерабельные версии)
LIBRARY
Standard C library (libc, -lc)
СИНТАКСИС
#include <netdb.h> int getnetent_r(struct netent *restrict result_buf, char buf[restrict .buflen], size_t buflen, struct netent **restrict result, int *restrict h_errnop); int getnetbyname_r(const char *restrict name, struct netent *restrict result_buf, char buf[restrict .buflen], size_t buflen, struct netent **restrict result, int *restrict h_errnop); int getnetbyaddr_r(uint32_t net, int type, struct netent *restrict result_buf, char buf[restrict .buflen], size_t buflen, struct netent **restrict result, int *restrict 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(), │ Безвредность в нитях │ MT-Safe locale │ │getnetbyaddr_r() │ │ │ └─────────────────────────────────────────────────┴──────────────────────┴────────────────┘
СТАНДАРТЫ
Эти функции являются расширениями GNU. Функции с похожими именами есть и в других системах, хотя и с другим набором параметров.
СМ. ТАКЖЕ
getnetent(3), networks(5)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com> Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.