From 59b46a1f515858b6c407185a845c2d9fc34c8fb9 Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Sun, 6 Dec 2020 20:52:43 +0330 Subject: [PATCH] Shell: Show termination signal if job did not exit cleanly --- Shell/Job.h | 3 +++ Shell/Shell.cpp | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Shell/Job.h b/Shell/Job.h index 9a37ba976d4..1be90d3bf77 100644 --- a/Shell/Job.h +++ b/Shell/Job.h @@ -84,6 +84,7 @@ public: void disown() { m_should_be_disowned = true; } bool is_running_in_background() const { return m_running_in_background; } bool should_announce_exit() const { return m_should_announce_exit; } + bool should_announce_signal() const { return m_should_announce_signal; } bool is_suspended() const { return m_is_suspended; } void unblock() const; @@ -100,6 +101,7 @@ public: } void set_should_announce_exit(bool value) { m_should_announce_exit = value; } + void set_should_announce_signal(bool value) { m_should_announce_signal = value; } void deactivate() const { m_active = false; } @@ -121,6 +123,7 @@ private: bool m_exited { false }; bool m_running_in_background { false }; bool m_should_announce_exit { false }; + bool m_should_announce_signal { true }; int m_exit_code { -1 }; int m_term_sig { -1 }; Core::ElapsedTimer m_command_timer; diff --git a/Shell/Shell.cpp b/Shell/Shell.cpp index 433e7f4ea3a..fda9540bd31 100644 --- a/Shell/Shell.cpp +++ b/Shell/Shell.cpp @@ -853,7 +853,9 @@ RefPtr Shell::run_command(const AST::Command& command) if (!job->exited()) return; if (job->is_running_in_background() && job->should_announce_exit()) - fprintf(stderr, "Shell: Job %" PRIu64 "(%s) exited\n", job->job_id(), job->cmd().characters()); + warnln("Shell: Job {} ({}) exited\n", job->job_id(), job->cmd().characters()); + else if (job->signaled() && job->should_announce_signal()) + warnln("Shell: Job {} ({}) {}\n", job->job_id(), job->cmd().characters(), strsignal(job->termination_signal())); last_return_code = job->exit_code(); job->disown();