xdr_union man page on BSDi

Man page or keyword search:  
man Server   6284 pages
apropos Keyword Search (all sections)
Output format
BSDi logo
[printable version]



XDR(3N)							  XDR(3N)

NAME
       xdr_array,  xdr_bool,  xdr_bytes,  xdr_char,  xdr_destroy,
       xdr_double,  xdr_enum,  xdr_float,  xdr_free,  xdr_getpos,
       xdr_inline,  xdr_int, xdr_long, xdrmem_create, xdr_opaque,
       xdr_pointer,   xdrrec_create,   xdrrec_endofrecord,   xdr-
       rec_eof,	  xdrrec_skiprecord,  xdr_reference,  xdr_setpos,
       xdr_short,   xdrstdio_create,   xdr_string,    xdr_u_char,
       xdr_u_int, xdr_u_long, xdr_u_short, xdr_union, xdr_vector,
       xdr_void, xdr_wrapstring - library routines  for	 external
       data representation

SYNOPSIS AND DESCRIPTION
       These  routines	allow C programmers to describe arbitrary
       data structures in a  machine-independent  fashion.   Data
       for  remote  procedure  calls  are transmitted using these
       routines.

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

	      A filter primitive that  translates  between  vari-
	      able-length arrays and their corresponding external
	      representations. The parameter arrp is the  address
	      of  the  pointer	to  the array, while sizep is the
	      address of the element count  of	the  array;  this
	      element count cannot exceed maxsize.  The parameter
	      elsize is the sizeof each of the array's	elements,
	      and elproc is an XDR filter that translates between
	      the array elements' C form, and their external rep-
	      resentation.   This  routine returns one if it suc-
	      ceeds, zero otherwise.

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

	      A filter primitive that translates between booleans
	      (C  integers)  and  their external representations.
	      When encoding data, this filter produces values  of
	      either one or zero.  This routine returns one if it
	      succeeds, zero otherwise.

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

	      A filter primitive that translates between  counted
	      byte  strings  and  their external representations.
	      The parameter sp	is  the	 address  of  the  string
	      pointer.	The  length  of	 the string is located at

			 16 February 1988			1

XDR(3N)							  XDR(3N)

	      address sizep; strings cannot be longer  than  max-
	      size.   This  routine  returns  one if it succeeds,
	      zero otherwise.

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

	      A filter primitive that translates between C  char-
	      acters  and  their  external representations.  This
	      routine returns one if it succeeds, zero otherwise.
	      Note: encoded characters are not packed, and occupy
	      4 bytes each.  For  arrays  of  characters,  it  is
	      worthwhile to consider xdr_bytes(), xdr_opaque() or
	      xdr_string().

       void
       xdr_destroy(xdrs)
       XDR *xdrs;

	      A macro that invokes the destroy routine associated
	      with  the	 XDR  stream,  xdrs.  Destruction usually
	      involves freeing private data structures associated
	      with   the   stream.   Using  xdrs  after	 invoking
	      xdr_destroy() is undefined.

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

	      A filter primitive that translates between C double
	      precision	 numbers  and  their external representa-
	      tions.  This routine returns one	if  it	succeeds,
	      zero otherwise.

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

	      A	 filter primitive that translates between C enums
	      (actually integers) and their external  representa-
	      tions.   This  routine  returns one if it succeeds,
	      zero otherwise.

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

	      A filter primitive that translates between C floats
	      and  their  external representations.  This routine
	      returns one if it succeeds, zero otherwise.

       void
       xdr_free(proc, objp)

			 16 February 1988			2

