diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 13:47:49 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 13:47:49 +0000 |
commit | f15aa3a552022743398a652165d76bf912c715e5 (patch) | |
tree | b58f8b4c47fc571fbb498d83a4bd4fca226ac6c4 /mdk-stage1/dietlibc/libstdio/fflush.c | |
parent | 189b01c358a1181ddc951adba97a0258d5fc2cf1 (diff) | |
download | drakx-f15aa3a552022743398a652165d76bf912c715e5.tar drakx-f15aa3a552022743398a652165d76bf912c715e5.tar.gz drakx-f15aa3a552022743398a652165d76bf912c715e5.tar.bz2 drakx-f15aa3a552022743398a652165d76bf912c715e5.tar.xz drakx-f15aa3a552022743398a652165d76bf912c715e5.zip |
Initial revision
Diffstat (limited to 'mdk-stage1/dietlibc/libstdio/fflush.c')
-rw-r--r-- | mdk-stage1/dietlibc/libstdio/fflush.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libstdio/fflush.c b/mdk-stage1/dietlibc/libstdio/fflush.c new file mode 100644 index 000000000..7078e04f4 --- /dev/null +++ b/mdk-stage1/dietlibc/libstdio/fflush.c @@ -0,0 +1,62 @@ +#include "dietstdio.h" +#include <unistd.h> +#include <stdlib.h> +#include "dietwarning.h" + +FILE *__stdio_root; + +#ifdef WANT_BUFFERED_STDIO +int __stdio_atexit=0; + +void __stdio_flushall() { + fflush(0); +} + +extern int __fflush_stdin(); +extern int __fflush_stdout(); +extern int __fflush_stderr(); + +int fflush(FILE *stream) { + if (stream==0) { + int res; + FILE *f; + __fflush_stdin(); + __fflush_stdout(); + __fflush_stderr(); + for (res=0, f=__stdio_root; f; f=f->next) + if (fflush(f)) + res=-1; + return res; + } + if (stream->flags&BUFINPUT) { + register int tmp; + if ((tmp=stream->bm-stream->bs)) lseek(stream->fd,tmp,SEEK_CUR); + } else + if (stream->bm && write(stream->fd,stream->buf,stream->bm)!=stream->bm) { + stream->flags|=ERRORINDICATOR; + return -1; + } + stream->bm=0; + return 0; +} + +int __fflush4(FILE *stream,int next) { + if (!__stdio_atexit) { + __stdio_atexit=1; + atexit(__stdio_flushall); + } + if ((stream->flags&BUFINPUT)!=next) { + int res=fflush(stream); + stream->flags=(stream->flags&~BUFINPUT)|next; + return res; + } + return 0; +} + +#else +int fflush(FILE *stream) { + return 0; +} +#endif + +link_warning("fflush","warning: your code uses stdio (several kilobytes of bloat).") |