aboutsummaryrefslogtreecommitdiff
path: root/libbb/fflush_stdout_and_exit.c
diff options
context:
space:
mode:
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2007-04-10 21:38:30 +0000
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2007-04-10 21:38:30 +0000
commit48b6c559ccf5bc74eaa7e334310e9edf367033e2 (patch)
tree14183fd728ce51ae10baee70f7d8f72c39d30649 /libbb/fflush_stdout_and_exit.c
parent04c078dac604c21cf593a3298f788f69b7f739e6 (diff)
downloadbusybox-w32-48b6c559ccf5bc74eaa7e334310e9edf367033e2.tar.gz
busybox-w32-48b6c559ccf5bc74eaa7e334310e9edf367033e2.tar.bz2
busybox-w32-48b6c559ccf5bc74eaa7e334310e9edf367033e2.zip
make a few struct bb_applet members conditional
rename sllep_and_die -> xfunc_die make fflush_stdout_and_exit NOFORK-safe fix some buglets found by randomconfig git-svn-id: svn://busybox.net/trunk/busybox@18391 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb/fflush_stdout_and_exit.c')
-rw-r--r--libbb/fflush_stdout_and_exit.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/libbb/fflush_stdout_and_exit.c b/libbb/fflush_stdout_and_exit.c
index ae68222b4..d79827f45 100644
--- a/libbb/fflush_stdout_and_exit.c
+++ b/libbb/fflush_stdout_and_exit.c
@@ -13,13 +13,17 @@
13 13
14#include "libbb.h" 14#include "libbb.h"
15 15
16// TODO: make it safe to call from NOFORK applets
17// Currently, it can exit(0). Even if it is made to do longjmp trick
18// (see sleep_and_die internals), zero cannot be passed thru this way!
19
20void fflush_stdout_and_exit(int retval) 16void fflush_stdout_and_exit(int retval)
21{ 17{
22 if (fflush(stdout)) 18 if (fflush(stdout))
23 sleep_and_die(); 19 xfunc_die();
20
21 if (ENABLE_FEATURE_EXEC_PREFER_APPLETS && die_sleep < 0) {
22 /* We are in NOFORK applet. Do not exit() directly,
23 * but use xfunc_die() */
24 xfunc_error_retval = retval;
25 xfunc_die();
26 }
27
24 exit(retval); 28 exit(retval);
25} 29}