result = malloc (sizeof (nis_tag *) * tagres.tags.tags_len); if (result == NULL) return NIS_NOMEMORY; for (i = 0; i < tagres.tags.tags_len; ++i) { result[i] = malloc (sizeof (nis_tag)); if (result[i] == NULL) return NIS_NOMEMORY; result[i]->tag_val = strdup (tagres.tags.tags_val[i].tag_val); result[i]->tag_type = tagres.tags.tags_val[i].tag_type; } }
if (__do_niscall2 (serv, 1, NIS_STATUS, (xdrproc_t) xdr_nis_taglist, (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist, (caddr_t) &tagres, 0) != RPC_SUCCESS) return NIS_RPCERROR;  *result = tagres.tags.tags_val;
nis_stats (const nis_server *serv, const nis_tag *tags,	   const int numtags, nis_tag **result){  nis_taglist taglist;  nis_taglist tagres;  tagres.tags.tags_len = 0;  tagres.tags.tags_val = NULL;  *result = NULL;  taglist.tags.tags_len = numtags;  taglist.tags.tags_val = (nis_tag *) tags;  if (serv == NULL)    {      if (__do_niscall (NULL, NIS_STATUS, (xdrproc_t) xdr_nis_taglist,			(caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,			(caddr_t) &tagres, 0) != RPC_SUCCESS)	return NIS_RPCERROR;    }  else    {      if (__do_niscall2 (serv, 1, NIS_STATUS, (xdrproc_t) xdr_nis_taglist,			 (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,			 (caddr_t) &tagres, 0) != RPC_SUCCESS)	return NIS_RPCERROR;    }  if (tagres.tags.tags_len > 0)    {      u_long i;      result = malloc (sizeof (nis_tag *) * tagres.tags.tags_len);      if (result == NULL)	return NIS_NOMEMORY;      for (i = 0; i < tagres.tags.tags_len; ++i)	{	  result[i] = malloc (sizeof (nis_tag));	  if (result[i] == NULL)	    return NIS_NOMEMORY;	  result[i]->tag_val = strdup (tagres.tags.tags_val[i].tag_val);	  result[i]->tag_type = tagres.tags.tags_val[i].tag_type;	}    }  return NIS_SUCCESS;}