diff options
author | Richard M. Stallman <rms@gnu.org> | 1997-06-19 03:03:08 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1997-06-19 03:03:08 +0000 |
commit | 02f55c4bd48518c2cafc8473caf34b1abb5c673b (patch) | |
tree | 5f934791c9a640778d4afa11e54c545d63e071d9 /src/process.c | |
parent | 5914be4b28332f382fd9e53f565d19d214d35fc2 (diff) | |
download | emacs-02f55c4bd48518c2cafc8473caf34b1abb5c673b.tar.gz |
(Fprocess_send_eof): Use shutdown, if it's a socket.
Don't close the output descriptor if that is also the input descriptor.
Diffstat (limited to 'src/process.c')
-rw-r--r-- | src/process.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/process.c b/src/process.c index 4ad8fe24af5..bed3e381d5e 100644 --- a/src/process.c +++ b/src/process.c @@ -3618,7 +3618,16 @@ text to PROCESS after you call this function.") send_process (proc, "\004", 1, Qnil); else { - close (XINT (XPROCESS (proc)->outfd)); + /* If this is a network connection, or socketpair is used + for communication with the subprocess, call shutdown to cause EOF. + (In some old system, shutdown to socketpair doesn't work. + Then we just can't win.) */ + if (NILP (XPROCESS (proc)->pid) + || XINT (XPROCESS (proc)->outfd) == XINT (XPROCESS (proc)->infd)) + shutdown (XINT (XPROCESS (proc)->outfd), 1); + /* In case of socketpair, outfd == infd, so don't close it. */ + if (XINT (XPROCESS (proc)->outfd) != XINT (XPROCESS (proc)->infd)) + close (XINT (XPROCESS (proc)->outfd)); XSETINT (XPROCESS (proc)->outfd, open (NULL_DEVICE, O_WRONLY)); } #endif /* VMS */ |