Commit 1c0dff39 authored by Robert Goldman's avatar Robert Goldman
Browse files

Extend process-status for CMUCL.

Implement Elias Pipping's patch for collecting exit code from stopped
processes on CMUCL.
parent 498d13e3
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -296,11 +296,11 @@ MAKE-INSTANCE. Primarily, it is being made available to enable type-checking."))
                        (symbol-call :ext '#:external-process-status process)
                        (not-implemented-error '%process-status))
            #+clozure (ccl:external-process-status process)
            #+(or cmucl scl) (let ((status (ext:process-status process)))
                               (if (member status '(:exited :signaled))
                                   ;; Calling ext:process-exit-code on
                                   ;; processes that are still alive
                                   ;; yields an undefined result
            #+cmucl (let ((status (ext:process-status process)))
                      (if (member status '(:exited :signaled :stopped))
                          ;; ext:process-exit-code can also be called
                          ;; for stopped processes to determine the
                          ;; signal that stopped them
                          (values status (ext:process-exit-code process))
                        status))
            #+ecl (ext:external-process-status process)
@@ -327,7 +327,14 @@ MAKE-INSTANCE. Primarily, it is being made available to enable type-checking."))
                         ;; sb-ext:process-exit-code can also be
                         ;; called for stopped processes to determine
                         ;; the signal that stopped them
                         (values status (sb-ext:process-exit-code process)))))
                         (values status (sb-ext:process-exit-code process))))
            #+scl (let ((status (ext:process-status process)))
                               (if (member status '(:exited :signaled))
                                   ;; Calling ext:process-exit-code on
                                   ;; processes that are still alive
                                   ;; yields an undefined result
                                   (values status (ext:process-exit-code process))
                                   status)))
        (case status
          (:exited (setf (slot-value process-info 'exit-code) code))
          (:signaled (let ((%code (%signal-to-exit-code code)))