Fwd: [RFR] po4a://manpages-l10n/po/ru/man3/xdr.3.po
Fat-Zer <[email protected]> Tue, 21 Jan 2025 09:11:15 +0300
| Newsgroups | gmane.linux.debian.internationalization.russian |
|---|---|
| Message-ID | <CANi=-v+uYPsuDX1prh9FtHqVD71NpOMNeRcAdQZttYAu5HW-gA@mail.gmail.com> |
---------- Forwarded message --------- От: Fat-Zer <[email protected]> Date: вт, 21 янв. 2025 г. в 09:05 Subject: Re: [RFR] po4a://manpages-l10n/po/ru/man3/xdr.3.po To: Алексей Шилин <[email protected]> Спасибо за правки; перевод обновлён. Новые изменения: https://salsa.debian.org/Fat-Zer/manpages-l10n/-/commit/d895be521f64a34e80fb6b4077305d23c05185ac Полный список изменений: https://salsa.debian.org/Fat-Zer/manpages-l10n/-/commit/b18a1b2778030b03f01d96ba9c9b40a8c78e297d Скачать PO: https://salsa.debian.org/Fat-Zer/manpages-l10n/-/raw/d895be521f64a34e80fb6b4077305d23c05185ac/po/ru/man3/xdr.3.po?inline=false Переведённая версия страницы приложена к письму. -------------- пн, 20 янв. 2025 г. в 17:57, Алексей Шилин <[email protected]>: > > В Пн, 20/01/2025 в 08:51 +0300, Fat-Zer пишет: > > "I<elproc> указывается фильтр XDR, который производит преобразования > > между " > > "формой элементов массива, используемой в языке С и их внешним " > > "представлением. Данная подпрограмма возвращает 1 при успешном > > завершении, " > > > > Пропущена запятая. > Исправлено > > > "переменными (целочисленные в С) в их внешним представлением. > > Перекодируя " > > "данные, этот фильтр присваивает им значения равные либо единице, > > либо нулю. " > > > > "в" → "и". > Кроме того, пропущена запятая перед "равные". > Исправлено > > "указателя строки. Длина строки должна находится по адресу указанному > > в " > > "находиться". > Кроме того, пропущена запятая перед "указанному". > Исправлено > > "переменной длины и их внешним представлением. В аргументе I<arrp> " > > "указывается адрес указателя на массив, а в I<sizep> адрес количества > > " > > "элементов в массиве, которое не может превышать значение I<maxsize>. > > В " > > > > Просится тире: "а в I<sizep> — адрес количества". > Исправлено > > "I<xdrs>. Уничтожение обычно включает в себя освобождение приватных > > структур " > > "данных, связанных с потоком. При использовании I<xdrs> после вызова > > " > > > "B<xdr_destroy>() результат непредсказуем." > > Является ли слово "приватных" допустимым? Я бы оставил "частных" или > заменил на "закрытых". > Далее, я, возможно, использовал бы устоявшийся перевод "неопределённое > поведение": "результат не определён" — вероятно, он окажется понятнее и > привычнее для читателя. > «частных» — нет, по крайней мере у меня за это глаз сильно цепляется. «закрытых» — да, выглядит неплохо «результат не определён» — да > > "Примитив фильтра, который производит преобразования между значения > > типа " > > "I<double> языка C и их внешним представлением. Данная подпрограмма " > > > > "значениями". > Исправлено > > "Примитив фильтра, который производит преобразования между значениями > > типа " > > "I<enum> (являющиеся по сути целыми числами) языка C и их внешним " > > > > Если "значениями", то "являющимися". > Исправлено > > "указывает на позицию в потоке байтов XDR. Одна особенность, которой > > потоки " > > "XDR желательно должны обладать, — это возможность производиться с > > этим " > > "числом простые арифметические операции, хотя экземпляры потоков XDR > > и не " > > > > "производить". > Исправлено > > "значениями языка c и их внешним представлением. Данная подпрограмма > > " > > "c" → "C". > Исправлено > > "I<xdrs>. Данные потока записываются в участок памяти (или > > считываются из " > > "него), находящегося по адресу I<addr> и длина которого не больше > > I<size> " > > > > "находящийся". > Исправлено > > "Примитив фильтра, который производит преобразования между > > непрозрачными " > > "данными фиксированного размера их внешним представлением. В > > аргументе I<cp> " > > > > "и их". > Исправлено > > "умолчанию. Данные потока считываются из буфера размером I<recvsize>, > > для " > > "которого можно также задать значение ноль, что означает использовать > > " > > "подходящее значение по умолчанию. Когда буфер записи потока > > заполнен, " > > > > "можно также" → "также можно". > Я бы немного видоизменил предложение для лучшей читаемости: "Данные > потока считываются из буфера размером I<recvsize>, для которого также > можно указать значение ноль для использования подходящего значения по > умолчанию". > да, так, пожалуй, лучше; исправлено > > "вызывается I<readit>. Поведение этих двух подпрограмм аналогично > > системным " > > "вызовам B<read>(2) и B<write>(2), за исключением того, что последней > > также " > > "передаётся I<handle> в качестве первого аргумента. Замечание: поле > > I<op> " > > "потока XDR должно быть установлено вызывающим." > > "последней"? Вероятно, лучше использовать "за исключением того, что > подпрограммам также". моя ошибка: здесь я очитался в оригинале; переписал в виде: «…за исключением того, что в качестве первого аргумента в эти подпрограммы передаётся I<handle>.» > Кроме того, мне не очень нравится перевод "caller" как "вызывающим". > Если имеется в виду программист, то, может, так и написать? Ну, или > "пользователем". > Перевод «caller — вызывающим» достаточно последовательно используется в этом корпусе man'ов. Так что это я менять не хочу. И кроме того, как и оригинал это даёт слой абстрактности: «вызывающим» — это тот кто вызывает функцию, а под этим может подразумеваться код, процесс, программист, пользователь, функция и т.д. и додумывать каждый раз этот контекст практически невозможно > > "интерфейсом, вы должны сначала вызвать B<xdrrec_skiprecord>() прежде > > чем " > > "производить какие-либо другие API-вызовы XDR. Это вставляет > > дополнительные " > > "байты в поток для предоставления информации о границе записи. Кроме > > того, " > > "потоки XDR, созданные разными API-функциями B<xdr*_create> не > > совместимы по " > > "этой же причине." > > > > Пропущены запятые: перед "прежде чем", перед "не совместимы" (и не > слитно ли здесь пишется "не"?). > Исправлено; исправлено > > "Примитив фильтра, который производит преобразования между > > размеченными " > > "объединения (discriminated I<union>) языка C и их внешним > > представлением. " > > > > "объединениями". > Исправлено > > "элементов массива, а в I<elproc> указывается фильтр XDR, который > > производит " > > "преобразования между формой элементов массива, используемой в языке > > С и их " > > > > Пропущена запятая после "языке C". Исправлено > > > "Данная подпрограмма всегда возвращает 1. Её можно передаваться > > другим " > > "подпрограммам RPC, которые обязательно требуют функцию в качестве > > аргумента, " > > > > "передавать". Исправлено > > > "UNSIGNED> равно максимальному значению беззнакового целого. Функция > > " > > "B<xdr_wrapstring>() иногда удобно использовать, потому что в пакете > > RPC в " > > > "качестве аргументов передаётся максимум две процедуры XDR, а для " > > > "B<xdr_string>(), одного из наиболее часто используемых примитивов, > > > требует " > > > "три. Данная подпрограмма возвращает 1 при успешном завершении, > > > иначе 0." > > > > > "Функцию". > "требуется три". Исправлено
xdr.3.html
(text/html, 96.3 KB)
<!DOCTYPE html>
<html>
<!-- This is an automatically generated file. Do not edit.
-*- coding: UTF-8 -*-
t
This page was taken from the 4.4BSD-Lite CDROM (BSD license)
%%%LICENSE_START(BSD_ONELINE_CDROM)
This page was taken from the 4.4BSD-Lite CDROM (BSD license)
%%%LICENSE_END
@(#)xdr.3n 2.2 88/08/03 4.0 RPCSRC; from 1.16 88/03/14 SMI
2007-12-30, mtk, Convert function prototypes to modern C syntax
*******************************************************************
This file was generated with po4a. Translate the source file.
*******************************************************************
-->
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
table.head, table.foot { width: 100%; }
td.head-rtitle, td.foot-os { text-align: right; }
td.head-vol { text-align: center; }
.Nd, .Bf, .Op { display: inline; }
.Pa, .Ad { font-style: italic; }
.Ms { font-weight: bold; }
.Bl-diag > dt { font-weight: bold; }
code.Nm, .Fl, .Cm, .Ic, code.In, .Fd, .Fn, .Cd { font-weight: bold;
font-family: inherit; }
</style>
<title>xdr(3)</title>
</head>
<body>
<table class="head">
<tr>
<td class="head-ltitle">xdr(3)</td>
<td class="head-vol">Library Functions Manual</td>
<td class="head-rtitle">xdr(3)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh">НАИМЕНОВАНИЕ</h1>
<p class="Pp">xdr -
библиотечные
подпрограммы
для
внешнего
представления
данных</p>
</section>
<section class="Sh">
<h1 class="Sh">БИБЛИОТЕКА</h1>
<p class="Pp">Стандартная
библиотека
языка C (<i>libc</i>, <i>-lc</i>)</p>
</section>
<section class="Sh">
<h1 class="Sh">ОБЗОР И
ОПИСАНИЕ</h1>
<p class="Pp">Эти
подпрограммы
позволяют
программистам
на C
описывать
произвольные
структуры
данных
машинонезависимым
способом.
Данные для
вызовов
удалённых
процедур
передаются
с помощью
этих
подпрограмм.</p>
<p class="Pp">Представленные
ниже
прототипы
объявлены
в <i><rpc/xdr.h></i> и
используют
следующие
типы:</p>
<p class="Pp"></p>
<div class="Bd-indent">
<pre><b>typedef int </b><i>bool_t</i><b>;</b></pre>
<pre><b>typedef bool_t (*</b><i>xdrproc_t</i><b>)(XDR *, void *,...);</b>
</pre>
</div>
<p class="Pp">Объявление
типа
данных <i>XDR</i>
находится
в <i><rpc/xdr.h></i>.</p>
<p class="Pp"></p>
<pre><b>bool_t xdr_array(XDR *</b><i>xdrs</i><b>, char **</b><i>arrp</i><b>, unsigned int *</b><i>sizep</i><b>,</b>
<b> unsigned int </b><i>maxsize</i><b>, unsigned int </b><i>elsize</i><b>,</b>
<b> xdrproc_t </b><i>elproc</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
массивами
переменной
длины и их
внешним
представлением.
В
аргументе
<i>arrp</i>
указывается
адрес
указателя
на массив,
а в <i>sizep</i> —
адрес
количества
элементов
в массиве,
которое не
может
превышать
значение
<i>maxsize</i>. В
аргументе
<i>elsize</i>
указывается
<i>sizeof</i> каждого
из
элементов
массива, а
в <i>elproc</i>
указывается
фильтр XDR,
который
производит
преобразования
между
формой
элементов
массива,
используемой
в языке С, и
их внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_bool(XDR *</b><i>xdrs</i><b>, bool_t *</b><i>bp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
логическими
переменными
(целочисленные
в С) и их
внешним
представлением.
Перекодируя
данные,
этот
фильтр
присваивает
им
значения,
равные
либо
единице,
либо нулю.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_bytes(XDR *</b><i>xdrs</i><b>, char **</b><i>sp</i><b>, unsigned int *</b><i>sizep</i><b>,</b>
<b> unsigned int </b><i>maxsize</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
строками
известной
длины и их
внешним
представлением.
В
аргументе
<i>sp</i>
указывается
адрес
указателя
строки.
Длина
строки
должна
находиться
по адресу,
указанному
в <i>sizep</i>; строки
не могут
быть
длиннее <i>maxsize</i>.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_char(XDR *</b><i>xdrs</i><b>, char *</b><i>cp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
символьными
значениями
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.
Замечание:
закодированные
символы не
упакованы,
и каждый
занимает 4
байта. В
случае с
массивом
символов
целесообразнее
использовать
<b>xdr_bytes</b>(), <b>xdr_opaque</b>() или
<b>xdr_string</b>().</dd>
</dl>
<p class="Pp"></p>
<pre><b>void xdr_destroy(XDR *</b><i>xdrs</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Макрос,
который
запускает
подпрограмму
уничтожения,
привязанную
к XDR-потоку <i>xdrs</i>.
Уничтожение
обычно
включает в
себя
освобождение
закрытых
структур
данных,
связанных
с потоком.
При
использовании
<i>xdrs</i> после
вызова <b>xdr_destroy</b>()
результат
не
определён.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_double(XDR *</b><i>xdrs</i><b>, double *</b><i>dp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
значениями
типа <i>double</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_enum(XDR *</b><i>xdrs</i><b>, enum_t *</b><i>ep</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
значениями
типа <i>enum</i>
(являющимися
по сути
целыми
числами)
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_float(XDR *</b><i>xdrs</i><b>, float *</b><i>fp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
значения
типа <i>float</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>void xdr_free(xdrproc_t </b><i>proc</i><b>, char *</b><i>objp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Общая
подпрограмма
освобождения
памяти.
Первым
аргументом
является
подпрограмма
XDR для
освобождаемого
объекта;
вторым —
указатель
на сам
объект.
Замечание:
сам
указатель,
переданный
этой
подпрограмме,
<i>не</i>
освобождается,
освобождается
(рекурсивно)
объект, на
который он
<i>указывает</i>.</dd>
</dl>
<p class="Pp"></p>
<pre><b>unsigned int xdr_getpos(XDR *</b><i>xdrs</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Макрос,
который
запускает
связанную
с XDR-потоком
<i>xdrs</i>
подпрограмму
получения
позиции.
Данная
подпрограмма
возвращает
беззнаковое
целое,
которое
указывает
на позицию
в потоке
байтов XDR.
Одна
особенность,
которой
потоки XDR
желательно
должны
обладать, —
это
возможность
производить
с этим
числом
простые
арифметические
операции,
хотя
экземпляры
потоков XDR и
не обязаны
гарантировать
это.</dd>
</dl>
<p class="Pp"></p>
<pre><b>long *xdr_inline(XDR *</b><i>xdrs</i><b>, int </b><i>len</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Макрос,
который
запускает
подпрограмму
встраивания,
связанную
с XDR-потоком
<i>xdrs</i>. Данная
подпрограмма
возвращает
указатель
на
непрерывную
часть
буфера
потока; в <i>len</i>
задаётся
длина
нужного
буфера в
байтах.
Замечание:
указатель
приводится
к типу <i>long *</i>.</dd>
<dt></dt>
<dd>Предупреждение:
<b>xdr_inline</b>() может
возвращать
NULL (0), если не
удастся
выделить
память под
непрерывный
кусок
буфера. Так
что,
поведение
в разных
экземплярах
потока
может
отличаться;
эта
подпрограмма
существует
прежде
всего для
обеспечения
возможности
оптимизации.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_int(XDR *</b><i>xdrs</i><b>, int *</b><i>ip</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
целочисленными
значениями
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_long(XDR *</b><i>xdrs</i><b>, long *</b><i>lp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
целочисленными
значениями
типа <i>long</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>void xdrmem_create(XDR *</b><i>xdrs</i><b>, char *</b><i>addr</i><b>, unsigned int </b><i>size</i><b>,</b>
<b> enum xdr_op </b><i>op</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Эта
подпрограмма
инициализирует
объект
потока XDR, на
который
указывает
<i>xdrs</i>. Данные
потока
записываются
в участок
памяти (или
считываются
из него),
находящийся
по адресу
<i>addr</i> и длина
которого
не больше
<i>size</i> байт.
Аргумент <i>op</i>
определяет
направление
потока XDR
(одно из: <b>XDR_ENCODE</b>,
<b>XDR_DECODE</b> или <b>XDR_FREE</b>).</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_opaque(XDR *</b><i>xdrs</i><b>, char *</b><i>cp</i><b>, unsigned int </b><i>cnt</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
непрозрачными
данными
фиксированного
размера и
их внешним
представлением.
В
аргументе
<i>cp</i>
указывается
адрес
непрозрачных
данных, а в
<i>cnt</i>
указывается
их размер в
байтах.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_pointer(XDR *</b><i>xdrs</i><b>, char **</b><i>objpp</i><b>,</b>
<b> unsigned int </b><i>objsize</i><b>, xdrproc_t </b><i>xdrobj</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Работает
аналогично
<b>xdr_reference</b>(), за
исключением
того, что в
отличие от
<b>xdr_reference</b>() она
может
обрабатывать
нулевые
указатели.
Таким
образом,
<b>xdr_pointer</b>() может
представлять
такие
рекурсивные
структуры
данных, как
например,
двоичные
деревья
или
связные
списки.</dd>
</dl>
<p class="Pp"></p>
<pre><b>void xdrrec_create(XDR *</b><i>xdrs</i><b>, unsigned int </b><i>sendsize</i><b>,</b>
<b> unsigned int </b><i>recvsize</i><b>, char *</b><i>handle</i><b>,</b>
<b> int (*</b><i>readit</i><b>)(char *, char *, int),</b>
<b> int (*</b><i>writeit</i><b>)(char *, char *, int));</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Эта
подпрограмма
инициализирует
объект
потока XDR, на
который
указывает
<i>xdrs</i>. Данные
потока
записываются
в буфер
размером
<i>sendsize</i>;
значение
ноль
указывает
на то, что
система
должна
использовать
подходящее
значение
по
умолчанию.
Данные
потока
считываются
из буфера
размером
<i>recvsize</i>, для
которого
также
можно
указать
значение
ноль для
использования
подходящего
значения
по
умолчанию.
Когда
буфер
записи
потока
заполнен,
вызывается
<i>writeit</i>.
Аналогично,
когда
буфер
чтения
потока
пуст,
вызывается
<i>readit</i>.
Поведение
этих двух
подпрограмм
аналогично
системным
вызовам <b>read</b>(2)
и <b>write</b>(2), за
исключением
того, что в
качестве
первого
аргумента
в эти
подпрограммы
передаётся
<i>handle</i>.
Замечание:
поле <i>op</i>
потока XDR
должно
быть
установлено
вызывающим.</dd>
<dt></dt>
<dd>Предупреждение:
для чтения
из потока XDR,
созданного
данным
программным
интерфейсом,
вы должны
сначала
вызвать
<b>xdrrec_skiprecord</b>(),
прежде чем
производить
какие-либо
другие
API-вызовы XDR.
Это
вставляет
дополнительные
байты в
поток для
предоставления
информации
о границе
записи.
Кроме того,
потоки XDR,
созданные
разными
API-функциями
<b>xdr*_create</b>,
несовместимы
по этой же
причине.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdrrec_endofrecord(XDR *</b><i>xdrs</i><b>, int </b><i>sendnow</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Эту
подпрограмму
можно
вызывать
только для
потоков,
созданных
<b>xdrrec_create</b>(). Данные
в буфере
вывода
помечаются
как
законченная
запись и,
если
параметр
<i>sendnow</i> не равен
нулю, буфер
вывода
записывается
и
отправляется.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdrrec_eof(XDR *</b><i>xdrs</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Эту
подпрограмму
можно
вызывать
только для
потоков,
созданных
<b>xdrrec_create</b>().
Подпрограмма
поглощает
остаток
текущей
записи в
данном
потоке и
возвращает
1, если на
входе
потока нет
больше
данных;
иначе
возвращается
0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdrrec_skiprecord(XDR *</b><i>xdrs</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Эту
подпрограмму
можно
вызывать
только для
потоков,
созданных
<b>xdrrec_create</b>(). Она
сообщает
реализации
XDR, что
оставшаяся
часть
текущей
записи в
буфере
ввода
потока
должна
быть
отброшена.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_reference(XDR *</b><i>xdrs</i><b>, char **</b><i>pp</i><b>, unsigned int </b><i>size</i><b>,</b>
<b> xdrproc_t </b><i>proc</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив,
который
предоставляет
перемещение
по
указателям
внутри
структур. В
аргументе
<i>pp</i>
передаётся
адрес
указателя;
в <i>size</i>
задаётся
размер (<i>sizeof</i>)
структуры,
на которую
указывает
<i>*pp</i>; в <i>proc</i>
указывается
процедура-фильтр
XDR, которая
производит
преобразование
между
структурой
языка С и
её внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
<dt></dt>
<dd>Предупреждение:
эта
подпрограмма
не
работает с
нулевыми
указателями.
Используйте
вместо неё
<b>xdr_pointer</b>().</dd>
</dl>
<p class="Pp"></p>
<pre><b>xdr_setpos(XDR *</b><i>xdrs</i><b>, unsigned int </b><i>pos</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Макрос,
который
запускает
подпрограмму
установки
позиции,
связанную
с XDR-потоком
<i>xdrs</i>. В
аргументе
<i>pos</i>
задаётся
значение
позиции,
полученное
с помощью
<b>xdr_getpos</b>(). Данная
подпрограмма
возвращает
1, если по
потоку XDR
можно
перемещаться,
иначе 0.</dd>
<dt></dt>
<dd>Предупреждение:
в
некоторых
типах
потоков XDR
бывает
трудно
изменить
позицию,
так что эта
подпрограмма
может
завершиться
неудачей
при работе
с одним
типом
потоков, но
успешно
работать с
другим.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_short(XDR *</b><i>xdrs</i><b>, short *</b><i>sp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
целочисленными
значения
типа <i>short</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>void xdrstdio_create(XDR *</b><i>xdrs</i><b>, FILE *</b><i>file</i><b>, enum xdr_op </b><i>op</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Эта
процедура
инициализирует
объект
потока XDR, на
который
указывает
<i>xdrs</i>. Данные
потока XDR
записываются
в или
считываются
из потока
<i>stdio</i>,
указанного
в <i>file</i>.
Аргумент <i>op</i>
определяет
направление
потока XDR
(одно из: <b>XDR_ENCODE</b>,
<b>XDR_DECODE</b> или <b>XDR_FREE</b>).</dd>
<dt></dt>
<dd>Предупреждение:
процедура
уничтожения,
связанная
с такими
потоками XDR,
вызывает
<b>fflush</b>(3) для
потока <i>file</i>,
но никогда
не
вызывает
<b>fclose</b>(3).</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_string(XDR *</b><i>xdrs</i><b>, char **</b><i>sp</i><b>, unsigned int </b><i>maxsize</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
строками
языка C и их
внешним
представлением.
Длина
строк не
может быть
больше <i>maxsize</i>.
Замечание:
значение <i>sp</i>
представляет
собой
адрес
указателя
на строку.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_u_char(XDR *</b><i>xdrs</i><b>, unsigned char *</b><i>ucp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
значениями
беззнакового
(<i>unsigned</i>)
символьного
типа языка
C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_u_int(XDR *</b><i>xdrs</i><b>, unsigned int *</b><i>up</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
беззнаковыми
целочисленными
значения
типа <i>unsigned</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_u_long(XDR *</b><i>xdrs</i><b>, unsigned long *</b><i>ulp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
беззнаковыми
целочисленными
значения
типа <i>unsigned long</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_u_short(XDR *</b><i>xdrs</i><b>, unsigned short *</b><i>usp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
беззнаковыми
целочисленными
значения
типа <i>unsigned short</i>
языка C и их
внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_union(XDR *</b><i>xdrs</i><b>, enum_t *</b><i>dscmp</i><b>, char *</b><i>unp</i><b>,</b>
<b> const struct xdr_discrim *</b><i>choices</i><b>,</b>
<b> xdrproc_t </b><i>defaultarm</i><b>); /* may equal NULL */</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
размеченными
объединениями
(discriminated <i>union</i>) языка C
и их
внешним
представлением.
Сначала
преобразуется
метка
объединения,
расположенная
в <i>dscmp</i>. Эта
метка
всегда
должна
иметь тип
<i>enum_t</i>. Затем
преобразуется
само
объединение,
расположенное
по адресу
<i>unp</i>.
Аргумент
<i>choices</i>
представляет
собой
указатель
на массив
структур
<b>xdr_discrim</b>(). Каждая
структура
содержит
упорядоченную
пару
[<i>значение</i>,<i>процедура</i>].
Если метка
объединения
равна
соответствующему
<i>значению</i>,
то для
преобразования
объединения
вызывается
соответствующая
ей
<i>процедура</i>.
Конец
массива
структур
<b>xdr_discrim</b>()
обозначается
процедурой
со
значением
NULL. Если
метка не
найдена в
массиве <i>choices</i>,
то
вызывается
процедура
<i>defaultarm</i> (если
данное
значение
не равно NULL).
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_vector(XDR *</b><i>xdrs</i><b>, char *</b><i>arrp</i><b>, unsigned int </b><i>size</i><b>,</b>
<b> unsigned int </b><i>elsize</i><b>, xdrproc_t </b><i>elproc</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив
фильтра,
который
производит
преобразования
между
массивами
фиксированной
длины и их
внешним
представлением.
В
аргументе
<i>arrp</i>
указывается
адрес
указателя
на массив,
а в <i>size</i> —
адрес
количества
элементов
в массиве.
В
аргументе
<i>elsize</i>
указывается
<i>sizeof</i> каждого
из
элементов
массива, а
в <i>elproc</i>
указывается
фильтр XDR,
который
производит
преобразования
между
формой
элементов
массива,
используемой
в языке С, и
их внешним
представлением.
Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_void(void);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Данная
подпрограмма
всегда
возвращает
1. Её можно
передавать
другим
подпрограммам
RPC, которые
обязательно
требуют
функцию в
качестве
аргумента,
когда
никаких
действий
производить
на самом
деле не
требуется.</dd>
</dl>
<p class="Pp"></p>
<pre><b>bool_t xdr_wrapstring(XDR *</b><i>xdrs</i><b>, char **</b><i>sp</i><b>);</b></pre>
<dl class="Bl-tag">
<dt></dt>
<dd>Примитив,
вызывающий
<b>xdr_string(xdrs, sp, MAXUN.UNSIGNED)</b>; где
<b>MAXUN.UNSIGNED</b> равно
максимальному
значению
беззнакового
целого.
Функцию
<b>xdr_wrapstring</b>() иногда
удобно
использовать,
потому что
в пакете RPC в
качестве
аргументов
передаётся
максимум
две
процедуры
XDR, а для <b>xdr_string</b>(),
одного из
наиболее
часто
используемых
примитивов,
требуется
три. Данная
подпрограмма
возвращает
1 при
успешном
завершении,
иначе 0.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh">АТРИБУТЫ</h1>
<p class="Pp">Описание
терминов
данного
раздела
смотрите в
<b>attributes</b>(7).</p>
<table class="tbl" border="1" style="border-style: solid;">
<tr>
<td><b>Интерфейс</b></td>
<td><b>Атрибут</b></td>
<td><b>Значение</b></td>
</tr>
<tr>
<td><b>xdr_array</b>(), <b>xdr_bool</b>(), <b>xdr_bytes</b>(),
<b>xdr_char</b>(), <b>xdr_destroy</b>(), <b>xdr_double</b>(),
<b>xdr_enum</b>(), <b>xdr_float</b>(), <b>xdr_free</b>(),
<b>xdr_getpos</b>(), <b>xdr_inline</b>(), <b>xdr_int</b>(),
<b>xdr_long</b>(), <b>xdrmem_create</b>(), <b>xdr_opaque</b>(),
<b>xdr_pointer</b>(), <b>xdrrec_create</b>(), <b>xdrrec_eof</b>(),
<b>xdrrec_endofrecord</b>(), <b>xdrrec_skiprecord</b>(),
<b>xdr_reference</b>(), <b>xdr_setpos</b>(), <b>xdr_short</b>(),
<b>xdrstdio_create</b>(), <b>xdr_string</b>(), <b>xdr_u_char</b>(),
<b>xdr_u_int</b>(), <b>xdr_u_long</b>(), <b>xdr_u_short</b>(),
<b>xdr_union</b>(), <b>xdr_vector</b>(), <b>xdr_void</b>(),
<b>xdr_wrapstring</b>()</td>
<td>Безвредность
в нитях</td>
<td>MT-Safe</td>
</tr>
</table>
</section>
<section class="Sh">
<h1 class="Sh">СМОТРИТЕ
ТАКЖЕ</h1>
<p class="Pp"><b>rpc</b>(3)</p>
<p class="Pp">Следующие
руководства:</p>
<div class="Bd-indent">Стандарт
представления
внешних
данных:
спецификация
протокола
<br/>
Представление
внешних
данных:
технические
замечания Sun.
<br/>
<i>XDR: External Data Representation Standard</i>, RFC 1014, Sun
Microsystems, Inc., USC-ISI.</div>
</section>
<section class="Sh">
<h1 class="Sh">ПЕРЕВОД</h1>
<p class="Pp">Русский
перевод
этой
страницы
руководства
разработал(и)
Azamat Hackimov <[email protected]>, Yuri Kozlov
<[email protected]>, Иван
Павлов <[email protected]>,
Kirill Rekhov <[email protected]> и Alexander Golubev
<[email protected]></p>
<p class="Pp">Этот
перевод
является
свободной
программной
документацией;
он
распространяется
на
условиях
общедоступной
лицензии GNU (GNU
General Public License - GPL,
<a class="Lk" href="https://www.gnu.org/licenses/gpl-3.0.html">https://www.gnu.org/licenses/gpl-3.0.html</a>
версии 3 или
более
поздней) в
отношении
авторского
права, но
БЕЗ
КАКИХ-ЛИБО
ГАРАНТИЙ.</p>
<p class="Pp">Если вы
обнаружите
какие-либо
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
сообщите
об этом
разработчику(ам)
по его(их)
адресу(ам)
электронной
почты или
по адресу
<a class="Mt" href="mailto:<[email protected]>">списка
рассылки
русских
переводчиков</a>.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">2 мая 2024 г.</td>
<td class="foot-os">Справочные
страницы Linux
6.9.1</td>
</tr>
</table>
</body>
</html>