4cad4c
From 883dfbff6e3e9763d21f9d029a824c63e016cfd9 Mon Sep 17 00:00:00 2001
4cad4c
From: Lennart Poettering <lennart@poettering.net>
4cad4c
Date: Tue, 13 Nov 2018 19:57:43 +0100
4cad4c
Subject: [PATCH] core: move unit_status_emit_starting_stopping_reloading() and
4cad4c
 related calls to job.c
4cad4c
MIME-Version: 1.0
4cad4c
Content-Type: text/plain; charset=UTF-8
4cad4c
Content-Transfer-Encoding: 8bit
4cad4c
4cad4c
This call is only used by job.c and very specific to job handling.
4cad4c
Moreover the very similar logic of job_emit_status_message() is already
4cad4c
in job.c.
4cad4c
4cad4c
Hence, let's clean this up, and move both sets of functions to job.c,
4cad4c
and rename them a bit so that they express precisely what they do:
4cad4c
4cad4c
1. unit_status_emit_starting_stopping_reloading() →
4cad4c
   job_emit_begin_status_message()
4cad4c
2. job_emit_status_message() → job_emit_done_status_message()
4cad4c
4cad4c
The first call is after all what we call when we begin with the
4cad4c
execution of a job, and the second call what we call when we are done
4cad4c
wiht it.
4cad4c
4cad4c
Just some moving and renaming, not other changes, and hence no change in
4cad4c
behaviour.
4cad4c
4cad4c
(cherry picked from commit 33a3fdd9781329379f74e11a7a2707816aad8c61)
4cad4c
4cad4c
Related: #1737283
4cad4c
---
4cad4c
 src/core/job.c  | 119 +++++++++++++++++++++++++++++++++++++++++-------
4cad4c
 src/core/unit.c |  86 ----------------------------------
4cad4c
 src/core/unit.h |   1 -
4cad4c
 3 files changed, 103 insertions(+), 103 deletions(-)
4cad4c
4cad4c
diff --git a/src/core/job.c b/src/core/job.c
4cad4c
index 769ed6d603..561ea14682 100644
4cad4c
--- a/src/core/job.c
4cad4c
+++ b/src/core/job.c
4cad4c
@@ -507,6 +507,93 @@ static void job_change_type(Job *j, JobType newtype) {
4cad4c
         j->type = newtype;
4cad4c
 }
4cad4c
 
