ret: __libc_lock_unlock (lock); }
static char *nrl_domainname(void){  static int first = 1;  if (first) {    __libc_lock_define_initialized (static, lock);    __libc_lock_lock (lock);    if (first) {      char *c;      struct hostent *h, th;      int tmpbuflen = 1024;      char *tmpbuf = __alloca(tmpbuflen);      int herror;      first = 0;      while (__gethostbyname_r("localhost", &th, tmpbuf, tmpbuflen, &h,			       &herror)) {	if (herror == NETDB_INTERNAL) {	  if (errno == ERANGE) {	    tmpbuflen *= 2;	    tmpbuf = __alloca(tmpbuflen);	  }	} else {	  break;	}      }      if (h && (c = strchr(h->h_name, '.'))) {	domain = __strdup (++c);	goto ret;      }      while (gethostname (tmpbuf, tmpbuflen)) {	tmpbuflen *= 2;	tmpbuf = __alloca (tmpbuflen);      }      if (c = strchr(tmpbuf, '.')) {	domain = __strdup(++c);	goto ret;      }      while (__gethostbyname_r(tmpbuf, &th, tmpbuf, tmpbuflen, &h,			       &herror)) {	if (herror == NETDB_INTERNAL) {	  if (errno == ERANGE) {	    tmpbuflen *= 2;	    tmpbuf = __alloca(tmpbuflen);	  }	} else {	  break;	}      }      if (h && (c = strchr(h->h_name, '.'))) {	domain = __strdup(++c);	goto ret;      }      {	struct in_addr in_addr;	in_addr.s_addr = htonl(0x7f000001);	while (__gethostbyaddr_r((const char *)&in_addr,				 sizeof(struct in_addr), AF_INET, &th, tmpbuf,				 tmpbuflen, &h, &herror)) {	  if (herror == NETDB_INTERNAL) {	    if (errno == ERANGE) {	      tmpbuflen *= 2;	      tmpbuf = __alloca(tmpbuflen);	    }	  } else {	    break;	  }	}	if (h && (c = strchr(h->h_name, '.'))) {	  domain = __strdup(++c);	  goto ret;	}      }    }  ret:    __libc_lock_unlock (lock);  }  return domain;};