emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/process.c [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/src/process.c [lexbind]
Date: Thu, 04 Nov 2004 08:28:56 -0500

Index: emacs/src/process.c
diff -c emacs/src/process.c:1.373.2.15 emacs/src/process.c:1.373.2.16
*** emacs/src/process.c:1.373.2.15      Wed Oct  6 05:23:55 2004
--- emacs/src/process.c Thu Nov  4 13:12:27 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;
  
***************
*** 3672,3683 ****
--- 3678,3691 ----
        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;
***************
*** 4038,4045 ****
  {
    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;
--- 4046,4056 ----
  {
    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;
***************
*** 4050,4056 ****
--- 4061,4069 ----
    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)
***************
*** 4187,4193 ****
         timeout to get our attention.  */
        if (update_tick != process_tick && do_display)
        {
!         SELECT_TYPE Atemp, Ctemp;
  
          Atemp = input_wait_mask;
  #if 0
--- 4200,4209 ----
         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
***************
*** 4199,4209 ****
          */
            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))
            {
--- 4215,4230 ----
          */
            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))
            {
***************
*** 4263,4274 ****
          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
        {
--- 4284,4297 ----
          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
        {
***************
*** 4276,4282 ****
            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;
        }
  
--- 4299,4305 ----
            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;
        }
  
***************
*** 4301,4308 ****
--- 4324,4333 ----
        }
        else
        {
+ #ifdef NON_BLOCKING_CONNECT
          if (check_connect)
            Connecting = connect_wait_mask;
+ #endif
  
  #ifdef ADAPTIVE_READ_BUFFERING
          if (process_output_skip && check_delay > 0)
***************
*** 4333,4339 ****
--- 4358,4368 ----
  
          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);
        }
  
***************
*** 4389,4395 ****
        if (no_avail)
        {
          FD_ZERO (&Available);
!         check_connect = 0;
        }
  
  #if defined(sun) && !defined(USG5_4)
--- 4418,4424 ----
        if (no_avail)
        {
          FD_ZERO (&Available);
!         IF_NON_BLOCKING_CONNECT (check_connect = 0);
        }
  
  #if defined(sun) && !defined(USG5_4)
***************
*** 6628,6633 ****
--- 6657,6667 ----
    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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]