X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmanager.c;h=735a1aaa4de9a5716b3db279984e87d1e7b65f6f;hb=2149e37c7954fd98acd54269df5f5eca78eb9d5b;hp=28bc4c3b7001ce6d71488214934d3522c0442764;hpb=f92a18f5274ad506aed600b2ed8f4a560c510807;p=elogind.git diff --git a/src/manager.c b/src/manager.c index 28bc4c3b7..735a1aaa4 100644 --- a/src/manager.c +++ b/src/manager.c @@ -1891,10 +1891,32 @@ static int manager_process_signal_fd(Manager *m) { break; } - case SIGUSR2: - manager_dump_units(m, stdout, "\t"); - manager_dump_jobs(m, stdout, "\t"); + case SIGUSR2: { + FILE *f; + char *dump = NULL; + size_t size; + + if (!(f = open_memstream(&dump, &size))) { + log_warning("Failed to allocate memory stream."); + break; + } + + manager_dump_units(m, f, "\t"); + manager_dump_jobs(m, f, "\t"); + + if (ferror(f)) { + fclose(f); + free(dump); + log_warning("Failed to write status stream"); + break; + } + + fclose(f); + log_dump(LOG_INFO, dump); + free(dump); + break; + } case SIGHUP: m->exit_code = MANAGER_RELOAD;