Back to index

glibc  2.9
Functions
nis_clone_res.c File Reference
#include <string.h>
#include <rpc/rpc.h>
#include <rpcsvc/nis.h>
#include "nis_xdr.h"

Go to the source code of this file.

Functions

nis_result * nis_clone_result (const nis_result *src, nis_result *dest)

Function Documentation

nis_result* nis_clone_result ( const nis_result *  src,
nis_result *  dest 
)

Definition at line 27 of file nis_clone_res.c.

{
  char *addr;
  unsigned int size;
  XDR xdrs;

  if (src == NULL)
    return (NULL);

  size = xdr_sizeof ((xdrproc_t)_xdr_nis_result, (char *)src);
  if ((addr = calloc(1, size)) == NULL)
    return NULL;

  xdrmem_create (&xdrs, addr, size, XDR_ENCODE);
  if (!_xdr_nis_result (&xdrs, (nis_result *)src))
    {
      xdr_destroy (&xdrs);
      free (addr);
      return NULL;
    }
  xdr_destroy (&xdrs);

  nis_result *res;
  if (dest == NULL)
    {
      if ((res = calloc (1, sizeof (nis_result))) == NULL)
       {
         free (addr);
         return NULL;
       }
    }
  else
    res = dest;

  xdrmem_create (&xdrs, addr, size, XDR_DECODE);
  if (!_xdr_nis_result (&xdrs, res))
    {
      xdr_destroy (&xdrs);
      if (res != dest)
       free (res);
      free (addr);
      return NULL;
    }
  xdr_destroy (&xdrs);
  free (addr);

  return res;
}

Here is the call graph for this function: