aboutsummaryrefslogtreecommitdiff
path: root/libbb/fflush_stdout_and_exit.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-04-10 21:38:30 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-04-10 21:38:30 +0000
commit335b63d8d1876ce4e172ebcc9d64544785682244 (patch)
tree14183fd728ce51ae10baee70f7d8f72c39d30649 /libbb/fflush_stdout_and_exit.c
parent07c394e69b0cfa7cd30e97ffc6edb0d857905f45 (diff)
downloadbusybox-w32-335b63d8d1876ce4e172ebcc9d64544785682244.tar.gz
busybox-w32-335b63d8d1876ce4e172ebcc9d64544785682244.tar.bz2
busybox-w32-335b63d8d1876ce4e172ebcc9d64544785682244.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
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}