aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/xwrap.c2
-rw-r--r--main.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/lib/xwrap.c b/lib/xwrap.c
index d7030653..de7ae832 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -30,6 +30,8 @@ void xstrncat(char *dest, char *src, size_t size)
void xexit(void)
{
+ if (fflush(NULL) || ferror(stdout))
+ if (!toys.exitval) perror_msg("write");
if (toys.rebound) longjmp(*toys.rebound, 1);
else exit(toys.exitval);
}
diff --git a/main.c b/main.c
index dfab2f2a..6ca6c2d9 100644
--- a/main.c
+++ b/main.c
@@ -136,7 +136,6 @@ void toy_exec(char *argv[])
// Run command
toy_init(which, argv);
if (toys.which) toys.which->toy_main();
- if (fflush(NULL) || ferror(stdout)) perror_exit("write");
xexit();
}
@@ -189,8 +188,7 @@ int main(int argc, char *argv[])
// a single toybox command built standalone with no multiplexer
toy_singleinit(toy_list, argv);
toy_list->toy_main();
- if (fflush(NULL) || ferror(stdout)) perror_exit("write");
}
- return toys.exitval;
+ xexit();
}