if (__yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)
if (yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)
do_ypcall (const char *domain, u_long prog, xdrproc_t xargs,	   caddr_t req, xdrproc_t xres, caddr_t resp){  dom_binding *ydb;  int status;  int saved_errno = errno;  status = YPERR_YPERR;  __libc_lock_lock (ypbindlist_lock);  if (__ypbindlist != NULL)    {      ydb = __ypbindlist;      while (ydb != NULL)        {          if (strcmp (domain, ydb->dom_domain) == 0)            break;          ydb = ydb->dom_pnext;        }      if (ydb != NULL)	{          if (__yp_bind (domain, &ydb) == 0)	    {	      /* Call server, print no error message, do not unbind.  */	      status = __ypclnt_call (domain, prog, xargs, req, xres,				      resp, &ydb, 0);	      if (status == YPERR_SUCCESS)	        {	          __set_errno (saved_errno);	          return status;	        }	    }	  /* We use ypbindlist, and the old cached data is	     invalid. unbind now and create a new binding */	  yp_unbind_locked (domain);	}      __libc_lock_unlock (ypbindlist_lock);    }  else    __libc_lock_unlock (ypbindlist_lock);  /* First try with cached data failed. Now try to get     current data from the system.  */  ydb = NULL;  if (__yp_bind (domain, &ydb) == 0)    {      status = __ypclnt_call (domain, prog, xargs, req, xres,			      resp, &ydb, 1);      __yp_unbind (ydb);    }#if USE_BINDINGDIR  /* If we support binding dir data, we have a third chance:     Ask ypbind.  */  if (status != YPERR_SUCCESS)    {      ydb = calloc (1, sizeof (dom_binding));      if (__yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)	{	  status = __ypclnt_call (domain, prog, xargs, req, xres,				  resp, &ydb, 1);	  __yp_unbind (ydb);	}      else	free (ydb);    }#endif  __set_errno (saved_errno);  return status;}