From: Mike Yuan Date: Thu, 18 Apr 2024 00:57:28 +0000 (+0800) Subject: core/manager-serialize: serialize objective string X-Git-Tag: v256-rc1~132^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0292afabee0f4b9f6d256074bb00127ec5aa75cf;p=thirdparty%2Fsystemd.git core/manager-serialize: serialize objective string 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. --- diff --git a/src/core/manager-serialize.c b/src/core/manager-serialize.c index 6008e5655e8..3c647557433 100644 --- a/src/core/manager-serialize.c +++ b/src/core/manager-serialize.c @@ -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;