[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/process.c [emacs-unicode-2]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/src/process.c [emacs-unicode-2] |
Date: |
Thu, 04 Nov 2004 04:05:34 -0500 |
Index: emacs/src/process.c
diff -c emacs/src/process.c:1.408.2.8 emacs/src/process.c:1.408.2.9
*** emacs/src/process.c:1.408.2.8 Fri Aug 27 07:00:32 2004
--- emacs/src/process.c Thu Nov 4 08:55:32 2004
***************
*** 310,315 ****
--- 310,316 ----
static SELECT_TYPE non_process_wait_mask;
+ #ifdef NON_BLOCKING_CONNECT
/* Mask of bits indicating the descriptors that we wait for connect to
complete on. Once they complete, they are removed from this mask
and added to the input_wait_mask and non_keyboard_wait_mask. */
***************
*** 319,324 ****
--- 320,330 ----
/* Number of bits set in connect_wait_mask. */
static int num_pending_connects;
+ #define IF_NON_BLOCKING_CONNECT(s) s
+ #else
+ #define IF_NON_BLOCKING_CONNECT(s)
+ #endif
+
/* The largest descriptor currently in use for a process object. */
static int max_process_desc;
***************
*** 3673,3684 ****
--- 3679,3692 ----
chan_process[inchannel] = Qnil;
FD_CLR (inchannel, &input_wait_mask);
FD_CLR (inchannel, &non_keyboard_wait_mask);
+ #ifdef NON_BLOCKING_CONNECT
if (FD_ISSET (inchannel, &connect_wait_mask))
{
FD_CLR (inchannel, &connect_wait_mask);
if (--num_pending_connects < 0)
abort ();
}
+ #endif
if (inchannel == max_process_desc)
{
int i;
***************
*** 4039,4046 ****
{
register int channel, nfds;
SELECT_TYPE Available;
SELECT_TYPE Connecting;
! int check_connect, check_delay, no_avail;
int xerrno;
Lisp_Object proc;
EMACS_TIME timeout, end_time;
--- 4047,4057 ----
{
register int channel, nfds;
SELECT_TYPE Available;
+ #ifdef NON_BLOCKING_CONNECT
SELECT_TYPE Connecting;
! int check_connect;
! #endif
! int check_delay, no_avail;
int xerrno;
Lisp_Object proc;
EMACS_TIME timeout, end_time;
***************
*** 4051,4057 ****
--- 4062,4070 ----
int saved_waiting_for_user_input_p = waiting_for_user_input_p;
FD_ZERO (&Available);
+ #ifdef NON_BLOCKING_CONNECT
FD_ZERO (&Connecting);
+ #endif
/* If wait_proc is a process to watch, set wait_channel accordingly. */
if (wait_proc != NULL)
***************
*** 4188,4194 ****
timeout to get our attention. */
if (update_tick != process_tick && do_display)
{
! SELECT_TYPE Atemp, Ctemp;
Atemp = input_wait_mask;
#if 0
--- 4201,4210 ----
timeout to get our attention. */
if (update_tick != process_tick && do_display)
{
! SELECT_TYPE Atemp;
! #ifdef NON_BLOCKING_CONNECT
! SELECT_TYPE Ctemp;
! #endif
Atemp = input_wait_mask;
#if 0
***************
*** 4200,4210 ****
*/
FD_CLR (0, &Atemp);
#endif
! Ctemp = connect_wait_mask;
EMACS_SET_SECS_USECS (timeout, 0, 0);
if ((select (max (max_process_desc, max_keyboard_desc) + 1,
&Atemp,
(num_pending_connects > 0 ? &Ctemp : (SELECT_TYPE *)0),
(SELECT_TYPE *)0, &timeout)
<= 0))
{
--- 4216,4231 ----
*/
FD_CLR (0, &Atemp);
#endif
! IF_NON_BLOCKING_CONNECT (Ctemp = connect_wait_mask);
!
EMACS_SET_SECS_USECS (timeout, 0, 0);
if ((select (max (max_process_desc, max_keyboard_desc) + 1,
&Atemp,
+ #ifdef NON_BLOCKING_CONNECT
(num_pending_connects > 0 ? &Ctemp : (SELECT_TYPE *)0),
+ #else
+ (SELECT_TYPE *)0,
+ #endif
(SELECT_TYPE *)0, &timeout)
<= 0))
{
***************
*** 4264,4275 ****
if (XINT (wait_proc->infd) < 0) /* Terminated */
break;
FD_SET (XINT (wait_proc->infd), &Available);
! check_connect = check_delay = 0;
}
else if (!NILP (wait_for_cell))
{
Available = non_process_wait_mask;
! check_connect = check_delay = 0;
}
else
{
--- 4285,4298 ----
if (XINT (wait_proc->infd) < 0) /* Terminated */
break;
FD_SET (XINT (wait_proc->infd), &Available);
! check_delay = 0;
! IF_NON_BLOCKING_CONNECT (check_connect = 0);
}
else if (!NILP (wait_for_cell))
{
Available = non_process_wait_mask;
! check_delay = 0;
! IF_NON_BLOCKING_CONNECT (check_connect = 0);
}
else
{
***************
*** 4277,4283 ****
Available = non_keyboard_wait_mask;
else
Available = input_wait_mask;
! check_connect = (num_pending_connects > 0);
check_delay = wait_channel >= 0 ? 0 : process_output_delay_count;
}
--- 4300,4306 ----
Available = non_keyboard_wait_mask;
else
Available = input_wait_mask;
! IF_NON_BLOCKING_CONNECT (check_connect = (num_pending_connects > 0));
check_delay = wait_channel >= 0 ? 0 : process_output_delay_count;
}
***************
*** 4302,4309 ****
--- 4325,4334 ----
}
else
{
+ #ifdef NON_BLOCKING_CONNECT
if (check_connect)
Connecting = connect_wait_mask;
+ #endif
#ifdef ADAPTIVE_READ_BUFFERING
if (process_output_skip && check_delay > 0)
***************
*** 4334,4340 ****
--- 4359,4369 ----
nfds = select (max (max_process_desc, max_keyboard_desc) + 1,
&Available,
+ #ifdef NON_BLOCKING_CONNECT
(check_connect ? &Connecting : (SELECT_TYPE *)0),
+ #else
+ (SELECT_TYPE *)0,
+ #endif
(SELECT_TYPE *)0, &timeout);
}
***************
*** 4390,4396 ****
if (no_avail)
{
FD_ZERO (&Available);
! check_connect = 0;
}
#if defined(sun) && !defined(USG5_4)
--- 4419,4425 ----
if (no_avail)
{
FD_ZERO (&Available);
! IF_NON_BLOCKING_CONNECT (check_connect = 0);
}
#if defined(sun) && !defined(USG5_4)
***************
*** 6626,6631 ****
--- 6655,6665 ----
FD_ZERO (&non_process_wait_mask);
max_process_desc = 0;
+ #ifdef NON_BLOCKING_CONNECT
+ FD_ZERO (&connect_wait_mask);
+ num_pending_connects = 0;
+ #endif
+
#ifdef ADAPTIVE_READ_BUFFERING
process_output_delay_count = 0;
process_output_skip = 0;
- [Emacs-diffs] Changes to emacs/src/process.c [emacs-unicode-2],
Miles Bader <=