This is a fairly specialized topic, let's create a separate file for it.
#include "fs-util.h"
#include "install.h"
#include "log.h"
+#include "manager-dump.h"
#include "os-util.h"
#include "parse-util.h"
#include "path-util.h"
#include "log.h"
#include "macro.h"
#include "manager.h"
+#include "manager-dump.h"
#include "memory-util.h"
#include "missing_fs.h"
#include "mkdir.h"
#include "fuzz.h"
#include "install.h"
#include "load-fragment.h"
+#include "manager-dump.h"
#include "string-util.h"
#include "unit-serialize.h"
#include "utf8.h"
#include "loopback-setup.h"
#include "machine-id-setup.h"
#include "manager.h"
+#include "manager-dump.h"
#include "mkdir.h"
#include "mount-setup.h"
#include "os-util.h"
return 0;
}
-static void test_summary(Manager *m) {
- assert(m);
-
- printf("-> By units:\n");
- manager_dump_units(m, stdout, "\t");
-
- printf("-> By jobs:\n");
- manager_dump_jobs(m, stdout, "\t");
-}
-
static int collect_fds(FDSet **ret_fds, const char **ret_error_message) {
int r;
format_timespan(timespan, sizeof(timespan), after_startup - before_startup, 100 * USEC_PER_MSEC));
if (arg_action == ACTION_TEST) {
- test_summary(m);
+ manager_test_summary(m);
retval = EXIT_SUCCESS;
goto finish;
}
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "fd-util.h"
+#include "fileio.h"
+#include "hashmap.h"
+#include "manager-dump.h"
+#include "unit-serialize.h"
+
+void manager_dump_jobs(Manager *s, FILE *f, const char *prefix) {
+ Job *j;
+
+ assert(s);
+ assert(f);
+
+ HASHMAP_FOREACH(j, s->jobs)
+ job_dump(j, f, prefix);
+}
+
+void manager_dump_units(Manager *s, FILE *f, const char *prefix) {
+ Unit *u;
+ const char *t;
+
+ assert(s);
+ assert(f);
+
+ HASHMAP_FOREACH_KEY(u, t, s->units)
+ if (u->id == t)
+ unit_dump(u, f, prefix);
+}
+
+void manager_dump(Manager *m, FILE *f, const char *prefix) {
+ assert(m);
+ assert(f);
+
+ for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
+ const dual_timestamp *t = m->timestamps + q;
+ char buf[CONST_MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
+
+ if (dual_timestamp_is_set(t))
+ fprintf(f, "%sTimestamp %s: %s\n",
+ strempty(prefix),
+ manager_timestamp_to_string(q),
+ timestamp_is_set(t->realtime) ? format_timestamp(buf, sizeof buf, t->realtime) :
+ format_timespan(buf, sizeof buf, t->monotonic, 1));
+ }
+
+ manager_dump_units(m, f, prefix);
+ manager_dump_jobs(m, f, prefix);
+}
+
+int manager_get_dump_string(Manager *m, char **ret) {
+ _cleanup_free_ char *dump = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
+ size_t size;
+ int r;
+
+ assert(m);
+ assert(ret);
+
+ f = open_memstream_unlocked(&dump, &size);
+ if (!f)
+ return -errno;
+
+ manager_dump(m, f, NULL);
+
+ r = fflush_and_check(f);
+ if (r < 0)
+ return r;
+
+ f = safe_fclose(f);
+
+ *ret = TAKE_PTR(dump);
+
+ return 0;
+}
+
+void manager_test_summary(Manager *m) {
+ assert(m);
+
+ printf("-> By units:\n");
+ manager_dump_units(m, stdout, "\t");
+
+ printf("-> By jobs:\n");
+ manager_dump_jobs(m, stdout, "\t");
+}
--- /dev/null
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include <stdio.h>
+
+#include "manager.h"
+
+void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
+void manager_dump_units(Manager *s, FILE *f, const char *prefix);
+void manager_dump(Manager *s, FILE *f, const char *prefix);
+int manager_get_dump_string(Manager *m, char **ret);
+void manager_test_summary(Manager *m);
#include "log.h"
#include "macro.h"
#include "manager.h"
+#include "manager-dump.h"
#include "memory-util.h"
#include "mkdir.h"
#include "parse-util.h"
return 0;
}
-void manager_dump_jobs(Manager *s, FILE *f, const char *prefix) {
- Job *j;
-
- assert(s);
- assert(f);
-
- HASHMAP_FOREACH(j, s->jobs)
- job_dump(j, f, prefix);
-}
-
-void manager_dump_units(Manager *s, FILE *f, const char *prefix) {
- Unit *u;
- const char *t;
-
- assert(s);
- assert(f);
-
- HASHMAP_FOREACH_KEY(u, t, s->units)
- if (u->id == t)
- unit_dump(u, f, prefix);
-}
-
-void manager_dump(Manager *m, FILE *f, const char *prefix) {
- assert(m);
- assert(f);
-
- for (ManagerTimestamp q = 0; q < _MANAGER_TIMESTAMP_MAX; q++) {
- const dual_timestamp *t = m->timestamps + q;
- char buf[CONST_MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
-
- if (dual_timestamp_is_set(t))
- fprintf(f, "%sTimestamp %s: %s\n",
- strempty(prefix),
- manager_timestamp_to_string(q),
- timestamp_is_set(t->realtime) ? format_timestamp(buf, sizeof buf, t->realtime) :
- format_timespan(buf, sizeof buf, t->monotonic, 1));
- }
-
- manager_dump_units(m, f, prefix);
- manager_dump_jobs(m, f, prefix);
-}
-
-int manager_get_dump_string(Manager *m, char **ret) {
- _cleanup_free_ char *dump = NULL;
- _cleanup_fclose_ FILE *f = NULL;
- size_t size;
- int r;
-
- assert(m);
- assert(ret);
-
- f = open_memstream_unlocked(&dump, &size);
- if (!f)
- return -errno;
-
- manager_dump(m, f, NULL);
-
- r = fflush_and_check(f);
- if (r < 0)
- return r;
-
- f = safe_fclose(f);
-
- *ret = TAKE_PTR(dump);
-
- return 0;
-}
-
void manager_clear_jobs(Manager *m) {
Job *j;
int manager_add_job_by_name_and_warn(Manager *m, JobType type, const char *name, JobMode mode, Set *affected_jobs, Job **ret);
int manager_propagate_reload(Manager *m, Unit *unit, JobMode mode, sd_bus_error *e);
-void manager_dump_units(Manager *s, FILE *f, const char *prefix);
-void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
-void manager_dump(Manager *s, FILE *f, const char *prefix);
-int manager_get_dump_string(Manager *m, char **ret);
-
void manager_clear_jobs(Manager *m);
void manager_unwatch_pid(Manager *m, pid_t pid);
locale-setup.h
manager.c
manager.h
+ manager-dump.c
+ manager-dump.h
mount.c
mount.h
namespace.c
#include "bus-util.h"
#include "manager.h"
+#include "manager-dump.h"
#include "rm-rf.h"
#include "service.h"
#include "special.h"