if (*outval == NULL) return YPERR_RESRC;
yp_first (const char *indomain, const char *inmap, char **outkey,	  int *outkeylen, char **outval, int *outvallen){  ypreq_nokey req;  ypresp_key_val resp;  enum clnt_stat result;  if (indomain == NULL || indomain[0] == '\0' ||      inmap == NULL || inmap[0] == '\0')    return YPERR_BADARGS;  req.domain = (char *) indomain;  req.map = (char *) inmap;  *outkey = *outval = NULL;  *outkeylen = *outvallen = 0;  memset (&resp, '\0', sizeof (resp));  result = do_ypcall (indomain, YPPROC_FIRST, (xdrproc_t) xdr_ypreq_nokey,		      (caddr_t) & req, (xdrproc_t) xdr_ypresp_key_val,		      (caddr_t) & resp);  if (result != RPC_SUCCESS)    return YPERR_RPC;  if (resp.stat != YP_TRUE)    return ypprot_err (resp.stat);  *outkeylen = resp.key.keydat_len;  *outkey = malloc (*outkeylen + 1);  memcpy (*outkey, resp.key.keydat_val, *outkeylen);  (*outkey)[*outkeylen] = '\0';  *outvallen = resp.val.valdat_len;  *outval = malloc (*outvallen + 1);  memcpy (*outval, resp.val.valdat_val, *outvallen);  (*outval)[*outvallen] = '\0';  xdr_free ((xdrproc_t) xdr_ypresp_key_val, (char *) &resp);  return YPERR_SUCCESS;}