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
This commit is contained in:
Denis Vlasenko
2007-04-10 21:38:30 +00:00
parent 07c394e69b
commit 335b63d8d1
18 changed files with 114 additions and 83 deletions

View File

@ -13,13 +13,17 @@
#include "libbb.h"
// TODO: make it safe to call from NOFORK applets
// Currently, it can exit(0). Even if it is made to do longjmp trick
// (see sleep_and_die internals), zero cannot be passed thru this way!
void fflush_stdout_and_exit(int retval)
{
if (fflush(stdout))
sleep_and_die();
xfunc_die();
if (ENABLE_FEATURE_EXEC_PREFER_APPLETS && die_sleep < 0) {
/* We are in NOFORK applet. Do not exit() directly,
* but use xfunc_die() */
xfunc_error_retval = retval;
xfunc_die();
}
exit(retval);
}