struct gaih_servtuple **st)
struct gaih_servtuple *st)
gaih_inet_serv (const char *servicename, struct gaih_typeproto *tp,	       struct gaih_servtuple **st){  struct servent *s;  size_t tmpbuflen = 1024;  struct servent ts;  char *tmpbuf;  int r;  do    {      tmpbuf = __alloca (tmpbuflen);      if (tmpbuf == NULL)	return -EAI_MEMORY;      r = __getservbyname_r (servicename, tp->name, &ts, tmpbuf, tmpbuflen,			     &s);      if (r)	{	  if (errno == ERANGE)	    tmpbuflen *= 2;	  else	    return GAIH_OKIFUNSPEC | -EAI_SERVICE;	}    }  while (r);  *st = malloc (sizeof (struct gaih_servtuple));  if (*st == NULL)    return -EAI_MEMORY;  (*st)->next = NULL;  (*st)->socktype = tp->socktype;  (*st)->protocol = tp->protocol;  (*st)->port = s->s_port;  return 0;}