Skip to content

Commit

Permalink
Use fpurge/__fpurge to cancel buffered output
Browse files Browse the repository at this point in the history
While not really portable, these are the libc functions for this
task. Linux is covered with the __GLIBC__ macro here, because it is
not a Linux but a glibc feature. HURD is handled like Linux.
  • Loading branch information
olebole committed Jan 13, 2024
1 parent 884714e commit 5a8329b
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions unix/os/zxwhen.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
*/

#include <stdio.h>
#ifdef __GLIBC__
#include <stdio_ext.h>
#endif
#include <signal.h>

#include <math.h>
Expand Down Expand Up @@ -32,8 +35,10 @@ int debug_sig = 0;
/* If the OS allows, cancel any buffered output. If the OS doesn't,
* do nothing.
*/
#ifdef __APPLE__
#define fcancel(fp) ((fp)->_r = (fp)->_w = 0)
#if defined(__APPLE__) || defined(BSD) || defined(__USE_BSD)
#define fcancel(fp) (void)fpurge(fp)
#elif defined(__GLIBC__)
#define fcancel(fp) __fpurge(fp)
#else
#define fcancel(fp)
#endif
Expand Down

0 comments on commit 5a8329b

Please # to comment.