*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->NetBSD man pages -> xdr_setpos (3)              
Title
Content
Arch
Section
 

XDR(3)

Contents


NAME    [Toc]    [Back]

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

SYNOPSIS AND DESCRIPTION    [Toc]    [Back]

       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 variable-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 representation.
  This routine returns one if  it  succeeds,
 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
              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 characters
 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  representations.
   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 representations.
  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)
       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 associated
 with the  XDR  stream,  xdrs.   The  routine
              returns  an  unsigned  integer, which indicates the
              position of the XDR byte stream.  A desirable  feature
 of XDR streams is that simple arithmetic works
              with this number, although the XDR stream instances
              need not guarantee this.

       xdr_hyper(xdrs, llp)
       XDR *xdrs;
       longlong_t *llp;

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

       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 integers
 and their external representations.  This routine
 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.

       xdr_longlong_t(xdrs, llp)
       XDR *xdrs;
       longlong_t *llp;

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

       void
       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  structures,
 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 indicates
 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
              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 nonzero.
 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 implementation
 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  filters
  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.

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

              A macro that invokes the set position routine associated
 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 representations.
  Strings cannot be  longer  than  maxsize.
              Note:  sp  is  the address of the string's pointer.
              This routine returns one if it succeeds, zero  otherwise.


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

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


       xdr_u_hyper(xdrs, ullp)
       XDR *xdrs;
       u_longlong_t *ullp;

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

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

              A   filter  primitive  that  translates  between  C
              unsigned integers and  their  external  representations.
   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 representations.
  This routine returns one if it  succeeds,
              zero otherwise.

       xdr_u_longlong_t(xdrs, ullp)
       XDR *xdrs;
       u_longlong_t *ullp;

              A filter primitive that translates between unsigned
              ANSI C long long integers and their external representations.
   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 representations.
  This routine returns one  if  it  succeeds,
 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 discriminated
 C union and its  corresponding  external
              representation.  It  first translates the discriminant
 of the union located at dscmp.  This discriminant
  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
              choices array, then  the  defaultarm  procedure  is
              called (if it is not NULL).  Returns one if it succeeds,
 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  fixedlength
 arrays and their corresponding external representations.
  The parameter arrp is the address of
              the pointer to the array, while size is the element
              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 representation.
  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_wrap-
              string() 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 succeeds,
 zero otherwise.

SEE ALSO    [Toc]    [Back]

      
      
       rpc(3)

       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                  XDR(3)
[ Back ]
 Similar pages
Name OS Title
xdr IRIX External Data Representation (XDR) library routines
xdr_create IRIX library routines for external data representation stream creation
des_crypt Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_quad_cksum Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_string_to_key Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_key_sched Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_is_weak_key Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
unvis OpenBSD revert a visual representation of data back to original form
unvis FreeBSD revert a visual representation of data back to original form
XmRepTypeGetId Tru64 A representation type manager function that retrieves the identification number of a representation ...
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service