diff src/process-unix.c @ 859:84762348c6f9

[xemacs-hg @ 2002-06-01 08:06:46 by ben] fix process problems etc. process.el: Insert before, not after, point. buffer.c: Fix bug noted by someone. console-tty.h, device.h, emacs.c, filelock.c, nt.c, process-nt.c, process-unix.c, process.c, redisplay-tty.c, sysdep.c, sysproc.h, win32.c: Redo problem with syssignal.h/sysproc.h dependence noted by Didier -- rather than require one included before the other (error-prone), just include syssignal.h from sysproc.h where it's needed. inline.c: Include sysfile.h due to inline funs in that header. extents.c: Fix bug noted by Andrew Cohen <cohen@andy.bu.edu>. process-unix.c: Fix other bug noted by Andrew Cohen <cohen@andy.bu.edu>. process.c: Add process-has-separate-stderr-p, used by call-process-internal.
author ben
date Sat, 01 Jun 2002 08:06:55 +0000
parents 211050afdc9a
children 804517e16990
line wrap: on
line diff
--- a/src/process-unix.c	Fri May 31 09:38:49 2002 +0000
+++ b/src/process-unix.c	Sat Jun 01 08:06:55 2002 +0000
@@ -53,9 +53,8 @@
 #include <setjmp.h>
 #include "sysdir.h"
 #include "sysfile.h"
-#include "syssignal.h" /* Always include before systty.h and sysproc.h
-			  -- didier*/
 #include "sysproc.h"
+#include "syssignal.h"
 #include "systime.h"
 #include "systty.h"
 #include "syswait.h"
@@ -2034,7 +2033,8 @@
 	if (retval == -1 && errno != EISCONN)
 	  {
 	    xerrno = errno;
-	    if (errno == EINTR)
+
+	    if (errno == EINTR || errno == EINPROGRESS || errno == EALREADY)
 	      goto loop;
 	    if (errno == EADDRINUSE && retry < 20)
 	      {
@@ -2262,10 +2262,11 @@
     {
       int xerrno = errno;
 
-      if (errno == EINTR)
+      if (errno == EINTR || errno == EINPROGRESS || errno == EALREADY)
 	goto loop;
       if (errno == EADDRINUSE && retry < 20)
 	{
+#ifdef __FreeBSD__
 	  /* A delay here is needed on some FreeBSD systems,
 	     and it is harmless, since this retrying takes time anyway
 	     and should be infrequent.
@@ -2273,6 +2274,7 @@
 	     slowed down so it can't be used here.  Async timers should
 	     already be disabled at this point so we can use `sleep'. */
 	  sleep (1);
+#endif
 	  retry++;
 	  goto loop;
 	}