Don't call ReadArgs() if started from WB.
[tangerine.git] / compiler / clib / fflush.c
blob5b2efaaa3b61e300c3147606f63e962e950fd492
1 /*
2 Copyright © 1995-2003, The AROS Development Team. All rights reserved.
3 $Id$
5 ANSI C function fflush().
6 */
8 #include "__arosc_privdata.h"
10 #include <exec/types.h>
11 #include <exec/lists.h>
12 #include <dos/dosextens.h>
13 #include <proto/exec.h>
14 #include <proto/dos.h>
15 #include "__errno.h"
16 #include "__stdio.h"
17 #include "__open.h"
19 /*****************************************************************************
21 NAME */
22 #include <stdio.h>
24 int fflush (
26 /* SYNOPSIS */
27 FILE * stream)
29 /* FUNCTION
30 Flush a stream. If the stream is an input stream, then the stream
31 is synchronised for unbuffered I/O. If the stream is an output
32 stream, then any buffered data is written.
34 INPUTS
35 stream - Flush this stream. May be NULL. In this case, all
36 output streams are flushed.
38 RESULT
39 0 on success or EOF on error.
41 NOTES
43 EXAMPLE
45 BUGS
47 SEE ALSO
49 INTERNALS
51 ******************************************************************************/
53 AROS_GET_SYSBASE_OK
54 AROS_GET_DOSBASE
56 /* flush all streams opened for output */
57 if (!stream)
59 FILENODE *fn;
61 ForeachNode (&__stdio_files, fn)
63 if (fn->File.flags & _STDIO_WRITE)
65 fdesc *fdesc = __getfdesc(fn->File.fd);
67 if (!fdesc)
69 errno = EBADF;
70 return EOF;
73 if (!Flush((BPTR)fdesc->fh))
75 errno = IoErr2errno(IoErr());
76 return EOF;
81 else
83 fdesc *fdesc = __getfdesc(stream->fd);
85 if (!fdesc || !(stream->flags & _STDIO_WRITE))
87 errno = EBADF;
88 return EOF;
91 if (Flush((BPTR)fdesc->fh))
92 return 0;
95 errno = IoErr2errno(IoErr());
96 return EOF;
97 } /* fflush */