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

NOME

       xdr - rotinas de biblioteca para representacao externa de dados

SINOPSE E DESCRI,C~AO

       Estas  rotinas  permitem  que  programadores  C descrevam estruturas de
       dados arbitrariamente em um modelo independente de maquina. Dados  para
       chamadas de procedimento remoto sao 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
              variavel  e  suas  representacoes  externas  correspondentes.  O
              parametro  arrp e o endereco do ponteiro para a matriz, enquanto
              sizep e o endereco do elemento 'count' da matriz; este  elemento
              'count' nao pode exceder maxsize.  O parametro elsize e o sizeof
              de cada um dos elementos da matriz, e elproc e um filtro XDR que
              traduz  entre  o  formato  C  dos  elementos  da  matriz  e suas
              representacoes externas.  Esta rotina retorna  um  se  for  bem-
              sucedida, e zero caso contrario.

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

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

       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  representacoes  externas.  O parametro sp e o
              endereco do ponteiro  de  string.  O  comprimento  da  string  e
              localizado  no endereco sizep; strings nao podem ser maiores que
              maxsize.  Esta rotina retorna 'um' se for  bem-sucedida,  'zero'
              em caso contrario.

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

              Uma  primitiva  de  filtro  que traduz entre caracteres C e suas
              representacoes externas.  Esta rotina retorna 'um' se  for  bem-
              sucedida,   e   'zero'  em  caso  contrario.   Nota:  caracteres
              codificados nao sao 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.   Destruicao  geralmente  envolve  a  liberacao  de
              estruturas de dados privativas associadas com o fluxo. O uso  de
              xdrs depois de invocar xdr_destroy() e indefinido.

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

              Uma  primitiva  de  filtro  que traduz entre numeros de precisao
              dupla do C e suas representacoes externas. Esta  rotina  retorna
              'um' se for bem-sucedida, e 'zero' em caso contrario.

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

              Uma  primitiva  de  filtro que traduz entre enums da linguagem C
              (atualmente inteiros)  e  suas  representacoes  externas.   Esta
              rotina  retorna  'um'  se  for  bem-sucedida,  e  'zero' em caso
              contrario.

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

              Uma primitiva de filtro que traduz entre floats da linguagem C e
              suas  representacoes  externas.  Esta rotina retorna 'um' se for
              bem-sucedida, e 'zero' em caso contrario.

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

              Rotina de liberacao generica. O primeiro argumento  e  a  rotina
              XDR  para  o  objeto  sendo  liberado.  O segundo argumento e um
              ponteiro para o proprio objeto. Nota: o  ponteiro  passado  para
              esta  rotina n~ao e liberado, mas aquele para o qual ele aponta 'e
              liberado (recursivamente).

       u_int
       xdr_getpos(xdrs)
       XDR *xdrs;

              Uma macro que invoca a rotina  'pega-posicao'  associada  com  o
              fluxo  XDR  ,  xdrs.  A rotina retorna um inteiro sem sinal, que
              indica a posicao do  fluxo  de  bytes  XDR.   Uma  implementacao
              desejavel  do  fluxo  XDR  e que aritmetica simples funcione com
              este numero, apesar de que instancias do fluxo XDR nao  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
              contigua  do  buffer  do  fluxo; len e o comprimento em bytes do
              buffer desejado.  Nota: o ponteiro e um 'cast' para long *.

              Atencao: xdr_inline() pode retornar NULL (0) se  ele  nao  puder
              alocar uma parte contigua de um buffer. Portanto o comportamento
              pode  variar  entre  instancias  do   fluxo;   ele   existe   em
              consideracao a eficiencia.

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

              Uma  primitiva  de  filtro que traduz entre inteiros do C e suas
              representacoes externas. Estas rotinas retornam  'um'  se  forem
              bem-sucedidas, e 'zero' em caso contrario.

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

              Uma  primitiva de filtro que traduz entre inteiros longos do C e
              suas representacoes externas.  Esta rotina retorna 'um'  se  for
              bem-sucedida, e 'zero' em caso contrario.

       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 sao escritos ou lidos de um pedaco de  memoria
              na posicao addr , cujo comprimento nao e maior que size bytes. O
              op determina a direcao 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 representacao externa.  O parametro cp e  o  endereco
              do  objeto  opaco,  e cnt e o seu tamanho em bytes.  Esta rotina
              retorna 'um' se for bem-sucedida, e 'zero' em caso contrario.

       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() nao o faz. Portanto,
              xdr_pointer() pode representar estruturas de  dados  recursivos,
              como arvores binarias 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 sao escritos em um buffer de tamanho sendsize;
              um  valor  'zero'  indica  que  o  sistema  deve  usar um padrao
              conveniente.  Os dados do  fluxo  sao  lidos  de  um  buffer  de
              tamanho.   recvsize;  ele  tambem pode ser setado para um padrao
              conveniente pela passagem de um valor igual a zero.   Quando  um
              buffer  de  saida  do  fluxo  esta  cheio,  writeit  e  chamado.
              Similarmente, quando um buffer de entrada do fluxo  esta  vazio,
              readit  e chamado. O comportamento destas duas rotinas e similar
              as chamadas de sistema read e write, exceto  pelo  fato  de  que
              handle e passado para a antiga rotina como o primeiro parametro.
              Nota: o campo op do fluxo XDR precisa ser setado pelo chamador.

              Atencao:  este  fluxo  XDR  implementa  um  fluxo  de   registro
              intermediario.  Portanto,  ha  bytes  adicionais  no  fluxo para
              prover informacoes 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 saida sao marcados como
              um  registro  completo,  e  o  buffer   de   saida   e   enviado
              opcionalmente se sendnow nao e zero. Esta rotina retorna 'um' se
              for bem-sucedida, e 'zero' em caso contrario.

       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  a  implementacao 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 contrario.

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

              Uma primitiva que fornece  perseguicao  a  ponteiros  dentro  de
              estruturas.   O  parametro pp e o endereco do ponteiro; size e a
              estrutura  sizeof  para  o  qual  *pp  aponta;  e  proc   e   um
              procedimento  XDR que filtra a estrutura entre sua forma C e sua
              representacao externa.  Esta rotina retorna  'um'  se  for  bem-
              sucedida, e 'zero' em caso contrario.

              Atencao:  esta  rotina  nao 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 posicao setada associada com  o
              fluxo XDR xdrs.  O parametro pos e um valor de posicao obtido de
              xdr_getpos().  Esta rotina retorna 'um' se o fluxo XDR nao  pode
              ser reposicionado, e 'zero' em caso contrario.

              Atencao:  e  dificil  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 representacoes externas.  Esta rotina retorna 'um'  se  for
              bem-sucedida, e 'zero' e caso contrario.

       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 sao escritos ou lidos do arquivo de  fluxo
              padrao  de I/O.  O parametro op determina a direcao do fluxo XDR
              ( XDR_ENCODE, XDR_DECODE, ou XDR_FREE).

              Atencao: a rotina de destruicao 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
              representacoes  externas  correspondentes. Strings nao podem ser
              maiores que maxsize.  Nota: sp  e  o  endereco  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 representacoes externas.  Esta rotina retorna 'um' se for
              bem-sucedida, e 'zero' em caso contrario.

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

              Uma primitiva de filtro que traduz entre inteiros sem sinal do C
              e suas representacoes externas.  Esta rotina retorna 'um' se for
              bem-sucedida, e 'zero' em caso contrario.

       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 representacoes externas.  Esta rotina  retorna
              'um' se for bem-sucedida, e 'zero' em caso contrario.

       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 representacoes externas.  Esta rotina  retorna
              'um' se for bem-sucedida, e 'zero' em caso contrario.

       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 representacao externa  correspondente.  Ela  primeiro
              traduz  o  discriminante  da  uniao  localizado  em dscmp.  Este
              discriminante e sempre um enum_t.  A seguir, a uniao  localizada
              em  unp  e traduzida. O parametro choices e um ponteiro para uma
              matriz de estruturas xdr_discrim().  Cada  estrutura  contem  um
              par  ordenado  de  [value,proc].   Se o discriminante da uniao e
              igual ao valor associado, entao proc e chamado para  traduzir  a
              uniao. O fim da matriz de estrutura xdr_discrim() e denotada por
              uma rotina de valor NULL.  Se o discriminante nao  e  encontrado
              na  matriz  choices  , entao o procedimento defaultarm e chamado
              (se ele nao for NULL).  Retorna  'um'  se  for  bem-sucedida,  e
              'zero' em caso contrario.

       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 representacoes externas correspondentes. O parametro
              arrp  e  o endereco do ponteiro para a matriz, enquanto size e o
              elemento 'count' da matriz. O parametro elsize  e  o  sizeof  de
              cada  um  dos  elementos da matriz, e elproc e um filtro XDR que
              traduz entre o formato dos elementos  da  matriz  em  C  e  suas
              representacoes  externas.   Esta rotina retorna 'um' se for bem-
              sucedida, e 'zero' em caso contrario.

       xdr_void()

              Esta rotina sempre retorna 'um'.   Ela  pode  ser  passada  para
              rotinas  RPC  que requerem um parametro de funcao, 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  e  o valor maximo de um inteiro sem sinal.
              xdr_wrapstring() esta a mao porque o pacote RPC passa um  maximo
              de  duas  rotinas  XDR  como parametros, e xdr_string(), uma das
              primitivas mais frequentemente  usadas,  requer  tres.   Retorna
              'um' se for bem-sucedida, e 'zero' em caso contrario.

VEJA TAMB'EM

       rpc(3N)

       Os seguintes manuais:
              eXternal   Data   Representation   Standard:   Especifica,c~ao  do
              Protocolo
              eXternal Data Representation: Notas T'ecnicas da Sun
              XDR: Padr~ao de Representa,c~ao  Externa  de  Dados,  RFC1014,  Sun
              Microsystems, Inc., USC-ISI.

TRADU,C~AO PARA A L'INGUA PORTUGUESA

       RUBENS  DE  JESUS  NOGUEIRA  <darkseid99@usa.net>  (traducao) XXXXXX XX
       XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisao)

                            16 de fevereiro de 1988                     XDR(3)