# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1270895461 -32400 # Node ID 9b8dfcd5e0b00c99a1d2359884b0f605eb69b562 # Parent db7a670d5832c0c9968b7a4630ffe27ae7246fa4 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). diff -r db7a670d5832 -r 9b8dfcd5e0b0 src/ChangeLog --- 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 + + * 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 * frame.h (FRAME_LINE_TO_PIXEL_Y): Add missing parenthesis. diff -r db7a670d5832 -r 9b8dfcd5e0b0 src/s/darwin.h --- 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