Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4921 → Rev 6099

/contrib/sdk/sources/newlib/libc/stdio/fflush.c
17,19 → 17,32
 
/*
FUNCTION
<<fflush>>---flush buffered file output
<<fflush>>, <<fflush_unlocked>>---flush buffered file output
 
INDEX
fflush
INDEX
fflush_unlocked
INDEX
_fflush_r
INDEX
_fflush_unlocked_r
 
ANSI_SYNOPSIS
#include <stdio.h>
int fflush(FILE *<[fp]>);
 
#define _BSD_SOURCE
#include <stdio.h>
int fflush_unlocked(FILE *<[fp]>);
 
#include <stdio.h>
int _fflush_r(struct _reent *<[reent]>, FILE *<[fp]>);
 
#define _BSD_SOURCE
#include <stdio.h>
int _fflush_unlocked_r(struct _reent *<[reent]>, FILE *<[fp]>);
 
DESCRIPTION
The <<stdio>> output functions can buffer output before delivering it
to the host system, in order to minimize the overhead of system calls.
45,10 → 58,19
unread byte, useful for obeying POSIX semantics when ending a process
without consuming all input from the stream.
 
The alternate function <<_fflush_r>> is a reentrant version, where the
extra argument <[reent]> is a pointer to a reentrancy structure, and
<[fp]> must not be NULL.
<<fflush_unlocked>> is a non-thread-safe version of <<fflush>>.
<<fflush_unlocked>> may only safely be used within a scope
protected by flockfile() (or ftrylockfile()) and funlockfile(). This
function may safely be used in a multi-threaded program if and only
if they are called while the invoking thread owns the (FILE *)
object, as is the case after a successful call to the flockfile() or
ftrylockfile() functions. If threads are disabled, then
<<fflush_unlocked>> is equivalent to <<fflush>>.
 
The alternate functions <<_fflush_r>> and <<_fflush_unlocked_r>> are
reentrant versions, where the extra argument <[reent]> is a pointer to
a reentrancy structure, and <[fp]> must not be NULL.
 
RETURNS
<<fflush>> returns <<0>> unless it encounters a write error; in that
situation, it returns <<EOF>>.
57,6 → 79,8
ANSI C requires <<fflush>>. The behavior on input streams is only
specified by POSIX, and not all implementations follow POSIX rules.
 
<<fflush_unlocked>> is a BSD extension also provided by GNU libc.
 
No supporting OS subroutines are required.
*/
 
65,6 → 89,12
#include <errno.h>
#include "local.h"
 
#ifdef __IMPL_UNLOCKED__
#define _fflush_r _fflush_unlocked_r
#define fflush fflush_unlocked
#endif
 
#ifndef __IMPL_UNLOCKED__
/* Flush a single file, or (if fp is NULL) all files. */
 
/* Core function which does not lock file pointer. This gets called
204,7 → 234,22
return 0;
}
 
#ifdef _STDIO_BSD_SEMANTICS
/* Called from _cleanup_r. At exit time, we don't need file locking,
and we don't want to move the underlying file pointer unless we're
writing. */
int
_DEFUN(__sflushw_r, (ptr, fp),
struct _reent *ptr _AND
register FILE *fp)
{
return (fp->_flags & __SWR) ? __sflush_r (ptr, fp) : 0;
}
#endif
 
#endif /* __IMPL_UNLOCKED__ */
 
int
_DEFUN(_fflush_r, (ptr, fp),
struct _reent *ptr _AND
register FILE * fp)