win32: Set unbuffered stdout

Win32 does not support line-buffering, but it allows
unbuffered output.

Unbuffered output is a good approximation. For typical output
statements which usually end with '\n', it's even identical.

Buffered output is unusable for program traces because of
its large delay.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Stefan Weil 2010-10-07 18:55:48 +02:00 committed by Blue Swirl
parent ea95f15602
commit 6650b7100b
2 changed files with 7 additions and 2 deletions

View File

@ -221,6 +221,12 @@ char *os_find_datadir(const char *argv0)
return NULL; return NULL;
} }
void os_set_line_buffering(void)
{
setbuf(stdout, NULL);
setbuf(stderr, NULL);
}
/* /*
* Parse OS specific command line options. * Parse OS specific command line options.
* return 0 if option handled, -1 otherwise * return 0 if option handled, -1 otherwise

View File

@ -45,8 +45,7 @@ void os_host_main_loop_wait(int *timeout);
static inline void os_setup_signal_handling(void) {} static inline void os_setup_signal_handling(void) {}
static inline void os_daemonize(void) {} static inline void os_daemonize(void) {}
static inline void os_setup_post(void) {} static inline void os_setup_post(void) {}
/* Win32 doesn't support line-buffering and requires size >= 2 */ void os_set_line_buffering(void);
static inline void os_set_line_buffering(void) {}
static inline void os_set_proc_name(const char *dummy) {} static inline void os_set_proc_name(const char *dummy) {}
#if !defined(EPROTONOSUPPORT) #if !defined(EPROTONOSUPPORT)