>>>>> On Sat, 20 Aug 2005 15:22:41 +0300, Eli Zaretskii <[EMAIL PROTECTED]> >>>>> said:
>> Thanks for posting the URL, though it seems that the web interface >> at lists.gnu.org eats multiple spaces. Here is the Gmane URL for >> the original post from Kevin Rodgers with correct indentation: >> >> http://article.gmane.org/gmane.emacs.devel/33146 >> >> Can someone please install it? > Done. With this change, we sometimes see "^D^H^H" at the head of the output of grep on Darwin/Mac OS X with whichever window systems (^H is actually in one character). It looks as if the tty echo option is not disabled and ^D is echoed back in response to process-send-eof. I think this is because Emacs may send some data before a subprocess completes tty options setup. On Darwin, vfork is defined as fork for the reason mentioned in src/s/darwin.h. /* The following solves the problem that Emacs hangs when evaluating (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile does not exist. */ #undef HAVE_WORKING_VFORK #define vfork fork #define DONT_REOPEN_PTY (It actually hangs on Mac OS X 10.1.5 and 10.2.8 if process-connection-type is set to t. On Mac OS X 10.3.9 it seems not to hang. Are there any other problems with vfork on Mac OS X 10.3, which is based on Darwin 7?) Unlike vfork, the parent process may run before the child process executes the code between (v)fork and execve/_exit if fork is used. The current Emacs disables the tty echo option in the child process (for USG systems?) by calling child_setup_tty. The following patch does tty options setup before forking, and it works for me. YAMAMOTO Mitsuharu [EMAIL PROTECTED] Index: src/process.c =================================================================== RCS file: /cvsroot/emacs/emacs/src/process.c,v retrieving revision 1.463 diff -c -r1.463 process.c *** src/process.c 15 Aug 2005 08:44:53 -0000 1.463 --- src/process.c 27 Aug 2005 01:25:30 -0000 *************** *** 1793,1798 **** --- 1793,1802 ---- #endif if (forkin < 0) report_file_error ("Opening pty", Qnil); + /* In the case that vfork is defined as fork, the parent process + (Emacs) may send some data before the child process completes + tty options setup. So we setup tty before forking. */ + child_setup_tty (forkout); #else forkin = forkout = -1; #endif /* not USG, or USG_SUBTTY_WORKS */ _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel