comparison lib/fflush.c @ 9980:2c1ba629f5d5

New private include file lib/stdio-impl.h.
author Bruno Haible <bruno@clisp.org>
date Sat, 26 Apr 2008 18:12:05 +0200
parents 621cb9082339
children e3d6988a9347
comparison
equal deleted inserted replaced
9979:078a5c07126b 9980:2c1ba629f5d5
25 #include <unistd.h> 25 #include <unistd.h>
26 26
27 #include "freading.h" 27 #include "freading.h"
28 #include "fpurge.h" 28 #include "fpurge.h"
29 29
30 #include "stdio-impl.h"
31
30 #undef fflush 32 #undef fflush
31 33
32 static inline void 34 static inline void
33 clear_ungetc_buffer (FILE *fp) 35 clear_ungetc_buffer (FILE *fp)
34 { 36 {
35 #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ 37 #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */
36 # if defined __NetBSD__ || defined __OpenBSD__
37 struct __sfileext
38 {
39 struct __sbuf _ub; /* ungetc buffer */
40 /* More fields, not relevant here. */
41 };
42 # define HASUB(fp) (((struct __sfileext *) (fp)->_ext._base)->_ub._base != NULL)
43 # else
44 # define HASUB(fp) ((fp)->_ub._base != NULL)
45 # endif
46 if (HASUB (fp)) 38 if (HASUB (fp))
47 { 39 {
48 fp->_p += stream->_r; 40 fp->_p += stream->_r;
49 fp->_r = 0; 41 fp->_r = 0;
50 } 42 }