]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/manager-serialize: serialize objective string
authorMike Yuan <me@yhndnzj.com>
Thu, 18 Apr 2024 00:57:28 +0000 (08:57 +0800)
committerMike Yuan <me@yhndnzj.com>
Thu, 18 Apr 2024 12:32:20 +0000 (20:32 +0800)
Follow-up for 8c15bf36e117054cf54b4f0cca59615b7531a545

I just realized that we should not serialize the number
of internal enum, as that's subject to changes and such
changes would be hard to notice. Let's serialize strings
properly instead.

src/core/manager-serialize.c

index 6008e5655e800c9cf3cbf1638128ade431af9831..3c6475574337bab11b50aeec5726b7aa81ad5b2c 100644 (file)
@@ -109,6 +109,7 @@ int manager_serialize(
         (void) serialize_usec(f, "pretimeout-watchdog-overridden", m->watchdog_overridden[WATCHDOG_PRETIMEOUT]);
         (void) serialize_item(f, "pretimeout-watchdog-governor-overridden", m->watchdog_pretimeout_governor_overridden);
 
+        (void) serialize_item(f, "previous-objective", manager_objective_to_string(m->objective));
         (void) serialize_item_format(f, "soft-reboots-count", "%u", m->soft_reboots_count);
 
         for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
@@ -158,9 +159,6 @@ int manager_serialize(
         (void) serialize_ratelimit(f, "dump-ratelimit", &m->dump_ratelimit);
         (void) serialize_ratelimit(f, "reload-reexec-ratelimit", &m->reload_reexec_ratelimit);
 
-        if (m->objective >= 0 && m->objective < _MANAGER_OBJECTIVE_MAX)
-                (void) serialize_item_format(f, "previous-objective", "%u", (unsigned) m->objective);
-
         bus_track_serialize(m->subscribed, f, "subscribed");
 
         r = dynamic_user_serialize(m, f, fds);
@@ -533,12 +531,13 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
                         else
                                 m->soft_reboots_count = n;
                 } else if ((val = startswith(l, "previous-objective="))) {
-                        unsigned n;
+                        ManagerObjective objective;
 
-                        if (safe_atou(val, &n) < 0 || n >= _MANAGER_OBJECTIVE_MAX)
-                                log_notice("Failed to parse objective '%s', ignoring.", val);
+                        objective = manager_objective_from_string(val);
+                        if (objective < 0)
+                                log_notice("Failed to parse previous objective '%s', ignoring.", val);
                         else
-                                m->previous_objective = n;
+                                m->previous_objective = objective;
 
                 } else {
                         ManagerTimestamp q;