Provided by: manpages-pt-dev_20040726-4_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)