summaryrefslogtreecommitdiff
path: root/openbsd-compat/bsd-misc.c
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@dtucker.net>2018-03-05 19:28:08 +1100
committerDarren Tucker <dtucker@dtucker.net>2018-03-05 19:28:08 +1100
commit58fd4c5c0140f6636227ca7acbb149ab0c2509b9 (patch)
tree51a79fa23c4140148ba59f9c43107fedefe9bbae /openbsd-compat/bsd-misc.c
parent71e48bc7945f867029e50e06c665c66aed6d3c64 (diff)
Check for and work around buggy fflush(NULL).
Some really old platforms (eg SunOS4) segfault on fflush(NULL) so check for and work around. With klausz at haus-gisela.de.
Diffstat (limited to 'openbsd-compat/bsd-misc.c')
-rw-r--r--openbsd-compat/bsd-misc.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c
index f7187daf8..3daf61071 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -308,3 +308,19 @@ getsid(pid_t pid)
308} 308}
309#endif 309#endif
310 310
311#ifdef FFLUSH_NULL_BUG
312#undef fflush
313int _ssh_compat_fflush(FILE *f)
314{
315 int r1, r2, r3;
316
317 if (f == NULL) {
318 r2 = fflush(stdout);
319 r3 = fflush(stderr);
320 if (r1 == -1 || r2 == -1 || r3 == -1)
321 return -1;
322 return 0;
323 }
324 return fflush(f);
325}
326#endif