summaryrefslogtreecommitdiff
path: root/doc/posix-functions/fgetc.texi
blob: 84092304f08c54c559b8224983225ba3bc53ff9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@node fgetc
@section @code{fgetc}
@findex fgetc

POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/fgetc.html}

Gnulib module: stdio, nonblocking

Portability problems fixed by Gnulib module @code{stdio}, together with module @code{nonblocking}:
@itemize
@item
When reading from a non-blocking pipe whose buffer is empty, this function
fails with @code{errno} being set to @code{EINVAL} instead of @code{EAGAIN} on
some platforms:
mingw, MSVC 9.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@item
C99 and POSIX.1-2001 and later require end-of-file to be sticky, that
is, they require this function to act as if it reads end-of-file if
@code{feof} would return nonzero.  However, on some systems this
function attempts to read from the underlying file descriptor even if
the stream's end-of-file indicator is set.  These systems include
glibc and default Solaris.
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
@item
This function crashes if the stream's file descriptor has already been
closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
on some platforms:
MSVC 9.
@end itemize