XDR(3N)							  XDR(3N)

       xdrproc_t proc;
       char *objp;

	      Generic freeing routine. The first argument is  the
	      XDR  routine for the object being freed. The second
	      argument is a pointer to the object  itself.  Note:
	      the  pointer  passed  to this routine is not freed,
	      but what it points to is freed (recursively).

       u_int
       xdr_getpos(xdrs)
       XDR *xdrs;

	      A macro that invokes the get-position routine asso-
	      ciated  with  the	 XDR  stream,  xdrs.  The routine
	      returns an unsigned integer,  which  indicates  the
	      position	of the XDR byte stream.	 A desirable fea-
	      ture of XDR streams is that simple arithmetic works
	      with this number, although the XDR stream instances
	      need not guarantee this.

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

	      A macro that invokes the in-line routine associated
	      with  the	 XDR stream, xdrs.  The routine returns a
	      pointer to  a  contiguous	 piece	of  the	 stream's
	      buffer;  len  is	the  byte  length  of the desired
	      buffer.  Note: pointer is cast to long *.

	      Warning: xdr_inline() may return	NULL  (0)  if  it
	      cannot  allocate	a  contiguous  piece of a buffer.
	      Therefore	 the  behavior	may  vary  among   stream
	      instances; it exists for the sake of efficiency.

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

	      A	 filter primitive that translates between C inte-
	      gers and their external representations.	This rou-
	      tine returns one if it succeeds, zero otherwise.

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

	      A	 filter	 primitive that translates between C long
	      integers and their external representations.   This
	      routine returns one if it succeeds, zero otherwise.

       void

			 16 February 1988			3

XDR(3N)							  XDR(3N)

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

	      This routine  initializes	 the  XDR  stream  object
	      pointed  to  by xdrs.  The stream's data is written
	      to, or read from, a chunk	 of  memory  at	 location
	      addr  whose length is no more than size bytes long.
	      The op determines the direction of the  XDR  stream
	      (either XDR_ENCODE, XDR_DECODE, or XDR_FREE).

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

	      A	 filter	 primitive  that translates between fixed
	      size opaque data and its	external  representation.
	      The  parameter  cp  is  the  address  of the opaque
	      object, and cnt is its size in bytes.  This routine
	      returns one if it succeeds, zero otherwise.

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

	      Like xdr_reference() execpt that it serializes NULL
	      pointers, whereas xdr_reference() does not.   Thus,
	      xdr_pointer()  can  represent recursive data struc-
	      tures, such as binary trees or linked lists.

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

	      This routine  initializes	 the  XDR  stream  object
	      pointed  to  by xdrs.  The stream's data is written
	      to a buffer of size sendsize; a value of zero indi-
	      cates the system should use a suitable default. The
	      stream's data is read from a buffer of  size  recv-
	      size;  it	 too  can be set to a suitable default by
	      passing a	 zero  value.	When  a	 stream's  output
	      buffer is full, writeit is called.  Similarly, when
	      a stream's input buffer is empty, readit is called.
	      The  behavior  of	 these two routines is similar to
	      the system calls read and write, except that handle
	      is  passed  to  the  former  routines  as the first

			 16 February 1988			4

XDR(3N)							  XDR(3N)

	      parameter.  Note: the XDR stream's op field must be
	      set by the caller.

	      Warning: this XDR stream implements an intermediate
	      record  stream.	Therefore  there  are  additional
	      bytes  in	 the  stream  to  provide record boundary
	      information.

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

	      This routine can be invoked only on streams created
	      by  xdrrec_create().  The data in the output buffer
	      is marked as a completed	record,	 and  the  output
	      buffer is optionally written out if sendnow is non-
	      zero. This routine returns one if it succeeds, zero
	      otherwise.

       xdrrec_eof(xdrs)
       XDR *xdrs;
       int empty;

	      This routine can be invoked only on streams created
	      by xdrrec_create().  After consuming  the	 rest  of
	      the  current  record  in	the  stream, this routine
	      returns one if the stream has no more  input,  zero
	      otherwise.

       xdrrec_skiprecord(xdrs)
       XDR *xdrs;

	      This routine can be invoked only on streams created
	      by xdrrec_create().  It tells the	 XDR  implementa-
	      tion  that  the  rest  of the current record in the
	      stream's input buffer should  be	discarded.   This
	      routine returns one if it succeeds, zero otherwise.

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

	      A primitive that provides	 pointer  chasing  within
	      structures.  The parameter pp is the address of the
	      pointer; size is the sizeof the structure that  *pp
	      points  to;  and proc is an XDR procedure that fil-
	      ters the structure  between  its	C  form	 and  its
	      external	representation.	 This routine returns one
	      if it succeeds, zero otherwise.

	      Warning: this  routine  does  not	 understand  NULL
	      pointers. Use xdr_pointer() instead.

			 16 February 1988			5

