mirror of
https://github.com/git-for-windows/git.git
synced 2025-12-13 08:41:13 -06:00
By default, the buffer type of Windows' `stdout` is unbuffered (_IONBF), and there is no need to manually fflush `stdout`. But some programs, such as the Windows Filtering Platform driver provided by the security software, may change the buffer type of `stdout` to full buffering. This nees `fflush(stdout)` to be called manually, otherwise there will be no output to `stdout`. Signed-off-by: MinarKotonoha <chengzhuo5@qq.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
34 lines
887 B
C
34 lines
887 B
C
#include "git-compat-util.h"
|
|
#include "trace2.h"
|
|
|
|
static void check_bug_if_BUG(void)
|
|
{
|
|
if (!bug_called_must_BUG)
|
|
return;
|
|
BUG("on exit(): had bug() call(s) in this process without explicit BUG_if_bug()");
|
|
}
|
|
|
|
/* We wrap exit() to call common_exit() in git-compat-util.h */
|
|
int common_exit(const char *file, int line, int code)
|
|
{
|
|
/*
|
|
* Windows Filtering Platform driver provided by the security software
|
|
* may change buffer type of stdout from _IONBF to _IOFBF.
|
|
* It will no output without fflush manually.
|
|
*/
|
|
fflush(stdout);
|
|
|
|
/*
|
|
* For non-POSIX systems: Take the lowest 8 bits of the "code"
|
|
* to e.g. turn -1 into 255. On a POSIX system this is
|
|
* redundant, see exit(3) and wait(2), but as it doesn't harm
|
|
* anything there we don't need to guard this with an "ifdef".
|
|
*/
|
|
code &= 0xff;
|
|
|
|
check_bug_if_BUG();
|
|
trace2_cmd_exit_fl(file, line, code);
|
|
|
|
return code;
|
|
}
|