[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 9838f786ded: When waiting for processes in Eshell, wait until all
From: |
Jim Porter |
Subject: |
master 9838f786ded: When waiting for processes in Eshell, wait until all the I/O is complete |
Date: |
Wed, 13 Sep 2023 16:39:11 -0400 (EDT) |
branch: master
commit 9838f786ded35fe49bbe84dd78af84df1337adbf
Author: Jim Porter <jporterbugs@gmail.com>
Commit: Jim Porter <jporterbugs@gmail.com>
When waiting for processes in Eshell, wait until all the I/O is complete
This should fix bug#59103, bug#65590, and bug#65601.
* lisp/eshell/esh-proc.el (eshell-sentinel): Set ':eshell-handles' to
nil when finished with I/O.
(eshell-wait-for-process): Wait until ':eshell-handles' is nil.
---
lisp/eshell/esh-proc.el | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index 5df68947ec2..afd0ed80132 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -161,7 +161,11 @@ The signals which will cause this to happen are matched by
"Wait until PROCS have successfully completed."
(dolist (proc procs)
(when (eshell-processp proc)
- (while (process-live-p proc)
+ (while (or (process-live-p proc)
+ ;; If we have handles, this is an Eshell-managed
+ ;; process. Wait until we're 100% done and have
+ ;; cleared out the handles (see `eshell-sentinel').
+ (process-get proc :eshell-handles))
(when (input-pending-p)
(discard-input))
(sit-for eshell-process-wait-seconds
@@ -530,6 +534,9 @@ PROC is the process that's exiting. STRING is the exit
message."
status
(when status (list 'quote (= status 0)))
handles)
+ ;; Clear the handles to mark that we're 100%
+ ;; finished with the I/O for this process.
+ (process-put proc :eshell-handles nil)
(eshell-debug-command
'process
(format-message
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 9838f786ded: When waiting for processes in Eshell, wait until all the I/O is complete,
Jim Porter <=