XDR(3N)							  XDR(3N)

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

	      A macro that invokes the set position routine asso-
	      ciated with the XDR stream xdrs.	The parameter pos
	      is  a  position  value  obtained from xdr_getpos().
	      This routine returns one if the XDR stream could be
	      repositioned, and zero otherwise.

	      Warning:	it  is difficult to reposition some types
	      of XDR streams, so this routine may fail	with  one
	      type of stream and succeed with another.

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

	      A	 filter primitive that translates between C short
	      integers and their external representations.   This
	      routine returns one if it succeeds, zero otherwise.

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

	      This routine  initializes	 the  XDR  stream  object
	      pointed to by xdrs.  The XDR stream data is written
	      to, or read from, the  Standard  I/O  stream  file.
	      The  parameter  op  determines the direction of the
	      XDR  stream  (either  XDR_ENCODE,	 XDR_DECODE,   or
	      XDR_FREE).

	      Warning:	the  destroy routine associated with such
	      XDR streams calls fflush() on the file stream,  but
	      never fclose().

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

	      A	  filter  primitive  that  translates  between	C
	      strings and their corresponding external	represen-
	      tations.	 Strings  cannot  be longer than maxsize.
	      Note: sp is the address of  the  string's	 pointer.
	      This  routine returns one if it succeeds, zero oth-
	      erwise.

       xdr_u_char(xdrs, ucp)
       XDR *xdrs;

			 16 February 1988			6

XDR(3N)							  XDR(3N)

       unsigned char *ucp;

	      A filter primitive that translates between unsigned
	      C	 characters  and  their external representations.
	      This routine returns one if it succeeds, zero  oth-
	      erwise.

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

	      A	  filter  primitive  that  translates  between	C
	      unsigned integers and  their  external  representa-
	      tions.   This  routine  returns one if it succeeds,
	      zero otherwise.

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

	      A	 filter	 primitive  that  translates  between	C
	      unsigned long integers and their external represen-
	      tations.	This routine returns one if it	succeeds,
	      zero otherwise.

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

	      A	  filter  primitive  that  translates  between	C
	      unsigned short integers and their	 external  repre-
	      sentations.   This  routine  returns one if it suc-
	      ceeds, zero otherwise.

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

	      A filter primitive that translates between  a  dis-
	      criminated  C  union and its corresponding external
	      representation. It first translates  the	discrimi-
	      nant of the union located at dscmp.  This discrimi-
	      nant is always an enum_t.	 Next the  union  located
	      at  unp  is translated.  The parameter choices is a
	      pointer to an array  of  xdr_discrim()  structures.
	      Each   structure	 contains   an	ordered	 pair  of
	      [value,proc].  If the union's discriminant is equal
	      to the associated value, then the proc is called to
	      translate the union.  The end of the  xdr_discrim()
	      structure	 array	is  denoted by a routine of value
	      NULL.  If the discriminant  is  not  found  in  the

			 16 February 1988			7

XDR(3N)							  XDR(3N)

	      choices  array,  then  the  defaultarm procedure is
	      called (if it is not NULL).  Returns one if it suc-
	      ceeds, zero otherwise.

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

	      A	 filter	 primitive that translates between fixed-
	      length arrays and their corresponding external rep-
	      resentations.  The parameter arrp is the address of
	      the pointer to the array, while size is is the ele-
	      ment  count  of the array.  The parameter elsize is
	      the sizeof each of the array's elements, and elproc
	      is  an XDR filter that translates between the array
	      elements' C form, and  their  external  representa-
	      tion.   This  routine  returns  one if it succeeds,
	      zero otherwise.

       xdr_void()

	      This routine always returns one.	It may be  passed
	      to  RPC routines that require a function parameter,
	      where nothing is to be done.

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

	      A	   primitive	that	calls	 xdr_string(xdrs,
	      sp,MAXUN.UNSIGNED	 );  where  MAXUN.UNSIGNED is the
	      maximum	value	 of    an    unsigned	 integer.
	      xdr_wrapstring()	is  handy because the RPC package
	      passes a maximum of two XDR routines as parameters,
	      and  xdr_string(),  one of the most frequently used
	      primitives, requires three.  Returns one if it suc-
	      ceeds, zero otherwise.

SEE ALSO
       rpc(3N)

       The following manuals:
	      eXternal	Data  Representation  Standard:	 Protocol
	      Specification
	      eXternal Data Representation: Sun Technical Notes
	      XDR:   External	Data   Representation	Standard,
	      RFC1014, Sun Microsystems, Inc., USC-ISI.

			 16 February 1988			8

[top]

List of man pages available for BSDi

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net