Commit 3d66b985 authored by Jan Djärv's avatar Jan Djärv
Browse files

(init_system_name): Use getaddrinfo if available.

parent 33a2a872
2007-11-18 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* sysdep.c (init_system_name): Use getaddrinfo if available.
* xterm.c (x_scroll_bar_set_handle, x_scroll_bar_handle_click)
(x_scroll_bar_note_movement): start, end, with, height in struct
scroll_bar are integers and not Lisp_Object, so remove XINT for them.
......
......@@ -2518,10 +2518,50 @@ init_system_name ()
#endif /* not CANNOT_DUMP */
if (! index (hostname, '.'))
{
struct hostent *hp;
int count;
#ifdef HAVE_GETADDRINFO
struct addrinfo *res;
struct addrinfo hints;
int ret;
memset (&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
for (count = 0;; count++)
{
if ((ret = getaddrinfo (hostname, NULL, &hints, &res)) == 0
|| ret != EAI_AGAIN)
break;
if (count >= 5)
break;
Fsleep_for (make_number (1), Qnil);
}
if (ret == 0)
{
struct addrinfo *it = res;
while (it)
{
char *fqdn = it->ai_canonname;
if (fqdn && index (fqdn, '.')
&& strcmp (fqdn, "localhost.localdomain") != 0)
break;
it = it->ai_next;
}
if (it)
{
hostname = alloca (strlen (it->ai_canonname) + 1);
strcpy (hostname, it->ai_canonname);
}
freeaddrinfo (res);
}
#else /* !HAVE_GETADDRINFO */
struct hostent *hp;
for (count = 0;; count++)
{
#ifdef TRY_AGAIN
h_errno = 0;
#endif
......@@ -2529,11 +2569,14 @@ init_system_name ()
#ifdef TRY_AGAIN
if (! (hp == 0 && h_errno == TRY_AGAIN))
#endif
break;
if (count >= 5)
break;
Fsleep_for (make_number (1), Qnil);
}
if (hp)
{
char *fqdn = (char *) hp->h_name;
......@@ -2567,6 +2610,7 @@ init_system_name ()
}
#endif
}
#endif /* !HAVE_GETADDRINFO */
}
#endif /* HAVE_SOCKETS */
/* We used to try using getdomainname here,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment