#endif
#endif
+/* The w32 build defines select stuff in w32.h, which is included by
+ sys/select.h (included below). */
+#ifndef WINDOWSNT
#include "sysselect.h"
+#endif
#include "blockinput.h"
redirect the tty device handle FD to point to our own process
group. We need to be in our own process group to receive SIGIO
properly. */
-void
+static void
narrow_foreground_group (int fd)
{
int me = getpid ();
}
/* Set the tty to our original foreground group. */
-void
+static void
widen_foreground_group (int fd)
{
if (inherited_pgroup != getpid ())
fcntl (fileno (tty_out->input), F_SETOWN, getpid ());
init_sigio (fileno (tty_out->input));
#ifdef HAVE_GPM
- if (term_gpm)
+ if (gpm_tty == tty_out)
{
+ /* Arrange for mouse events to give us SIGIO signals. */
fcntl (gpm_fd, F_SETOWN, getpid ());
fcntl (gpm_fd, F_SETFL, fcntl (gpm_fd, F_GETFL, 0) | O_NONBLOCK);
init_sigio (gpm_fd);
setbuf (tty_out->output, (char *) _sobuf);
#endif
- tty_set_terminal_modes (tty_out->terminal);
+ if (tty_out->terminal->set_terminal_modes_hook)
+ tty_out->terminal->set_terminal_modes_hook (tty_out->terminal);
if (!tty_out->term_initted)
{
}
#endif
- tty_reset_terminal_modes (tty_out->terminal);
+ if (tty_out->terminal->reset_terminal_modes_hook)
+ tty_out->terminal->reset_terminal_modes_hook (tty_out->terminal);
#ifdef BSD_SYSTEM
#ifndef BSD4_1
#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
#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;
}
#endif
}
+#endif /* !HAVE_GETADDRINFO */
}
#endif /* HAVE_SOCKETS */
/* We used to try using getdomainname here,
int did_retry = 0;
register int rtnval;
+#if defined (MAC_OSX) && defined (HAVE_CARBON)
+ {
+ extern int mac_try_close_socket P_ ((int));
+
+ if (mac_try_close_socket (fd))
+ return 0;
+ }
+#endif
+
while ((rtnval = close (fd)) == -1
&& (errno == EINTR))
did_retry = 1;