From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Subject: "^D^H^H" in process output on Darwin (Was Re: grep-use-null-device)
Date: Sat, 27 Aug 2005 10:30:41 +0900 [thread overview]
Message-ID: <wlk6i8tbcu.wl%mituharu@math.s.chiba-u.ac.jp> (raw)
In-Reply-To: <uzmrcx0fi.fsf@gnu.org>
>>>>> On Sat, 20 Aug 2005 15:22:41 +0300, Eli Zaretskii <eliz@gnu.org> 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
mituharu@math.s.chiba-u.ac.jp
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 */
next prev parent reply other threads:[~2005-08-27 1:30 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-15 15:41 grep-use-null-device Emilio Lopes
2005-08-16 2:25 ` grep-use-null-device Richard M. Stallman
2005-08-16 11:46 ` grep-use-null-device Karl Chen
2005-08-16 16:20 ` grep-use-null-device Emilio Lopes
2005-08-17 6:25 ` grep-use-null-device Richard M. Stallman
2005-08-20 12:22 ` grep-use-null-device Eli Zaretskii
2005-08-27 1:30 ` YAMAMOTO Mitsuharu [this message]
2005-08-29 13:56 ` "^D^H^H" in process output on Darwin Stefan Monnier
2005-09-13 8:21 ` Nozomu Ando
2005-09-17 1:33 ` YAMAMOTO Mitsuharu
2005-08-29 22:43 ` grep-use-null-device Juri Linkov
2005-08-30 10:30 ` grep-use-null-device Richard M. Stallman
2005-08-31 2:31 ` grep-use-null-device Stefan Monnier
2005-08-31 6:02 ` grep-use-null-device Juri Linkov
2005-09-01 14:59 ` grep-use-null-device Stefan Monnier
2005-09-01 16:16 ` grep-use-null-device David Kastrup
2005-09-01 18:18 ` grep-use-null-device Stefan Monnier
2005-09-03 1:43 ` grep-use-null-device Richard M. Stallman
2005-08-16 7:15 ` grep-use-null-device Emilio Lopes
2005-08-16 9:26 ` grep-use-null-device David Kastrup
2005-08-16 16:29 ` grep-use-null-device Emilio Lopes
2005-08-16 9:45 ` grep-use-null-device Juri Linkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=wlk6i8tbcu.wl%mituharu@math.s.chiba-u.ac.jp \
--to=mituharu@math.s.chiba-u.ac.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.