Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xdr_create(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

read(2)

write(2)

rpc(3N)

fclose(3S)

xdr_create(3N)                                               xdr_create(3N)

NAME
     xdrcreate: xdrdestroy, xdrmemcreate, xdrreccreate, xdrstdiocreate
     - library routines for external data representation stream creation

DESCRIPTION
     XDR library routines allow C programmers to describe arbitrary data
     structures in a machine-independent fashion. Protocols such as remote
     procedure calls (RPC) use these routines to describe the format of the
     data.

     These routines deal with the creation of XDR handles. XDR handles have
     to be created before any data can be translated into XDR format.

     If you use one of the XDR functions, you must link the libnsl library
     at compilation (cc -lnsl).

   Routines

     See rpc(3N) for the definition of the XDR, CLIENT, and SVCXPRT data
     structures.

     #include <rpc/xdr.h>

     void
     xdrdestroy(XDR *xdrs);

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

     void
     xdrmemcreate(XDR *xdrs, const caddrt addr,
          const uint size, const enum xdrop op);

          This routine initializes the XDR handle 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 handle (either
          XDRENCODE, XDRDECODE, or XDRFREE).

     void
     xdrreccreate(XDR *xdrs, const uint sendsz,
          const uint recvsz, const caddrt handle,
          const int (*readit)(const void *, char *, const int),
          const int (*writeit)(const void *, const char *, const int));

          This routine initializes the XDR handle object pointed to by
          xdrs. The stream's data is written to a buffer of size sendsz; a
          value of 0 indicates the system should use a suitable default.
          The stream's data is read from a buffer of size recvsz; it too
          can be set to a suitable default by passing a 0 value. When a



Page 1                       Reliant UNIX 5.44                Printed 11/98

xdr_create(3N)                                               xdr_create(3N)

          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 [see read(2) and write(2), respectively], except
          that handle (CLIENT, or SVCXPRT) is passed to the former routines
          as the first parameter instead of a file descriptor.

          Note: the XDR handle'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.

     void
     xdrstdiocreate(XDR *xdrs, FILE *file, const enum xdrop op);

          This routine initializes the XDR stream object pointed to by
          xdrs. The XDR stream data is written to, or read from, the stan-
          dard I/O stream file. The parameter op determines the direction
          of the XDR stream (either XDRENCODE, XDRDECODE, or XDRFREE).

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

SEE ALSO
     read(2), write(2), rpc(3N), xdradmin(3N), xdrcomplex(3N),
     xdrsimple(3N), fclose(3S).


























Page 2                       Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026