diff --git a/util/cffdump.c b/util/cffdump.c index 973f3aa..07f7656 100644 --- a/util/cffdump.c +++ b/util/cffdump.c @@ -28,10 +28,12 @@ #include #include #include +#include #include #include #include #include +#include #include "redump.h" #include "disasm.h" @@ -1631,6 +1633,24 @@ static void pager_open(void) } } +static int pager_close(void) +{ + siginfo_t status; + + close(STDOUT_FILENO); + + while (true) { + memset(&status, 0, sizeof(status)); + if (waitid(P_PID, pager_pid, &status, WEXITED) < 0) { + if (errno == EINTR) + continue; + return -errno; + } + + return 0; + } +} + int main(int argc, char **argv) { int ret, n = 1; @@ -1762,6 +1782,10 @@ int main(int argc, char **argv) script_finish(); + if (interactive) { + pager_close(); + } + return 0; }