]> git.eshelyaron.com Git - emacs.git/commitdiff
Use openpty for allocating pty on Darwin. Fix Bug#726 and Bug#5819.
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Sat, 10 Apr 2010 10:31:01 +0000 (19:31 +0900)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Sat, 10 Apr 2010 10:31:01 +0000 (19:31 +0900)
* s/darwin.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF)
(PTY_OPEN): New defines.  Use openpty (Bug#726, Bug#5819).

src/ChangeLog
src/s/darwin.h

index b8b04b129eaca5c37da13320c8ca977fcc43deaa..b68c58219ec45801f066195c72b00f805f4dbd52 100644 (file)
@@ -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.
index b9062ec80007745c41e4d882473e1a54f7032165..ab7c07172876258fef8ee51f88521bab03e02833 100644 (file)
@@ -90,6 +90,24 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
  */
 
 #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