4cad4c
+_pure_ static const char* job_get_begin_status_message_format(Unit *u, JobType t) {
4cad4c
+        const char *format;
4cad4c
+        const UnitStatusMessageFormats *format_table;
4cad4c
+
4cad4c
+        assert(u);
4cad4c
+        assert(IN_SET(t, JOB_START, JOB_STOP, JOB_RELOAD));
4cad4c
+
4cad4c
+        if (t != JOB_RELOAD) {
4cad4c
+                format_table = &UNIT_VTABLE(u)->status_message_formats;
4cad4c
+                if (format_table) {
4cad4c
+                        format = format_table->starting_stopping[t == JOB_STOP];
4cad4c
+                        if (format)
4cad4c
+                                return format;
4cad4c
+                }
4cad4c
+        }
4cad4c
+
4cad4c
+        /* Return generic strings */
4cad4c
+        if (t == JOB_START)
4cad4c
+                return "Starting %s.";
4cad4c
+        else if (t == JOB_STOP)
4cad4c
+                return "Stopping %s.";
4cad4c
+        else
4cad4c
+                return "Reloading %s.";
4cad4c
+}
4cad4c
+
4cad4c
+static void job_print_begin_status_message(Unit *u, JobType t) {
4cad4c
+        const char *format;
4cad4c
+
4cad4c
+        assert(u);
4cad4c
+
4cad4c
+        /* Reload status messages have traditionally not been printed to console. */
4cad4c
+        if (!IN_SET(t, JOB_START, JOB_STOP))
4cad4c
+                return;
4cad4c
+
4cad4c
+        format = job_get_begin_status_message_format(u, t);
4cad4c
+
4cad4c
+        DISABLE_WARNING_FORMAT_NONLITERAL;
4cad4c
+        unit_status_printf(u, "", format);
4cad4c
+        REENABLE_WARNING;
4cad4c
+}
4cad4c
+
4cad4c
+static void job_log_begin_status_message(Unit *u, JobType t) {
4cad4c
+        const char *format, *mid;
4cad4c
+        char buf[LINE_MAX];
4cad4c
+
4cad4c
+        assert(u);
4cad4c
+
4cad4c
+        if (!IN_SET(t, JOB_START, JOB_STOP, JOB_RELOAD))
4cad4c
+                return;
4cad4c
+
4cad4c
+        if (log_on_console())
4cad4c
+                return;
4cad4c
+
4cad4c
+        /* We log status messages for all units and all operations. */
4cad4c
+
4cad4c
+        format = job_get_begin_status_message_format(u, t);
4cad4c
+
4cad4c
+        DISABLE_WARNING_FORMAT_NONLITERAL;
4cad4c
+        (void) snprintf(buf, sizeof buf, format, unit_description(u));
4cad4c
+        REENABLE_WARNING;
4cad4c
+
4cad4c
+        mid = t == JOB_START ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTING_STR :
4cad4c
+              t == JOB_STOP  ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STOPPING_STR :
4cad4c
+                               "MESSAGE_ID=" SD_MESSAGE_UNIT_RELOADING_STR;
4cad4c
+
4cad4c
+        /* Note that we deliberately use LOG_MESSAGE() instead of
4cad4c
+         * LOG_UNIT_MESSAGE() here, since this is supposed to mimic
4cad4c
+         * closely what is written to screen using the status output,
4cad4c
+         * which is supposed the highest level, friendliest output
4cad4c
+         * possible, which means we should avoid the low-level unit
4cad4c
+         * name. */
4cad4c
+        log_struct(LOG_INFO,
4cad4c
+                   LOG_MESSAGE("%s", buf),
4cad4c
+                   LOG_UNIT_ID(u),
4cad4c
+                   LOG_UNIT_INVOCATION_ID(u),
4cad4c
+                   mid);
4cad4c
+}
4cad4c
+
4cad4c
+static void job_emit_begin_status_message(Unit *u, JobType t) {
4cad4c
+        assert(u);
4cad4c
+        assert(t >= 0);
4cad4c
+        assert(t < _JOB_TYPE_MAX);
4cad4c
+
4cad4c
+        job_log_begin_status_message(u, t);
4cad4c
+        job_print_begin_status_message(u, t);
4cad4c
+}
4cad4c
+
4cad4c
 static int job_perform_on_unit(Job **j) {
4cad4c
         uint32_t id;
4cad4c
         Manager *m;
4cad4c
@@ -552,7 +639,7 @@ static int job_perform_on_unit(Job **j) {
4cad4c
          * actually did something. */
4cad4c
         *j = manager_get_job(m, id);
4cad4c
         if (*j && r > 0)
4cad4c
-                unit_status_emit_starting_stopping_reloading(u, t);
4cad4c
+                job_emit_begin_status_message(u, t);
4cad4c
 
4cad4c
         return r;
4cad4c
 }
4cad4c
@@ -638,7 +725,7 @@ int job_run_and_invalidate(Job *j) {
4cad4c
         return r;
4cad4c
 }
4cad4c
 
4cad4c
-_pure_ static const char *job_get_status_message_format(Unit *u, JobType t, JobResult result) {
4cad4c
+_pure_ static const char *job_get_done_status_message_format(Unit *u, JobType t, JobResult result) {
4cad4c
 
4cad4c
         static const char *const generic_finished_start_job[_JOB_RESULT_MAX] = {
4cad4c
                 [JOB_DONE]        = "Started %s.",
4cad4c
@@ -699,7 +786,7 @@ _pure_ static const char *job_get_status_message_format(Unit *u, JobType t, JobR
4cad4c
 
4cad4c
 static const struct {
4cad4c
         const char *color, *word;
4cad4c
-} job_print_status_messages [_JOB_RESULT_MAX] = {
4cad4c
+} job_print_done_status_messages[_JOB_RESULT_MAX] = {
4cad4c
         [JOB_DONE]        = { ANSI_OK_COLOR,         "  OK  " },
4cad4c
         [JOB_TIMEOUT]     = { ANSI_HIGHLIGHT_RED,    " TIME " },
4cad4c
         [JOB_FAILED]      = { ANSI_HIGHLIGHT_RED,    "FAILED" },
4cad4c
@@ -711,7 +798,7 @@ static const struct {
4cad4c
         [JOB_ONCE]        = { ANSI_HIGHLIGHT_RED,    " ONCE " },
4cad4c
 };
4cad4c
 
4cad4c
-static void job_print_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
+static void job_print_done_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
         const char *format;
4cad4c
         const char *status;
4cad4c
 
4cad4c
@@ -723,19 +810,19 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
         if (t == JOB_RELOAD)
4cad4c
                 return;
4cad4c
 
4cad4c
-        if (!job_print_status_messages[result].word)
4cad4c
+        if (!job_print_done_status_messages[result].word)
4cad4c
                 return;
4cad4c
 
4cad4c
-        format = job_get_status_message_format(u, t, result);
4cad4c
+        format = job_get_done_status_message_format(u, t, result);
4cad4c
         if (!format)
4cad4c
                 return;
4cad4c
 
4cad4c
         if (log_get_show_color())
4cad4c
-                status = strjoina(job_print_status_messages[result].color,
4cad4c
-                                  job_print_status_messages[result].word,
4cad4c
+                status = strjoina(job_print_done_status_messages[result].color,
4cad4c
+                                  job_print_done_status_messages[result].word,
4cad4c
                                   ANSI_NORMAL);
4cad4c
         else
4cad4c
-                status = job_print_status_messages[result].word;
4cad4c
+                status = job_print_done_status_messages[result].word;
4cad4c
 
4cad4c
         if (result != JOB_DONE)
4cad4c
                 manager_flip_auto_status(u->manager, true);
4cad4c
@@ -752,7 +839,7 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
         }
4cad4c
 }
4cad4c
 
4cad4c
-static void job_log_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
+static void job_log_done_status_message(Unit *u, uint32_t job_id, JobType t, JobResult result) {
4cad4c
         const char *format, *mid;
4cad4c
         char buf[LINE_MAX];
4cad4c
         static const int job_result_log_level[_JOB_RESULT_MAX] = {
4cad4c
@@ -775,10 +862,10 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
 
4cad4c
         /* Skip printing if output goes to the console, and job_print_status_message()
4cad4c
            will actually print something to the console. */
4cad4c
-        if (log_on_console() && job_print_status_messages[result].word)
4cad4c
+        if (log_on_console() && job_print_done_status_messages[result].word)
4cad4c
                 return;
4cad4c
 
4cad4c
-        format = job_get_status_message_format(u, t, result);
4cad4c
+        format = job_get_done_status_message_format(u, t, result);
4cad4c
         if (!format)
4cad4c
                 return;
4cad4c
 
4cad4c
@@ -827,15 +914,15 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
                    mid);
4cad4c
 }
4cad4c
 
4cad4c
-static void job_emit_status_message(Unit *u, JobType t, JobResult result) {
4cad4c
+static void job_emit_done_status_message(Unit *u, uint32_t job_id, JobType t, JobResult result) {
4cad4c
         assert(u);
4cad4c
 
4cad4c
         /* No message if the job did not actually do anything due to failed condition. */
4cad4c
         if (t == JOB_START && result == JOB_DONE && !u->condition_result)
4cad4c
                 return;
4cad4c
 
4cad4c
-        job_log_status_message(u, t, result);
4cad4c
-        job_print_status_message(u, t, result);
4cad4c
+        job_log_done_status_message(u, job_id, t, result);
4cad4c
+        job_print_done_status_message(u, t, result);
4cad4c
 }
4cad4c
 
4cad4c
 static void job_fail_dependencies(Unit *u, UnitDependency d) {
4cad4c
@@ -890,7 +977,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive, bool alr
4cad4c
 
4cad4c
         /* If this job did nothing to respective unit we don't log the status message */
4cad4c
         if (!already)
4cad4c
-                job_emit_status_message(u, t, result);
4cad4c
+                job_emit_done_status_message(u, j->id, t, result);
4cad4c
 
4cad4c
         /* Patch restart jobs so that they become normal start jobs */
4cad4c
         if (result == JOB_DONE && t == JOB_RESTART) {
4cad4c
diff --git a/src/core/unit.c b/src/core/unit.c
4cad4c
index 40f138d25c..f5e251123d 100644
4cad4c
--- a/src/core/unit.c
4cad4c
+++ b/src/core/unit.c
4cad4c
@@ -1624,92 +1624,6 @@ void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg
4cad4c
         REENABLE_WARNING;
4cad4c
 }
4cad4c
 
4cad4c
-_pure_ static const char* unit_get_status_message_format(Unit *u, JobType t) {
4cad4c
-        const char *format;
4cad4c
-        const UnitStatusMessageFormats *format_table;
4cad4c
-
4cad4c
-        assert(u);
4cad4c
-        assert(IN_SET(t, JOB_START, JOB_STOP, JOB_RELOAD));
4cad4c
-
4cad4c
-        if (t != JOB_RELOAD) {
4cad4c
-                format_table = &UNIT_VTABLE(u)->status_message_formats;
4cad4c
-                if (format_table) {
4cad4c
-                        format = format_table->starting_stopping[t == JOB_STOP];
4cad4c
-                        if (format)
4cad4c
-                                return format;
4cad4c
-                }
4cad4c
-        }
4cad4c
-
4cad4c
-        /* Return generic strings */
4cad4c
-        if (t == JOB_START)
4cad4c
-                return "Starting %s.";
4cad4c
-        else if (t == JOB_STOP)
4cad4c
-                return "Stopping %s.";
4cad4c
-        else
4cad4c
-                return "Reloading %s.";
4cad4c
-}
4cad4c
-
4cad4c
-static void unit_status_print_starting_stopping(Unit *u, JobType t) {
4cad4c
-        const char *format;
4cad4c
-
4cad4c
-        assert(u);
4cad4c
-
4cad4c
-        /* Reload status messages have traditionally not been printed to console. */
4cad4c
-        if (!IN_SET(t, JOB_START, JOB_STOP))
4cad4c
-                return;
4cad4c
-
4cad4c
-        format = unit_get_status_message_format(u, t);
4cad4c
-
4cad4c
-        DISABLE_WARNING_FORMAT_NONLITERAL;
4cad4c
-        unit_status_printf(u, "", format);
4cad4c
-        REENABLE_WARNING;
4cad4c
-}
4cad4c
-
4cad4c
-static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
4cad4c
-        const char *format, *mid;
4cad4c
-        char buf[LINE_MAX];
4cad4c
-
4cad4c
-        assert(u);
4cad4c
-
4cad4c
-        if (!IN_SET(t, JOB_START, JOB_STOP, JOB_RELOAD))
4cad4c
-                return;
4cad4c
-
4cad4c
-        if (log_on_console())
4cad4c
-                return;
4cad4c
-
4cad4c
-        /* We log status messages for all units and all operations. */
4cad4c
-
4cad4c
-        format = unit_get_status_message_format(u, t);
4cad4c
-
4cad4c
-        DISABLE_WARNING_FORMAT_NONLITERAL;
4cad4c
-        (void) snprintf(buf, sizeof buf, format, unit_description(u));
4cad4c
-        REENABLE_WARNING;
4cad4c
-
4cad4c
-        mid = t == JOB_START ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTING_STR :
4cad4c
-              t == JOB_STOP  ? "MESSAGE_ID=" SD_MESSAGE_UNIT_STOPPING_STR :
4cad4c
-                               "MESSAGE_ID=" SD_MESSAGE_UNIT_RELOADING_STR;
4cad4c
-
4cad4c
-        /* Note that we deliberately use LOG_MESSAGE() instead of
4cad4c
-         * LOG_UNIT_MESSAGE() here, since this is supposed to mimic
4cad4c
-         * closely what is written to screen using the status output,
4cad4c
-         * which is supposed the highest level, friendliest output
4cad4c
-         * possible, which means we should avoid the low-level unit
4cad4c
-         * name. */
4cad4c
-        log_struct(LOG_INFO,
4cad4c
-                   LOG_MESSAGE("%s", buf),
4cad4c
-                   LOG_UNIT_ID(u),
4cad4c
-                   LOG_UNIT_INVOCATION_ID(u),
4cad4c
-                   mid);
4cad4c
-}
4cad4c
-
4cad4c
-void unit_status_emit_starting_stopping_reloading(Unit *u, JobType t) {
4cad4c
-        assert(u);
4cad4c
-        assert(t >= 0);
4cad4c
-        assert(t < _JOB_TYPE_MAX);
4cad4c
-
4cad4c
-        unit_status_log_starting_stopping_reloading(u, t);
4cad4c
-        unit_status_print_starting_stopping(u, t);
4cad4c
-}
4cad4c
 
4cad4c
 int unit_start_limit_test(Unit *u) {
4cad4c
         assert(u);
4cad4c
diff --git a/src/core/unit.h b/src/core/unit.h
4cad4c
index 595ee88d43..4d9539790a 100644
4cad4c
--- a/src/core/unit.h
4cad4c
+++ b/src/core/unit.h
4cad4c
@@ -699,7 +699,6 @@ int unit_coldplug(Unit *u);
4cad4c
 void unit_catchup(Unit *u);
4cad4c
 
4cad4c
 void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format) _printf_(3, 0);
4cad4c
-void unit_status_emit_starting_stopping_reloading(Unit *u, JobType t);
4cad4c
 
4cad4c
 bool unit_need_daemon_reload(Unit *u);
4cad4c