Provided by: manpages-pt-dev_20040726-5_all bug

NOME

       xdr - rotinas de biblioteca para representação externa de dados

SINOPSE E DESCRIÇÃO

       Estas  rotinas  permitem  que  programadores C descrevam estruturas de dados arbitrariamente em um modelo
       independente de máquina. Dados para  chamadas  de  procedimento  remoto  são  transmitidos  usando  estas
       rotinas.

       xdr_array(xdrs, arrp, sizep, maxsize, elsize, elproc)
       XDR *xdrs;
       char **arrp;
       u_int *sizep, maxsize, elsize;
       xdrproc_t elproc;

              Uma  primitiva  de  filtro que traduz entre matrizes de comprimento variável e suas representações
              externas correspondentes. O parâmetro arrp é o endereço do ponteiro para a matriz, enquanto  sizep
              é  o  endereço  do  elemento 'count' da matriz; este elemento 'count' não pode exceder maxsize.  O
              parâmetro elsize é o sizeof de cada um dos elementos da matriz, e  elproc  é  um  filtro  XDR  que
              traduz  entre  o  formato  C  dos elementos da matriz e suas representações externas.  Esta rotina
              retorna um se for bem-sucedida, e zero caso contrário.

       xdr_bool(xdrs, bp)
       XDR *xdrs;
       bool_t *bp;

              Uma primitiva de filtro que traduz entre booleanos (inteiros C) e  suas  representações  externas.
              Quando  codifica dados, este filtro produz valores 'um' ou 'zero'. Esta rotina retorna 'um' se for
              bem-sucedida, e 'zero' em caso contrário.

       xdr_bytes(xdrs, sp, sizep, maxsize)
       XDR *xdrs;
       char **sp;
       u_int *sizep, maxsize;

              Uma primitiva de filtro que traduz entre strings de bytes contados e suas representações externas.
              O parâmetro sp é o endereço do ponteiro de  string.  O  comprimento  da  string  é  localizado  no
              endereço  sizep;  strings não podem ser maiores que maxsize.  Esta rotina retorna 'um' se for bem-
              sucedida, 'zero' em caso contrário.

       xdr_char(xdrs, cp)
       XDR *xdrs;
       char *cp;

              Uma primitiva de filtro que traduz entre caracteres C e suas representações externas.  Esta rotina
              retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.  Nota:  caracteres  codificados  não
              são  empacotados,  e  ocupam  4  bytes  cada.  Para matrizes de caracteres, vale a pena considerar
              xdr_bytes(), xdr_opaque() ou xdr_string().

       void
       xdr_destroy(xdrs)
       XDR *xdrs;

              Uma macro que invoca a rotina destrutiva associada com o fluxo XDR, xdrs.   Destruição  geralmente
              envolve a liberação de estruturas de dados privativas associadas com o fluxo. O uso de xdrs depois
              de invocar xdr_destroy() é indefinido.

       xdr_double(xdrs, dp)
       XDR *xdrs;
       double *dp;

              Uma  primitiva  de  filtro  que  traduz entre números de precisão dupla do C e suas representações
              externas. Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_enum(xdrs, ep)
       XDR *xdrs;
       enum_t *ep;

              Uma primitiva de filtro que traduz entre  enums  da  linguagem  C  (atualmente  inteiros)  e  suas
              representações  externas.   Esta  rotina  retorna  'um'  se  for  bem-sucedida,  e  'zero' em caso
              contrário.

       xdr_float(xdrs, fp)
       XDR *xdrs;
       float *fp;

              Uma primitiva de filtro que traduz entre floats da linguagem C  e  suas  representações  externas.
              Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       void
       xdr_free(proc, objp)
       xdrproc_t proc;
       char *objp;

              Rotina  de liberação genérica. O primeiro argumento é a rotina XDR para o objeto sendo liberado. O
              segundo argumento é um ponteiro para o próprio objeto. Nota: o ponteiro passado para  esta  rotina
              não é liberado, mas aquele para o qual ele aponta é liberado (recursivamente).

       u_int
       xdr_getpos(xdrs)
       XDR *xdrs;

              Uma  macro  que invoca a rotina 'pega-posição' associada com o fluxo XDR , xdrs.  A rotina retorna
              um inteiro sem sinal, que indica a posição do fluxo de bytes XDR.  Uma implementação desejável  do
              fluxo XDR é que aritmética simples funcione com este número, apesar de que instâncias do fluxo XDR
              não precisam garantir isso.

       long *
       xdr_inline(xdrs, len)
       XDR *xdrs;
       int len;

              Uma  macro  que  invoca a rotina 'em-linha' associada com o fluxo XDR , xdrs.  A rotina retorna um
              ponteiro para uma parte contígua do buffer do fluxo; len  é  o  comprimento  em  bytes  do  buffer
              desejado.  Nota: o ponteiro é um 'cast' para long *.

              Atenção:  xdr_inline()  pode  retornar  NULL  (0) se ele não puder alocar uma parte contígua de um
              buffer. Portanto o comportamento pode variar entre instâncias do fluxo; ele existe em consideração
              à eficiência.

       xdr_int(xdrs, ip)
       XDR *xdrs;
       int *ip;

              Uma primitiva de filtro que traduz entre inteiros do  C  e  suas  representações  externas.  Estas
              rotinas retornam 'um' se forem bem-sucedidas, e 'zero' em caso contrário.

       xdr_long(xdrs, lp)
       XDR *xdrs;
       long *lp;

              Uma  primitiva  de  filtro  que  traduz entre inteiros longos do C e suas representações externas.
              Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       void
       xdrmem_create(xdrs, addr, size, op)
       XDR *xdrs;
       char *addr;
       u_int size;
       enum xdr_op op;

              Esta rotina inicializa o objeto de fluxo XDR apontado por xdrs.  Os dados do fluxo são escritos ou
              lidos de um pedaço de memória na posição addr , cujo comprimento não é maior que size bytes. O  op
              determina a direção do fluxo XDR ( XDR_ENCODE, XDR_DECODE, ou XDR_FREE).

       xdr_opaque(xdrs, cp, cnt)
       XDR *xdrs;
       char *cp;
       u_int cnt;

              Uma primitiva de filtro que traduz entre dados opacos de tamanho fixo e sua representação externa.
              O  parâmetro cp é o endereço do objeto opaco, e cnt é o seu tamanho em bytes.  Esta rotina retorna
              'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_pointer(xdrs, objpp, objsize, xdrobj)
       XDR *xdrs;
       char **objpp;
       u_int objsize;
       xdrproc_t xdrobj;

              Como  xdr_reference()  se  excetua  pelo  fato  de  serializar  ponteiros  NULL,   uma   vez   que
              xdr_reference()   não  o  faz.  Portanto,  xdr_pointer()  pode  representar  estruturas  de  dados
              recursivos, como árvores binárias ou listas ligadas.

       void
       xdrrec_create(xdrs, sendsize, recvsize, handle, readit, writeit)
       XDR *xdrs;
       u_int sendsize, recvsize;
       char *handle;
       int (*readit) (), (*writeit) ();

              Esta rotina inicializa o objeto de fluxo XDR apontado por xdrs.  Os dados do fluxo são escritos em
              um buffer de tamanho sendsize;  um  valor  'zero'  indica  que  o  sistema  deve  usar  um  padrão
              conveniente.   Os dados do fluxo são lidos de um buffer de tamanho.  recvsize; ele também pode ser
              setado para um padrão conveniente pela passagem de um valor igual a zero.   Quando  um  buffer  de
              saída  do  fluxo está cheio, writeit é chamado. Similarmente, quando um buffer de entrada do fluxo
              está vazio, readit é chamado. O comportamento destas duas rotinas é similar às chamadas de sistema
              read e write, exceto pelo fato de que handle é passado  para  a  antiga  rotina  como  o  primeiro
              parâmetro.  Nota: o campo op do fluxo XDR precisa ser setado pelo chamador.

              Atenção:  este  fluxo  XDR  implementa  um  fluxo  de  registro  intermediário. Portanto, há bytes
              adicionais no fluxo para prover informações de limite de registro.

       xdrrec_endofrecord(xdrs, sendnow)
       XDR *xdrs;
       int sendnow;

              Esta rotina pode ser invocada somente em fluxos criados por xdrrec_create().  Os dados  no  buffer
              de  saída  são  marcados como um registro completo, e o buffer de saída é enviado opcionalmente se
              sendnow não é zero. Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdrrec_eof(xdrs)
       XDR *xdrs;
       int empty;

              Esta rotina pode ser invocada somente em fluxos criados por xdrrec_create().  Depois de consumir o
              resto do registro corrente no fluxo, esta rotina retorna

       xdrrec_skiprecord(xdrs)
       XDR *xdrs;

              Esta rotina pode  ser  invocada  somente  em  fluxos  criados  por  xdrrec_create().   Ele  diz  à
              implementação  XDR  que  o  resto  do  registro  corrente  no  buffer de entrada do fluxo deve ser
              descartado.  Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_reference(xdrs, pp, size, proc)
       XDR *xdrs;
       char **pp;
       u_int size;
       xdrproc_t proc;

              Uma primitiva que fornece perseguição a ponteiros dentro  de  estruturas.   O  parâmetro  pp  é  o
              endereço  do  ponteiro; size é a estrutura sizeof para o qual *pp aponta; e proc é um procedimento
              XDR que filtra a estrutura entre sua forma C e sua representação  externa.   Esta  rotina  retorna
              'um' se for bem-sucedida, e 'zero' em caso contrário.

              Atenção: esta rotina não entende ponteiros do tipo NULL.  Use xdr_pointer() no lugar.

       xdr_setpos(xdrs, pos)
       XDR *xdrs;
       u_int pos;

              Uma macro que invoca a rotina de posição setada associada com o fluxo XDR xdrs.  O parâmetro pos é
              um  valor de posição obtido de xdr_getpos().  Esta rotina retorna 'um' se o fluxo XDR não pode ser
              reposicionado, e 'zero' em caso contrário.

              Atenção: é difícil reposicionar alguns tipos de fluxos XDR , assim esta rotina pode falhar com  um
              tipo de fluxo e funcionar com outro.

       xdr_short(xdrs, sp)
       XDR *xdrs;
       short *sp;

              Uma  primitiva  de  filtro  que  traduz entre inteiros curtos do C e suas representações externas.
              Esta rotina retorna 'um' se for bem-sucedida, e 'zero' e caso contrário.

       void
       xdrstdio_create(xdrs, file, op)
       XDR *xdrs;
       FILE *file;
       enum xdr_op op;

              Esta rotina inicializa o objeto de fluxo XDR apontado  por  xdrs.   Os  dados  do  fluxo  XDR  são
              escritos  ou lidos do arquivo de fluxo padrão de I/O.  O parâmetro op determina a direção do fluxo
              XDR ( XDR_ENCODE, XDR_DECODE, ou XDR_FREE).

              Atenção: a rotina de destruição associada com tais rotinas de chamada de fluxo XDR fflush()  sobre
              o fluxo de arquivo , mas nunca fclose().

       xdr_string(xdrs, sp, maxsize)
       XDR
       *xdrs;
       char **sp;
       u_int maxsize;

              Uma primitiva de filtro que traduz entre strings C e suas representações externas correspondentes.
              Strings  não  podem  ser  maiores  que maxsize.  Nota: sp é o endereço do ponteiro da string. Esta
              rotina retorna 'um' se for bem-sucedida, e

       xdr_u_char(xdrs, ucp)
       XDR *xdrs;
       unsigned char *ucp;

              Uma primitiva de filtro que traduz entre caracteres C sem sinal e  suas  representações  externas.
              Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_u_int(xdrs, up)
       XDR *xdrs;
       unsigned *up;

              Uma  primitiva  de filtro que traduz entre inteiros sem sinal do C e suas representações externas.
              Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_u_long(xdrs, ulp)
       XDR *xdrs;
       unsigned long *ulp;

              Uma primitiva de filtro que traduz entre inteiros longos sem sinal  do  C  e  suas  representações
              externas.  Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_u_short(xdrs, usp)
       XDR *xdrs;
       unsigned short *usp;

              Uma  primitiva  de  filtro  que  traduz entre inteiros curtos sem sinal do C e suas representações
              externas.  Esta rotina retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

       xdr_union(xdrs, dscmp, unp, choices, dfault)
       XDR *xdrs;
       int *dscmp;
       char *unp;
       struct xdr_discrim *choices;
       bool_t (*defaultarm) ();  /* may equal NULL */

              Uma primitiva de filtro que traduz entre uma union discriminada do C e sua  representação  externa
              correspondente.  Ela  primeiro  traduz  o  discriminante  da  união  localizado  em  dscmp.   Este
              discriminante é sempre um enum_t.  A seguir, a união localizada em unp é  traduzida.  O  parâmetro
              choices  é  um ponteiro para uma matriz de estruturas xdr_discrim().  Cada estrutura contém um par
              ordenado de [value,proc].  Se o discriminante da união é igual ao valor associado,  então  proc  é
              chamado  para  traduzir  a  união.  O  fim da matriz de estrutura xdr_discrim() é denotada por uma
              rotina de valor NULL.   Se  o  discriminante  não  é  encontrado  na  matriz  choices  ,  então  o
              procedimento  defaultarm  é  chamado  (se  ele não for NULL).  Retorna 'um' se for bem-sucedida, e
              'zero' em caso contrário.

       xdr_vector(xdrs, arrp, size, elsize, elproc)
       XDR *xdrs;
       char *arrp;
       u_int size, elsize;
       xdrproc_t elproc;

              Uma primitiva de filtro que traduz entre  matrizes  de  comprimento  fixo  e  suas  representações
              externas correspondentes. O parâmetro arrp é o endereço do ponteiro para a matriz, enquanto size é
              o  elemento 'count' da matriz. O parâmetro elsize é o sizeof de cada um dos elementos da matriz, e
              elproc é um filtro XDR  que  traduz  entre  o  formato  dos  elementos  da  matriz  em  C  e  suas
              representações  externas.   Esta  rotina  retorna  'um'  se  for  bem-sucedida,  e  'zero' em caso
              contrário.

       xdr_void()

              Esta rotina sempre retorna 'um'.  Ela pode ser passada para rotinas RPC que requerem um  parâmetro
              de função, onde nada vai ser feito.

       xdr_wrapstring(xdrs, sp)
       XDR *xdrs;
       char **sp;

              Uma primitiva que chama xdr_string(xdrs, sp,MAXUN.UNSIGNED ); onde MAXUN.UNSIGNED é o valor máximo
              de  um inteiro sem sinal.  xdr_wrapstring() está à mão porque o pacote RPC passa um máximo de duas
              rotinas XDR como parâmetros, e xdr_string(), uma das primitivas mais frequentemente usadas, requer
              três.  Retorna 'um' se for bem-sucedida, e 'zero' em caso contrário.

VEJA TAMBÉM

       rpc(3N)

       Os seguintes manuais:
              eXternal Data Representation Standard: Especificação do Protocolo
              eXternal Data Representation: Notas Técnicas da Sun
              XDR: Padrão de Representação Externa de Dados, RFC1014, Sun Microsystems, Inc., USC-ISI.

TRADUÇÃO PARA A LÍNGUA PORTUGUESA

       RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (tradução) XXXXXX XX  XXXXX  XXXXXXXX  <xxxxxxxxxx@xxx.xxx>
       (revisão)

                                             16 de fevereiro de 1988                                      XDR(3)