changeset 107932:9b8dfcd5e0b0

Use openpty for allocating pty on Darwin. Fix Bug#726 and Bug#5819. * s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF) (PTY_OPEN): New defines. Use openpty (Bug#726, Bug#5819).
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Sat, 10 Apr 2010 19:31:01 +0900
parents db7a670d5832
children ff222821fc33 3fef63e64210 744ecddd9643
files src/ChangeLog src/s/darwin.h
diffstat 2 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Apr 09 19:14:47 2010 -0700
+++ b/src/ChangeLog	Sat Apr 10 19:31:01 2010 +0900
@@ -1,3 +1,8 @@
+2010-04-10  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF)
+	(PTY_OPEN): New defines.  Use openpty (Bug#726, Bug#5819).
+
 2010-04-08  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* frame.h (FRAME_LINE_TO_PIXEL_Y): Add missing parenthesis.
--- a/src/s/darwin.h	Fri Apr 09 19:14:47 2010 -0700
+++ b/src/s/darwin.h	Sat Apr 10 19:31:01 2010 +0900
@@ -90,6 +90,24 @@
  */
 
 #define HAVE_PTYS
+/* Run only once.  We need a `for'-loop because the code uses
+   `continue'.  */
+#define PTY_ITERATION	for (i = 0; i < 1; i++)
+#define PTY_NAME_SPRINTF	/* none */
+#define PTY_TTY_NAME_SPRINTF	/* none */
+/* Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
+   But we don't have to block SIGCHLD because it is blocked in the
+   implementation of grantpt.  */
+#define PTY_OPEN						\
+  do								\
+    {								\
+      int slave;						\
+      if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1)	\
+	fd = -1;						\
+      else							\
+	emacs_close (slave);					\
+    }								\
+  while (0)
 
 /**
  * PTYs only work correctly on Darwin 7 or higher.  So make the