Manuel Novoa III | cad5364 | 2003-03-19 09:13:01 +0000 | [diff] [blame] | 1 | /* vi: set sw=4 ts=4: */ |
| 2 | /* |
| 3 | * fflush_stdout_and_exit implementation for busybox |
| 4 | * |
| 5 | * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> |
| 6 | * |
Denys Vlasenko | 0ef64bd | 2010-08-16 20:14:46 +0200 | [diff] [blame^] | 7 | * Licensed under GPLv2 or later, see file LICENSE in this source tree. |
Manuel Novoa III | cad5364 | 2003-03-19 09:13:01 +0000 | [diff] [blame] | 8 | */ |
| 9 | |
| 10 | /* Attempt to fflush(stdout), and exit with an error code if stdout is |
| 11 | * in an error state. |
| 12 | */ |
| 13 | |
Denis Vlasenko | f0ed376 | 2006-10-26 23:21:47 +0000 | [diff] [blame] | 14 | #include "libbb.h" |
Manuel Novoa III | cad5364 | 2003-03-19 09:13:01 +0000 | [diff] [blame] | 15 | |
Denis Vlasenko | defc1ea | 2008-06-27 02:52:20 +0000 | [diff] [blame] | 16 | void FAST_FUNC fflush_stdout_and_exit(int retval) |
Manuel Novoa III | cad5364 | 2003-03-19 09:13:01 +0000 | [diff] [blame] | 17 | { |
Denis Vlasenko | 9b1381f | 2007-01-03 02:56:00 +0000 | [diff] [blame] | 18 | if (fflush(stdout)) |
Denis Vlasenko | 3952f20 | 2007-08-13 14:10:24 +0000 | [diff] [blame] | 19 | bb_perror_msg_and_die(bb_msg_standard_output); |
Denis Vlasenko | 335b63d | 2007-04-10 21:38:30 +0000 | [diff] [blame] | 20 | |
Denis Vlasenko | 80d14be | 2007-04-10 23:03:30 +0000 | [diff] [blame] | 21 | if (ENABLE_FEATURE_PREFER_APPLETS && die_sleep < 0) { |
Denis Vlasenko | 335b63d | 2007-04-10 21:38:30 +0000 | [diff] [blame] | 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 | |
Manuel Novoa III | cad5364 | 2003-03-19 09:13:01 +0000 | [diff] [blame] | 28 | exit(retval); |
| 29 | } |