Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       xdr - Bibliotheque de fonctions pour transmission externe de donnees

SYNOPSIS ET DESCRIPTION

       Ces routines permettent aux programmeurs C de decrire des structures de
       donnees arbitraires de maniere independante de la machine. Les  donnees
       pour  les  appels  de routines distantes (RPC) sont transmises de cette
       maniere.

       Les prototypes ci-dessous sont declares dans <rpc/xdr.h>  et  utilisent
       les types suivants :

           typedef int bool_t;

           typedef bool_t (*xdrproc_t) (XDR *, void *,...);

       Pour la declaration du type XDR, consultez <rpc/xdr.h>.

       bool_t xdr_array(XDR *xdrs, char **arrp, unsigned int *sizep,
                        unsigned int maxsize, unsigned int elsize,
                        xdrproc_t elproc);

              Une  primitive  de  filtrage  qui traduit les tables de longueur
              variable en leur representations  externes  correspondantes.  Le
              parametre arrp est l'adresse d'un pointeur sur la chaine, tandis
              que sizep est l'adresse du nombre d'elements dans la  table.  Ce
              nombre  d'elements  ne  peut  pas  exceder maxsize. Le parametre
              elsize est la taille (sizeof) de chaque element de la table,  et
              elproc  est  un  filtre  XDR  de traduction entre la forme C des
              elements de  la  table,  et  sa  representation  externe.  Cette
              routine renvoie 1 si elle reussit, 0 sinon.

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

              Une  primitive  de  filtrage  assurant  la  traduction entre les
              booleens (entiers C)  et  leur  representation  externe.  Durant
              l'encodage  des  donnees, ce filtre produit soit un 1 soit un 0.
              Cette routine renvoie 1 si elle reussit, 0 sinon.

       bool_t xdr_bytes(XDR *xdrs, char **sp, unsigned int *sizep,
                        unsigned int maxsize);

              Une primitive de  filtrage  assurant  la  traduction  entre  des
              tables  caracteres  de  longueurs donnees et leur representation
              externe. Le parametre  sp  est  l'adresse  du  pointeur  sur  la
              chaine.  La  longueur de la chaine est situee a l'adresse sizep.
              Les chaines ne peuvent pas etre plus longues que maxsize.  Cette
              routine renvoie 1 si elle reussit, 0 sinon.

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

              Une  primitive  de  filtrage  assurant  la  traduction entre les
              caracteres C  et  leur  representation  externe.  Cette  routine
              renvoie  1  si  elle  reussit,  0  sinon.  Note : les caracteres
              encodes ne sont pas accoles, et occupent quatre  octets  chacun.
              Pour  les  tables  de  caracteres, il vaut mieux se tourner vers
              xdr_bytes(), xdr_opaque() ou xdr_string().

       void xdr_destroy(XDR *xdrs);

              Une macro invoquant la routine de destruction associee  avec  le
              flux  XDR,  xdrs.  La  destruction  entraine  habituellement  la
              liberation de structures de donnees privees  associees  avec  le
              flux.  Le comportement est indefini si on essaye d'utiliser xdrs
              apres avoir invoque xdr_destroy().

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              nombres  C  en  double precision et leur representation externe.
              Cette routine renvoie 1 si elle reussit, 0 sinon.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              enumeres  C enum (en realite des entiers) et leur representation
              externe. Cette routine renvoie 1 si elle reussit, 0 sinon.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              nombres  float  C  et leur representation externe. Cette routine
              renvoie 1 si elle reussit, 0 sinon.

       void xdr_free(xdrproc_t proc, char *objp);

              Routine generique de liberation.  Le  premier  argument  est  la
              routine  XDR  de  l'objet  a  liberer. Le second argument est un
              pointeur vers l'objet lui-meme. Note : le  pointeur  transmis  a
              cette  routine n'est pas libere, mais l'endroit ou il pointe est
              libere (recursivement).

       unsigned int xdr_getpos(XDR *xdrs);

              Une macro invoquant la routine de lecture de  position  associee
              avec  le  flux  XDR,  xdrs. Cette fonction renvoie un entier non
              signe,  qui  indique  la  position  dans  le   flux   XDR.   Une
              fonctionnalite  appreciable  serait  que  l'arithmetique usuelle
              fonctionne avec  ce  nombre,  mais  tous  les  flux  XDR  ne  le
              garantissent pas.

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

              Une  macro qui invoque la routine en-ligne associee avec le flux
              XDR xdrs. Cette routine renvoie un  pointeur  vers  une  portion
              continue  du  tampon  du  flux. len est la longueur en octets du
              tampon desire. Note : le pointeur est converti en long *.

              Attention : xdr_inline() peut renvoyer NULL (0) si elle ne  peut
              allouer une portion continue de tampon de la taille reclamee. Ce
              comportement peut neanmoins varier  d'une  instance  de  flux  a
              l'autre ; elle existe par souci d'efficacite.

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

              Une  primitive  de  filtrage  assurant  la  traduction entre les
              entiers C et leur representation externe. Cette routine  renvoie
              1 si elle reussit, 0 sinon.

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

              Une  primitive  de  filtrage  assurant  la  traduction entre les
              entiers long C et leur  representation  externe.  Cette  routine
              renvoie 1 si elle reussit, 0 sinon.

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

              Cette  routine  initialise l'objet flux XDR pointe par xdrs. Les
              donnees du flux sont lues ou ecrites dans le bloc memoire  situe
              en  addr  et  dont  la  longueur  ne  depasse  pas  size octets.
              L'argument op determine la direction du  flux  XDR  (XDR_ENCODE,
              XDR_DECODE ou XDR_FREE).

       bool_t xdr_opaque(XDR *xdrs, char *cp, unsigned int cnt);

              Une  primitive  de  filtrage  assurant  la  traduction entre des
              donnees opaques de taille fixe et leur  representation  externe.
              Le  parametre  cp est l'adresse de l'objet opaque, et cnt est sa
              taille en octets. Cette routine renvoie 1  si  elle  reussit,  0
              sinon.

       bool_t xdr_pointer(XDR *xdrs, char **objpp,
                          unsigned int objsize, xdrproc_t xdrobj);

              Comme xdr_reference() sauf qu'elle met bout a bout les pointeurs
              NULL  alors  que  xdr_reference()  ne   le   fait   pas.   Ainsi
              xdr_pointer()   peut   representer  des  structures  de  donnees
              recursives, comme les arbres binaires ou les listes chainees.

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

              Cette routine initialise  le  flux  XDR  pointe  par  xdrs.  Les
              donnees  du flux sont ecrites dans un tampon de taille sendsize.
              Une valeur nulle indique que  le  systeme  choisira  une  taille
              adequate.  Les  donnees  du  flux  sont lues depuis un tampon de
              taille recvsize. De meme le systeme choisira une taille adequate
              en transmettant une valeur nulle. Lorsque le tampon de sortie du
              flux est plein, la fonction writeit est appele.  Symetriquement,
              lorsque  le  tampon  d'entree  est  vide, la fonction readit est
              invoquee. Le comportement de ces routines est similaire aux deux
              appels  systeme  read(2)  et  write(2),  sauf que le descripteur
              handle est passe aux routines en  tant  que  premier  parametre.
              Note : l'attribut op du flux XDR doit etre fixe par l'appelant.

              Attention :  ce  flux  XDR  implemente  un flux d'enregistrement
              intermediaire. Il y a donc des octets  supplementaires  dans  le
              flux afin de separer les enregistrements.

       bool_t xdrrec_endofrecord(XDR *xdrs, int sendnow);

              Cette  routine  ne  peut etre invoquee que sur des flux cree par
              xdrrec_create(). Les donnees  dans  le  tampon  de  sortie  sont
              considerees  comme  un  enregistrement  complet, et le tampon de
              sortie est eventuellement ecrit si sendnow est  non  nul.  Cette
              routine renvoie 1 si elle reussit, 0 sinon.

       bool_t xdrrec_eof(XDR *xdrs);

              Cette  routine  ne  peut etre invoque que sur des flux crees par
              xdrrec_create(). Apres avoir rempli le reste de l'enregistrement
              avec les donnees du flux, cette routine renvoie 1 si le flux n'a
              plus de donnees d'entree, et 0 sinon.

       bool_t xdrrec_skiprecord(XDR *xdrs);

              Cette routine ne peut etre invoque que sur des  flux  crees  par
              xdrrec_create().  Elle  indique  a  l'implementation  XDR que le
              reste de l'enregistrement en cours dans le tampon d'entree  doit
              etre elimine. Cette routine renvoie 1 si elle reussit, 0 sinon.

       bool_t xdr_reference(XDR *xdrs, char **pp, unsigned int size,
                            xdrproc_t proc);

              Une  primitive  qui  gere  les  pointeurs sur les structures. Le
              parametre pp est l'adresse  du  pointeur,  size  est  la  taille
              (sizeof)  de  la  structure  pointee  par  *pp,  et  proc est la
              procedure XDR qui filtre la structure entre sa  forme  C  et  sa
              representation externe. Cette routine renvoie 1 si elle reussit,
              et 0 sinon.

              Attention : cette routine ne comprend pas  les  pointeurs  NULL.
              Utilisez xdr_pointer() a sa place.

       xdr_setpos(XDR *xdrs, unsigned int pos);

              Une  macro  qui invoque la routine de positionnement associee au
              flux XDR xdrs. Le parametre  pos  est  une  valeur  de  position
              obtenue  avec  xdr_getpos().  Cette routine renvoie 1 si le flux
              XDR peut etre repositionne, et zero sinon.

              Attention : il est difficile de repositionner certains types  de
              flux  XDR  ce qui peut faire echouer cette routine avec certains
              flux, et reussir avec d'autres.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              entiers  short  et  leur  representation  externe. Cette routine
              renvoie 1 si elle reussit, 0 sinon.

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

              Cette routine initialise l'objet flux XDR pointe par  xdrs.  Les
              donnees du flux XDR sont ecrites dans - ou lues depuis - le flux
              d'entree-sortie standard file.  Le  parametre  op  determine  la
              direction du flux XDR (XDR_ENCODE, XDR_DECODE ou XDR_FREE).

              Attention :  la routine de destruction associee avec un tel flux
              XDR appelle fflush(3) sur le flux file, mais pas fclose(3).

       bool_t xdr_string(XDR *xdrs, char **sp, unsigned int maxsize);

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              chaines  de  caracteres  C  et  leur representation externe. Les
              chaines ne peuvent pas etre plus longues que maxsize. Note :  sp
              est l'adresse du pointeur sur la chaine. Cette routine renvoie 1
              si elle reussit, 0 sinon.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              caracteres  unsigned  du C et leur representation externe. Cette
              routine renvoie 1 si elle reussit, 0 sinon.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              entiers  unsigned  du  C  et  leur representation externe. Cette
              routine renvoie 1 si elle reussit, 0 sinon.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              entiers unsigned long du C et leur representation externe. Cette
              routine renvoie 1 si elle reussit, 0 sinon.

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

              Une primitive de  filtrage  assurant  la  traduction  entre  les
              entiers  unsigned  short  du  C  et leur representation externe.
              Cette routine renvoie 1 si elle reussit, 0 sinon.

       bool_t xdr_union(XDR *xdrs, int *dscmp, char *unp,
                        struct xdr_discrim *choices,
                        xdrproc_t defaultarm);     /* peut ^etre NULL */

              Une primitive de filtrage assurant la traduction entre une union
              C avec discriminant et la representation externe correspondante.
              Elle traduit d'abord le discriminant de l'union, situe en dscmp.
              Le  discriminant  doit  toujours  etre  du type enum_t. Ensuite,
              l'union situee en unp est traduite. Le parametre choices est  un
              pointeur  sur  une  table  de  structures  xdr_discrim(). Chaque
              structure contient une paire ordonnee [valeur, proc'edure]. Si le
              discriminant  de  l'union  est  egal  a  une  valeur,  alors  la
              proc'edure associee est invoquee pour traduire l'union. La fin de
              la  table  de  structures  xdr_discrim()  est  indiquee  par une
              routine de valeur NULL. Si le discriminant n'est pas trouve dans
              la table choices, alors la procedure defaultarm est invoquee (si
              elle ne vaut pas NULL). Cette routine renvoie 1 si elle reussit,
              0 sinon.

       bool_t xdr_vector(XDR *xdrs, char *arrp, unsigned int size,
                         unsigned int elsize, xdrproc_t elproc);

              Une  primitive  de  filtrage  assurant  la  traduction entre les
              tables de longueur fixe,  et  leur  representation  externe.  Le
              parametre  arrp  est  l'adresse du pointeur sur la table, tandis
              que size est le nombre d'elements dans la  table.  Le  parametre
              elsize  est  la  taille  (sizeof)  d'un  element de la table, et
              elproc est un filtre XDR assurant la traduction entre la forme C
              des  elements  de la table et leur representation externe. Cette
              routine renvoie 1 si elle reussit, 0 sinon.

       bool_t xdr_void(void);

              Cette routine renvoie toujours 1.  Elle  peut  etre  passee  aux
              routines  RPC  qui  ont besoin d'une fonction en parametre alors
              que rien ne doit etre fait.

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

              Une primitive qui appelle xdr_string(xdrs, sp,  MAXUN.UNSIGNED);
              ou  MAXUN.UNSIGNED est la valeur maximale d'un entier non signe.
              xdr_wrapstring() est pratique car la bibliotheque RPC  passe  un
              maximum  de deux routines XDR comme parametres, et xdr_string(),
              l'une des primitives les plus frequemment utilisees en  requiert
              trois. Cette routine renvoie 1 si elle reussit, 0 sinon.

VOIR AUSSI

       rpc(3)

       Les manuels suivants :
              eXternal Data Representation Standard: Protocol Specification
              eXternal Data Representation: Sun Technical Notes
              XDR:   External  Data  Representation  Standard,  RFC 1014,  Sun
              Microsystems, Inc., USC-ISI.

COLOPHON

       Cette page fait partie de  la  publication  3.27  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe Blaess  <URL:http://www.blaess.fr/christophe/>  (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).   Nicolas
       Francois et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

                               30 decembre 2007                         XDR(3)