diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2021-04-23 10:34:00 +0200 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2021-04-23 12:25:40 +0200 |
commit | 0ed07360cd7e229cb458580de1f349d5d9f3568b (patch) | |
tree | 69b2f95418a714d90ea8e8dc946df59b0e020450 | |
parent | b5211b9b213273c642a790ae3c3f3bbe1a4cf51e (diff) |
json: Flush standard file descriptors before calling hooks
This ensures messages are displayed in the correct order.
-rw-r--r-- | apt-private/private-json-hooks.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/apt-private/private-json-hooks.cc b/apt-private/private-json-hooks.cc index 7991a7d77..6bf70b1c6 100644 --- a/apt-private/private-json-hooks.cc +++ b/apt-private/private-json-hooks.cc @@ -11,6 +11,7 @@ #include <apt-pkg/macros.h> #include <apt-pkg/strutl.h> #include <apt-private/private-json-hooks.h> +#include <apt-private/private-output.h> #include <iomanip> #include <ostream> @@ -335,6 +336,13 @@ bool RunJsonHook(std::string const &option, std::string const &method, const cha return true; Opts = Opts->Child; + // Flush output before calling hooks + std::clog.flush(); + std::cerr.flush(); + std::cout.flush(); + c2out.flush(); + c1out.flush(); + sighandler_t old_sigpipe = signal(SIGPIPE, SIG_IGN); sighandler_t old_sigint = signal(SIGINT, SIG_IGN); sighandler_t old_sigquit = signal(SIGQUIT, SIG_IGN); |